WooCommerce PayPal Payments - Version 1.0.2

Version Description

  • Fix - Purchases over 1.000 USD fail. #84
Download this release

Release Info

Developer automattic
Plugin Icon 128x128 WooCommerce PayPal Payments
Version 1.0.2
Comparing to
See all releases

Code changes from version 1.0.1 to 1.0.2

Files changed (132) hide show
  1. changelog.txt +3 -0
  2. modules/ppcp-api-client/src/Entity/class-amount.php +1 -1
  3. modules/ppcp-api-client/src/Entity/class-money.php +1 -1
  4. modules/ppcp-button/assets/js/hostedfields.js +0 -2
  5. modules/ppcp-button/assets/js/hostedfields.js.map +0 -1
  6. package-lock.json +5 -0
  7. readme.txt +4 -1
  8. vendor/autoload.php +1 -1
  9. vendor/composer/ClassLoader.php +1 -1
  10. vendor/composer/autoload_files.php +10 -0
  11. vendor/composer/autoload_psr4.php +2 -0
  12. vendor/composer/autoload_real.php +22 -4
  13. vendor/composer/autoload_static.php +18 -4
  14. vendor/composer/installed.json +142 -97
  15. vendor/dhii/collections-interface/.env.example +2 -0
  16. vendor/dhii/collections-interface/CHANGELOG.md +64 -0
  17. vendor/{wp-oop/transient-cache → dhii/collections-interface}/LICENSE +1 -1
  18. vendor/dhii/collections-interface/README.md +43 -0
  19. vendor/dhii/collections-interface/composer.json +42 -0
  20. vendor/dhii/{module-interface → collections-interface}/docker-compose.yml +6 -1
  21. vendor/dhii/{module-interface → collections-interface}/docker/Dockerfile_php +1 -1
  22. vendor/dhii/collections-interface/phpcs.xml.dist +48 -0
  23. vendor/dhii/collections-interface/phpunit.xml.dist +23 -0
  24. vendor/dhii/collections-interface/psalm.xml.dist +25 -0
  25. vendor/dhii/collections-interface/src/ClearableContainerInterface.php +18 -0
  26. vendor/dhii/collections-interface/src/ContainerFactoryInterface.php +27 -0
  27. vendor/dhii/collections-interface/src/ContainerInterface.php +16 -0
  28. vendor/dhii/collections-interface/src/CountableListInterface.php +21 -0
  29. vendor/dhii/collections-interface/src/CountableMapInterface.php +21 -0
  30. vendor/dhii/collections-interface/src/CountableSetInterface.php +21 -0
  31. vendor/dhii/collections-interface/src/HasCapableInterface.php +29 -0
  32. vendor/dhii/collections-interface/src/HasItemCapableInterface.php +30 -0
  33. vendor/dhii/collections-interface/src/MapFactoryInterface.php +27 -0
  34. vendor/dhii/collections-interface/src/MapInterface.php +21 -0
  35. vendor/dhii/collections-interface/src/MutableContainerInterface.php +42 -0
  36. vendor/dhii/collections-interface/src/SetFactoryInterface.php +30 -0
  37. vendor/dhii/collections-interface/src/SetInterface.php +21 -0
  38. vendor/dhii/collections-interface/src/WritableContainerFactoryInterface.php +20 -0
  39. vendor/dhii/collections-interface/src/WritableContainerInterface.php +58 -0
  40. vendor/dhii/collections-interface/src/WritableMapFactoryInterface.php +22 -0
  41. vendor/dhii/collections-interface/src/WritableMapInterface.php +15 -0
  42. vendor/dhii/collections-interface/src/WritableSetFactoryInterface.php +20 -0
  43. vendor/dhii/collections-interface/src/WritableSetInterface.php +54 -0
  44. vendor/dhii/containers/.codeclimate.yml +0 -21
  45. vendor/dhii/containers/.php_cs +0 -27
  46. vendor/dhii/containers/CHANGELOG.md +3 -0
  47. vendor/dhii/containers/composer.json +3 -3
  48. vendor/dhii/containers/docker/Dockerfile_php +2 -2
  49. vendor/dhii/containers/phpunit.xml +0 -35
  50. vendor/dhii/containers/src/AliasingContainer.php +84 -0
  51. vendor/dhii/containers/src/CachingContainer.php +10 -15
  52. vendor/dhii/containers/src/CompositeCachingServiceProvider.php +3 -3
  53. vendor/dhii/containers/src/CompositeContainer.php +10 -16
  54. vendor/dhii/containers/src/DataStructureBasedFactory.php +43 -0
  55. vendor/dhii/containers/src/DataStructureBasedFactoryInterface.php +26 -0
  56. vendor/dhii/containers/src/DelegatingContainer.php +14 -18
  57. vendor/dhii/containers/src/DeprefixingContainer.php +96 -0
  58. vendor/dhii/containers/src/Dictionary.php +115 -0
  59. vendor/dhii/containers/src/DictionaryFactory.php +21 -0
  60. vendor/dhii/containers/src/Exception/ContainerException.php +3 -16
  61. vendor/dhii/containers/src/Exception/NotFoundException.php +4 -17
  62. vendor/dhii/containers/src/HierarchyContainer.php +87 -0
  63. vendor/dhii/containers/src/MappingContainer.php +88 -0
  64. vendor/dhii/containers/src/MaskingContainer.php +100 -0
  65. vendor/dhii/containers/src/PathContainer.php +125 -0
  66. vendor/dhii/containers/src/PrefixingContainer.php +121 -0
  67. vendor/dhii/containers/src/SegmentingContainer.php +116 -0
  68. vendor/dhii/containers/test/functional/CompositeCachingServiceProviderTest.php +0 -119
  69. vendor/dhii/containers/test/functional/DelegatingContainerTest.php +0 -109
  70. vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CachingContainerTest.php +0 -88
  71. vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CompositeContainerTest.php +0 -130
  72. vendor/dhii/containers/test/functional/Exception/ContainerExceptionTest.php +0 -63
  73. vendor/dhii/containers/test/functional/Exception/NotFoundExceptionTest.php +0 -63
  74. vendor/dhii/containers/test/functional/ServiceProviderTest.php +0 -78
  75. vendor/dhii/containers/test/helpers/ComponentMockeryTrait.php +0 -267
  76. vendor/dhii/containers/test/unit/CompositeCachingServiceProviderTest.php +0 -136
  77. vendor/dhii/containers/test/unit/ProxyContainerTest.php +0 -112
  78. vendor/dhii/{module-interface → data-key-value-aware-interface}/.codeclimate.yml +0 -4
  79. vendor/dhii/{module-interface → data-key-value-aware-interface}/.php_cs +2 -2
  80. vendor/dhii/data-key-value-aware-interface/CHANGELOG.md +12 -0
  81. vendor/dhii/data-key-value-aware-interface/README.md +6 -0
  82. vendor/dhii/data-key-value-aware-interface/composer.json +27 -0
  83. vendor/dhii/{containers → data-key-value-aware-interface}/composer.lock +807 -742
  84. vendor/dhii/data-key-value-aware-interface/nbproject/project.properties +25 -0
  85. vendor/dhii/data-key-value-aware-interface/nbproject/project.xml +9 -0
  86. vendor/dhii/{module-interface → data-key-value-aware-interface}/phpunit.xml +1 -1
  87. vendor/dhii/data-key-value-aware-interface/src/KeyAwareInterface.php +22 -0
  88. vendor/dhii/data-key-value-aware-interface/src/KeyValueAwareInterface.php +16 -0
  89. vendor/dhii/data-key-value-aware-interface/src/ValueAwareInterface.php +20 -0
  90. vendor/dhii/{containers → data-key-value-aware-interface}/test/bootstrap.php +0 -0
  91. vendor/dhii/data-key-value-aware-interface/test/functional/KeyAwareInterfaceTest.php +41 -0
  92. vendor/dhii/data-key-value-aware-interface/test/functional/KeyValueAwareInterfaceTest.php +42 -0
  93. vendor/dhii/data-key-value-aware-interface/test/functional/ValueAwareInterfaceTest.php +41 -0
  94. vendor/dhii/module-interface/.env.example +0 -1
  95. vendor/dhii/module-interface/CHANGELOG.md +0 -16
  96. vendor/dhii/module-interface/README.md +14 -274
  97. vendor/dhii/module-interface/composer.json +14 -8
  98. vendor/dhii/module-interface/composer.lock +0 -1569
  99. vendor/dhii/module-interface/src/DependenciesAwareInterface.php +24 -0
  100. vendor/dhii/module-interface/src/Exception/ModuleExceptionInterface.php +3 -3
  101. vendor/dhii/module-interface/src/ModuleAwareInterface.php +2 -2
  102. vendor/dhii/module-interface/src/ModuleFactoryInterface.php +22 -0
  103. vendor/dhii/module-interface/src/ModuleInterface.php +21 -29
  104. vendor/dhii/module-interface/src/ModuleKeyAwareInterface.php +22 -0
  105. vendor/dhii/module-interface/test/bootstrap.php +0 -5
  106. vendor/dhii/module-interface/test/stubs/GetImplementingMockBuilderCapableTrait.php +0 -46
  107. vendor/dhii/module-interface/test/unit/Exception/ModuleExceptionInterfaceTest.php +0 -64
  108. vendor/dhii/module-interface/test/unit/ModuleAwareInterfaceTest.php +0 -46
  109. vendor/dhii/module-interface/test/unit/ModuleInterfaceTest.php +0 -46
  110. vendor/dhii/module-interface/travis.php.ini +1 -0
  111. vendor/psr/simple-cache/.editorconfig +0 -12
  112. vendor/psr/simple-cache/LICENSE.md +0 -21
  113. vendor/psr/simple-cache/README.md +0 -8
  114. vendor/psr/simple-cache/composer.json +0 -25
  115. vendor/psr/simple-cache/src/CacheException.php +0 -10
  116. vendor/psr/simple-cache/src/CacheInterface.php +0 -114
  117. vendor/psr/simple-cache/src/InvalidArgumentException.php +0 -13
  118. vendor/ralouphie/getallheaders/LICENSE +21 -0
  119. vendor/ralouphie/getallheaders/README.md +27 -0
  120. vendor/ralouphie/getallheaders/composer.json +26 -0
  121. vendor/ralouphie/getallheaders/src/getallheaders.php +46 -0
  122. vendor/wp-oop/transient-cache/CHANGELOG.md +0 -30
  123. vendor/wp-oop/transient-cache/README.md +0 -105
  124. vendor/wp-oop/transient-cache/composer.json +0 -37
  125. vendor/wp-oop/transient-cache/src/CachePool.php +0 -609
  126. vendor/wp-oop/transient-cache/src/CachePoolFactory.php +0 -46
  127. vendor/wp-oop/transient-cache/src/CachePoolFactoryInterface.php +0 -21
  128. vendor/wp-oop/transient-cache/src/Exception/CacheException.php +0 -14
  129. vendor/wp-oop/transient-cache/src/Exception/InvalidArgumentException.php +0 -14
  130. vendor/wp-oop/transient-cache/src/SilentPool.php +0 -154
  131. vendor/wp-oop/transient-cache/src/SilentPoolFactory.php +0 -33
  132. woocommerce-paypal-payments.php +1 -1
changelog.txt CHANGED
@@ -1,5 +1,8 @@
1
  *** Changelog ***
2
 
 
 
 
3
  = 1.0.1 - 2020-11-05 =
4
  * Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
5
  * Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
1
  *** Changelog ***
2
 
3
+ = 1.0.2 - 2020-11-09 =
4
+ * Fix - Purchases over 1.000 USD fail. #84
5
+
6
  = 1.0.1 - 2020-11-05 =
7
  * Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
8
  * Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
modules/ppcp-api-client/src/Entity/class-amount.php CHANGED
@@ -74,7 +74,7 @@ class Amount {
74
  public function to_array(): array {
75
  $amount = array(
76
  'currency_code' => $this->currency_code(),
77
- 'value' => number_format( $this->value(), 2 ),
78
  );
79
  if ( $this->breakdown() && count( $this->breakdown()->to_array() ) ) {
80
  $amount['breakdown'] = $this->breakdown()->to_array();
74
  public function to_array(): array {
75
  $amount = array(
76
  'currency_code' => $this->currency_code(),
77
+ 'value' => number_format( $this->value(), 2, '.', '' ),
78
  );
79
  if ( $this->breakdown() && count( $this->breakdown()->to_array() ) ) {
80
  $amount['breakdown'] = $this->breakdown()->to_array();
modules/ppcp-api-client/src/Entity/class-money.php CHANGED
@@ -65,7 +65,7 @@ class Money {
65
  public function to_array(): array {
66
  return array(
67
  'currency_code' => $this->currency_code(),
68
- 'value' => number_format( $this->value(), 2 ),
69
  );
70
  }
71
  }
65
  public function to_array(): array {
66
  return array(
67
  'currency_code' => $this->currency_code(),
68
+ 'value' => number_format( $this->value(), 2, '.', '' ),
69
  );
70
  }
71
  }
modules/ppcp-button/assets/js/hostedfields.js DELETED
@@ -1,2 +0,0 @@
1
- !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){e.exports=r.p+"css/hosted-fields.css"}]);
2
- //# sourceMappingURL=hostedfields.js.map
 
 
modules/ppcp-button/assets/js/hostedfields.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/css/hosted-fields.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,kBClFrDhC,EAAOD,QAAU,IAA0B","file":"js/hostedfields.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","module.exports = __webpack_public_path__ + \"css/hosted-fields.css\";"],"sourceRoot":""}
 
package-lock.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ {
2
+ "name": "woocommerce-paypal-payments",
3
+ "version": "1.0.2",
4
+ "lockfileVersion": 1
5
+ }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce, paypal, payments, ecommerce, e-commerce, store, sales, sell,
4
  Requires at least: 5.3
5
  Tested up to: 5.5
6
  Requires PHP: 7.0
7
- Stable tag: 1.0.1
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -58,6 +58,9 @@ Follow the steps below to connect the plugin to your PayPal account:
58
 
59
  == Changelog ==
60
 
 
 
 
61
  = 1.0.1 =
62
  * Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
63
  * Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
4
  Requires at least: 5.3
5
  Tested up to: 5.5
6
  Requires PHP: 7.0
7
+ Stable tag: 1.0.2
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
58
 
59
  == Changelog ==
60
 
61
+ = 1.0.2 =
62
+ * Fix - Purchases over 1.000 USD fail. #84
63
+
64
  = 1.0.1 =
65
  * Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
66
  * Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
vendor/composer/autoload_files.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_files.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
10
+ );
vendor/composer/autoload_psr4.php CHANGED
@@ -16,6 +16,8 @@ return array(
16
  'Dhii\\Factory\\' => array($vendorDir . '/dhii/factory-interface/src'),
17
  'Dhii\\Exception\\' => array($vendorDir . '/dhii/exception-interface/src'),
18
  'Dhii\\Data\\Container\\' => array($vendorDir . '/dhii/data-container-interface/src'),
 
19
  'Dhii\\Container\\' => array($vendorDir . '/dhii/containers/src'),
 
20
  'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
21
  );
16
  'Dhii\\Factory\\' => array($vendorDir . '/dhii/factory-interface/src'),
17
  'Dhii\\Exception\\' => array($vendorDir . '/dhii/exception-interface/src'),
18
  'Dhii\\Data\\Container\\' => array($vendorDir . '/dhii/data-container-interface/src'),
19
+ 'Dhii\\Data\\' => array($vendorDir . '/dhii/data-key-value-aware-interface/src'),
20
  'Dhii\\Container\\' => array($vendorDir . '/dhii/containers/src'),
21
+ 'Dhii\\Collection\\' => array($vendorDir . '/dhii/collections-interface/src'),
22
  'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
23
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -50,6 +50,24 @@ class ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa
50
 
51
  $loader->register(true);
52
 
 
 
 
 
 
 
 
 
 
53
  return $loader;
54
  }
55
  }
 
 
 
 
 
 
 
 
 
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
50
 
51
  $loader->register(true);
52
 
53
+ if ($useStaticLoader) {
54
+ $includeFiles = Composer\Autoload\ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$files;
55
+ } else {
56
+ $includeFiles = require __DIR__ . '/autoload_files.php';
57
+ }
58
+ foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequire01caf726188ce4a8c830c9ea3872c0fc($fileIdentifier, $file);
60
+ }
61
+
62
  return $loader;
63
  }
64
  }
65
+
66
+ function composerRequire01caf726188ce4a8c830c9ea3872c0fc($fileIdentifier, $file)
67
+ {
68
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
+ require $file;
70
+
71
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
72
+ }
73
+ }
vendor/composer/autoload_static.php CHANGED
@@ -4,8 +4,12 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
8
  {
 
 
 
 
9
  public static $prefixLengthsPsr4 = array (
10
  'P' =>
11
  array (
@@ -28,7 +32,9 @@ class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
28
  'Dhii\\Factory\\' => 13,
29
  'Dhii\\Exception\\' => 15,
30
  'Dhii\\Data\\Container\\' => 20,
 
31
  'Dhii\\Container\\' => 15,
 
32
  ),
33
  'C' =>
34
  array (
@@ -77,10 +83,18 @@ class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
77
  array (
78
  0 => __DIR__ . '/..' . '/dhii/data-container-interface/src',
79
  ),
 
 
 
 
80
  'Dhii\\Container\\' =>
81
  array (
82
  0 => __DIR__ . '/..' . '/dhii/containers/src',
83
  ),
 
 
 
 
84
  'Composer\\Installers\\' =>
85
  array (
86
  0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
@@ -238,9 +252,9 @@ class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
238
  public static function getInitializer(ClassLoader $loader)
239
  {
240
  return \Closure::bind(function () use ($loader) {
241
- $loader->prefixLengthsPsr4 = ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa::$prefixLengthsPsr4;
242
- $loader->prefixDirsPsr4 = ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa::$prefixDirsPsr4;
243
- $loader->classMap = ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa::$classMap;
244
 
245
  }, null, ClassLoader::class);
246
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc
8
  {
9
+ public static $files = array (
10
+ '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
11
+ );
12
+
13
  public static $prefixLengthsPsr4 = array (
14
  'P' =>
15
  array (
32
  'Dhii\\Factory\\' => 13,
33
  'Dhii\\Exception\\' => 15,
34
  'Dhii\\Data\\Container\\' => 20,
35
+ 'Dhii\\Data\\' => 10,
36
  'Dhii\\Container\\' => 15,
37
+ 'Dhii\\Collection\\' => 16,
38
  ),
39
  'C' =>
40
  array (
83
  array (
84
  0 => __DIR__ . '/..' . '/dhii/data-container-interface/src',
85
  ),
86
+ 'Dhii\\Data\\' =>
87
+ array (
88
+ 0 => __DIR__ . '/..' . '/dhii/data-key-value-aware-interface/src',
89
+ ),
90
  'Dhii\\Container\\' =>
91
  array (
92
  0 => __DIR__ . '/..' . '/dhii/containers/src',
93
  ),
94
+ 'Dhii\\Collection\\' =>
95
+ array (
96
+ 0 => __DIR__ . '/..' . '/dhii/collections-interface/src',
97
+ ),
98
  'Composer\\Installers\\' =>
99
  array (
100
  0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
252
  public static function getInitializer(ClassLoader $loader)
253
  {
254
  return \Closure::bind(function () use ($loader) {
255
+ $loader->prefixLengthsPsr4 = ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$prefixLengthsPsr4;
256
+ $loader->prefixDirsPsr4 = ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$prefixDirsPsr4;
257
+ $loader->classMap = ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$classMap;
258
 
259
  }, null, ClassLoader::class);
260
  }
vendor/composer/installed.json CHANGED
@@ -171,40 +171,93 @@
171
  "description": "Promoting container interoperability through standard service providers",
172
  "homepage": "https://github.com/container-interop/service-provider"
173
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  {
175
  "name": "dhii/containers",
176
- "version": "dev-develop",
177
- "version_normalized": "dev-develop",
178
  "source": {
179
  "type": "git",
180
  "url": "https://github.com/Dhii/containers.git",
181
- "reference": "3dd6e407e86cf19f7a40989eeb802cf751082902"
182
  },
183
  "dist": {
184
  "type": "zip",
185
- "url": "https://api.github.com/repos/Dhii/containers/zipball/3dd6e407e86cf19f7a40989eeb802cf751082902",
186
- "reference": "3dd6e407e86cf19f7a40989eeb802cf751082902",
187
  "shasum": ""
188
  },
189
  "require": {
190
  "container-interop/service-provider": "^0.4",
191
- "dhii/data-container-interface": "^0.2",
192
- "php": "^7.0 | ^8.0"
193
  },
194
  "require-dev": {
195
  "gmazzap/andrew": "^1.1",
196
- "phpunit/phpunit": "^6",
197
  "psr/container": "^1.0",
198
  "slevomat/coding-standard": "~4.0"
199
  },
200
- "time": "2020-03-18T17:36:56+00:00",
201
  "type": "library",
202
  "extra": {
203
  "branch-alias": {
204
  "dev-develop": "0.1.x-dev"
205
  }
206
  },
207
- "installation-source": "source",
208
  "autoload": {
209
  "psr-4": {
210
  "Dhii\\Container\\": "src/"
@@ -283,6 +336,50 @@
283
  "description": "Interfaces for working with data containers",
284
  "abandoned": "dhii/collections-interface"
285
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  {
287
  "name": "dhii/exception-interface",
288
  "version": "v0.2",
@@ -387,35 +484,41 @@
387
  },
388
  {
389
  "name": "dhii/module-interface",
390
- "version": "dev-develop",
391
- "version_normalized": "dev-develop",
392
  "source": {
393
  "type": "git",
394
  "url": "https://github.com/Dhii/module-interface.git",
395
- "reference": "cb2eaaac0fa4bd4a82bc2b38c10e3a794ce32d52"
396
  },
397
  "dist": {
398
  "type": "zip",
399
- "url": "https://api.github.com/repos/Dhii/module-interface/zipball/cb2eaaac0fa4bd4a82bc2b38c10e3a794ce32d52",
400
- "reference": "cb2eaaac0fa4bd4a82bc2b38c10e3a794ce32d52",
401
  "shasum": ""
402
  },
403
  "require": {
404
- "container-interop/service-provider": "^0.4",
405
- "php": "^7.1",
406
- "psr/container": "^1.0"
 
407
  },
408
  "require-dev": {
409
- "phpunit/phpunit": "^6.0 | ^7.0"
 
 
 
 
 
410
  },
411
- "time": "2020-04-10T14:27:05+00:00",
412
  "type": "library",
413
  "extra": {
414
  "branch-alias": {
415
- "dev-develop": "0.2.x-dev"
416
  }
417
  },
418
- "installation-source": "source",
419
  "autoload": {
420
  "psr-4": {
421
  "Dhii\\Modular\\Module\\": "src"
@@ -679,91 +782,34 @@
679
  ]
680
  },
681
  {
682
- "name": "psr/simple-cache",
683
- "version": "1.0.1",
684
- "version_normalized": "1.0.1.0",
685
  "source": {
686
  "type": "git",
687
- "url": "https://github.com/php-fig/simple-cache.git",
688
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
689
  },
690
  "dist": {
691
  "type": "zip",
692
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
693
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
694
  "shasum": ""
695
  },
696
  "require": {
697
- "php": ">=5.3.0"
698
- },
699
- "time": "2017-10-23T01:57:42+00:00",
700
- "type": "library",
701
- "extra": {
702
- "branch-alias": {
703
- "dev-master": "1.0.x-dev"
704
- }
705
- },
706
- "installation-source": "dist",
707
- "autoload": {
708
- "psr-4": {
709
- "Psr\\SimpleCache\\": "src/"
710
- }
711
- },
712
- "notification-url": "https://packagist.org/downloads/",
713
- "license": [
714
- "MIT"
715
- ],
716
- "authors": [
717
- {
718
- "name": "PHP-FIG",
719
- "homepage": "http://www.php-fig.org/"
720
- }
721
- ],
722
- "description": "Common interfaces for simple caching",
723
- "keywords": [
724
- "cache",
725
- "caching",
726
- "psr",
727
- "psr-16",
728
- "simple-cache"
729
- ]
730
- },
731
- {
732
- "name": "wp-oop/transient-cache",
733
- "version": "v0.1.0-alpha3",
734
- "version_normalized": "0.1.0.0-alpha3",
735
- "source": {
736
- "type": "git",
737
- "url": "https://github.com/wp-oop/transient-cache.git",
738
- "reference": "9eb92e378ad82b29d9d597bc4f41734a57502291"
739
- },
740
- "dist": {
741
- "type": "zip",
742
- "url": "https://api.github.com/repos/wp-oop/transient-cache/zipball/9eb92e378ad82b29d9d597bc4f41734a57502291",
743
- "reference": "9eb92e378ad82b29d9d597bc4f41734a57502291",
744
- "shasum": ""
745
- },
746
- "require": {
747
- "php": "^7.1",
748
- "psr/simple-cache": "^1.0"
749
  },
750
  "require-dev": {
751
- "brain/monkey": "^2.3",
752
- "johnpbloch/wordpress-core": "^5.0",
753
- "phpunit/phpunit": "^7.1"
754
  },
755
- "time": "2020-07-08T10:18:00+00:00",
756
  "type": "library",
757
- "extra": {
758
- "branch-alias": {
759
- "dev-develop": "0.1.x-dev"
760
- }
761
- },
762
  "installation-source": "dist",
763
  "autoload": {
764
- "psr-4": {
765
- "WpOop\\TransientCache\\": "src"
766
- }
767
  },
768
  "notification-url": "https://packagist.org/downloads/",
769
  "license": [
@@ -771,11 +817,10 @@
771
  ],
772
  "authors": [
773
  {
774
- "name": "Anton Ukhanev",
775
- "email": "xedin.unknown@gmail.com",
776
- "role": "Developer"
777
  }
778
  ],
779
- "description": "A PSR-16 wrapper for WP transients."
780
  }
781
  ]
171
  "description": "Promoting container interoperability through standard service providers",
172
  "homepage": "https://github.com/container-interop/service-provider"
173
  },
174
+ {
175
+ "name": "dhii/collections-interface",
176
+ "version": "v0.3.0-alpha2",
177
+ "version_normalized": "0.3.0.0-alpha2",
178
+ "source": {
179
+ "type": "git",
180
+ "url": "https://github.com/Dhii/collections-interface.git",
181
+ "reference": "0fa5a14c407995cb0b9634ee42f127a91f24aafc"
182
+ },
183
+ "dist": {
184
+ "type": "zip",
185
+ "url": "https://api.github.com/repos/Dhii/collections-interface/zipball/0fa5a14c407995cb0b9634ee42f127a91f24aafc",
186
+ "reference": "0fa5a14c407995cb0b9634ee42f127a91f24aafc",
187
+ "shasum": ""
188
+ },
189
+ "require": {
190
+ "php": "^7.1",
191
+ "psr/container": "^1.0"
192
+ },
193
+ "require-dev": {
194
+ "phpunit/phpunit": "^7.0 | ^8.0",
195
+ "slevomat/coding-standard": "^6.0",
196
+ "vimeo/psalm": "^3.0"
197
+ },
198
+ "time": "2020-10-13T08:27:37+00:00",
199
+ "type": "library",
200
+ "extra": {
201
+ "branch-alias": {
202
+ "dev-develop": "0.3.x-dev"
203
+ }
204
+ },
205
+ "installation-source": "dist",
206
+ "autoload": {
207
+ "psr-4": {
208
+ "Dhii\\Collection\\": "src"
209
+ }
210
+ },
211
+ "notification-url": "https://packagist.org/downloads/",
212
+ "license": [
213
+ "MIT"
214
+ ],
215
+ "authors": [
216
+ {
217
+ "name": "Dhii Team",
218
+ "email": "development@dhii.co"
219
+ },
220
+ {
221
+ "name": "Anton Ukhanev",
222
+ "email": "xedin.unknown@gmail.com"
223
+ }
224
+ ],
225
+ "description": "A highly ISP-compliant collection of interfaces that represent maps and lists."
226
+ },
227
  {
228
  "name": "dhii/containers",
229
+ "version": "v0.1.0-alpha1",
230
+ "version_normalized": "0.1.0.0-alpha1",
231
  "source": {
232
  "type": "git",
233
  "url": "https://github.com/Dhii/containers.git",
234
+ "reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc"
235
  },
236
  "dist": {
237
  "type": "zip",
238
+ "url": "https://api.github.com/repos/Dhii/containers/zipball/73eed5422e106006c81ca1fa8b7213c6be33efbc",
239
+ "reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc",
240
  "shasum": ""
241
  },
242
  "require": {
243
  "container-interop/service-provider": "^0.4",
244
+ "dhii/collections-interface": "^0.3.0-alpha1",
245
+ "php": "^7.1 | ^8.0"
246
  },
247
  "require-dev": {
248
  "gmazzap/andrew": "^1.1",
249
+ "phpunit/phpunit": "^7.0",
250
  "psr/container": "^1.0",
251
  "slevomat/coding-standard": "~4.0"
252
  },
253
+ "time": "2020-09-14T18:27:47+00:00",
254
  "type": "library",
255
  "extra": {
256
  "branch-alias": {
257
  "dev-develop": "0.1.x-dev"
258
  }
259
  },
260
+ "installation-source": "dist",
261
  "autoload": {
262
  "psr-4": {
263
  "Dhii\\Container\\": "src/"
336
  "description": "Interfaces for working with data containers",
337
  "abandoned": "dhii/collections-interface"
338
  },
339
+ {
340
+ "name": "dhii/data-key-value-aware-interface",
341
+ "version": "v0.1",
342
+ "version_normalized": "0.1.0.0",
343
+ "source": {
344
+ "type": "git",
345
+ "url": "https://github.com/Dhii/data-key-value-aware-interface.git",
346
+ "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc"
347
+ },
348
+ "dist": {
349
+ "type": "zip",
350
+ "url": "https://api.github.com/repos/Dhii/data-key-value-aware-interface/zipball/220232bc9040fab78a6c039f5a4a5f9542317bdc",
351
+ "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc",
352
+ "shasum": ""
353
+ },
354
+ "require": {
355
+ "php": "^5.3 | ^7.0"
356
+ },
357
+ "require-dev": {
358
+ "codeclimate/php-test-reporter": "<=0.3.2",
359
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
360
+ "phpunit/phpunit": "4.*",
361
+ "ptrofimov/xpmock": "^1.1"
362
+ },
363
+ "time": "2017-01-21T17:35:30+00:00",
364
+ "type": "library",
365
+ "installation-source": "dist",
366
+ "autoload": {
367
+ "psr-4": {
368
+ "Dhii\\Data\\": "src/"
369
+ }
370
+ },
371
+ "notification-url": "https://packagist.org/downloads/",
372
+ "license": [
373
+ "MIT"
374
+ ],
375
+ "authors": [
376
+ {
377
+ "name": "Dhii Team",
378
+ "email": "development@dhii.co"
379
+ }
380
+ ],
381
+ "description": "Interfaces that aim to increase interoperability of value objects"
382
+ },
383
  {
384
  "name": "dhii/exception-interface",
385
  "version": "v0.2",
484
  },
485
  {
486
  "name": "dhii/module-interface",
487
+ "version": "v0.1",
488
+ "version_normalized": "0.1.0.0",
489
  "source": {
490
  "type": "git",
491
  "url": "https://github.com/Dhii/module-interface.git",
492
+ "reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277"
493
  },
494
  "dist": {
495
  "type": "zip",
496
+ "url": "https://api.github.com/repos/Dhii/module-interface/zipball/a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
497
+ "reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
498
  "shasum": ""
499
  },
500
  "require": {
501
+ "dhii/data-key-value-aware-interface": "^0.1",
502
+ "dhii/exception-interface": "^0.1 | ^0.2",
503
+ "dhii/factory-interface": "^0.1-alpha1",
504
+ "php": "^5.3 | ^7.0"
505
  },
506
  "require-dev": {
507
+ "codeclimate/php-test-reporter": "<=0.3.2",
508
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
509
+ "dhii/stringable-interface": "^0.1",
510
+ "phpunit/phpunit": "^4.8",
511
+ "psr/container": "^1.0",
512
+ "ptrofimov/xpmock": "^1.1"
513
  },
514
+ "time": "2019-11-05T18:25:12+00:00",
515
  "type": "library",
516
  "extra": {
517
  "branch-alias": {
518
+ "dev-develop": "0.1.x-dev"
519
  }
520
  },
521
+ "installation-source": "dist",
522
  "autoload": {
523
  "psr-4": {
524
  "Dhii\\Modular\\Module\\": "src"
782
  ]
783
  },
784
  {
785
+ "name": "ralouphie/getallheaders",
786
+ "version": "3.0.3",
787
+ "version_normalized": "3.0.3.0",
788
  "source": {
789
  "type": "git",
790
+ "url": "https://github.com/ralouphie/getallheaders.git",
791
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
792
  },
793
  "dist": {
794
  "type": "zip",
795
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
796
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
797
  "shasum": ""
798
  },
799
  "require": {
800
+ "php": ">=5.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
801
  },
802
  "require-dev": {
803
+ "php-coveralls/php-coveralls": "^2.1",
804
+ "phpunit/phpunit": "^5 || ^6.5"
 
805
  },
806
+ "time": "2019-03-08T08:55:37+00:00",
807
  "type": "library",
 
 
 
 
 
808
  "installation-source": "dist",
809
  "autoload": {
810
+ "files": [
811
+ "src/getallheaders.php"
812
+ ]
813
  },
814
  "notification-url": "https://packagist.org/downloads/",
815
  "license": [
817
  ],
818
  "authors": [
819
  {
820
+ "name": "Ralph Khattar",
821
+ "email": "ralph.khattar@gmail.com"
 
822
  }
823
  ],
824
+ "description": "A polyfill for getallheaders."
825
  }
826
  ]
vendor/dhii/collections-interface/.env.example ADDED
@@ -0,0 +1,2 @@
 
 
1
+ BASE_PATH=./
2
+ PROJECT_NAME=dhii_collections-interface
vendor/dhii/collections-interface/CHANGELOG.md ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Change log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## [[*next-version*]] - YYYY-MM-DD
8
+
9
+ ## [0.3.0-alpha2] - 2020-10-13
10
+ ### Added
11
+ - `ClearableContainerInterface`.
12
+
13
+ ## [0.3.0-alpha1] - 2020-09-09
14
+ ### Removed
15
+ - Support for PHP 5.x.
16
+ - Obsolete dependencies, scripts and other info.
17
+ - `AddCapableInterface`, `SetCapableInterface`, and their descendants.
18
+
19
+ ### Changed
20
+ `MapFactoryInterface` now extends a new interface, leading to signature change.
21
+
22
+ ### Added
23
+ - Docker configuration.
24
+ - `ContainerFactoryInterface`.
25
+ - `SetFactoryInterface`.
26
+ - `HasCapableInteface` for ISP.
27
+ - `ContainerCapableInterface` as a bridge between `HasCapableInterface`
28
+ and PSR-11.
29
+ - `WritableMapInterface` and `WritableSetInterface`.
30
+ - `MutableContainerInterface`.
31
+ - `MutableContainerInterface#unset()` can now throw `NotFoundExceptionInterface`
32
+ when unsetting non-existing key.
33
+
34
+ ## [0.2] - 2019-05-10
35
+ Stable release.
36
+
37
+ ## [0.2-alpha5] - 2018-04-26
38
+ ### Added
39
+ - `MapFactoryInterface`.
40
+
41
+ ## [0.2-alpha4] - 2018-04-09
42
+ ### Fixed
43
+ - Problem #15, where `AddCapableInterface#$add()` didn't accept the item.
44
+
45
+ ## [0.2-alpha3] - 2018-04-06
46
+ ### Changed
47
+ - `CountableMapInterface` no longer extends `CountableSetInterface`, but still extends `CountableListInterface`.
48
+
49
+ ### Added
50
+ - `SetCapableMapInterface`.
51
+
52
+ ## [0.2-alpha2] - 2018-04-06
53
+ ### Changed
54
+ - `SetInterface` no longer extends `HasCapableInterface`, but extends new `HasItemCapableInterface`
55
+ - `MapInterface` no longer extends `SetInterface`, but is still traversable.
56
+
57
+ ### Added
58
+ - `HasItemCapableInterface`.
59
+ - `AddCapableInterface`.
60
+ - `AddCapableSetInterface`.
61
+ - `SetCapableInterface`.
62
+
63
+ ## [0.2-alpha1] - 2018-04-06
64
+ Initial version.
vendor/{wp-oop/transient-cache → dhii/collections-interface}/LICENSE RENAMED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2020 Inpsyde
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
1
+ Copyright (c) 2018 Dhii
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
vendor/dhii/collections-interface/README.md ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Dhii - Collections Interface
2
+
3
+ [![Build Status](https://travis-ci.org/Dhii/collections-interface.svg?branch=develop)](https://travis-ci.org/Dhii/collections-interface)
4
+ [![Code Climate](https://codeclimate.com/github/Dhii/collections-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/collections-interface)
5
+ [![Test Coverage](https://codeclimate.com/github/Dhii/collections-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/collections-interface/coverage)
6
+ [![Latest Stable Version](https://poser.pugx.org/dhii/collections-interface/version)](https://packagist.org/packages/dhii/collections-interface)
7
+
8
+ A highly [ISP][ISP]-compliant collection of interfaces that represent collections.
9
+
10
+ ## Interfaces
11
+ - [`CountableListInterface`][CountableListInterface]: A list that can be iterated and counted.
12
+ - [`HasItemCapableInterface`][HasItemCapableInterface]: Something that can be checked for the existence of an item.
13
+ - [`SetInterface`][SetInterface]: A list that can be checked for a value.
14
+ - [`CountableSetInterface`][CountableSetInterface]: A set that can be counted.
15
+ - [`MapInterface`][MapInterface]: An iterable container.
16
+ - [`CountableMapInterface`][CountableMapInterface]: A countable map.
17
+ - [`ContainerFactoryInterface`][]: A factory of `ContainerInterface` objects.
18
+ - [`MapFactoryInterface`][]: A factory of `MapInterface` objects.
19
+ - [`HasCapableInterface`][]: Something that can check for a given key.
20
+ - [`ContainerInterface`][]: A container implementing `HasCapableInterface`.
21
+ - [`WritableContainerInterface`][]: A container that can have mappings added and removed.
22
+ - [`WritableMapInterface`][]: A map that can have mappings added and removed.
23
+ - [`WritableSetInterface`][]: A set that can have items added and removed.
24
+ - [`ClearableContainerInterface`][]: A container that can have its members cleared.
25
+
26
+
27
+ [Dhii]: https://github.com/Dhii/dhii
28
+ [ISP]: https://en.wikipedia.org/wiki/Interface_segregation_principle
29
+
30
+ [CountableListInterface]: src/CountableListInterface.php
31
+ [SetInterface]: src/SetInterface.php
32
+ [CountableSetInterface]: src/CountableSetInterface.php
33
+ [MapInterface]: src/MapInterface.php
34
+ [CountableMapInterface]: src/CountableMapInterface.php
35
+ [HasItemCapableInterface]: src/HasItemCapableInterface.php
36
+ [`MapFactoryInterface`]: src/MapFactoryInterface.php
37
+ [`ContainerFactoryInterface`]: src/ContainerFactoryInterface.php
38
+ [`HasCapableInterface`]: src/HasCapableInterface.php
39
+ [`ContainerInterface`]: src/ContainerInterface.php
40
+ [`WritableContainerInterface`]: src/WritableContainerInterface.php
41
+ [`WritableMapInterface`]: src/WritableMapInterface.php
42
+ [`WritableSetInterface`]: src/WritableSetInterface.php
43
+ [`ClearableContainerInterface`]: src/ClearableContainerInterface.php
vendor/dhii/collections-interface/composer.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "dhii/collections-interface",
3
+ "description": "A highly ISP-compliant collection of interfaces that represent maps and lists.",
4
+ "type": "library",
5
+ "license": "MIT",
6
+ "authors": [
7
+ {
8
+ "name": "Dhii Team",
9
+ "email": "development@dhii.co"
10
+ },
11
+ {
12
+ "name": "Anton Ukhanev",
13
+ "email": "xedin.unknown@gmail.com"
14
+ }
15
+ ],
16
+ "minimum-stability": "dev",
17
+ "prefer-stable": true,
18
+ "require": {
19
+ "php": "^7.1",
20
+ "psr/container": "^1.0"
21
+ },
22
+ "require-dev": {
23
+ "phpunit/phpunit": "^7.0 | ^8.0",
24
+ "slevomat/coding-standard": "^6.0",
25
+ "vimeo/psalm": "^3.0"
26
+ },
27
+ "autoload": {
28
+ "psr-4": {
29
+ "Dhii\\Collection\\": "src"
30
+ }
31
+ },
32
+ "autoload-dev": {
33
+ "psr-4": {
34
+ "Dhii\\Collection\\UnitTest\\": "test/unit"
35
+ }
36
+ },
37
+ "extra": {
38
+ "branch-alias": {
39
+ "dev-develop": "0.3.x-dev"
40
+ }
41
+ }
42
+ }
vendor/dhii/{module-interface → collections-interface}/docker-compose.yml RENAMED
@@ -1,8 +1,13 @@
1
- version: '3.1'
2
  services:
3
  php:
 
4
  build:
5
  context: docker
6
  dockerfile: Dockerfile_php
7
  volumes:
8
  - ${BASE_PATH}:/srv/
 
 
 
 
1
+ version: '3.2'
2
  services:
3
  php:
4
+ container_name: "${PROJECT_NAME}_php"
5
  build:
6
  context: docker
7
  dockerfile: Dockerfile_php
8
  volumes:
9
  - ${BASE_PATH}:/srv/
10
+ - psalm_cache:/var/tmp/psalm
11
+
12
+ volumes:
13
+ psalm_cache:
vendor/dhii/{module-interface → collections-interface}/docker/Dockerfile_php RENAMED
@@ -3,4 +3,4 @@ FROM dockette/php:7.1
3
  RUN apt-get update \
4
  && apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
5
  && add-apt-repository -y ppa:ondrej/php \
6
- && apt-get install -y php7.1-xdebug
3
  RUN apt-get update \
4
  && apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
5
  && add-apt-repository -y ppa:ondrej/php \
6
+ && apt-get install -y php7.1-xdebug
vendor/dhii/collections-interface/phpcs.xml.dist ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="dhii/collection-interface"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
5
+
6
+ <file>./src</file>
7
+
8
+
9
+ <config name="installed_paths" value="../../slevomat/coding-standard"/>
10
+
11
+ <rule ref="PSR12"/>
12
+ <rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint"/>
13
+ <rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint"/>
14
+ <rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
15
+ <rule ref="SlevomatCodingStandard.TypeHints.UselessConstantTypeHint"/>
16
+ <rule ref="SlevomatCodingStandard.TypeHints.DeclareStrictTypes">
17
+ <properties>
18
+ <property name="newlinesCountBetweenOpenTagAndDeclare" value="2"/>
19
+ <property name="newlinesCountAfterDeclare" value="2"/>
20
+ <property name="spacesCountAroundEqualsSign" value="0"/>
21
+ </properties>
22
+ </rule>
23
+ <rule ref="SlevomatCodingStandard.Classes.ClassStructure">
24
+ <properties>
25
+ <property name="groups" type="array">
26
+ <element value="uses"/>
27
+
28
+ <!-- Public constants are first but you don't care about the order of protected or private constants -->
29
+ <element value="public constants"/>
30
+ <element value="constants"/>
31
+
32
+ <!-- You don't care about the order among the properties. The same can be done with "properties" shortcut -->
33
+ <element value="public properties, protected properties, private properties, properties"/>
34
+
35
+ <!-- Constructor is first, then all public methods, then protected/private methods and magic methods are last -->
36
+ <element value="constructor"/>
37
+ <element value="all public methods"/>
38
+ <element value="methods"/>
39
+ <element value="magic methods"/>
40
+ </property>
41
+ </properties>
42
+ </rule>
43
+ <rule ref="SlevomatCodingStandard.ControlStructures.DisallowContinueWithoutIntegerOperandInSwitch"/>
44
+ <rule ref="SlevomatCodingStandard.ControlStructures.RequireNullCoalesceOperator"/>
45
+ <rule ref="SlevomatCodingStandard.PHP.DisallowDirectMagicInvokeCall"/>
46
+ <rule ref="SlevomatCodingStandard.Operators.DisallowEqualOperators"/>
47
+ <rule ref="SlevomatCodingStandard.Operators.RequireCombinedAssignmentOperator"/>
48
+ </ruleset>
vendor/dhii/collections-interface/phpunit.xml.dist ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <phpunit
3
+ colors="true"
4
+ bootstrap="test/bootstrap.php"
5
+ >
6
+ <php>
7
+ <ini name="display_errors" value="1" />
8
+ <ini name="display_startup_errors" value="1" />
9
+ </php>
10
+ <testsuites>
11
+ <testsuite name="unit">
12
+ <directory>./test/unit/</directory>
13
+ </testsuite>
14
+ <testsuite name="functional">
15
+ <directory>./test/functional/</directory>
16
+ </testsuite>
17
+ </testsuites>
18
+ <filter>
19
+ <whitelist processUncoveredFilesFromWhitelist="true">
20
+ <directory suffix=".php">src</directory>
21
+ </whitelist>
22
+ </filter>
23
+ </phpunit>
vendor/dhii/collections-interface/psalm.xml.dist ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <psalm
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xmlns="https://getpsalm.org/schema/config"
5
+ useDocblockTypes="true"
6
+ errorLevel="1"
7
+ strictBinaryOperands="false"
8
+ rememberPropertyAssignmentsAfterCall="true"
9
+ checkForThrowsDocblock="false"
10
+ throwExceptionOnError="0"
11
+ findUnusedCode="true"
12
+ ensureArrayStringOffsetsExist="true"
13
+ ensureArrayIntOffsetsExist="false"
14
+ xsi:noNamespaceSchemaLocation="https://getpsalm.org/schema/config"
15
+ cacheDirectory="/var/tmp/psalm"
16
+ >
17
+ <projectFiles>
18
+ <directory name="src"/>
19
+ </projectFiles>
20
+
21
+ <issueHandlers>
22
+ <InvalidThrow errorLevel="suppress"></InvalidThrow>
23
+ <UnusedClass errorLevel="suppress"></UnusedClass>
24
+ </issueHandlers>
25
+ </psalm>
vendor/dhii/collections-interface/src/ClearableContainerInterface.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Psr\Container\ContainerExceptionInterface;
8
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
9
+
10
+ interface ClearableContainerInterface extends PsrContainerInterface
11
+ {
12
+ /**
13
+ * Removes all members from this container.
14
+ *
15
+ * @throws ContainerExceptionInterface If problem removing.
16
+ */
17
+ public function clear(): void;
18
+ }
vendor/dhii/collections-interface/src/ContainerFactoryInterface.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Exception;
8
+ use Psr\Container\ContainerInterface;
9
+
10
+ /**
11
+ * Creates containers based on data maps.
12
+ */
13
+ interface ContainerFactoryInterface
14
+ {
15
+ /**
16
+ * Creates a container based on data.
17
+ *
18
+ * @param array<string, mixed> $data The data for the container.
19
+ *
20
+ * @return ContainerInterface The new container.
21
+ *
22
+ * @throws Exception If problem creating.
23
+ *
24
+ * @psalm-suppress PossiblyUnusedMethod
25
+ */
26
+ public function createContainerFromArray(array $data): ContainerInterface;
27
+ }
vendor/dhii/collections-interface/src/ContainerInterface.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Psr\Container\ContainerInterface as BaseContainerInterface;
8
+
9
+ /**
10
+ * Something that can retrieve and determine the existence of a value by key.
11
+ */
12
+ interface ContainerInterface extends
13
+ BaseContainerInterface,
14
+ HasCapableInterface
15
+ {
16
+ }
vendor/dhii/collections-interface/src/CountableListInterface.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Traversable;
8
+ use Countable;
9
+
10
+ /**
11
+ * A list that can be counted.
12
+ *
13
+ * @since 0.2
14
+ */
15
+ interface CountableListInterface extends
16
+ /* @since 0.2 */
17
+ Traversable,
18
+ /* @since 0.2 */
19
+ Countable
20
+ {
21
+ }
vendor/dhii/collections-interface/src/CountableMapInterface.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ /**
8
+ * A countable map.
9
+ *
10
+ * @since 0.2
11
+ *
12
+ * @psalm-suppress UnusedClass
13
+ */
14
+ interface CountableMapInterface extends
15
+ /* @since 0.2 */
16
+ CountableListInterface,
17
+ /* @since 0.2 */
18
+ MapInterface
19
+ {
20
+
21
+ }
vendor/dhii/collections-interface/src/CountableSetInterface.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ /**
8
+ * A countable list that can be checked for a key.
9
+ *
10
+ * @since 0.2
11
+ *
12
+ * @psalm-suppress UnusedClass
13
+ */
14
+ interface CountableSetInterface extends
15
+ /* @since 0.2 */
16
+ CountableListInterface,
17
+ /* @since 0.2 */
18
+ SetInterface
19
+ {
20
+
21
+ }
vendor/dhii/collections-interface/src/HasCapableInterface.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Psr\Container\ContainerExceptionInterface;
8
+
9
+ /**
10
+ * Something that can determine the existence of a key.
11
+ */
12
+ interface HasCapableInterface
13
+ {
14
+ /**
15
+ * Determines whether this instance has the specified key.
16
+ *
17
+ * @param string $key The key to check for.
18
+ *
19
+ * @return bool True if the key exists; false otherwise.
20
+ *
21
+ * @throws ContainerExceptionInterface If problem determining.
22
+ *
23
+ * @psalm-suppress PossiblyUnusedMethod
24
+ * @psalm-suppress InvalidThrow
25
+ * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
26
+ * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint
27
+ */
28
+ public function has($key);
29
+ }
vendor/dhii/collections-interface/src/HasItemCapableInterface.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use RuntimeException;
8
+
9
+ /**
10
+ * Something that can check for the existence of an item.
11
+ *
12
+ * @since 0.2
13
+ */
14
+ interface HasItemCapableInterface
15
+ {
16
+ /**
17
+ * Checks whether this instance has the given item.
18
+ *
19
+ * @since 0.2
20
+ *
21
+ * @param mixed $item The item to check for.
22
+ *
23
+ * @return bool True if the item exists; false otherwise.
24
+ *
25
+ * @throws RuntimeException If the existence of the item could not be verified.
26
+ *
27
+ * @psalm-suppress PossiblyUnusedMethod
28
+ */
29
+ public function hasItem($item): bool;
30
+ }
vendor/dhii/collections-interface/src/MapFactoryInterface.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Exception;
8
+ use Psr\Container\ContainerInterface as BaseContainerInterface;
9
+
10
+ /**
11
+ * A factory that can create maps.
12
+ *
13
+ * @since 0.2
14
+ */
15
+ interface MapFactoryInterface extends ContainerFactoryInterface
16
+ {
17
+ /**
18
+ * Creates a map based on data in an array.
19
+ *
20
+ * @param array<string, mixed> $data The data to base the map on.
21
+ *
22
+ * @return MapInterface The new map.
23
+ *
24
+ * @throws Exception If problem creating.
25
+ */
26
+ public function createContainerFromArray(array $data): BaseContainerInterface;
27
+ }
vendor/dhii/collections-interface/src/MapInterface.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Traversable;
8
+
9
+ /**
10
+ * A traversable container.
11
+ *
12
+ * @since 0.2
13
+ */
14
+ interface MapInterface extends
15
+ /* @since 0.2 */
16
+ Traversable,
17
+ /* @since 0.2 */
18
+ ContainerInterface
19
+ {
20
+
21
+ }
vendor/dhii/collections-interface/src/MutableContainerInterface.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Psr\Container\ContainerExceptionInterface;
8
+ use Psr\Container\NotFoundExceptionInterface;
9
+
10
+ /**
11
+ * A container that can have mappings added and removed.
12
+ *
13
+ * @psalm-suppress UnusedClass
14
+ */
15
+ interface MutableContainerInterface extends ContainerInterface
16
+ {
17
+ /**
18
+ * Maps the given value to the specified key.
19
+ *
20
+ * @since [*next-version*]
21
+ *
22
+ * @param string $key The key to map the value to.
23
+ * @param mixed $value The value to map to the key.
24
+ *
25
+ * @throws ContainerExceptionInterface If problem mapping.
26
+ * @psalm-suppress InvalidThrow
27
+ */
28
+ public function set(string $key, $value): void;
29
+
30
+ /**
31
+ * Unmaps the value from the specified key.
32
+ *
33
+ * @since [*next-version*]
34
+ *
35
+ * @param string $key The key to unmap the value from.
36
+ *
37
+ * @throws NotFoundExceptionInterface If key not found.
38
+ * @throws ContainerExceptionInterface If problem unmapping.
39
+ * @psalm-suppress InvalidThrow
40
+ */
41
+ public function unset(string $key): void;
42
+ }
vendor/dhii/collections-interface/src/SetFactoryInterface.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Exception;
8
+
9
+ /**
10
+ * A factory that can create sets.
11
+ *
12
+ * @since [*next-version*]
13
+ */
14
+ interface SetFactoryInterface
15
+ {
16
+ /**
17
+ * Creates a set based on data in a list.
18
+ *
19
+ * @since [*next-version*]
20
+ *
21
+ * @param array<mixed> $list The list to base the set on.
22
+ *
23
+ * @return SetInterface The new set.
24
+ *
25
+ * @throws Exception If problem creating.
26
+ *
27
+ * @psalm-suppress PossiblyUnusedMethod
28
+ */
29
+ public function createSetFromList(array $list): SetInterface;
30
+ }
vendor/dhii/collections-interface/src/SetInterface.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Traversable;
8
+
9
+ /**
10
+ * A list that can be checked for a key.
11
+ *
12
+ * @since 0.2
13
+ */
14
+ interface SetInterface extends
15
+ /* @since 0.2 */
16
+ Traversable,
17
+ /* @since 0.2 */
18
+ HasItemCapableInterface
19
+ {
20
+
21
+ }
vendor/dhii/collections-interface/src/WritableContainerFactoryInterface.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Psr\Container\ContainerInterface;
8
+
9
+ /**
10
+ * A map that can create a writable container.
11
+ */
12
+ interface WritableContainerFactoryInterface extends ContainerFactoryInterface
13
+ {
14
+ /**
15
+ * @inheritDoc
16
+ *
17
+ * @return WritableContainerInterface The new container.
18
+ */
19
+ public function createContainerFromArray(array $data): ContainerInterface;
20
+ }
vendor/dhii/collections-interface/src/WritableContainerInterface.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Exception;
8
+
9
+ /**
10
+ * A container that can be written to.
11
+ */
12
+ interface WritableContainerInterface extends ContainerInterface
13
+ {
14
+ /**
15
+ * Creates a new instance with the specified mappings.
16
+ *
17
+ * @since [*next-version*]
18
+ *
19
+ * @param array<string, mixed> $mappings A map of keys to values.
20
+ *
21
+ * @return static A new instance of this class with only the specified key-value mappings.
22
+ *
23
+ * @throws Exception If problem creating.
24
+ *
25
+ * @psalm-suppress PossiblyUnusedMethod
26
+ */
27
+ public function withMappings(array $mappings): WritableContainerInterface;
28
+
29
+ /**
30
+ * Creates a new instance with the specified mappings added to existing ones.
31
+ *
32
+ * @since [*next-version*]
33
+ *
34
+ * @param array<string, mixed> $mappings A map of keys to values.
35
+ *
36
+ * @return static A new instance of this class with the specified key-value mappings added to existing ones.
37
+ *
38
+ * @throws Exception If problem creating.
39
+ *
40
+ * @psalm-suppress PossiblyUnusedMethod
41
+ */
42
+ public function withAddedMappings(array $mappings): WritableContainerInterface;
43
+
44
+ /**
45
+ * Creates a new instance with the specified keys not present.
46
+ *
47
+ * @since [*next-version*]
48
+ *
49
+ * @param array<string> $keys The keys to exclude.
50
+ *
51
+ * @return static A new instance of this class which does not contain the specified keys.
52
+ *
53
+ * @throws Exception If problem instantiating.
54
+ *
55
+ * @psalm-suppress PossiblyUnusedMethod
56
+ */
57
+ public function withoutKeys(array $keys): WritableContainerInterface;
58
+ }
vendor/dhii/collections-interface/src/WritableMapFactoryInterface.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Psr\Container\ContainerInterface as BaseContainerInterface;
8
+
9
+ /**
10
+ * Creates writable maps.
11
+ *
12
+ * @psalm-suppress UnusedClass
13
+ */
14
+ interface WritableMapFactoryInterface extends WritableContainerFactoryInterface, MapFactoryInterface
15
+ {
16
+ /**
17
+ * @inheritDoc
18
+ *
19
+ * @return WritableMapInterface The new map.
20
+ */
21
+ public function createContainerFromArray(array $data): BaseContainerInterface;
22
+ }
vendor/dhii/collections-interface/src/WritableMapInterface.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ /**
8
+ * A map that can have a value set for a key.
9
+ *
10
+ * @since [*next-version*]
11
+ */
12
+ interface WritableMapInterface extends MapInterface, WritableContainerInterface
13
+ {
14
+
15
+ }
vendor/dhii/collections-interface/src/WritableSetFactoryInterface.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ /**
8
+ * Creates writable sets.
9
+ *
10
+ * @psalm-suppress UnusedClass
11
+ */
12
+ interface WritableSetFactoryInterface extends SetFactoryInterface
13
+ {
14
+ /**
15
+ * @inheritDoc
16
+ *
17
+ * @return WritableSetInterface The new writable set.
18
+ */
19
+ public function createSetFromList(array $list): SetInterface;
20
+ }
vendor/dhii/collections-interface/src/WritableSetInterface.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dhii\Collection;
6
+
7
+ use Exception;
8
+
9
+ /**
10
+ * A set that can have items added.
11
+ *
12
+ * @psalm-suppress UnusedClass
13
+ */
14
+ interface WritableSetInterface extends SetInterface
15
+ {
16
+ /**
17
+ * Creates a new instance with the given items only.
18
+ *
19
+ * @param array|mixed[] $items A list of items for the set.
20
+ *
21
+ * @return static A new instance of this class with only the given items.
22
+ *
23
+ * @throws Exception If problem creating.
24
+ *
25
+ * @psalm-suppress PossiblyUnusedMethod
26
+ */
27
+ public function withItems(array $items);
28
+
29
+ /**
30
+ * Creates a new instance with the given items added to existing ones.
31
+ *
32
+ * @param array|mixed[] $items A list of items to add.
33
+ *
34
+ * @return static A new instance of this class with the given items added to existing ones.
35
+ *
36
+ * @throws Exception If problem creating.
37
+ *
38
+ * @psalm-suppress PossiblyUnusedMethod
39
+ */
40
+ public function withAddedItems(array $items): WritableSetInterface;
41
+
42
+ /**
43
+ * Creates a new instance with the given items not present.
44
+ *
45
+ * @param array|mixed[] $items A list of items to exclude.
46
+ *
47
+ * @return static An instance of this class without the given items.
48
+ *
49
+ * @throws Exception If problem creating.
50
+ *
51
+ * @psalm-suppress PossiblyUnusedMethod
52
+ */
53
+ public function withoutItems(array $items): WritableSetInterface;
54
+ }
vendor/dhii/containers/.codeclimate.yml DELETED
@@ -1,21 +0,0 @@
1
- ---
2
- engines:
3
- duplication:
4
- enabled: true
5
- config:
6
- languages:
7
- - php
8
- fixme:
9
- enabled: true
10
- phpmd:
11
- enabled: true
12
- config:
13
- file_extensions:
14
- - php
15
- rulesets: "phpmd.xml"
16
- ratings:
17
- paths:
18
- - "**.inc"
19
- - "**.php"
20
- exclude_paths:
21
- - test/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/.php_cs DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
-
3
- require_once __DIR__.DIRECTORY_SEPARATOR.'vendor/autoload.php';
4
- $config = Dhii\Configuration\PHPCSFixer\Config::create();
5
- $fixers = $config->getFixers();
6
-
7
- $toRemove = array();
8
- foreach ($toRemove as $_fixer) {
9
- if (($removeIndex = array_search($_fixer, $fixers)) === false) {
10
- continue;
11
- }
12
-
13
- unset($fixers[$removeIndex]);
14
- }
15
-
16
- $toAdd = array();
17
- foreach ($toAdd as $_fixer) {
18
- if (($removeIndex = array_search($_fixer, $fixers)) !== false) {
19
- continue;
20
- }
21
-
22
- $fixers[] = $_fixer;
23
- }
24
-
25
- $config->fixers($fixers);
26
- $config->getFinder()->in(__DIR__.DIRECTORY_SEPARATOR.'src');
27
- return $config;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/CHANGELOG.md CHANGED
@@ -5,3 +5,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
 
7
  ## [[*next-version*]] - YYYY-MM-DD
 
 
 
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
 
7
  ## [[*next-version*]] - YYYY-MM-DD
8
+
9
+ ## [0.1.0-alpha1] - 2020-09-14
10
+ Initial release.
vendor/dhii/containers/composer.json CHANGED
@@ -16,13 +16,13 @@
16
  "minimum-stability": "dev",
17
  "prefer-stable": true,
18
  "require": {
19
- "php": "^7.0 | ^8.0",
20
- "dhii/data-container-interface": "^0.2",
21
  "container-interop/service-provider": "^0.4"
22
  },
23
  "require-dev": {
24
  "slevomat/coding-standard": "~4.0",
25
- "phpunit/phpunit": "^6",
26
  "gmazzap/andrew": "^1.1",
27
  "psr/container": "^1.0"
28
  },
16
  "minimum-stability": "dev",
17
  "prefer-stable": true,
18
  "require": {
19
+ "php": "^7.1 | ^8.0",
20
+ "dhii/collections-interface": "^0.3.0-alpha1",
21
  "container-interop/service-provider": "^0.4"
22
  },
23
  "require-dev": {
24
  "slevomat/coding-standard": "~4.0",
25
+ "phpunit/phpunit": "^7.0",
26
  "gmazzap/andrew": "^1.1",
27
  "psr/container": "^1.0"
28
  },
vendor/dhii/containers/docker/Dockerfile_php CHANGED
@@ -1,6 +1,6 @@
1
- FROM dockette/php:7.0
2
 
3
  RUN apt-get update \
4
  && apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
5
  && add-apt-repository -y ppa:ondrej/php \
6
- && apt-get install -y php7.0-xdebug
1
+ FROM dockette/php:7.1
2
 
3
  RUN apt-get update \
4
  && apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
5
  && add-apt-repository -y ppa:ondrej/php \
6
+ && apt-get install -y php7.1-xdebug
vendor/dhii/containers/phpunit.xml DELETED
@@ -1,35 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <phpunit
3
- colors="true"
4
- bootstrap="test/bootstrap.php"
5
- >
6
- <php>
7
- <ini name="display_errors" value="1" />
8
- <ini name="display_startup_errors" value="1" />
9
- </php>
10
- <testsuites>
11
- <testsuite name="unit">
12
- <directory>./test/unit/</directory>
13
- </testsuite>
14
- <testsuite name="functional">
15
- <directory>./test/functional/</directory>
16
- </testsuite>
17
- </testsuites>
18
- <filter>
19
- <whitelist processUncoveredFilesFromWhitelist="true">
20
- <directory suffix=".php">src</directory>
21
- </whitelist>
22
- </filter>
23
- <logging>
24
- <log type="coverage-html" target="./test/coverage/html" lowUpperBound="35"
25
- highLowerBound="80"/>
26
- <log type="coverage-clover" target="./test/coverage/clover.xml"/>
27
- <log type="coverage-php" target="./test/coverage/serialized"/>
28
- <log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
29
- <log type="json" target="./test/log/logfile.json"/>
30
- <log type="tap" target="./test/log/logfile.tap"/>
31
- <log type="junit" target="./test/log/logfile.xml"/>
32
- <log type="testdox-html" target="./test/log/testdox.html"/>
33
- <log type="testdox-text" target="./test/log/testdox.txt"/>
34
- </logging>
35
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/src/AliasingContainer.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Dhii\Container\Util\StringTranslatingTrait;
7
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
8
+ use function array_key_exists;
9
+
10
+ /**
11
+ * A container implementation that wraps around an inner container to alias its keys, so consumers can use the aliases
12
+ * to fetch data from the inner container.
13
+ */
14
+ class AliasingContainer implements ContainerInterface
15
+ {
16
+ /* @since [*next-version*] */
17
+ use StringTranslatingTrait;
18
+
19
+ /**
20
+ * @since [*next-version*]
21
+ *
22
+ * @var PsrContainerInterface
23
+ */
24
+ protected $inner;
25
+
26
+ /**
27
+ * @since [*next-version*]
28
+ *
29
+ * @var array
30
+ */
31
+ protected $aliases;
32
+
33
+ /**
34
+ * Constructor.
35
+ *
36
+ * @since [*next-version*]
37
+ *
38
+ * @param PsrContainerInterface $inner The container whose keys to alias.
39
+ * @param array $aliases A mapping of aliases to their original container key counterparts.
40
+ */
41
+ public function __construct(PsrContainerInterface $inner, array $aliases)
42
+ {
43
+ $this->inner = $inner;
44
+ $this->aliases = $aliases;
45
+ }
46
+
47
+ /**
48
+ * @inheritdoc
49
+ *
50
+ * @since [*next-version*]
51
+ */
52
+ public function get($key)
53
+ {
54
+ return $this->inner->get($this->getInnerKey($key));
55
+ }
56
+
57
+ /**
58
+ * @inheritdoc
59
+ *
60
+ * @since [*next-version*]
61
+ */
62
+ public function has($key)
63
+ {
64
+ return $this->inner->has($this->getInnerKey($key));
65
+ }
66
+
67
+ /**
68
+ * Retrieves the key to use for the inner container.
69
+ *
70
+ * @since [*next-version*]
71
+ *
72
+ * @param string $key The outer key.
73
+ *
74
+ * @return string The inner key.
75
+ */
76
+ protected function getInnerKey($key)
77
+ {
78
+ if (array_key_exists($key, $this->aliases)) {
79
+ return $this->aliases[$key];
80
+ }
81
+
82
+ return $key;
83
+ }
84
+ }
vendor/dhii/containers/src/CachingContainer.php CHANGED
@@ -2,12 +2,12 @@
2
 
3
  namespace Dhii\Container;
4
 
 
5
  use Dhii\Container\Exception\ContainerException;
6
  use Dhii\Container\Exception\NotFoundException;
7
  use Dhii\Container\Util\StringTranslatingTrait;
8
- use Dhii\Data\Container\ContainerInterface;
9
  use Exception;
10
- use Psr\Container\ContainerInterface as BaseContainerInterface;
11
  use Psr\Container\NotFoundExceptionInterface;
12
 
13
  /**
@@ -24,14 +24,14 @@ class CachingContainer implements ContainerInterface
24
  */
25
  protected $cache;
26
  /**
27
- * @var BaseContainerInterface
28
  */
29
  protected $container;
30
 
31
  /**
32
- * @param BaseContainerInterface $container The container to cache entries from.
33
  */
34
- public function __construct(BaseContainerInterface $container)
35
  {
36
  $this->container = $container;
37
  $this->cache = [];
@@ -52,16 +52,13 @@ class CachingContainer implements ContainerInterface
52
  throw new NotFoundException(
53
  $this->__('Key "%1$s" not found in inner container', [$key]),
54
  0,
55
- $e,
56
- $this,
57
- $key
58
  );
59
  } catch (Exception $e) {
60
  throw new ContainerException(
61
  $this->__('Could not retrieve value for key "%1$s from inner container', [$key]),
62
  0,
63
- $e,
64
- $this
65
  );
66
  }
67
 
@@ -83,8 +80,7 @@ class CachingContainer implements ContainerInterface
83
  throw new ContainerException(
84
  $this->__('Could not check cache for key "%1$s"', [$key]),
85
  0,
86
- $e,
87
- $this
88
  );
89
  }
90
 
@@ -96,8 +92,7 @@ class CachingContainer implements ContainerInterface
96
  throw new ContainerException(
97
  $this->__('Could not check inner container for key "%1$s"', [$key]),
98
  0,
99
- $e,
100
- $this
101
  );
102
  }
103
 
@@ -153,4 +148,4 @@ class CachingContainer implements ContainerInterface
153
 
154
  return $result;
155
  }
156
- }
2
 
3
  namespace Dhii\Container;
4
 
5
+ use Dhii\Collection\ContainerInterface;
6
  use Dhii\Container\Exception\ContainerException;
7
  use Dhii\Container\Exception\NotFoundException;
8
  use Dhii\Container\Util\StringTranslatingTrait;
 
9
  use Exception;
10
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
11
  use Psr\Container\NotFoundExceptionInterface;
12
 
13
  /**
24
  */
25
  protected $cache;
26
  /**
27
+ * @var PsrContainerInterface
28
  */
29
  protected $container;
30
 
31
  /**
32
+ * @param PsrContainerInterface $container The container to cache entries from.
33
  */
34
+ public function __construct(PsrContainerInterface $container)
35
  {
36
  $this->container = $container;
37
  $this->cache = [];
52
  throw new NotFoundException(
53
  $this->__('Key "%1$s" not found in inner container', [$key]),
54
  0,
55
+ $e
 
 
56
  );
57
  } catch (Exception $e) {
58
  throw new ContainerException(
59
  $this->__('Could not retrieve value for key "%1$s from inner container', [$key]),
60
  0,
61
+ $e
 
62
  );
63
  }
64
 
80
  throw new ContainerException(
81
  $this->__('Could not check cache for key "%1$s"', [$key]),
82
  0,
83
+ $e
 
84
  );
85
  }
86
 
92
  throw new ContainerException(
93
  $this->__('Could not check inner container for key "%1$s"', [$key]),
94
  0,
95
+ $e
 
96
  );
97
  }
98
 
148
 
149
  return $result;
150
  }
151
+ }
vendor/dhii/containers/src/CompositeCachingServiceProvider.php CHANGED
@@ -3,7 +3,7 @@
3
  namespace Dhii\Container;
4
 
5
  use Interop\Container\ServiceProviderInterface;
6
- use Psr\Container\ContainerInterface;
7
 
8
  /**
9
  * A service provider that aggregates service definitions from other providers.
@@ -108,7 +108,7 @@ class CompositeCachingServiceProvider implements ServiceProviderInterface
108
 
109
  if (isset($defaults[$key])) {
110
  $default = $defaults[$key];
111
- $merged[$key] = function (ContainerInterface $c, $previous = null) use ($default, $extension) {
112
  assert(is_callable($default));
113
 
114
  $result = $default($c, $previous);
@@ -127,4 +127,4 @@ class CompositeCachingServiceProvider implements ServiceProviderInterface
127
 
128
  return $merged;
129
  }
130
- }
3
  namespace Dhii\Container;
4
 
5
  use Interop\Container\ServiceProviderInterface;
6
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
7
 
8
  /**
9
  * A service provider that aggregates service definitions from other providers.
108
 
109
  if (isset($defaults[$key])) {
110
  $default = $defaults[$key];
111
+ $merged[$key] = function (PsrContainerInterface $c, $previous = null) use ($default, $extension) {
112
  assert(is_callable($default));
113
 
114
  $result = $default($c, $previous);
127
 
128
  return $merged;
129
  }
130
+ }
vendor/dhii/containers/src/CompositeContainer.php CHANGED
@@ -2,13 +2,13 @@
2
 
3
  namespace Dhii\Container;
4
 
 
5
  use Dhii\Container\Exception\ContainerException;
6
  use Dhii\Container\Exception\NotFoundException;
7
  use Dhii\Container\Util\StringTranslatingTrait;
8
- use Dhii\Data\Container\ContainerInterface;
9
- use Dhii\Data\Container\Exception\NotFoundExceptionInterface;
10
  use Exception;
11
- use Psr\Container\ContainerInterface as BaseContainerInterface;
 
12
  use Traversable;
13
  use UnexpectedValueException;
14
 
@@ -17,12 +17,12 @@ class CompositeContainer implements ContainerInterface
17
  use StringTranslatingTrait;
18
 
19
  /**
20
- * @var array|BaseContainerInterface[]|Traversable
21
  */
22
  protected $containers;
23
 
24
  /**
25
- * @param BaseContainerInterface[]|Traversable $containers The list of containers.
26
  */
27
  public function __construct($containers)
28
  {
@@ -50,16 +50,13 @@ class CompositeContainer implements ContainerInterface
50
  throw new NotFoundException(
51
  $this->__('Failed to retrieve value for key "%1$s" from container at index "%2$s"', [$key, $index]),
52
  0,
53
- $e,
54
- $this,
55
- $key
56
  );
57
  } catch (Exception $e) {
58
  throw new ContainerException(
59
  $this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
60
  0,
61
- $e,
62
- $this
63
  );
64
  }
65
  }
@@ -67,9 +64,7 @@ class CompositeContainer implements ContainerInterface
67
  throw new NotFoundException(
68
  $this->__('Key "%1$s" not found in any of the containers', [$key]),
69
  0,
70
- null,
71
- $this,
72
- $key
73
  );
74
  }
75
 
@@ -89,12 +84,11 @@ class CompositeContainer implements ContainerInterface
89
  throw new ContainerException(
90
  $this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
91
  0,
92
- $e,
93
- $this
94
  );
95
  }
96
  }
97
 
98
  return false;
99
  }
100
- }
2
 
3
  namespace Dhii\Container;
4
 
5
+ use Dhii\Collection\ContainerInterface;
6
  use Dhii\Container\Exception\ContainerException;
7
  use Dhii\Container\Exception\NotFoundException;
8
  use Dhii\Container\Util\StringTranslatingTrait;
 
 
9
  use Exception;
10
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
11
+ use Psr\Container\NotFoundExceptionInterface;
12
  use Traversable;
13
  use UnexpectedValueException;
14
 
17
  use StringTranslatingTrait;
18
 
19
  /**
20
+ * @var array|PsrContainerInterface[]|Traversable
21
  */
22
  protected $containers;
23
 
24
  /**
25
+ * @param PsrContainerInterface[]|Traversable $containers The list of containers.
26
  */
27
  public function __construct($containers)
28
  {
50
  throw new NotFoundException(
51
  $this->__('Failed to retrieve value for key "%1$s" from container at index "%2$s"', [$key, $index]),
52
  0,
53
+ $e
 
 
54
  );
55
  } catch (Exception $e) {
56
  throw new ContainerException(
57
  $this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
58
  0,
59
+ $e
 
60
  );
61
  }
62
  }
64
  throw new NotFoundException(
65
  $this->__('Key "%1$s" not found in any of the containers', [$key]),
66
  0,
67
+ null
 
 
68
  );
69
  }
70
 
84
  throw new ContainerException(
85
  $this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
86
  0,
87
+ $e
 
88
  );
89
  }
90
  }
91
 
92
  return false;
93
  }
94
+ }
vendor/dhii/containers/src/DataStructureBasedFactory.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ declare(strict_types=1);
3
+
4
+ namespace Dhii\Container;
5
+
6
+ use Dhii\Collection\WritableMapFactoryInterface;
7
+ use Psr\Container\ContainerInterface;
8
+
9
+ /**
10
+ * @inheritDoc
11
+ */
12
+ class DataStructureBasedFactory implements DataStructureBasedFactoryInterface
13
+ {
14
+ /**
15
+ * @var WritableMapFactoryInterface
16
+ */
17
+ protected $containerFactory;
18
+
19
+ public function __construct(
20
+ WritableMapFactoryInterface $containerFactory
21
+ ) {
22
+ $this->containerFactory = $containerFactory;
23
+ }
24
+
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ public function createContainerFromArray(array $structure): ContainerInterface
29
+ {
30
+ $map = [];
31
+ foreach ($structure as $key => $value) {
32
+ if (is_array($value) || is_object($value)) {
33
+ $value = $this->createContainerFromArray($value);
34
+ }
35
+
36
+ $map[$key] = $value;
37
+ }
38
+
39
+ $container = $this->containerFactory->createContainerFromArray($map);
40
+
41
+ return $container;
42
+ }
43
+ }
vendor/dhii/containers/src/DataStructureBasedFactoryInterface.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ declare(strict_types=1);
3
+
4
+ namespace Dhii\Container;
5
+
6
+ use Dhii\Collection\WritableMapFactoryInterface;
7
+ use Dhii\Collection\WritableMapInterface;
8
+ use Exception;
9
+ use Psr\Container\ContainerInterface as BaseContainerInterface;
10
+
11
+ /**
12
+ * Creates a container hierarchy based on a traditional data structure.
13
+ */
14
+ interface DataStructureBasedFactoryInterface extends WritableMapFactoryInterface
15
+ {
16
+ /**
17
+ * Based on a traditional data structure, creates a container hierarchy.
18
+ *
19
+ * @param array $structure The traditional data structure representation.
20
+ *
21
+ * @return WritableMapInterface A hierarchy of writable maps that reflects the data structure.
22
+ *
23
+ * @throws Exception If problem creating.
24
+ */
25
+ public function createContainerFromArray(array $structure): BaseContainerInterface;
26
+ }
vendor/dhii/containers/src/DelegatingContainer.php CHANGED
@@ -2,12 +2,12 @@
2
 
3
  namespace Dhii\Container;
4
 
 
5
  use Dhii\Container\Exception\ContainerException;
6
  use Dhii\Container\Exception\NotFoundException;
7
  use Dhii\Container\Util\StringTranslatingTrait;
8
  use Interop\Container\ServiceProviderInterface;
9
- use Dhii\Data\Container\ContainerInterface;
10
- use Psr\Container\ContainerInterface as BaseContainerInterface;
11
  use UnexpectedValueException;
12
 
13
  class DelegatingContainer implements ContainerInterface
@@ -18,16 +18,17 @@ class DelegatingContainer implements ContainerInterface
18
  * @var ServiceProviderInterface
19
  */
20
  protected $provider;
 
21
  /**
22
- * @var ContainerInterface|null
23
  */
24
  protected $parent;
25
 
26
  /**
27
- * @param ServiceProviderInterface $provider
28
- * @param BaseContainerInterface|null $parent
29
  */
30
- public function __construct(ServiceProviderInterface $provider, BaseContainerInterface $parent = null)
31
  {
32
  $this->provider = $provider;
33
  $this->parent = $parent;
@@ -45,9 +46,7 @@ class DelegatingContainer implements ContainerInterface
45
  throw new NotFoundException(
46
  $this->__('Service not found for key "%1$s"', [$id]),
47
  0,
48
- null,
49
- $this,
50
- $id
51
  );
52
  }
53
 
@@ -59,8 +58,7 @@ class DelegatingContainer implements ContainerInterface
59
  throw new ContainerException(
60
  $this->__('Could not create service "%1$s"', [$id]),
61
  0,
62
- $e,
63
- $this
64
  );
65
  }
66
 
@@ -78,8 +76,7 @@ class DelegatingContainer implements ContainerInterface
78
  throw new ContainerException(
79
  $this->__('Could not extend service "%1$s"', [$id]),
80
  0,
81
- $e,
82
- $this
83
  );
84
  }
85
 
@@ -150,13 +147,12 @@ class DelegatingContainer implements ContainerInterface
150
  /**
151
  * Retrieves the container to be used for definitions and extensions.
152
  *
153
- * @return BaseContainerInterface The parent container, if set.
154
- * Otherwise, this instance.
155
  */
156
- protected function _getBaseContainer(): BaseContainerInterface
157
  {
158
- return $this->parent instanceof BaseContainerInterface
159
  ? $this->parent
160
  : $this;
161
  }
162
- }
2
 
3
  namespace Dhii\Container;
4
 
5
+ use Dhii\Collection\ContainerInterface;
6
  use Dhii\Container\Exception\ContainerException;
7
  use Dhii\Container\Exception\NotFoundException;
8
  use Dhii\Container\Util\StringTranslatingTrait;
9
  use Interop\Container\ServiceProviderInterface;
10
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
 
11
  use UnexpectedValueException;
12
 
13
  class DelegatingContainer implements ContainerInterface
18
  * @var ServiceProviderInterface
19
  */
20
  protected $provider;
21
+
22
  /**
23
+ * @var PsrContainerInterface|null
24
  */
25
  protected $parent;
26
 
27
  /**
28
+ * @param ServiceProviderInterface $provider
29
+ * @param PsrContainerInterface|null $parent
30
  */
31
+ public function __construct(ServiceProviderInterface $provider, PsrContainerInterface $parent = null)
32
  {
33
  $this->provider = $provider;
34
  $this->parent = $parent;
46
  throw new NotFoundException(
47
  $this->__('Service not found for key "%1$s"', [$id]),
48
  0,
49
+ null
 
 
50
  );
51
  }
52
 
58
  throw new ContainerException(
59
  $this->__('Could not create service "%1$s"', [$id]),
60
  0,
61
+ $e
 
62
  );
63
  }
64
 
76
  throw new ContainerException(
77
  $this->__('Could not extend service "%1$s"', [$id]),
78
  0,
79
+ $e
 
80
  );
81
  }
82
 
147
  /**
148
  * Retrieves the container to be used for definitions and extensions.
149
  *
150
+ * @return PsrContainerInterface The parent container, if set. Otherwise, this instance.
 
151
  */
152
+ protected function _getBaseContainer() : PsrContainerInterface
153
  {
154
+ return $this->parent instanceof PsrContainerInterface
155
  ? $this->parent
156
  : $this;
157
  }
158
+ }
vendor/dhii/containers/src/DeprefixingContainer.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
7
+ use Psr\Container\NotFoundExceptionInterface;
8
+
9
+ /**
10
+ * A container implementation that wraps around an inner container to automatically add prefixes to keys during
11
+ * fetching and look up, allowing consumers to omit them.
12
+ *
13
+ * @since [*next-version*]
14
+ */
15
+ class DeprefixingContainer implements ContainerInterface
16
+ {
17
+ /**
18
+ * @since [*next-version*]
19
+ *
20
+ * @var PsrContainerInterface
21
+ */
22
+ protected $inner;
23
+
24
+ /**
25
+ * @since [*next-version*]
26
+ *
27
+ * @var string
28
+ */
29
+ protected $prefix;
30
+
31
+ /**
32
+ * @since [*next-version*]
33
+ *
34
+ * @var bool
35
+ */
36
+ protected $strict;
37
+
38
+ /**
39
+ * Constructor.
40
+ *
41
+ * @since [*next-version*]
42
+ *
43
+ * @param PsrContainerInterface $container The container whose keys to deprefix.
44
+ * @param string $prefix The prefix to remove from the container's keys.
45
+ * @param bool $strict Whether or not to fallback to prefixed keys if an un-prefixed key does
46
+ * not exist in the inner container.
47
+ */
48
+ public function __construct(PsrContainerInterface $container, string $prefix, bool $strict = true)
49
+ {
50
+ $this->inner = $container;
51
+ $this->prefix = $prefix;
52
+ $this->strict = $strict;
53
+ }
54
+
55
+ /**
56
+ * @inheritdoc
57
+ *
58
+ * @since [*next-version*]
59
+ */
60
+ public function get($key)
61
+ {
62
+ try {
63
+ return $this->inner->get($this->getInnerKey($key));
64
+ } catch (NotFoundExceptionInterface $nfException) {
65
+ if ($this->strict || !$this->inner->has($key)) {
66
+ throw $nfException;
67
+ }
68
+ }
69
+
70
+ return $this->inner->get($key);
71
+ }
72
+
73
+ /**
74
+ * @inheritdoc
75
+ *
76
+ * @since [*next-version*]
77
+ */
78
+ public function has($key)
79
+ {
80
+ return $this->inner->has($this->getInnerKey($key)) || (!$this->strict && $this->inner->has($key));
81
+ }
82
+
83
+ /**
84
+ * Retrieves the key to use for the inner container.
85
+ *
86
+ * @since [*next-version*]
87
+ *
88
+ * @param string $key The outer key.
89
+ *
90
+ * @return string The inner key.
91
+ */
92
+ protected function getInnerKey($key)
93
+ {
94
+ return $this->prefix . $key;
95
+ }
96
+ }
vendor/dhii/containers/src/Dictionary.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use ArrayIterator;
6
+ use Dhii\Collection\WritableContainerInterface;
7
+ use Dhii\Collection\WritableMapInterface;
8
+ use Dhii\Container\Exception\NotFoundException;
9
+ use Dhii\Container\Util\StringTranslatingTrait;
10
+ use IteratorAggregate;
11
+ use RangeException;
12
+
13
+ /**
14
+ * A simple mutable dictionary, i.e. an enumerable key-value map.
15
+ */
16
+ class Dictionary implements
17
+ IteratorAggregate,
18
+ WritableMapInterface
19
+ {
20
+ use StringTranslatingTrait;
21
+
22
+ /** @var array */
23
+ protected $data;
24
+
25
+ /**
26
+ * @param array $data The key-value map of data.
27
+ */
28
+ public function __construct(array $data)
29
+ {
30
+ $this->data = $data;
31
+ }
32
+
33
+ /**
34
+ * {@inheritDoc}
35
+ */
36
+ public function get($key)
37
+ {
38
+ if (!array_key_exists($key, $this->data)) {
39
+ throw new NotFoundException(
40
+ $this->__('Dictionary does not have key "%1$s"', [$key]),
41
+ 0,
42
+ null
43
+ );
44
+ }
45
+
46
+ return $this->data[$key];
47
+ }
48
+
49
+ /**
50
+ * {@inheritDoc}
51
+ */
52
+ public function has($key)
53
+ {
54
+ $isHas = array_key_exists($key, $this->data);
55
+
56
+ return $isHas;
57
+ }
58
+
59
+ /**
60
+ * {@inheritDoc}
61
+ */
62
+ public function getIterator()
63
+ {
64
+ return new ArrayIterator($this->data);
65
+ }
66
+
67
+ /**
68
+ * @inheritDoc
69
+ */
70
+ public function withMappings(array $mappings): WritableContainerInterface
71
+ {
72
+ $dictionary = $this->cloneMe();
73
+ $dictionary->data = $mappings;
74
+
75
+ return $dictionary;
76
+ }
77
+
78
+ /**
79
+ * @inheritDoc
80
+ */
81
+ public function withAddedMappings(array $mappings): WritableContainerInterface
82
+ {
83
+ $dictionary = $this->cloneMe();
84
+ $dictionary->data = $mappings + $this->data;
85
+
86
+ return $dictionary;
87
+ }
88
+
89
+ /**
90
+ * @inheritDoc
91
+ */
92
+ public function withoutKeys(array $keys): WritableContainerInterface
93
+ {
94
+ $dictionary = $this->cloneMe();
95
+
96
+ foreach ($keys as $i => $key) {
97
+ if (!is_string($key)) {
98
+ throw new RangeException($this->__('Key at index %1$d is not a string', [$i]));
99
+ }
100
+ unset($dictionary->data[$key]);
101
+ }
102
+
103
+ return $dictionary;
104
+ }
105
+
106
+ /**
107
+ * Creates a copy of this instance
108
+ *
109
+ * @return Dictionary The new instance
110
+ */
111
+ protected function cloneMe(): Dictionary
112
+ {
113
+ return clone $this;
114
+ }
115
+ }
vendor/dhii/containers/src/DictionaryFactory.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ declare(strict_types=1);
3
+
4
+ namespace Dhii\Container;
5
+
6
+ use Dhii\Collection\WritableMapFactoryInterface;
7
+ use Psr\Container\ContainerInterface;
8
+
9
+ /**
10
+ * @inheritDoc
11
+ */
12
+ class DictionaryFactory implements WritableMapFactoryInterface
13
+ {
14
+ /**
15
+ * @inheritDoc
16
+ */
17
+ public function createContainerFromArray(array $data): ContainerInterface
18
+ {
19
+ return new Dictionary($data);
20
+ }
21
+ }
vendor/dhii/containers/src/Exception/ContainerException.php CHANGED
@@ -2,8 +2,8 @@
2
 
3
  namespace Dhii\Container\Exception;
4
 
5
- use Dhii\Data\Container\Exception\ContainerExceptionInterface;
6
  use Exception;
 
7
  use Psr\Container\ContainerInterface;
8
  use Throwable;
9
 
@@ -14,7 +14,6 @@ use Throwable;
14
  */
15
  class ContainerException extends Exception implements ContainerExceptionInterface
16
  {
17
-
18
  /**
19
  * @var ContainerInterface|null
20
  */
@@ -23,25 +22,13 @@ class ContainerException extends Exception implements ContainerExceptionInterfac
23
  /**
24
  * @param string $message The exception message.
25
  * @param int $code The exception code.
26
- * @param Throwable|null $previous The inner exception, if any,
27
- * @param ContainerInterface|null $container The container that caused the exception, if any,
28
  */
29
  public function __construct(
30
  string $message = "",
31
  int $code = 0,
32
- Throwable $previous = null,
33
- ContainerInterface $container = null
34
  ) {
35
  parent::__construct($message, $code, $previous);
36
- $this->container = $container;
37
- }
38
-
39
- /**
40
- * {@inheritDoc}
41
- */
42
- public function getContainer()
43
- {
44
- return $this->container;
45
  }
46
-
47
  }
2
 
3
  namespace Dhii\Container\Exception;
4
 
 
5
  use Exception;
6
+ use Psr\Container\ContainerExceptionInterface;
7
  use Psr\Container\ContainerInterface;
8
  use Throwable;
9
 
14
  */
15
  class ContainerException extends Exception implements ContainerExceptionInterface
16
  {
 
17
  /**
18
  * @var ContainerInterface|null
19
  */
22
  /**
23
  * @param string $message The exception message.
24
  * @param int $code The exception code.
25
+ * @param Throwable|null $previous The inner exception, if any.
 
26
  */
27
  public function __construct(
28
  string $message = "",
29
  int $code = 0,
30
+ Throwable $previous = null
 
31
  ) {
32
  parent::__construct($message, $code, $previous);
 
 
 
 
 
 
 
 
 
33
  }
 
34
  }
vendor/dhii/containers/src/Exception/NotFoundException.php CHANGED
@@ -2,8 +2,7 @@
2
 
3
  namespace Dhii\Container\Exception;
4
 
5
- use Dhii\Data\Container\Exception\NotFoundExceptionInterface;
6
- use Psr\Container\ContainerInterface;
7
  use Throwable;
8
 
9
  class NotFoundException extends ContainerException implements NotFoundExceptionInterface
@@ -16,20 +15,8 @@ class NotFoundException extends ContainerException implements NotFoundExceptionI
16
  public function __construct(
17
  $message = '',
18
  $code = 0,
19
- Throwable $previous = null,
20
- ContainerInterface $container = null,
21
- string $dataKey = null
22
  ) {
23
- parent::__construct($message, $code, $previous, $container);
24
- $this->dataKey = $dataKey;
25
  }
26
-
27
-
28
- /**
29
- * {@inheritdoc
30
- */
31
- public function getDataKey()
32
- {
33
- return $this->dataKey;
34
- }
35
- }
2
 
3
  namespace Dhii\Container\Exception;
4
 
5
+ use Psr\Container\NotFoundExceptionInterface;
 
6
  use Throwable;
7
 
8
  class NotFoundException extends ContainerException implements NotFoundExceptionInterface
15
  public function __construct(
16
  $message = '',
17
  $code = 0,
18
+ Throwable $previous = null
 
 
19
  ) {
20
+ parent::__construct($message, $code, $previous);
 
21
  }
22
+ }
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/src/HierarchyContainer.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Dhii\Container\Exception\NotFoundException;
7
+ use stdClass;
8
+
9
+ /**
10
+ * A container implementation that provides access to hierarchical data in the form a container tree.
11
+ *
12
+ * This implementation dynamically transforms hierarchical data into a tree of containers, on-demand. The transformation
13
+ * is performed "in-place", converting internal array and object values into containers without producing a copy or
14
+ * internal cache, making this implementation very memory-friendly.
15
+ *
16
+ * **Example usage:**
17
+ *
18
+ * ```php
19
+ * $data = [
20
+ * 'config' => [
21
+ * 'db' => [
22
+ * 'host' => 'localhost',
23
+ * 'port' => 3306,
24
+ * ],
25
+ * ]
26
+ * ];
27
+ *
28
+ * $container = new HierarchicalContainer($data);
29
+ * $container->get('config')->get('db')->get('host'); // "localhost"
30
+ * ```
31
+ *
32
+ * @since [*next-version*]
33
+ * @see PathContainer For an implementation that compliments this one by allowing container trees to be accessed using
34
+ * path-like keys.
35
+ * @see SegmentingContainer For an implementation that achieves a similar effect but for flat hierarchies.
36
+ */
37
+ class HierarchyContainer implements ContainerInterface
38
+ {
39
+ /**
40
+ * @since [*next-version*]
41
+ *
42
+ * @var array
43
+ */
44
+ protected $data;
45
+
46
+ /**
47
+ * Constructor.
48
+ *
49
+ * @since [*next-version*]
50
+ *
51
+ * @param array $data The hierarchical data for which to create the container tree.
52
+ */
53
+ public function __construct(array $data)
54
+ {
55
+ $this->data = $data;
56
+ }
57
+
58
+ /**
59
+ * @inheritDoc
60
+ *
61
+ * @since [*next-version*]
62
+ */
63
+ public function get($key)
64
+ {
65
+ if (!array_key_exists($key, $this->data)) {
66
+ throw new NotFoundException("Key '{$key}' does not exist", 0, null, $this, $key);
67
+ }
68
+
69
+ $value = $this->data[$key];
70
+
71
+ if (is_array($value) || $value instanceof stdClass) {
72
+ $value = $this->data[$key] = new HierarchyContainer($value);
73
+ }
74
+
75
+ return $value;
76
+ }
77
+
78
+ /**
79
+ * @inheritDoc
80
+ *
81
+ * @since [*next-version*]
82
+ */
83
+ public function has($key)
84
+ {
85
+ return array_key_exists($key, $this->data);
86
+ }
87
+ }
vendor/dhii/containers/src/MappingContainer.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Dhii\Container\Util\StringTranslatingTrait;
7
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
8
+
9
+ /**
10
+ * A container implementation that can map results from another container using a callback.
11
+ *
12
+ * **Example usage**:
13
+ *
14
+ * ```php
15
+ * $container = new Container([
16
+ * 'first' => 'Paul',
17
+ * 'second' => 'JC',
18
+ * 'third' => 'Alex',
19
+ * ]);
20
+ *
21
+ * $mContainer = new MappingContainer($container, function ($name) {
22
+ * return $name . ' Denton';
23
+ * });
24
+ *
25
+ * $mContainer->get('first'); // "Paul Denton"
26
+ * $mContainer->get('second'); // "JC Denton"
27
+ *
28
+ * // We don't talk about Alex
29
+ * ```
30
+ *
31
+ * @since [*next-version*]
32
+ */
33
+ class MappingContainer implements ContainerInterface
34
+ {
35
+ /* @since [*next-version*] */
36
+ use StringTranslatingTrait;
37
+
38
+ /**
39
+ * @since [*next-version*]
40
+ *
41
+ * @var callable
42
+ */
43
+ protected $callback;
44
+
45
+ /**
46
+ * @since [*next-version*]
47
+ *
48
+ * @var PsrContainerInterface
49
+ */
50
+ protected $inner;
51
+
52
+ /**
53
+ * Constructor.
54
+ *
55
+ * @since [*next-version*]
56
+ *
57
+ * @param PsrContainerInterface|null $inner The container instance to decorate.
58
+ * @param callable $callback The callback to invoke on get. It will be passed 3 parameters:
59
+ * * The inner container's value for the key being fetched.
60
+ * * The key being fetched.
61
+ * * A reference to this container instance.
62
+ */
63
+ public function __construct(PsrContainerInterface $inner, callable $callback)
64
+ {
65
+ $this->callback = $callback;
66
+ $this->inner = $inner;
67
+ }
68
+
69
+ /**
70
+ * @inheritdoc
71
+ *
72
+ * @since [*next-version*]
73
+ */
74
+ public function get($key)
75
+ {
76
+ return ($this->callback)($this->inner->get($key), $key, $this);
77
+ }
78
+
79
+ /**
80
+ * @inheritdoc
81
+ *
82
+ * @since [*next-version*]
83
+ */
84
+ public function has($key)
85
+ {
86
+ return $this->inner->has($key);
87
+ }
88
+ }
vendor/dhii/containers/src/MaskingContainer.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Dhii\Container\Exception\NotFoundException;
7
+ use Dhii\Container\Util\StringTranslatingTrait;
8
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
9
+ use function array_key_exists;
10
+
11
+ /**
12
+ * An implementation of a container that wraps around another to selectively expose or mask certain keys.
13
+ *
14
+ * @since [*next-version*]
15
+ */
16
+ class MaskingContainer implements ContainerInterface
17
+ {
18
+ /* @since [*next-version*] */
19
+ use StringTranslatingTrait;
20
+
21
+ /**
22
+ * @var PsrContainerInterface
23
+ */
24
+ protected $inner;
25
+
26
+ /**
27
+ * @var bool[]
28
+ */
29
+ protected $mask;
30
+
31
+ /**
32
+ * @var bool
33
+ */
34
+ protected $defMask;
35
+
36
+ /**
37
+ * Constructor.
38
+ *
39
+ * @since [*next-version*]
40
+ *
41
+ * @param PsrContainerInterface $inner The container whose entries to mask.
42
+ * @param bool $defaultMask The default mask. If true, all inner keys are exposed. If false, all
43
+ * inner keys are hidden. Any keys specified in the $mask parameter will
44
+ * naturally override this setting.
45
+ * @param bool[] $mask A mapping of keys to booleans, such that `true` exposes the mapped key
46
+ * and `false` hides the mapped key.
47
+ */
48
+ public function __construct(PsrContainerInterface $inner, $defaultMask, array $mask)
49
+ {
50
+ $this->inner = $inner;
51
+ $this->defMask = $defaultMask;
52
+ $this->mask = $mask;
53
+ }
54
+
55
+ /**
56
+ * @inheritdoc
57
+ *
58
+ * @since [*next-version*]
59
+ */
60
+ public function get($key)
61
+ {
62
+ if (!$this->isExposed($key)) {
63
+ throw new NotFoundException(
64
+ $this->__('Inner key "%1$s" is not exposed', [$key]),
65
+ 0,
66
+ null,
67
+ $this,
68
+ $key
69
+ );
70
+ }
71
+
72
+ return $this->inner->get($key);
73
+ }
74
+
75
+ /**
76
+ * @inheritdoc
77
+ *
78
+ * @since [*next-version*]
79
+ */
80
+ public function has($key)
81
+ {
82
+ return $this->isExposed($key) && $this->inner->has($key);
83
+ }
84
+
85
+ /**
86
+ * Checks if a key is exposed through the mask.
87
+ *
88
+ * @since [*next-version*]
89
+ *
90
+ * @param string $key The key to check.
91
+ *
92
+ * @return bool True if the key is exposed, false if the key is hidden.
93
+ */
94
+ protected function isExposed($key)
95
+ {
96
+ return array_key_exists($key, $this->mask)
97
+ ? $this->mask[$key] !== false
98
+ : $this->defMask;
99
+ }
100
+ }
vendor/dhii/containers/src/PathContainer.php ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Dhii\Container\Exception\NotFoundException;
7
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
8
+ use Psr\Container\NotFoundExceptionInterface;
9
+
10
+ /**
11
+ * A container implementation that decorates a hierarchy of {@link ContainerInterface} instances to allow path-like
12
+ * access to deep containers or data.
13
+ *
14
+ * **Example usage**
15
+ *
16
+ * Consider the below hierarchy of containers:
17
+ *
18
+ * ```php
19
+ * $container = new Container([
20
+ * 'config' => new Container([
21
+ * 'db' => new Container([
22
+ * 'host' => 'localhost',
23
+ * 'port' => 3306
24
+ * ])
25
+ * ])
26
+ * ]);
27
+ * ```
28
+ *
29
+ * A {@link PathContainer} can decorate the `$container` to substitute this:
30
+ *
31
+ * ```php
32
+ * $host = $container->get('config')->get('db')->get('port');
33
+ * ```
34
+ *
35
+ * With this:
36
+ *
37
+ * ```php
38
+ * $pContainer = new PathContainer($container, '.');
39
+ * $pContainer->get('config.db.port');
40
+ * ```
41
+ *
42
+ * Note that this implementation DOES NOT create containers for hierarchical _values_. Each segment in a given path
43
+ * must correspond to a child {@link ContainerInterface} instance.
44
+ *
45
+ * @since [*next-version*]
46
+ * @see SegmentingContainer For an implementation that achieves the opposite effect.
47
+ */
48
+ class PathContainer implements ContainerInterface
49
+ {
50
+ /**
51
+ * @since [*next-version*]
52
+ *
53
+ * @var PsrContainerInterface
54
+ */
55
+ protected $inner;
56
+
57
+ /**
58
+ * @since [*next-version*]
59
+ *
60
+ * @var string
61
+ */
62
+ protected $delimiter;
63
+
64
+ /**
65
+ * Constructor.
66
+ *
67
+ * @since [*next-version*]
68
+ *
69
+ * @param PsrContainerInterface $inner The container instance to decorate.
70
+ * @param string $delimiter The path delimiter to use.
71
+ */
72
+ public function __construct(PsrContainerInterface $inner, string $delimiter = '/')
73
+ {
74
+ $this->inner = $inner;
75
+ $this->delimiter = $delimiter;
76
+ }
77
+
78
+ /**
79
+ * @inheritDoc
80
+ *
81
+ * @since [*next-version*]
82
+ */
83
+ public function get($key)
84
+ {
85
+ $tKey = (strpos($key, $this->delimiter) === 0)
86
+ ? substr($key, strlen($this->delimiter))
87
+ : $key;
88
+ $path = array_filter(explode($this->delimiter, $tKey));
89
+
90
+ if (empty($path)) {
91
+ throw new NotFoundException("The path is empty");
92
+ }
93
+
94
+ $current = $this->inner;
95
+ $head = $path[0];
96
+
97
+ while (!empty($path)) {
98
+ if (!($current instanceof PsrContainerInterface)) {
99
+ $tail = implode($this->delimiter, $path);
100
+ throw new NotFoundException("Key '{$head}' does not exist at path '{$tail}'", 0, null, $this, $head);
101
+ }
102
+
103
+ $head = array_shift($path);
104
+ $current = $current->get($head);
105
+ }
106
+
107
+ return $current;
108
+ }
109
+
110
+ /**
111
+ * @inheritDoc
112
+ *
113
+ * @since [*next-version*]
114
+ */
115
+ public function has($key)
116
+ {
117
+ try {
118
+ $this->get($key);
119
+
120
+ return true;
121
+ } catch (NotFoundExceptionInterface $exception) {
122
+ return false;
123
+ }
124
+ }
125
+ }
vendor/dhii/containers/src/PrefixingContainer.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Dhii\Container\Exception\NotFoundException;
7
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
8
+ use Psr\Container\NotFoundExceptionInterface;
9
+
10
+ /**
11
+ * A container implementation that wraps around an inner container and prefixes its keys, requiring consumers to
12
+ * include them when fetching or looking up data.
13
+ *
14
+ * @since [*next-version*]
15
+ */
16
+ class PrefixingContainer implements ContainerInterface
17
+ {
18
+ /**
19
+ * @since [*next-version*]
20
+ *
21
+ * @var PsrContainerInterface
22
+ */
23
+ protected $inner;
24
+
25
+ /**
26
+ * @since [*next-version*]
27
+ *
28
+ * @var string
29
+ */
30
+ protected $prefix;
31
+
32
+ /**
33
+ * @since [*next-version*]
34
+ *
35
+ * @var bool
36
+ */
37
+ protected $strict;
38
+
39
+ /**
40
+ * Constructor.
41
+ *
42
+ * @since [*next-version*]
43
+ *
44
+ * @param PsrContainerInterface $container The container whose keys to prefix.
45
+ * @param string $prefix The prefix to apply to the container's keys.
46
+ * @param bool $strict Whether or not to fallback to un-prefixed keys if a prefixed key does not
47
+ * exist in the inner container.
48
+ */
49
+ public function __construct(PsrContainerInterface $container, string $prefix, bool $strict = true)
50
+ {
51
+ $this->inner = $container;
52
+ $this->prefix = $prefix;
53
+ $this->strict = $strict;
54
+ }
55
+
56
+ /**
57
+ * @inheritdoc
58
+ *
59
+ * @since [*next-version*]
60
+ */
61
+ public function get($key)
62
+ {
63
+ if (!$this->isPrefixed($key) && $this->strict) {
64
+ throw new NotFoundException(sprintf('Key "%s" does not exist', $key), 0, null, $this, $key);
65
+ }
66
+
67
+ try {
68
+ return $this->inner->get($this->unprefix($key));
69
+ } catch (NotFoundExceptionInterface $nfException) {
70
+ if ($this->strict) {
71
+ throw $nfException;
72
+ }
73
+ }
74
+
75
+ return $this->inner->get($key);
76
+ }
77
+
78
+ /**
79
+ * @inheritdoc
80
+ *
81
+ * @since [*next-version*]
82
+ */
83
+ public function has($key)
84
+ {
85
+ if (!$this->isPrefixed($key) && $this->strict) {
86
+ return false;
87
+ }
88
+
89
+ return $this->inner->has($this->unprefix($key)) || (!$this->strict && $this->inner->has($key));
90
+ }
91
+
92
+ /**
93
+ * Retrieves the key to use for the inner container.
94
+ *
95
+ * @since [*next-version*]
96
+ *
97
+ * @param string $key The outer key.
98
+ *
99
+ * @return string The inner key.
100
+ */
101
+ protected function unprefix($key)
102
+ {
103
+ return $this->isPrefixed($key)
104
+ ? substr($key, strlen($this->prefix))
105
+ : $key;
106
+ }
107
+
108
+ /**
109
+ * Checks if the key is prefixed.
110
+ *
111
+ * @since [*next-version*]
112
+ *
113
+ * @param string $key The key to check.
114
+ *
115
+ * @return bool True if the key is prefixed, false if not.
116
+ */
117
+ protected function isPrefixed($key)
118
+ {
119
+ return strlen($this->prefix) > 0 && strpos($key, $this->prefix) === 0;
120
+ }
121
+ }
vendor/dhii/containers/src/SegmentingContainer.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Container;
4
+
5
+ use Dhii\Collection\ContainerInterface;
6
+ use Psr\Container\ContainerInterface as PsrContainerInterface;
7
+ use function array_filter;
8
+ use function ltrim;
9
+
10
+ /**
11
+ * This container implementation decorates another to provide nested container access even when the decorated
12
+ * container's internal data is flat.
13
+ *
14
+ * Segmenting containers are intended to be used with keys that contain segments, i.e. keys that use a delimiter to
15
+ * indicate hierarchy. For example: "some/test/key" or "some.deep.config.value". The delimiter can be configured during
16
+ * construction of a segmenting container.
17
+ *
18
+ * A segmenting container can yield 2 different kinds of results when {@link SegmentingContainer::get()} is called:
19
+ *
20
+ * **Values**
21
+ *
22
+ * If the inner container has a value for the given key, that value is returned.
23
+ *
24
+ * **Segments**
25
+ *
26
+ * If the inner container has no value for the given key, a new {@link SegmentingContainer} instance is returned. This
27
+ * segmenting container will be aware of the key that resulted in its creation, and will automatically prepend that key
28
+ * to parameter keys given in `get()`.
29
+ *
30
+ * **Example usage:**
31
+ *
32
+ * Consider the below data and a regular `$container` that provides access to it:
33
+ *
34
+ * ```php
35
+ * $data = [
36
+ * 'config.db.host' => 'localhost',
37
+ * 'config.db.post' => '3306',
38
+ * ];
39
+ * ```
40
+ *
41
+ * A segmenting container can be created that provides access to the "host" and "port":
42
+ *
43
+ * ```php
44
+ * $segmented = new SegmentingContainer($container, '.');
45
+ * $dbConfig = $config->get('config')->get('db');
46
+ * $dbConfig->get("host"); // "localhost"
47
+ * $dbConfig->get("port"); // 3306
48
+ * ```
49
+ *
50
+ * @since [*next-version*]
51
+ * @see PathContainer For an implementation that achieves the opposite effect.
52
+ */
53
+ class SegmentingContainer implements ContainerInterface
54
+ {
55
+ /**
56
+ * @var PsrContainerInterface
57
+ */
58
+ protected $inner;
59
+
60
+ /**
61
+ * @var string
62
+ */
63
+ protected $root;
64
+
65
+ /**
66
+ * @var string
67
+ */
68
+ protected $delimiter;
69
+
70
+ /**
71
+ * Constructor.
72
+ *
73
+ * @since [*next-version*]
74
+ *
75
+ * @param PsrContainerInterface $inner The container to decorate.
76
+ * @param string $delimiter The path delimiter.
77
+ */
78
+ public function __construct($inner, $delimiter = '/')
79
+ {
80
+ $this->inner = $inner;
81
+ $this->root = '';
82
+ $this->delimiter = $delimiter;
83
+ }
84
+
85
+ /**
86
+ * @inheritdoc
87
+ *
88
+ * @since [*next-version*]
89
+ */
90
+ public function get($key)
91
+ {
92
+ $tKey = ltrim($key, $this->delimiter);
93
+ $tRoot = rtrim($this->root, $this->delimiter);
94
+ // Implode to glue together the key and root, and array_filter to ignore them if they're empty
95
+ $fullKey = implode($this->delimiter, array_filter([$tRoot, $tKey]));
96
+
97
+ if ($this->inner->has($fullKey)) {
98
+ return $this->inner->get($fullKey);
99
+ }
100
+
101
+ $instance = clone $this;
102
+ $instance->root = $fullKey;
103
+
104
+ return $instance;
105
+ }
106
+
107
+ /**
108
+ * @inheritdoc
109
+ *
110
+ * @since [*next-version*]
111
+ */
112
+ public function has($key)
113
+ {
114
+ return $this->inner->has($key);
115
+ }
116
+ }
vendor/dhii/containers/test/functional/CompositeCachingServiceProviderTest.php DELETED
@@ -1,119 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\FuncTest;
4
-
5
- use Dhii\Container\CompositeCachingServiceProvider as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use Interop\Container\ServiceProviderInterface;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- class CompositeCachingServiceProviderTest extends TestCase
12
- {
13
- use ComponentMockeryTrait;
14
-
15
- /**
16
- * @param ServiceProviderInterface[] $providers
17
- *
18
- * @return TestSubject
19
- */
20
- public function createSubject(array $providers)
21
- {
22
- return new TestSubject($providers);
23
- }
24
-
25
- /**
26
- * Tests that `getFactories()` returns factories correctly overridden.
27
- *
28
- * @throws Exception If problem testing.
29
- */
30
- public function testGetFactories()
31
- {
32
- {
33
- $srv1 = uniqid('srv1');
34
- $f1 = function () use ($srv1) { return $srv1; };
35
- $srv2 = uniqid('srv2');
36
- $f2 = function () use ($srv2) { return $srv2; };
37
- $srv3 = uniqid('srv3');
38
- $f3 = function () use ($srv3) { return $srv3; };
39
- $srv4 = uniqid('srv4');
40
- $f4 = function () use ($srv4) { return $srv4; };
41
-
42
- $provider1 = $this->createServiceProvider([
43
- 'one' => $f1,
44
- 'two' => $f2,
45
- ],[]);
46
- $provider2 = $this->createServiceProvider([
47
- 'two' => $f3,
48
- 'three' => $f4,
49
- ],[]);
50
-
51
- $subject = $this->createSubject([$provider1, $provider2]);
52
- }
53
-
54
- {
55
- $result = $subject->getFactories();
56
- }
57
-
58
- {
59
- $this->assertCount(3, $result, 'Wrong number of factories');
60
- $this->assertArrayHasKey('one', $result, 'Factory missing');
61
- $this->assertArrayHasKey('two', $result, 'Factory missing');
62
- $this->assertArrayHasKey('three', $result, 'Factory missing');
63
-
64
- $this->assertEquals($srv1, $result['one'](), 'Wrong factory');
65
- $this->assertEquals($srv3, $result['two'](), 'Wrong factory');
66
- $this->assertEquals($srv4, $result['three'](), 'Wrong factory');
67
- }
68
- }
69
-
70
- /**
71
- * Tests that `getExtensions()` returns extensions correctly nested.
72
- *
73
- * @throws Exception If problem testing.
74
- */
75
- public function testGetExtensions()
76
- {
77
- {
78
- $combination = function (string $a, string $b) {
79
- return sprintf('%1$s-%2$s', $a, $b);
80
- };
81
- $srv1 = uniqid('srv1');
82
- $f1 = function () use ($srv1) { return $srv1; };
83
- $srv2 = uniqid('srv2');
84
- $f2 = function () use ($srv2) { return $srv2; };
85
- $srv3 = uniqid('srv3');
86
- $f3 = function ($container, $previous) use ($srv3, $combination) { return $combination($previous, $srv3); };
87
- $srv4 = uniqid('srv4');
88
- $f4 = function () use ($srv4) { return $srv4; };
89
-
90
- $provider1 = $this->createServiceProvider([], [
91
- 'one' => $f1,
92
- 'two' => $f2,
93
- ]);
94
- $provider2 = $this->createServiceProvider([], [
95
- 'two' => $f3,
96
- 'three' => $f4,
97
- ]);
98
-
99
- $container = $this->createContainer([]);
100
-
101
- $subject = $this->createSubject([$provider1, $provider2]);
102
- }
103
-
104
- {
105
- $result = $subject->getExtensions();
106
- }
107
-
108
- {
109
- $this->assertCount(3, $result, 'Wrong number of factories');
110
- $this->assertArrayHasKey('one', $result, 'Factory missing');
111
- $this->assertArrayHasKey('two', $result, 'Factory missing');
112
- $this->assertArrayHasKey('three', $result, 'Factory missing');
113
-
114
- $this->assertEquals($srv1, $result['one']($container, $srv1), 'Wrong factory');
115
- $this->assertEquals($combination($srv2, $srv3), $result['two']($container, $srv2), 'Wrong factory');
116
- $this->assertEquals($srv4, $result['three']($container, $srv4), 'Wrong factory');
117
- }
118
- }
119
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/functional/DelegatingContainerTest.php DELETED
@@ -1,109 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\FuncTest;
4
-
5
- use Dhii\Container\DelegatingContainer as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use PHPUnit\Framework\MockObject\MockObject;
9
- use PHPUnit\Framework\TestCase;
10
- use Psr\Container\ContainerInterface;
11
-
12
- class DelegatingContainerTest extends TestCase
13
- {
14
- use ComponentMockeryTrait;
15
-
16
- /**
17
- * Creates a new instance of the test subject.
18
- *
19
- * @param array $dependencies A list of constructor args.
20
- * @param array|null $methods The names of methods to mock in the subject.
21
- * @return MockObject|TestSubject The new instance.
22
- * @throws Exception If problem creating.
23
- */
24
- protected function createSubject(array $dependencies = [], array $methods = null)
25
- {
26
- return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
27
- ->getMock();
28
- }
29
-
30
- /**
31
- * Tests that the subject is able to retrieve an extended service.
32
- *
33
- * The service definition and extension must both receive the parent container.
34
- *
35
- * @throws Exception If problem testing.
36
- */
37
- public function testGet()
38
- {
39
- {
40
- $serviceName = uniqid('service');
41
- $parent = $this->createContainer([]);
42
- $service = 1;
43
- $definition = $this->createCallable(function (ContainerInterface $container) use ($service) {
44
- return $service;
45
- });
46
- $extension = $this->createCallable(function (ContainerInterface $container, $previous) {
47
- return $previous + 1;
48
- });
49
- $provider = $this->createServiceProvider([
50
- $serviceName => $definition,
51
- ], [
52
- $serviceName => $extension,
53
- ]);
54
- $subject = $this->createSubject([$provider, $parent]);
55
-
56
- $definition->expects($this->exactly(1))
57
- ->method('__invoke')
58
- ->with($parent);
59
- $extension->expects($this->exactly(1))
60
- ->method('__invoke')
61
- ->with($parent, $service);
62
- }
63
-
64
- {
65
- $result = $subject->get($serviceName);
66
- }
67
-
68
- {
69
- $this->assertEquals(2, $result, 'Wrong result retrieved');
70
- }
71
- }
72
-
73
- public function testHasTrue()
74
- {
75
- {
76
- $serviceName = uniqid('service');
77
- $provider = $this->createServiceProvider([
78
- $serviceName => function (ContainerInterface $container) {
79
- return 1;
80
- }
81
- ], []);
82
- $subject = $this->createSubject([$provider]);
83
- }
84
-
85
- {
86
- $result = $subject->has($serviceName);
87
- }
88
-
89
- {
90
- $this->assertTrue($result, 'Wrongly determined having');
91
- }
92
- }
93
-
94
- public function testHasFalse()
95
- {
96
- {
97
- $provider = $this->createServiceProvider([], []);
98
- $subject = $this->createSubject([$provider]);
99
- }
100
-
101
- {
102
- $result = $subject->has(uniqid('service'));
103
- }
104
-
105
- {
106
- $this->assertFalse($result, 'Wrongly determined not having');
107
- }
108
- }
109
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CachingContainerTest.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\FuncTest;
4
-
5
- use Dhii\Container\CachingContainer as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use PHPUnit\Framework\MockObject\MockObject;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- class CachingContainerTest extends TestCase
12
- {
13
- use ComponentMockeryTrait;
14
-
15
- /**
16
- * Creates a new instance of the test subject.
17
- *
18
- * @param array $dependencies A list of constructor args.
19
- * @param array|null $methods The names of methods to mock in the subject.
20
- * @return MockObject|TestSubject The new instance.
21
- * @throws Exception If problem creating.
22
- */
23
- protected function createSubject(array $dependencies, array $methods = null)
24
- {
25
- return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
26
- ->getMock();
27
- }
28
-
29
- /**
30
- * Tests that the subject can correctly retrieve a value from the inner container.
31
- *
32
- * The value must be the _same thing_ no matter how many times it is retrieved.
33
- * The subject must only ask the inner container once for the value.
34
- *
35
- * @throws Exception If problem testing.
36
- */
37
- public function testGet()
38
- {
39
- {
40
- $key = uniqid('key');
41
- $value = (object) [];
42
- $container = $this->createContainer([
43
- $key => $value,
44
- ]);
45
- $subject = $this->createSubject([$container]);
46
-
47
- $container->expects($this->exactly(1))
48
- ->method('get')
49
- ->with($key);
50
- }
51
-
52
- {
53
- $operations = rand(2, 9);
54
- $result = null;
55
-
56
- for ($i = 0; $i < $operations; $i++) {
57
- $result = $subject->get($key);
58
- }
59
- }
60
-
61
- {
62
- $this->assertSame($value, $result, 'Wrong value retrieved');
63
- }
64
- }
65
-
66
- /**
67
- * Tests that the subject correctly determines having keys.
68
- *
69
- * Subject must report having a key only if the inner container has that key.
70
- *
71
- * @depends testGet
72
- */
73
- public function testHas()
74
- {
75
- {
76
- $key = uniqid('key');
77
- $container = $this->createContainer([
78
- $key => uniqid('value'),
79
- ]);
80
- $subject = $this->createSubject([$container]);
81
- }
82
-
83
- {
84
- $this->assertTrue($subject->has($key), 'Wrong determined having');
85
- $this->assertFalse($subject->has(uniqid('non-existing-key')), 'Wrong determined not having');
86
- }
87
- }
88
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CompositeContainerTest.php DELETED
@@ -1,130 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\FuncTest;
4
-
5
- use Dhii\Container\CompositeContainer as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use PHPUnit\Framework\MockObject\MockObject;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- class CompositeContainerTest extends TestCase
12
- {
13
- use ComponentMockeryTrait;
14
-
15
-
16
- /**
17
- * Creates a new instance of the test subject.
18
- *
19
- * @param array $dependencies A list of constructor args.
20
- * @param array|null $methods The names of methods to mock in the subject.
21
- * @return MockObject|TestSubject The new instance.
22
- * @throws Exception If problem creating.
23
- */
24
- protected function createSubject(array $dependencies, array $methods = null)
25
- {
26
- return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
27
- ->getMock();
28
- }
29
-
30
- /**
31
- * Tests if subject can correctly retrieve a value by key from a list of containers.
32
- *
33
- * @throws Exception If problem testing.
34
- */
35
- public function testGet()
36
- {
37
- {
38
- $key = uniqid('key');
39
- $value = uniqid('value');
40
- $containers = [
41
- $this->createContainer([
42
-
43
- ]),
44
- $this->createContainer([
45
- uniqid('service1') => uniqid('value'),
46
- ]),
47
- $this->createContainer([
48
- uniqid('service2') => uniqid('value'),
49
- $key => $value,
50
- uniqid('service3') => uniqid('value'),
51
- ]),
52
- ];
53
- $subject = $this->createSubject([$containers]);
54
- }
55
-
56
- {
57
- $result = $subject->get($key);
58
- }
59
-
60
- {
61
- $this->assertEquals($value, $result, 'Wrong value retrieved');
62
- }
63
- }
64
-
65
- /**
66
- * Tests that the subject can correctly determine having an existing key.
67
- *
68
- * @throws Exception If problem testing.
69
- */
70
- public function testHasTrue()
71
- {
72
- {
73
- $key = uniqid('key');
74
- $containers = [
75
- $this->createContainer([
76
-
77
- ]),
78
- $this->createContainer([
79
- uniqid('service1') => uniqid('value'),
80
- ]),
81
- $this->createContainer([
82
- uniqid('service2') => uniqid('value'),
83
- $key => uniqid('value'),
84
- uniqid('service3') => uniqid('value'),
85
- ]),
86
- ];
87
- $subject = $this->createSubject([$containers]);
88
- }
89
-
90
- {
91
- $result = $subject->has($key);
92
- }
93
-
94
- {
95
- $this->assertTrue($result, 'Incorrectly determined having');
96
- }
97
- }
98
-
99
- /**
100
- * Tests that the subject can correctly determine not having a non-existing key.
101
- *
102
- * @throws Exception If problem testing.
103
- */
104
- public function testHasFalse()
105
- {
106
- {
107
- $containers = [
108
- $this->createContainer([
109
-
110
- ]),
111
- $this->createContainer([
112
- uniqid('service1') => uniqid('value'),
113
- ]),
114
- $this->createContainer([
115
- uniqid('service2') => uniqid('value'),
116
- uniqid('service3') => uniqid('value'),
117
- ]),
118
- ];
119
- $subject = $this->createSubject([$containers]);
120
- }
121
-
122
- {
123
- $result = $subject->has(uniqid('non-existing-service'));
124
- }
125
-
126
- {
127
- $this->assertFalse($result, 'Incorrectly determined not having');
128
- }
129
- }
130
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/functional/Exception/ContainerExceptionTest.php DELETED
@@ -1,63 +0,0 @@
1
- <?php declare(strict_types = 1);
2
-
3
- namespace Dhii\Di\FuncTest\Exception;
4
-
5
- use Dhii\Container\Exception\ContainerException as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use PHPUnit\Framework\MockObject\MockObject;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- /**
12
- * Tests {@see TestSubject}.
13
- *
14
- * @package Dhii\Wp\Containers
15
- */
16
- class ContainerExceptionTest extends TestCase
17
- {
18
-
19
- use ComponentMockeryTrait;
20
-
21
- /**
22
- * Creates a new instance of the test subject.
23
- *
24
- * @param array $dependencies A list of constructor args.
25
- * @param array|null $methods The names of methods to mock in the subject.
26
- * @return MockObject|TestSubject The new instance.
27
- * @throws Exception If problem creating.
28
- */
29
- protected function createSubject(array $dependencies, $methods = null)
30
- {
31
- return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
32
- ->getMock();
33
- }
34
-
35
- /**
36
- * Tests that the instance is created correctly, and getters work as expected.`
37
- *
38
- * @throws Exception If problem testing.
39
- */
40
- public function testConstructorAndGetContainer()
41
- {
42
- {
43
- $message = uniqid('message');
44
- $code = rand(1, 99);
45
- $prev = new Exception(uniqid('inner-message'));
46
- $container = $this->createContainer([]);
47
-
48
- $subject = $this->createSubject([$message, $code, $prev, $container], null);
49
- }
50
-
51
- {
52
- try {
53
- throw $subject;
54
- } catch (TestSubject $e) {
55
- $this->assertSame($message, $e->getMessage(), 'Wrong message');
56
- $this->assertSame($code, $e->getCode(), 'Wrong code');
57
- $this->assertSame($prev, $e->getPrevious(), 'Wrong previous exception');
58
- $this->assertSame($container, $e->getContainer(), 'Wrong container');
59
- }
60
- }
61
- }
62
-
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/functional/Exception/NotFoundExceptionTest.php DELETED
@@ -1,63 +0,0 @@
1
- <?php declare(strict_types = 1);
2
-
3
- namespace Dhii\Di\FuncTest\Exception;
4
-
5
- use Dhii\Container\Exception\NotFoundException as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use PHPUnit\Framework\TestCase;
9
-
10
- /**
11
- * Tests {@see TestSubject}.
12
- *
13
- * @package Dhii\Wp\Containers
14
- */
15
- class NotFoundExceptionTest extends TestCase
16
- {
17
-
18
- use ComponentMockeryTrait;
19
-
20
- /**
21
- * Creates a new instance of the test subject.
22
- *
23
- * @param array $dependencies A list of constructor args.
24
- * @return MockObject|TestSubject The new instance.
25
- * @throws Exception If problem creating.
26
- */
27
- protected function createSubject(array $dependencies, array $methods = null)
28
- {
29
- return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
30
- ->getMock();
31
- }
32
-
33
- /**
34
- * Tests that the instance is created correctly, and getters work as expected.`
35
- *
36
- * @throws Exception If problem testing.
37
- */
38
- public function testConstructorAndGetContainerAndDataKey()
39
- {
40
- {
41
- $message = uniqid('message');
42
- $code = rand(1, 99);
43
- $prev = new Exception(uniqid('inner-message'));
44
- $container = $this->createContainer([]);
45
- $dataKey = uniqid('data-key');
46
-
47
- $subject = $this->createSubject([$message, $code, $prev, $container, $dataKey], null);
48
- }
49
-
50
- {
51
- try {
52
- throw $subject;
53
- } catch (TestSubject $e) {
54
- $this->assertSame($message, $e->getMessage(), 'Wrong message');
55
- $this->assertSame($code, $e->getCode(), 'Wrong code');
56
- $this->assertSame($prev, $e->getPrevious(), 'Wrong previous exception');
57
- $this->assertSame($container, $e->getContainer(), 'Wrong container');
58
- $this->assertSame($dataKey, $e->getDataKey(), 'Wrong data key');
59
- }
60
- }
61
- }
62
-
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/functional/ServiceProviderTest.php DELETED
@@ -1,78 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\FuncTest;
4
-
5
- use Dhii\Container\ServiceProvider as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Exception;
8
- use PHPUnit\Framework\TestCase;
9
- use ReflectionClass;
10
-
11
- class ServiceProviderTest extends TestCase
12
- {
13
- use ComponentMockeryTrait;
14
-
15
- /**
16
- * Creates a new instance of the test subject.
17
- *
18
- * @param array $dependencies
19
- *
20
- * @return TestSubject The new instance.
21
- *
22
- * @throws Exception If problem creating.
23
- */
24
- protected function createSubject(array $dependencies)
25
- {
26
- $reflection = new ReflectionClass(TestSubject::class);
27
- $subject = $reflection->newInstanceArgs($dependencies);
28
- /* @var $subject TestSubject */
29
-
30
- return $subject;
31
- }
32
-
33
- /**
34
- * Tests that the extensions passed are correctly retrieved.
35
- *
36
- * @throws Exception If problem testing.
37
- */
38
- public function testGetExtensions()
39
- {
40
- $extensions = [
41
- 'one' => function () {},
42
- 'two' => function () {},
43
- ];
44
- $subject = $this->createSubject([[], $extensions]);
45
-
46
- $this->assertEquals(
47
- $extensions,
48
- $subject->getExtensions(),
49
- 'Wrong extensions retrieved',
50
- 0.0,
51
- 10,
52
- true
53
- );
54
- }
55
-
56
- /**
57
- * Tests that the factories passed are correctly retrieved.
58
- *
59
- * @throws Exception If problem testing.
60
- */
61
- public function testGetFactories()
62
- {
63
- $factories = [
64
- 'three' => function () {},
65
- 'four' => function () {},
66
- ];
67
- $subject = $this->createSubject([$factories, []]);
68
-
69
- $this->assertEquals(
70
- $factories,
71
- $subject->getFactories(),
72
- 'Wrong factories retrieved',
73
- 0.0,
74
- 10,
75
- true
76
- );
77
- }
78
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/helpers/ComponentMockeryTrait.php DELETED
@@ -1,267 +0,0 @@
1
- <?php
2
-
3
-
4
- namespace Dhii\Container\TestHelpers;
5
-
6
- use Andrew\Proxy;
7
- use Dhii\Data\Container\Exception\NotFoundExceptionInterface;
8
- use Exception;
9
- use Interop\Container\ServiceProviderInterface;
10
- use PHPUnit\Framework\MockObject\MockBuilder;
11
- use PHPUnit\Framework\MockObject\MockObject;
12
- use Psr\Container\ContainerInterface;
13
- use Throwable;
14
-
15
- trait ComponentMockeryTrait
16
- {
17
- /**
18
- * Creates a new instance of the test subject mock.
19
- *
20
- * @param string $className The name of the class to mock.
21
- * @param array|null $methods The methods to mock.
22
- * Use `null` to not mock anything. Use empty array to mock everything.
23
- * @param array|null $dependencies The parameters for the subject constructor.
24
- * Use `null` to disable the original constructor.
25
- *
26
- * @return MockBuilder The new builder.
27
- *
28
- * @throws Exception If problem creating.
29
- */
30
- protected function createMockBuilder(string $className, $methods = [], $dependencies = null)
31
- {
32
- $builder = $this->getMockBuilder($className);
33
-
34
- $builder->setMethods($methods);
35
-
36
- if ($dependencies !== null) {
37
- $builder->enableOriginalConstructor();
38
- $builder->setConstructorArgs($dependencies);
39
- } else {
40
- $builder->disableOriginalConstructor();
41
- }
42
-
43
- return $builder;
44
- }
45
-
46
- /**
47
- * Creates a new abstract class that extends the specified class while implementing the specified interfaces.
48
- *
49
- * @param string $className Name of the class to extend.
50
- * @param array $interfaceNames List of interface names to implement.
51
- *
52
- * @return string The name of the new class.
53
- *
54
- * @throws Exception If problem creating.
55
- * @throws Throwable If problem running.
56
- */
57
- protected function createImplementingClass(
58
- string $className,
59
- array $interfaceNames = []
60
- ) {
61
- $newClassName = uniqid(sprintf('%1$s_', $className));
62
- $implements = count($interfaceNames)
63
- ? 'implements ' . implode(', ', $interfaceNames)
64
- : '';
65
- $class = <<<PHP
66
- abstract class $newClassName extends $className $implements {}
67
- PHP;
68
- eval($class);
69
-
70
- return $newClassName;
71
- }
72
-
73
- /**
74
- * Creates a new Dhii Container - Not Found exception.
75
- *
76
- * @param string $message Error message.
77
- * @param Throwable|null $previous Inner exception.
78
- * @param ContainerInterface|null $container The container, if any.
79
- * @param string|null $dataKey The data key, if any.
80
- *
81
- * @return MockObject|NotFoundExceptionInterface The new exception.
82
- *
83
- * @throws Exception If problem creating.
84
- * @throws Throwable If problem running.
85
- */
86
- protected function createNotFoundException(
87
- string $message,
88
- Throwable $previous = null,
89
- ContainerInterface $container = null,
90
- string $dataKey = null
91
- ) {
92
- $eClass = $this->createImplementingClass('Exception', [NotFoundExceptionInterface::class]);
93
- $e = $this->createMockBuilder(
94
- $eClass,
95
- ['getContainer', 'getDataKey'],
96
- [
97
- $message,
98
- 0,
99
- $previous,
100
- ]
101
- )->getMock();
102
- $e->method('getContainer')
103
- ->willReturn($container);
104
- $e->method('getDataKey')
105
- ->willReturn($dataKey);
106
-
107
- return $e;
108
- }
109
-
110
- /**
111
- * @return callable|MockObject
112
- *
113
- * @throws Exception If problem creating.
114
- */
115
- protected function createCallable(callable $callable): callable
116
- {
117
- static $className = null;
118
-
119
- if (!$className) {
120
- $className = uniqid('MockInvocable');
121
- }
122
-
123
- if (!interface_exists($className)) {
124
- $class = <<<EOL
125
- interface $className
126
- {
127
- public function __invoke();
128
- }
129
- EOL;
130
- eval($class);
131
- }
132
-
133
- $mock = $this->getMockBuilder($className)
134
- ->setMethods(['__invoke'])
135
- ->getMock();
136
-
137
- $mock->method('__invoke')
138
- ->willReturnCallback($callable);
139
-
140
- assert(is_callable($mock));
141
-
142
- return $mock;
143
- }
144
-
145
- /**
146
- * Creates a new mock container.
147
- *
148
- * @param array $services The map of service name to service value.
149
- *
150
- * @return ContainerInterface|MockObject
151
- *
152
- * @throws Exception If problem creating.
153
- */
154
- protected function createContainer(array $services = [])
155
- {
156
- $mock = $this->getMockBuilder(ContainerInterface::class)
157
- ->setMethods(['has', 'get'])
158
- ->getMock();
159
- assert($mock instanceof ContainerInterface);
160
-
161
- $mock->method('get')
162
- ->willReturnCallback(function ($key) use ($services, $mock) {
163
- if (!isset($services[$key])) {
164
- throw $this->createNotFoundException(
165
- sprintf('No entry found for key "%1$s"', $key),
166
- null,
167
- $mock,
168
- $key
169
- );
170
-
171
- throw $e;
172
- }
173
-
174
- return $services[$key];
175
- });
176
-
177
- $mock->method('has')
178
- ->willReturnCallback(function ($key) use ($services, $mock) {
179
- if (!isset($services[$key])) {
180
- return false;
181
- }
182
-
183
- return true;
184
- });
185
-
186
- return $mock;
187
- }
188
-
189
- protected function createServiceProvider(array $factories, array $extensions): ServiceProviderInterface
190
- {
191
- $provider = new class($factories, $extensions) implements ServiceProviderInterface {
192
- /**
193
- * @var array
194
- */
195
- protected $factories;
196
- /**
197
- * @var array
198
- */
199
- protected $extensions;
200
-
201
- public function __construct(array $factories, array $extensions)
202
- {
203
- $this->factories = $factories;
204
- $this->extensions = $extensions;
205
- }
206
-
207
- public function getFactories()
208
- {
209
- return $this->factories;
210
- }
211
-
212
- public function getExtensions()
213
- {
214
- return $this->extensions;
215
- }
216
- };
217
-
218
- return $provider;
219
- }
220
-
221
- /**
222
- * Creates an array.
223
- *
224
- * @param int $length The length of the array.
225
- * @param callable $valueGenerator This generates the values. Called for each index.
226
- * @param callable|null $keyGenerator This generates the keys. Called for each index.
227
- * Default: a generator that returns the index. Useful for numeric arrays.
228
- *
229
- * @return array The array of specified length, with generated keys and values.
230
- */
231
- public function createArray(int $length, callable $valueGenerator, callable $keyGenerator = null)
232
- {
233
- $result = [];
234
- $keyGenerator = $keyGenerator ?? function (int $index) {
235
- return $index;
236
- };
237
-
238
- for ($i=0; $i<$length-1; $i++) {
239
- $key = $keyGenerator($i);
240
- $value = $valueGenerator($i);
241
- $result[$key] = $value;
242
- }
243
-
244
- return $result;
245
- }
246
-
247
- /**
248
- * Creates a proxy that allows public access to the object's protected members.
249
- *
250
- * @param object $object The object to proxy.
251
- *
252
- * @return Proxy the new proxy.
253
- */
254
- protected function proxy($object): Proxy
255
- {
256
- return new Proxy($object);
257
- }
258
-
259
- /**
260
- * Requiring PHPUnit TestCase's method.
261
- *
262
- * @param string $className Name of the class to get a builder for.
263
- *
264
- * @return MockBuilder The mock builder.
265
- */
266
- abstract function getMockBuilder($className);
267
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/unit/CompositeCachingServiceProviderTest.php DELETED
@@ -1,136 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\UnitTest;
4
-
5
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
6
- use Dhii\Container\CompositeCachingServiceProvider as TestSubject;
7
- use Exception;
8
- use PHPUnit\Framework\MockObject\MockObject;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- class CompositeCachingServiceProviderTest extends TestCase
12
- {
13
- use ComponentMockeryTrait;
14
-
15
- /**
16
- * Creates a new instance of the test subject mock.
17
- *
18
- * @param array|null $methods The methods to mock.
19
- * Use `null` to not mock anything. Use empty array to mock everything.
20
- * @param array|null $dependencies The parameters for the subject constructor.
21
- * Use `null` to disable the original constructor.
22
- *
23
- * @return MockObject|TestSubject
24
- *
25
- * @throws Exception If problem creating.
26
- */
27
- protected function createSubject($methods = [], $dependencies = null)
28
- {
29
- $mock = $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
30
- ->getMock();
31
-
32
- return $mock;
33
- }
34
-
35
- /**
36
- * Tests whether extensions get correctly merged.
37
- *
38
- * Extensions are merged correctly if new extensions are added "inside" old
39
- * extensions, without overriding them, such that both the old and the
40
- * new extensions get run, in that order, passing down the result of the old
41
- * extension to the new.
42
- *
43
- * @throws Exception If problem testing.
44
- */
45
- public function testMergeExtensions()
46
- {
47
- {
48
- $container = $this->createContainer([]);
49
- $prev1 = uniqid('prev1');
50
- $prev2 = uniqid('prev2');
51
- $prev3 = uniqid('prev3');
52
- $prev4 = uniqid('prev3');
53
- $func1 = $this->createCallable(function () use ($prev1) {
54
- return $prev1;
55
- });
56
- $func2 = $this->createCallable(function () use ($prev2) {
57
- return $prev2;
58
- });
59
- $func3 = $this->createCallable(function () use ($prev3) {
60
- return $prev3;
61
- });
62
- $func4 = $this->createCallable(function () use ($prev4) {
63
- return $prev4;
64
- });
65
-
66
- $defaults = [
67
- 'one' => $func1,
68
- 'two' => $func2,
69
- ];
70
-
71
- $extensions = [
72
- 'two' => $func3,
73
- 'three' => $func4,
74
- ];
75
-
76
- $subject = $this->createSubject(['_mergeFactories']);
77
- $_subject = $this->proxy($subject);
78
-
79
- $subject->expects($this->exactly(1))
80
- ->method('_mergeFactories')
81
- ->willReturnCallback(function ($a, $b) {
82
- return array_merge($a, $b);
83
- });
84
-
85
- $func1->expects($this->exactly(1))
86
- ->method('__invoke')
87
- ->with($container, $prev1);
88
- $func2->expects($this->exactly(1))
89
- ->method('__invoke')
90
- ->with($container, $prev2);
91
- $func3->expects($this->exactly(1))
92
- ->method('__invoke')
93
- ->with($container, $prev2);
94
- $func4->expects($this->exactly(1))
95
- ->method('__invoke')
96
- ->with($container, $prev4);
97
-
98
- }
99
-
100
- {
101
- $result = $_subject->_mergeExtensions($defaults, $extensions);
102
- }
103
-
104
- {
105
- // Checking structure of result
106
- $this->assertCount(3, $result);
107
- $this->assertArrayHasKey('one', $result);
108
- $this->assertArrayHasKey('two', $result);
109
- $this->assertArrayHasKey('three', $result);
110
-
111
- // Checking first (simple) extension
112
- $this->assertInternalType('callable', $result['one']);
113
- $this->assertEquals(
114
- $prev1,
115
- $result['one']($container, $prev1),
116
- 'Simple extension must return passed value'
117
- );
118
-
119
- // Checking second (compound) extension
120
- $this->assertInternalType('callable', $result['two']);
121
- $this->assertEquals(
122
- $prev3,
123
- $result['two']($container, $prev2),
124
- 'Compound extension must return inner-most value'
125
- );
126
-
127
- // Checking third (simple) extension
128
- $this->assertInternalType('callable', $result['three']);
129
- $this->assertEquals(
130
- $prev4,
131
- $result['three']($container, $prev4),
132
- 'Simple extension must return passed value'
133
- );
134
- }
135
- }
136
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/containers/test/unit/ProxyContainerTest.php DELETED
@@ -1,112 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Container\UnitTest;
4
-
5
- use Dhii\Container\ProxyContainer as TestSubject;
6
- use Dhii\Container\TestHelpers\ComponentMockeryTrait;
7
- use Dhii\Data\Container\ContainerInterface;
8
- use PHPUnit\Framework\MockObject\MockObject;
9
- use PHPUnit\Framework\TestCase;
10
- use Psr\Container\ContainerExceptionInterface;
11
- use Psr\Container\NotFoundExceptionInterface;
12
-
13
- class ProxyContainerTest extends TestCase
14
- {
15
- use ComponentMockeryTrait;
16
-
17
- /**
18
- * @return TestSubject&MockObject
19
- */
20
- protected function createInstance(): TestSubject
21
- {
22
- $mock = $this->getMockBuilder(TestSubject::class)
23
- ->setMethods(null)
24
- ->getMock();
25
-
26
- return $mock;
27
- }
28
-
29
- /**
30
- * @param array $services
31
- *
32
- * @return ContainerInterface
33
- */
34
- // protected function createContainer(array $services): ContainerInterface
35
- // {
36
- // $mock = $this->getMockBuilder(ContainerInterface::class)
37
- // ->setMethods(['get', 'has'])
38
- // ->getMock();
39
- //
40
- // $mock->method('has')
41
- // ->will($this->returnCallback(function ($key) use ($services) {
42
- // return array_key_exists($key, $services);
43
- // }));
44
- // $mock->method('get')
45
- // ->will($this->returnCallback(function ($key) use ($services) {
46
- // if (!array_key_exists($key, $services)) {
47
- // throw new NotFoundException();
48
- // }
49
- //
50
- // return $services[$key];
51
- // }));
52
- //
53
- // return $mock;
54
- // }
55
-
56
- /**
57
- * Tests that calls and return values are being proxied correctly.
58
- */
59
- public function testProxy()
60
- {
61
- {
62
- $nonExistingKey = uniqid('not-here');
63
- $key = uniqid('key');
64
- $value = uniqid('value');
65
- $services = [
66
- $key => $value,
67
- ];
68
- $container = $this->createContainer($services);
69
- $subject = $this->createInstance();
70
- }
71
-
72
- {
73
- $subject->setInnerContainer($container);
74
- $this->assertTrue($subject->has($key));
75
- $this->assertEquals($value, $subject->get($key));
76
-
77
- $this->assertFalse($subject->has($nonExistingKey));
78
- $this->expectException(NotFoundExceptionInterface::class);
79
- $subject->get($nonExistingKey);
80
- }
81
- }
82
-
83
- /**
84
- * Tests that the subject reacts correctly when the inner container is missing.
85
- */
86
- public function testHasMissingContainer()
87
- {
88
- {
89
- $subject = $this->createInstance();
90
- }
91
-
92
- {
93
- $this->expectException(ContainerExceptionInterface::class);
94
- $subject->has(uniqid('not-there'));
95
- }
96
- }
97
-
98
- /**
99
- * Tests that the subject reacts correctly when the inner container is missing.
100
- */
101
- public function testGetMissingContainer()
102
- {
103
- {
104
- $subject = $this->createInstance();
105
- }
106
-
107
- {
108
- $this->expectException(ContainerExceptionInterface::class);
109
- $subject->get(uniqid('not-there'));
110
- }
111
- }
112
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/{module-interface → data-key-value-aware-interface}/.codeclimate.yml RENAMED
@@ -9,10 +9,6 @@ engines:
9
  enabled: true
10
  phpmd:
11
  enabled: true
12
- config:
13
- file_extensions:
14
- - php
15
- rulesets: "phpmd.xml"
16
  ratings:
17
  paths:
18
  - "**.inc"
9
  enabled: true
10
  phpmd:
11
  enabled: true
 
 
 
 
12
  ratings:
13
  paths:
14
  - "**.inc"
vendor/dhii/{module-interface → data-key-value-aware-interface}/.php_cs RENAMED
@@ -9,7 +9,7 @@ foreach ($toRemove as $_fixer) {
9
  if (($removeIndex = array_search($_fixer, $fixers)) === false) {
10
  continue;
11
  }
12
-
13
  unset($fixers[$removeIndex]);
14
  }
15
 
@@ -18,7 +18,7 @@ foreach ($toAdd as $_fixer) {
18
  if (($removeIndex = array_search($_fixer, $fixers)) !== false) {
19
  continue;
20
  }
21
-
22
  $fixers[] = $_fixer;
23
  }
24
 
9
  if (($removeIndex = array_search($_fixer, $fixers)) === false) {
10
  continue;
11
  }
12
+
13
  unset($fixers[$removeIndex]);
14
  }
15
 
18
  if (($removeIndex = array_search($_fixer, $fixers)) !== false) {
19
  continue;
20
  }
21
+
22
  $fixers[] = $_fixer;
23
  }
24
 
vendor/dhii/data-key-value-aware-interface/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Change log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## [0.1] - 2017-01-21
8
+ Initial release, of the interop interfaces.
9
+
10
+ ### Added
11
+ - Interop interfaces.
12
+ - Tests
vendor/dhii/data-key-value-aware-interface/README.md ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ ## Key/Value Aware Interface ##
2
+ [![Build Status](https://travis-ci.org/Dhii/data-key-value-aware-interface.svg?branch=master)](https://travis-ci.org/Dhii/data-key-value-aware-interface)
3
+ [![Code Climate](https://codeclimate.com/github/Dhii/data-key-value-aware-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/data-key-value-aware-interface)
4
+ [![Test Coverage](https://codeclimate.com/github/Dhii/data-key-value-aware-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/data-key-value-aware-interface/coverage)
5
+
6
+ Increase interoperability of value objects by depending on this package.
vendor/dhii/data-key-value-aware-interface/composer.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "dhii/data-key-value-aware-interface",
3
+ "description": "Interfaces that aim to increase interoperability of value objects",
4
+ "type": "library",
5
+ "license": "MIT",
6
+ "authors": [
7
+ {
8
+ "name": "Dhii Team",
9
+ "email": "development@dhii.co"
10
+ }
11
+ ],
12
+ "minimum-stability": "dev",
13
+ "require": {
14
+ "php": "^5.3 | ^7.0"
15
+ },
16
+ "require-dev": {
17
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
18
+ "phpunit/phpunit": "4.*",
19
+ "codeclimate/php-test-reporter": "<=0.3.2",
20
+ "ptrofimov/xpmock": "^1.1"
21
+ },
22
+ "autoload": {
23
+ "psr-4": {
24
+ "Dhii\\Data\\": "src/"
25
+ }
26
+ }
27
+ }
vendor/dhii/{containers → data-key-value-aware-interface}/composer.lock RENAMED
@@ -1,129 +1,50 @@
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
- "content-hash": "51bcbb49f5c231b1ed812a75fd7a0a51",
8
- "packages": [
9
- {
10
- "name": "container-interop/service-provider",
11
- "version": "v0.4.0",
12
- "source": {
13
- "type": "git",
14
- "url": "https://github.com/container-interop/service-provider.git",
15
- "reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
16
- },
17
- "dist": {
18
- "type": "zip",
19
- "url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
20
- "reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
21
- "shasum": ""
22
- },
23
- "require": {
24
- "psr/container": "^1.0"
25
- },
26
- "type": "library",
27
- "autoload": {
28
- "psr-4": {
29
- "Interop\\Container\\": "src/"
30
- }
31
- },
32
- "notification-url": "https://packagist.org/downloads/",
33
- "license": [
34
- "MIT"
35
- ],
36
- "description": "Promoting container interoperability through standard service providers",
37
- "homepage": "https://github.com/container-interop/service-provider",
38
- "time": "2017-09-20T14:13:36+00:00"
39
- },
40
  {
41
- "name": "dhii/data-container-interface",
42
- "version": "v0.2-alpha3",
43
  "source": {
44
  "type": "git",
45
- "url": "https://github.com/Dhii/data-container-interface.git",
46
- "reference": "b9767d34214fa4d73f10989fca4ad54196a7b7f3"
47
  },
48
  "dist": {
49
  "type": "zip",
50
- "url": "https://api.github.com/repos/Dhii/data-container-interface/zipball/b9767d34214fa4d73f10989fca4ad54196a7b7f3",
51
- "reference": "b9767d34214fa4d73f10989fca4ad54196a7b7f3",
52
  "shasum": ""
53
  },
54
  "require": {
55
- "dhii/exception-interface": "^0.1 | ^0.2",
56
- "dhii/factory-interface": "^0.1-alpha1",
57
- "php": "^5.3 | ^7.0",
58
- "psr/container": "^1.0"
59
  },
60
  "require-dev": {
61
- "codeclimate/php-test-reporter": "<=0.3.2",
62
- "dhii/php-cs-fixer-config": "dev-php-5.3",
63
- "dhii/stringable-interface": "^0.1",
64
- "phpunit/phpunit": "^4.8",
65
- "ptrofimov/xpmock": "^1.1"
66
- },
67
- "suggest": {
68
- "dhii/stringable-interface": "To be able to pass Stringables as keys"
69
- },
70
- "type": "library",
71
- "extra": {
72
- "branch-alias": {
73
- "dev-develop": "0.2.x-dev"
74
- }
75
- },
76
- "autoload": {
77
- "psr-4": {
78
- "Dhii\\Data\\Container\\": "src"
79
- }
80
  },
81
- "notification-url": "https://packagist.org/downloads/",
82
- "license": [
83
- "MIT"
84
- ],
85
- "authors": [
86
- {
87
- "name": "Dhii Team",
88
- "email": "development@dhii.co"
89
- }
90
  ],
91
- "description": "Interfaces for working with data containers",
92
- "time": "2018-04-26T09:50:30+00:00"
93
- },
94
- {
95
- "name": "dhii/exception-interface",
96
- "version": "v0.2",
97
- "source": {
98
- "type": "git",
99
- "url": "https://github.com/Dhii/exception-interface.git",
100
- "reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb"
101
- },
102
- "dist": {
103
- "type": "zip",
104
- "url": "https://api.github.com/repos/Dhii/exception-interface/zipball/b69feebf7cb2879cd43977a03342e2393b73f7fb",
105
- "reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb",
106
- "shasum": ""
107
- },
108
- "require": {
109
- "dhii/stringable-interface": "^0.1",
110
- "php": "^5.3 | ^7.0"
111
- },
112
- "require-dev": {
113
- "codeclimate/php-test-reporter": "<=0.3.2",
114
- "dhii/php-cs-fixer-config": "dev-php-5.3",
115
- "phpunit/phpunit": "^4.8",
116
- "ptrofimov/xpmock": "^1.1"
117
- },
118
  "type": "library",
119
  "extra": {
120
  "branch-alias": {
121
- "dev-develop": "0.2.x-dev"
122
  }
123
  },
124
  "autoload": {
125
- "psr-4": {
126
- "Dhii\\Exception\\": "src"
 
127
  }
128
  },
129
  "notification-url": "https://packagist.org/downloads/",
@@ -132,90 +53,44 @@
132
  ],
133
  "authors": [
134
  {
135
- "name": "Dhii Team",
136
- "email": "development@dhii.co"
137
- }
138
- ],
139
- "description": "Interfaces for most common exceptions",
140
- "time": "2018-08-29T10:42:04+00:00"
141
- },
142
- {
143
- "name": "dhii/factory-interface",
144
- "version": "v0.1",
145
- "source": {
146
- "type": "git",
147
- "url": "https://github.com/Dhii/factory-interface.git",
148
- "reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515"
149
- },
150
- "dist": {
151
- "type": "zip",
152
- "url": "https://api.github.com/repos/Dhii/factory-interface/zipball/b8d217aec8838e64ccaa770cb03dc164bf6f0515",
153
- "reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515",
154
- "shasum": ""
155
- },
156
- "require": {
157
- "dhii/exception-interface": "^0.1|^0.2",
158
- "php": "^5.3 | ^7.0"
159
- },
160
- "require-dev": {
161
- "codeclimate/php-test-reporter": "<=0.3.2",
162
- "dhii/php-cs-fixer-config": "dev-php-5.3",
163
- "dhii/stringable-interface": "^0.1",
164
- "phpunit/phpunit": "^4.8",
165
- "psr/container": "^1.0",
166
- "ptrofimov/xpmock": "^1.1"
167
- },
168
- "type": "library",
169
- "extra": {
170
- "branch-alias": {
171
- "dev-develop": "0.1.x-dev"
172
  }
173
- },
174
- "autoload": {
175
- "psr-4": {
176
- "Dhii\\Factory\\": "src"
177
- }
178
- },
179
- "notification-url": "https://packagist.org/downloads/",
180
- "license": [
181
- "MIT"
182
  ],
183
- "authors": [
184
- {
185
- "name": "Dhii Team",
186
- "email": "development@dhii.co"
187
- }
188
  ],
189
- "description": "Interfaces for working with factories.",
190
- "time": "2018-08-29T11:15:09+00:00"
191
  },
192
  {
193
- "name": "dhii/stringable-interface",
194
- "version": "v0.1",
195
  "source": {
196
  "type": "git",
197
- "url": "https://github.com/Dhii/stringable-interface.git",
198
- "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef"
199
  },
200
  "dist": {
201
  "type": "zip",
202
- "url": "https://api.github.com/repos/Dhii/stringable-interface/zipball/b6653905eef2ebf377749feb80a6d18abbe913ef",
203
- "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef",
204
  "shasum": ""
205
  },
206
  "require": {
 
207
  "php": "^5.3 | ^7.0"
208
  },
209
  "require-dev": {
210
- "codeclimate/php-test-reporter": "<=0.3.2",
211
- "dhii/php-cs-fixer-config": "dev-php-5.3",
212
- "phpunit/phpunit": "^4.8",
213
- "ptrofimov/xpmock": "^1.1"
214
  },
215
  "type": "library",
216
  "autoload": {
217
  "psr-4": {
218
- "Dhii\\Util\\String\\": "src/"
219
  }
220
  },
221
  "notification-url": "https://packagist.org/downloads/",
@@ -228,72 +103,21 @@
228
  "email": "development@dhii.co"
229
  }
230
  ],
231
- "description": "Interoperability interface for objects that can be cast to string",
232
- "time": "2017-01-23T15:08:20+00:00"
233
  },
234
- {
235
- "name": "psr/container",
236
- "version": "1.0.0",
237
- "source": {
238
- "type": "git",
239
- "url": "https://github.com/php-fig/container.git",
240
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
241
- },
242
- "dist": {
243
- "type": "zip",
244
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
245
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
246
- "shasum": ""
247
- },
248
- "require": {
249
- "php": ">=5.3.0"
250
- },
251
- "type": "library",
252
- "extra": {
253
- "branch-alias": {
254
- "dev-master": "1.0.x-dev"
255
- }
256
- },
257
- "autoload": {
258
- "psr-4": {
259
- "Psr\\Container\\": "src/"
260
- }
261
- },
262
- "notification-url": "https://packagist.org/downloads/",
263
- "license": [
264
- "MIT"
265
- ],
266
- "authors": [
267
- {
268
- "name": "PHP-FIG",
269
- "homepage": "http://www.php-fig.org/"
270
- }
271
- ],
272
- "description": "Common Container Interface (PHP FIG PSR-11)",
273
- "homepage": "https://github.com/php-fig/container",
274
- "keywords": [
275
- "PSR-11",
276
- "container",
277
- "container-interface",
278
- "container-interop",
279
- "psr"
280
- ],
281
- "time": "2017-02-14T16:28:37+00:00"
282
- }
283
- ],
284
- "packages-dev": [
285
  {
286
  "name": "doctrine/instantiator",
287
- "version": "1.0.5",
288
  "source": {
289
  "type": "git",
290
  "url": "https://github.com/doctrine/instantiator.git",
291
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
292
  },
293
  "dist": {
294
  "type": "zip",
295
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
296
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
297
  "shasum": ""
298
  },
299
  "require": {
@@ -334,37 +158,47 @@
334
  "constructor",
335
  "instantiate"
336
  ],
337
- "time": "2015-06-14T21:17:01+00:00"
338
  },
339
  {
340
- "name": "gmazzap/andrew",
341
- "version": "1.1.0",
342
  "source": {
343
  "type": "git",
344
- "url": "https://github.com/Giuseppe-Mazzapica/Andrew.git",
345
- "reference": "5ab634023e275464ff919278b84b9389f2ec012f"
346
  },
347
  "dist": {
348
  "type": "zip",
349
- "url": "https://api.github.com/repos/Giuseppe-Mazzapica/Andrew/zipball/5ab634023e275464ff919278b84b9389f2ec012f",
350
- "reference": "5ab634023e275464ff919278b84b9389f2ec012f",
351
  "shasum": ""
352
  },
353
  "require": {
354
- "php": ">=5.4"
 
 
 
 
 
 
 
 
355
  },
356
- "require-dev": {
357
- "phpunit/phpunit": "~4.4"
358
  },
359
- "type": "library",
360
- "extra": {
361
- "branch-alias": {
362
- "dev-master": "1.x-dev"
363
- }
364
  },
 
 
 
 
365
  "autoload": {
366
  "psr-4": {
367
- "Andrew\\": "src/"
368
  }
369
  },
370
  "notification-url": "https://packagist.org/downloads/",
@@ -373,179 +207,125 @@
373
  ],
374
  "authors": [
375
  {
376
- "name": "Giuseppe Mazzapica",
377
- "email": "giuseppe.mazzapica@gmail.com",
378
- "homepage": "http://gm.zoomlab.it",
379
- "role": "Developer"
 
 
380
  }
381
  ],
382
- "description": "Proxy objects to access (dynamic and static) private properties and methods.",
383
- "homepage": "https://github.com/Giuseppe-Mazzapica/Andrew",
384
- "keywords": [
385
- "proxy objects",
386
- "unit tests"
387
- ],
388
- "time": "2016-09-15T17:29:10+00:00"
389
  },
390
  {
391
- "name": "myclabs/deep-copy",
392
- "version": "1.7.0",
393
  "source": {
394
  "type": "git",
395
- "url": "https://github.com/myclabs/DeepCopy.git",
396
- "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
397
  },
398
  "dist": {
399
  "type": "zip",
400
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
401
- "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
402
  "shasum": ""
403
  },
404
  "require": {
405
- "php": "^5.6 || ^7.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  },
407
  "require-dev": {
408
- "doctrine/collections": "^1.0",
409
- "doctrine/common": "^2.6",
410
- "phpunit/phpunit": "^4.1"
411
- },
412
- "type": "library",
413
- "autoload": {
414
- "psr-4": {
415
- "DeepCopy\\": "src/DeepCopy/"
416
- },
417
- "files": [
418
- "src/DeepCopy/deep_copy.php"
419
- ]
420
- },
421
- "notification-url": "https://packagist.org/downloads/",
422
- "license": [
423
- "MIT"
424
- ],
425
- "description": "Create deep copies (clones) of your objects",
426
- "keywords": [
427
- "clone",
428
- "copy",
429
- "duplicate",
430
- "object",
431
- "object graph"
432
- ],
433
- "time": "2017-10-19T19:58:43+00:00"
434
- },
435
- {
436
- "name": "phar-io/manifest",
437
- "version": "1.0.1",
438
- "source": {
439
- "type": "git",
440
- "url": "https://github.com/phar-io/manifest.git",
441
- "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
442
- },
443
- "dist": {
444
- "type": "zip",
445
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
446
- "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
447
- "shasum": ""
448
  },
449
- "require": {
450
- "ext-dom": "*",
451
- "ext-phar": "*",
452
- "phar-io/version": "^1.0.1",
453
- "php": "^5.6 || ^7.0"
454
  },
455
  "type": "library",
456
  "extra": {
457
  "branch-alias": {
458
- "dev-master": "1.0.x-dev"
459
  }
460
  },
461
  "autoload": {
462
- "classmap": [
463
- "src/"
464
- ]
465
- },
466
- "notification-url": "https://packagist.org/downloads/",
467
- "license": [
468
- "BSD-3-Clause"
469
- ],
470
- "authors": [
471
- {
472
- "name": "Arne Blankerts",
473
- "email": "arne@blankerts.de",
474
- "role": "Developer"
475
- },
476
- {
477
- "name": "Sebastian Heuer",
478
- "email": "sebastian@phpeople.de",
479
- "role": "Developer"
480
- },
481
- {
482
- "name": "Sebastian Bergmann",
483
- "email": "sebastian@phpunit.de",
484
- "role": "Developer"
485
  }
486
- ],
487
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
488
- "time": "2017-03-05T18:14:27+00:00"
489
- },
490
- {
491
- "name": "phar-io/version",
492
- "version": "1.0.1",
493
- "source": {
494
- "type": "git",
495
- "url": "https://github.com/phar-io/version.git",
496
- "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
497
- },
498
- "dist": {
499
- "type": "zip",
500
- "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
501
- "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
502
- "shasum": ""
503
- },
504
- "require": {
505
- "php": "^5.6 || ^7.0"
506
- },
507
- "type": "library",
508
- "autoload": {
509
- "classmap": [
510
- "src/"
511
- ]
512
  },
513
  "notification-url": "https://packagist.org/downloads/",
514
  "license": [
515
- "BSD-3-Clause"
516
  ],
517
  "authors": [
518
  {
519
- "name": "Arne Blankerts",
520
- "email": "arne@blankerts.de",
521
- "role": "Developer"
522
  },
523
  {
524
- "name": "Sebastian Heuer",
525
- "email": "sebastian@phpeople.de",
526
- "role": "Developer"
527
- },
528
- {
529
- "name": "Sebastian Bergmann",
530
- "email": "sebastian@phpunit.de",
531
- "role": "Developer"
532
  }
533
  ],
534
- "description": "Library for handling version information and constraints",
535
- "time": "2017-03-05T17:38:23+00:00"
 
 
 
 
 
 
 
 
 
 
 
536
  },
537
  {
538
  "name": "phpdocumentor/reflection-common",
539
- "version": "1.0.1",
540
  "source": {
541
  "type": "git",
542
  "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
543
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
544
  },
545
  "dist": {
546
  "type": "zip",
547
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
548
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
549
  "shasum": ""
550
  },
551
  "require": {
@@ -586,39 +366,33 @@
586
  "reflection",
587
  "static analysis"
588
  ],
589
- "time": "2017-09-11T18:02:19+00:00"
590
  },
591
  {
592
  "name": "phpdocumentor/reflection-docblock",
593
- "version": "4.3.1",
594
  "source": {
595
  "type": "git",
596
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
597
- "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
598
  },
599
  "dist": {
600
  "type": "zip",
601
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
602
- "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
603
  "shasum": ""
604
  },
605
  "require": {
606
- "php": "^7.0",
607
- "phpdocumentor/reflection-common": "^1.0.0",
608
- "phpdocumentor/type-resolver": "^0.4.0",
609
  "webmozart/assert": "^1.0"
610
  },
611
  "require-dev": {
612
- "doctrine/instantiator": "~1.0.5",
613
- "mockery/mockery": "^1.0",
614
- "phpunit/phpunit": "^6.4"
615
  },
616
  "type": "library",
617
- "extra": {
618
- "branch-alias": {
619
- "dev-master": "4.x-dev"
620
- }
621
- },
622
  "autoload": {
623
  "psr-4": {
624
  "phpDocumentor\\Reflection\\": [
@@ -637,24 +411,24 @@
637
  }
638
  ],
639
  "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
640
- "time": "2019-04-30T17:48:53+00:00"
641
  },
642
  {
643
  "name": "phpdocumentor/type-resolver",
644
- "version": "0.4.0",
645
  "source": {
646
  "type": "git",
647
  "url": "https://github.com/phpDocumentor/TypeResolver.git",
648
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
649
  },
650
  "dist": {
651
  "type": "zip",
652
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
653
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
654
  "shasum": ""
655
  },
656
  "require": {
657
- "php": "^5.5 || ^7.0",
658
  "phpdocumentor/reflection-common": "^1.0"
659
  },
660
  "require-dev": {
@@ -684,37 +458,37 @@
684
  "email": "me@mikevanriel.com"
685
  }
686
  ],
687
- "time": "2017-07-14T14:27:02+00:00"
688
  },
689
  {
690
  "name": "phpspec/prophecy",
691
- "version": "1.8.0",
692
  "source": {
693
  "type": "git",
694
  "url": "https://github.com/phpspec/prophecy.git",
695
- "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
696
  },
697
  "dist": {
698
  "type": "zip",
699
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
700
- "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
701
  "shasum": ""
702
  },
703
  "require": {
704
  "doctrine/instantiator": "^1.0.2",
705
  "php": "^5.3|^7.0",
706
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
707
- "sebastian/comparator": "^1.1|^2.0|^3.0",
708
- "sebastian/recursion-context": "^1.0|^2.0|^3.0"
709
  },
710
  "require-dev": {
711
- "phpspec/phpspec": "^2.5|^3.2",
712
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
713
  },
714
  "type": "library",
715
  "extra": {
716
  "branch-alias": {
717
- "dev-master": "1.8.x-dev"
718
  }
719
  },
720
  "autoload": {
@@ -747,44 +521,43 @@
747
  "spy",
748
  "stub"
749
  ],
750
- "time": "2018-08-05T17:53:17+00:00"
751
  },
752
  {
753
  "name": "phpunit/php-code-coverage",
754
- "version": "5.3.2",
755
  "source": {
756
  "type": "git",
757
  "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
758
- "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
759
  },
760
  "dist": {
761
  "type": "zip",
762
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
763
- "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
764
  "shasum": ""
765
  },
766
  "require": {
767
- "ext-dom": "*",
768
- "ext-xmlwriter": "*",
769
- "php": "^7.0",
770
- "phpunit/php-file-iterator": "^1.4.2",
771
- "phpunit/php-text-template": "^1.2.1",
772
- "phpunit/php-token-stream": "^2.0.1",
773
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
774
- "sebastian/environment": "^3.0",
775
- "sebastian/version": "^2.0.1",
776
- "theseer/tokenizer": "^1.1"
777
  },
778
  "require-dev": {
779
- "phpunit/phpunit": "^6.0"
 
780
  },
781
  "suggest": {
782
- "ext-xdebug": "^2.5.5"
 
 
783
  },
784
  "type": "library",
785
  "extra": {
786
  "branch-alias": {
787
- "dev-master": "5.3.x-dev"
788
  }
789
  },
790
  "autoload": {
@@ -799,7 +572,7 @@
799
  "authors": [
800
  {
801
  "name": "Sebastian Bergmann",
802
- "email": "sebastian@phpunit.de",
803
  "role": "lead"
804
  }
805
  ],
@@ -810,20 +583,20 @@
810
  "testing",
811
  "xunit"
812
  ],
813
- "time": "2018-04-06T15:36:58+00:00"
814
  },
815
  {
816
  "name": "phpunit/php-file-iterator",
817
- "version": "1.4.5",
818
  "source": {
819
  "type": "git",
820
  "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
821
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
822
  },
823
  "dist": {
824
  "type": "zip",
825
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
826
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
827
  "shasum": ""
828
  },
829
  "require": {
@@ -857,7 +630,7 @@
857
  "filesystem",
858
  "iterator"
859
  ],
860
- "time": "2017-11-27T13:52:08+00:00"
861
  },
862
  {
863
  "name": "phpunit/php-text-template",
@@ -898,34 +671,29 @@
898
  "keywords": [
899
  "template"
900
  ],
901
- "time": "2015-06-21T13:50:34+00:00"
902
  },
903
  {
904
  "name": "phpunit/php-timer",
905
- "version": "1.0.9",
906
  "source": {
907
  "type": "git",
908
  "url": "https://github.com/sebastianbergmann/php-timer.git",
909
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
910
  },
911
  "dist": {
912
  "type": "zip",
913
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
914
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
915
  "shasum": ""
916
  },
917
  "require": {
918
- "php": "^5.3.3 || ^7.0"
919
  },
920
  "require-dev": {
921
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
922
  },
923
  "type": "library",
924
- "extra": {
925
- "branch-alias": {
926
- "dev-master": "1.0-dev"
927
- }
928
- },
929
  "autoload": {
930
  "classmap": [
931
  "src/"
@@ -947,33 +715,33 @@
947
  "keywords": [
948
  "timer"
949
  ],
950
- "time": "2017-02-26T11:10:40+00:00"
951
  },
952
  {
953
  "name": "phpunit/php-token-stream",
954
- "version": "2.0.2",
955
  "source": {
956
  "type": "git",
957
  "url": "https://github.com/sebastianbergmann/php-token-stream.git",
958
- "reference": "791198a2c6254db10131eecfe8c06670700904db"
959
  },
960
  "dist": {
961
  "type": "zip",
962
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
963
- "reference": "791198a2c6254db10131eecfe8c06670700904db",
964
  "shasum": ""
965
  },
966
  "require": {
967
  "ext-tokenizer": "*",
968
- "php": "^7.0"
969
  },
970
  "require-dev": {
971
- "phpunit/phpunit": "^6.2.4"
972
  },
973
  "type": "library",
974
  "extra": {
975
  "branch-alias": {
976
- "dev-master": "2.0-dev"
977
  }
978
  },
979
  "autoload": {
@@ -996,57 +764,45 @@
996
  "keywords": [
997
  "tokenizer"
998
  ],
999
- "time": "2017-11-27T05:48:46+00:00"
1000
  },
1001
  {
1002
  "name": "phpunit/phpunit",
1003
- "version": "6.5.14",
1004
  "source": {
1005
  "type": "git",
1006
  "url": "https://github.com/sebastianbergmann/phpunit.git",
1007
- "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
1008
  },
1009
  "dist": {
1010
  "type": "zip",
1011
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
1012
- "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
1013
  "shasum": ""
1014
  },
1015
  "require": {
1016
  "ext-dom": "*",
1017
  "ext-json": "*",
1018
- "ext-libxml": "*",
1019
- "ext-mbstring": "*",
1020
- "ext-xml": "*",
1021
- "myclabs/deep-copy": "^1.6.1",
1022
- "phar-io/manifest": "^1.0.1",
1023
- "phar-io/version": "^1.0",
1024
- "php": "^7.0",
1025
- "phpspec/prophecy": "^1.7",
1026
- "phpunit/php-code-coverage": "^5.3",
1027
- "phpunit/php-file-iterator": "^1.4.3",
1028
- "phpunit/php-text-template": "^1.2.1",
1029
- "phpunit/php-timer": "^1.0.9",
1030
- "phpunit/phpunit-mock-objects": "^5.0.9",
1031
- "sebastian/comparator": "^2.1",
1032
- "sebastian/diff": "^2.0",
1033
- "sebastian/environment": "^3.1",
1034
- "sebastian/exporter": "^3.1",
1035
- "sebastian/global-state": "^2.0",
1036
- "sebastian/object-enumerator": "^3.0.3",
1037
- "sebastian/resource-operations": "^1.0",
1038
- "sebastian/version": "^2.0.1"
1039
- },
1040
- "conflict": {
1041
- "phpdocumentor/reflection-docblock": "3.0.2",
1042
- "phpunit/dbunit": "<3.0"
1043
- },
1044
- "require-dev": {
1045
- "ext-pdo": "*"
1046
  },
1047
  "suggest": {
1048
- "ext-xdebug": "*",
1049
- "phpunit/php-invoker": "^1.1"
1050
  },
1051
  "bin": [
1052
  "phpunit"
@@ -1054,7 +810,7 @@
1054
  "type": "library",
1055
  "extra": {
1056
  "branch-alias": {
1057
- "dev-master": "6.5.x-dev"
1058
  }
1059
  },
1060
  "autoload": {
@@ -1080,33 +836,30 @@
1080
  "testing",
1081
  "xunit"
1082
  ],
1083
- "time": "2019-02-01T05:22:47+00:00"
1084
  },
1085
  {
1086
  "name": "phpunit/phpunit-mock-objects",
1087
- "version": "5.0.10",
1088
  "source": {
1089
  "type": "git",
1090
  "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1091
- "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
1092
  },
1093
  "dist": {
1094
  "type": "zip",
1095
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
1096
- "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
1097
  "shasum": ""
1098
  },
1099
  "require": {
1100
- "doctrine/instantiator": "^1.0.5",
1101
- "php": "^7.0",
1102
- "phpunit/php-text-template": "^1.2.1",
1103
- "sebastian/exporter": "^3.1"
1104
- },
1105
- "conflict": {
1106
- "phpunit/phpunit": "<6.0"
1107
  },
1108
  "require-dev": {
1109
- "phpunit/phpunit": "^6.5.11"
1110
  },
1111
  "suggest": {
1112
  "ext-soap": "*"
@@ -1114,7 +867,7 @@
1114
  "type": "library",
1115
  "extra": {
1116
  "branch-alias": {
1117
- "dev-master": "5.0.x-dev"
1118
  }
1119
  },
1120
  "autoload": {
@@ -1129,7 +882,7 @@
1129
  "authors": [
1130
  {
1131
  "name": "Sebastian Bergmann",
1132
- "email": "sebastian@phpunit.de",
1133
  "role": "lead"
1134
  }
1135
  ],
@@ -1139,28 +892,24 @@
1139
  "mock",
1140
  "xunit"
1141
  ],
1142
- "abandoned": true,
1143
- "time": "2018-08-09T05:50:03+00:00"
1144
  },
1145
  {
1146
- "name": "sebastian/code-unit-reverse-lookup",
1147
- "version": "1.0.1",
1148
  "source": {
1149
  "type": "git",
1150
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1151
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1152
  },
1153
  "dist": {
1154
  "type": "zip",
1155
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1156
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1157
  "shasum": ""
1158
  },
1159
  "require": {
1160
- "php": "^5.6 || ^7.0"
1161
- },
1162
- "require-dev": {
1163
- "phpunit/phpunit": "^5.7 || ^6.0"
1164
  },
1165
  "type": "library",
1166
  "extra": {
@@ -1169,50 +918,146 @@
1169
  }
1170
  },
1171
  "autoload": {
1172
- "classmap": [
1173
- "src/"
1174
- ]
1175
  },
1176
  "notification-url": "https://packagist.org/downloads/",
1177
  "license": [
1178
- "BSD-3-Clause"
1179
  ],
1180
  "authors": [
1181
  {
1182
- "name": "Sebastian Bergmann",
1183
- "email": "sebastian@phpunit.de"
1184
  }
1185
  ],
1186
- "description": "Looks up which function or method a line of code belongs to",
1187
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1188
- "time": "2017-03-04T06:30:41+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1189
  },
1190
  {
1191
  "name": "sebastian/comparator",
1192
- "version": "2.1.3",
1193
  "source": {
1194
  "type": "git",
1195
  "url": "https://github.com/sebastianbergmann/comparator.git",
1196
- "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
1197
  },
1198
  "dist": {
1199
  "type": "zip",
1200
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
1201
- "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
1202
  "shasum": ""
1203
  },
1204
  "require": {
1205
- "php": "^7.0",
1206
- "sebastian/diff": "^2.0 || ^3.0",
1207
- "sebastian/exporter": "^3.1"
1208
  },
1209
  "require-dev": {
1210
- "phpunit/phpunit": "^6.4"
1211
  },
1212
  "type": "library",
1213
  "extra": {
1214
  "branch-alias": {
1215
- "dev-master": "2.1.x-dev"
1216
  }
1217
  },
1218
  "autoload": {
@@ -1243,38 +1088,38 @@
1243
  }
1244
  ],
1245
  "description": "Provides the functionality to compare PHP values for equality",
1246
- "homepage": "https://github.com/sebastianbergmann/comparator",
1247
  "keywords": [
1248
  "comparator",
1249
  "compare",
1250
  "equality"
1251
  ],
1252
- "time": "2018-02-01T13:46:46+00:00"
1253
  },
1254
  {
1255
  "name": "sebastian/diff",
1256
- "version": "2.0.1",
1257
  "source": {
1258
  "type": "git",
1259
  "url": "https://github.com/sebastianbergmann/diff.git",
1260
- "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
1261
  },
1262
  "dist": {
1263
  "type": "zip",
1264
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1265
- "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1266
  "shasum": ""
1267
  },
1268
  "require": {
1269
- "php": "^7.0"
1270
  },
1271
  "require-dev": {
1272
- "phpunit/phpunit": "^6.2"
1273
  },
1274
  "type": "library",
1275
  "extra": {
1276
  "branch-alias": {
1277
- "dev-master": "2.0-dev"
1278
  }
1279
  },
1280
  "autoload": {
@@ -1301,32 +1146,32 @@
1301
  "keywords": [
1302
  "diff"
1303
  ],
1304
- "time": "2017-08-03T08:09:46+00:00"
1305
  },
1306
  {
1307
  "name": "sebastian/environment",
1308
- "version": "3.1.0",
1309
  "source": {
1310
  "type": "git",
1311
  "url": "https://github.com/sebastianbergmann/environment.git",
1312
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
1313
  },
1314
  "dist": {
1315
  "type": "zip",
1316
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1317
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1318
  "shasum": ""
1319
  },
1320
  "require": {
1321
- "php": "^7.0"
1322
  },
1323
  "require-dev": {
1324
- "phpunit/phpunit": "^6.1"
1325
  },
1326
  "type": "library",
1327
  "extra": {
1328
  "branch-alias": {
1329
- "dev-master": "3.1.x-dev"
1330
  }
1331
  },
1332
  "autoload": {
@@ -1351,34 +1196,34 @@
1351
  "environment",
1352
  "hhvm"
1353
  ],
1354
- "time": "2017-07-01T08:51:00+00:00"
1355
  },
1356
  {
1357
  "name": "sebastian/exporter",
1358
- "version": "3.1.0",
1359
  "source": {
1360
  "type": "git",
1361
  "url": "https://github.com/sebastianbergmann/exporter.git",
1362
- "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
1363
  },
1364
  "dist": {
1365
  "type": "zip",
1366
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
1367
- "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
1368
  "shasum": ""
1369
  },
1370
  "require": {
1371
- "php": "^7.0",
1372
- "sebastian/recursion-context": "^3.0"
1373
  },
1374
  "require-dev": {
1375
  "ext-mbstring": "*",
1376
- "phpunit/phpunit": "^6.0"
1377
  },
1378
  "type": "library",
1379
  "extra": {
1380
  "branch-alias": {
1381
- "dev-master": "3.1.x-dev"
1382
  }
1383
  },
1384
  "autoload": {
@@ -1418,27 +1263,27 @@
1418
  "export",
1419
  "exporter"
1420
  ],
1421
- "time": "2017-04-03T13:19:02+00:00"
1422
  },
1423
  {
1424
  "name": "sebastian/global-state",
1425
- "version": "2.0.0",
1426
  "source": {
1427
  "type": "git",
1428
  "url": "https://github.com/sebastianbergmann/global-state.git",
1429
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
1430
  },
1431
  "dist": {
1432
  "type": "zip",
1433
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1434
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1435
  "shasum": ""
1436
  },
1437
  "require": {
1438
- "php": "^7.0"
1439
  },
1440
  "require-dev": {
1441
- "phpunit/phpunit": "^6.0"
1442
  },
1443
  "suggest": {
1444
  "ext-uopz": "*"
@@ -1446,7 +1291,7 @@
1446
  "type": "library",
1447
  "extra": {
1448
  "branch-alias": {
1449
- "dev-master": "2.0-dev"
1450
  }
1451
  },
1452
  "autoload": {
@@ -1469,34 +1314,32 @@
1469
  "keywords": [
1470
  "global state"
1471
  ],
1472
- "time": "2017-04-27T15:39:26+00:00"
1473
  },
1474
  {
1475
- "name": "sebastian/object-enumerator",
1476
- "version": "3.0.3",
1477
  "source": {
1478
  "type": "git",
1479
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1480
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
1481
  },
1482
  "dist": {
1483
  "type": "zip",
1484
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1485
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1486
  "shasum": ""
1487
  },
1488
  "require": {
1489
- "php": "^7.0",
1490
- "sebastian/object-reflector": "^1.1.1",
1491
- "sebastian/recursion-context": "^3.0"
1492
  },
1493
  "require-dev": {
1494
- "phpunit/phpunit": "^6.0"
1495
  },
1496
  "type": "library",
1497
  "extra": {
1498
  "branch-alias": {
1499
- "dev-master": "3.0.x-dev"
1500
  }
1501
  },
1502
  "autoload": {
@@ -1509,315 +1352,422 @@
1509
  "BSD-3-Clause"
1510
  ],
1511
  "authors": [
 
 
 
 
1512
  {
1513
  "name": "Sebastian Bergmann",
1514
  "email": "sebastian@phpunit.de"
 
 
 
 
1515
  }
1516
  ],
1517
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1518
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1519
- "time": "2017-08-03T12:35:26+00:00"
1520
  },
1521
  {
1522
- "name": "sebastian/object-reflector",
1523
- "version": "1.1.1",
1524
  "source": {
1525
  "type": "git",
1526
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
1527
- "reference": "773f97c67f28de00d397be301821b06708fca0be"
1528
  },
1529
  "dist": {
1530
  "type": "zip",
1531
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
1532
- "reference": "773f97c67f28de00d397be301821b06708fca0be",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1533
  "shasum": ""
1534
  },
1535
  "require": {
1536
- "php": "^7.0"
 
1537
  },
1538
  "require-dev": {
1539
- "phpunit/phpunit": "^6.0"
 
 
 
1540
  },
1541
  "type": "library",
1542
  "extra": {
1543
  "branch-alias": {
1544
- "dev-master": "1.1-dev"
1545
  }
1546
  },
1547
  "autoload": {
1548
- "classmap": [
1549
- "src/"
 
 
 
1550
  ]
1551
  },
1552
  "notification-url": "https://packagist.org/downloads/",
1553
  "license": [
1554
- "BSD-3-Clause"
1555
  ],
1556
  "authors": [
1557
  {
1558
- "name": "Sebastian Bergmann",
1559
- "email": "sebastian@phpunit.de"
 
 
 
 
1560
  }
1561
  ],
1562
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
1563
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
1564
- "time": "2017-03-29T09:07:27+00:00"
1565
  },
1566
  {
1567
- "name": "sebastian/recursion-context",
1568
- "version": "3.0.0",
1569
  "source": {
1570
  "type": "git",
1571
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
1572
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
1573
  },
1574
  "dist": {
1575
  "type": "zip",
1576
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1577
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1578
  "shasum": ""
1579
  },
1580
  "require": {
1581
- "php": "^7.0"
 
 
1582
  },
1583
  "require-dev": {
1584
- "phpunit/phpunit": "^6.0"
 
 
 
 
 
 
 
 
 
 
 
1585
  },
1586
  "type": "library",
1587
  "extra": {
1588
  "branch-alias": {
1589
- "dev-master": "3.0.x-dev"
1590
  }
1591
  },
1592
  "autoload": {
1593
- "classmap": [
1594
- "src/"
 
 
 
1595
  ]
1596
  },
1597
  "notification-url": "https://packagist.org/downloads/",
1598
  "license": [
1599
- "BSD-3-Clause"
1600
  ],
1601
  "authors": [
1602
  {
1603
- "name": "Jeff Welch",
1604
- "email": "whatthejeff@gmail.com"
1605
- },
1606
- {
1607
- "name": "Sebastian Bergmann",
1608
- "email": "sebastian@phpunit.de"
1609
  },
1610
  {
1611
- "name": "Adam Harvey",
1612
- "email": "aharvey@php.net"
1613
  }
1614
  ],
1615
- "description": "Provides functionality to recursively process PHP variables",
1616
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1617
- "time": "2017-03-03T06:23:57+00:00"
1618
  },
1619
  {
1620
- "name": "sebastian/resource-operations",
1621
- "version": "1.0.0",
1622
  "source": {
1623
  "type": "git",
1624
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
1625
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1626
  },
1627
  "dist": {
1628
  "type": "zip",
1629
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1630
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1631
  "shasum": ""
1632
  },
1633
  "require": {
1634
- "php": ">=5.6.0"
 
 
 
 
 
 
 
1635
  },
1636
  "type": "library",
1637
  "extra": {
1638
  "branch-alias": {
1639
- "dev-master": "1.0.x-dev"
1640
  }
1641
  },
1642
  "autoload": {
1643
- "classmap": [
1644
- "src/"
 
 
 
1645
  ]
1646
  },
1647
  "notification-url": "https://packagist.org/downloads/",
1648
  "license": [
1649
- "BSD-3-Clause"
1650
  ],
1651
  "authors": [
1652
  {
1653
- "name": "Sebastian Bergmann",
1654
- "email": "sebastian@phpunit.de"
 
 
 
 
1655
  }
1656
  ],
1657
- "description": "Provides a list of PHP built-in functions that operate on resources",
1658
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1659
- "time": "2015-07-28T20:34:47+00:00"
1660
  },
1661
  {
1662
- "name": "sebastian/version",
1663
- "version": "2.0.1",
1664
  "source": {
1665
  "type": "git",
1666
- "url": "https://github.com/sebastianbergmann/version.git",
1667
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1668
  },
1669
  "dist": {
1670
  "type": "zip",
1671
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1672
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1673
  "shasum": ""
1674
  },
1675
  "require": {
1676
- "php": ">=5.6"
 
 
 
 
 
 
 
 
 
 
 
1677
  },
1678
  "type": "library",
1679
  "extra": {
1680
  "branch-alias": {
1681
- "dev-master": "2.0.x-dev"
1682
  }
1683
  },
1684
  "autoload": {
1685
- "classmap": [
1686
- "src/"
 
 
 
1687
  ]
1688
  },
1689
  "notification-url": "https://packagist.org/downloads/",
1690
  "license": [
1691
- "BSD-3-Clause"
1692
  ],
1693
  "authors": [
1694
  {
1695
- "name": "Sebastian Bergmann",
1696
- "email": "sebastian@phpunit.de",
1697
- "role": "lead"
 
 
 
1698
  }
1699
  ],
1700
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1701
- "homepage": "https://github.com/sebastianbergmann/version",
1702
- "time": "2016-10-03T07:35:21+00:00"
1703
  },
1704
  {
1705
- "name": "slevomat/coding-standard",
1706
- "version": "4.0.0",
1707
  "source": {
1708
  "type": "git",
1709
- "url": "https://github.com/slevomat/coding-standard.git",
1710
- "reference": "bab653d0f7f2e3ed13796f7803067d252f00a25a"
1711
  },
1712
  "dist": {
1713
  "type": "zip",
1714
- "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/bab653d0f7f2e3ed13796f7803067d252f00a25a",
1715
- "reference": "bab653d0f7f2e3ed13796f7803067d252f00a25a",
1716
  "shasum": ""
1717
  },
1718
  "require": {
1719
- "php": "^7.0",
1720
- "squizlabs/php_codesniffer": "^3.0.1"
1721
  },
1722
- "require-dev": {
1723
- "jakub-onderka/php-parallel-lint": "0.9.2",
1724
- "phing/phing": "2.16",
1725
- "phpstan/phpstan": "0.8.4",
1726
- "phpunit/phpunit": "6.3.0"
1727
  },
1728
- "type": "phpcodesniffer-standard",
1729
  "autoload": {
1730
  "psr-4": {
1731
- "SlevomatCodingStandard\\": "SlevomatCodingStandard"
1732
- }
 
 
 
1733
  },
1734
  "notification-url": "https://packagist.org/downloads/",
1735
  "license": [
1736
  "MIT"
1737
  ],
1738
- "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
1739
- "time": "2017-09-15T17:47:36+00:00"
 
 
 
 
 
 
 
 
 
 
 
1740
  },
1741
  {
1742
- "name": "squizlabs/php_codesniffer",
1743
- "version": "3.4.2",
1744
  "source": {
1745
  "type": "git",
1746
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
1747
- "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8"
1748
  },
1749
  "dist": {
1750
  "type": "zip",
1751
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
1752
- "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8",
1753
  "shasum": ""
1754
  },
1755
  "require": {
1756
- "ext-simplexml": "*",
1757
- "ext-tokenizer": "*",
1758
- "ext-xmlwriter": "*",
1759
- "php": ">=5.4.0"
1760
- },
1761
- "require-dev": {
1762
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
1763
  },
1764
- "bin": [
1765
- "bin/phpcs",
1766
- "bin/phpcbf"
1767
- ],
1768
  "type": "library",
1769
  "extra": {
1770
  "branch-alias": {
1771
- "dev-master": "3.x-dev"
1772
  }
1773
  },
 
 
 
 
 
 
 
 
1774
  "notification-url": "https://packagist.org/downloads/",
1775
  "license": [
1776
- "BSD-3-Clause"
1777
  ],
1778
  "authors": [
1779
  {
1780
- "name": "Greg Sherwood",
1781
- "role": "lead"
 
 
 
 
1782
  }
1783
  ],
1784
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
1785
- "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
1786
- "keywords": [
1787
- "phpcs",
1788
- "standards"
1789
- ],
1790
- "time": "2019-04-10T23:49:02+00:00"
1791
  },
1792
  {
1793
- "name": "symfony/polyfill-ctype",
1794
- "version": "v1.11.0",
1795
  "source": {
1796
  "type": "git",
1797
- "url": "https://github.com/symfony/polyfill-ctype.git",
1798
- "reference": "82ebae02209c21113908c229e9883c419720738a"
1799
  },
1800
  "dist": {
1801
  "type": "zip",
1802
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
1803
- "reference": "82ebae02209c21113908c229e9883c419720738a",
1804
  "shasum": ""
1805
  },
1806
  "require": {
1807
  "php": ">=5.3.3"
1808
  },
1809
  "suggest": {
1810
- "ext-ctype": "For best performance"
1811
  },
1812
  "type": "library",
1813
  "extra": {
1814
  "branch-alias": {
1815
- "dev-master": "1.11-dev"
1816
  }
1817
  },
1818
  "autoload": {
1819
  "psr-4": {
1820
- "Symfony\\Polyfill\\Ctype\\": ""
1821
  },
1822
  "files": [
1823
  "bootstrap.php"
@@ -1829,81 +1779,194 @@
1829
  ],
1830
  "authors": [
1831
  {
1832
- "name": "Symfony Community",
1833
- "homepage": "https://symfony.com/contributors"
1834
  },
1835
  {
1836
- "name": "Gert de Pagter",
1837
- "email": "BackEndTea@gmail.com"
1838
  }
1839
  ],
1840
- "description": "Symfony polyfill for ctype functions",
1841
  "homepage": "https://symfony.com",
1842
  "keywords": [
1843
  "compatibility",
1844
- "ctype",
1845
  "polyfill",
1846
- "portable"
 
1847
  ],
1848
- "time": "2019-02-06T07:57:58+00:00"
1849
  },
1850
  {
1851
- "name": "theseer/tokenizer",
1852
- "version": "1.1.2",
1853
  "source": {
1854
  "type": "git",
1855
- "url": "https://github.com/theseer/tokenizer.git",
1856
- "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8"
1857
  },
1858
  "dist": {
1859
  "type": "zip",
1860
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8",
1861
- "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8",
1862
  "shasum": ""
1863
  },
1864
  "require": {
1865
- "ext-dom": "*",
1866
- "ext-tokenizer": "*",
1867
- "ext-xmlwriter": "*",
1868
- "php": "^7.0"
1869
  },
1870
  "type": "library",
 
 
 
 
 
1871
  "autoload": {
1872
- "classmap": [
1873
- "src/"
 
 
 
1874
  ]
1875
  },
1876
  "notification-url": "https://packagist.org/downloads/",
1877
  "license": [
1878
- "BSD-3-Clause"
1879
  ],
1880
  "authors": [
1881
  {
1882
- "name": "Arne Blankerts",
1883
- "email": "arne@blankerts.de",
1884
- "role": "Developer"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1885
  }
1886
  ],
1887
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
1888
- "time": "2019-04-04T09:56:43+00:00"
 
1889
  },
1890
  {
1891
  "name": "webmozart/assert",
1892
- "version": "1.4.0",
1893
  "source": {
1894
  "type": "git",
1895
  "url": "https://github.com/webmozart/assert.git",
1896
- "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
1897
  },
1898
  "dist": {
1899
  "type": "zip",
1900
- "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
1901
- "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
1902
  "shasum": ""
1903
  },
1904
  "require": {
1905
- "php": "^5.3.3 || ^7.0",
1906
- "symfony/polyfill-ctype": "^1.8"
1907
  },
1908
  "require-dev": {
1909
  "phpunit/phpunit": "^4.6",
@@ -1936,16 +1999,18 @@
1936
  "check",
1937
  "validate"
1938
  ],
1939
- "time": "2018-12-25T11:19:39+00:00"
1940
  }
1941
  ],
1942
  "aliases": [],
1943
  "minimum-stability": "dev",
1944
- "stability-flags": [],
1945
- "prefer-stable": true,
 
 
1946
  "prefer-lowest": false,
1947
  "platform": {
1948
- "php": "^7.0 | ^8.0"
1949
  },
1950
  "platform-dev": []
1951
  }
1
  {
2
  "_readme": [
3
  "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
  "This file is @generated automatically"
6
  ],
7
+ "hash": "6167d787b5e70ba6f43df2f23a2bd412",
8
+ "content-hash": "68e2338a39a45ad48cb0a3dfcb125f71",
9
+ "packages": [],
10
+ "packages-dev": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  {
12
+ "name": "codeclimate/php-test-reporter",
13
+ "version": "v0.3.2",
14
  "source": {
15
  "type": "git",
16
+ "url": "https://github.com/codeclimate/php-test-reporter.git",
17
+ "reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016"
18
  },
19
  "dist": {
20
  "type": "zip",
21
+ "url": "https://api.github.com/repos/codeclimate/php-test-reporter/zipball/3a2d3ebdc1df5acf372458c15041af240a6fc016",
22
+ "reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016",
23
  "shasum": ""
24
  },
25
  "require": {
26
+ "ext-curl": "*",
27
+ "php": ">=5.3",
28
+ "satooshi/php-coveralls": "1.0.*",
29
+ "symfony/console": ">=2.0"
30
  },
31
  "require-dev": {
32
+ "ext-xdebug": "*",
33
+ "phpunit/phpunit": "3.7.*@stable"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  },
35
+ "bin": [
36
+ "composer/bin/test-reporter"
 
 
 
 
 
 
 
37
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  "type": "library",
39
  "extra": {
40
  "branch-alias": {
41
+ "dev-master": "0.3.x-dev"
42
  }
43
  },
44
  "autoload": {
45
+ "psr-0": {
46
+ "CodeClimate\\Component": "src/",
47
+ "CodeClimate\\Bundle": "src/"
48
  }
49
  },
50
  "notification-url": "https://packagist.org/downloads/",
53
  ],
54
  "authors": [
55
  {
56
+ "name": "Code Climate",
57
+ "email": "hello@codeclimate.com",
58
+ "homepage": "https://codeclimate.com"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  }
 
 
 
 
 
 
 
 
 
60
  ],
61
+ "description": "PHP client for reporting test coverage to Code Climate",
62
+ "homepage": "https://github.com/codeclimate/php-test-reporter",
63
+ "keywords": [
64
+ "codeclimate",
65
+ "coverage"
66
  ],
67
+ "time": "2016-04-19 16:54:33"
 
68
  },
69
  {
70
+ "name": "dhii/php-cs-fixer-config",
71
+ "version": "dev-php-5.3",
72
  "source": {
73
  "type": "git",
74
+ "url": "https://github.com/Dhii/php-cs-fixer-config.git",
75
+ "reference": "ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca"
76
  },
77
  "dist": {
78
  "type": "zip",
79
+ "url": "https://api.github.com/repos/Dhii/php-cs-fixer-config/zipball/ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca",
80
+ "reference": "ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca",
81
  "shasum": ""
82
  },
83
  "require": {
84
+ "friendsofphp/php-cs-fixer": ">=1.11 <1.12",
85
  "php": "^5.3 | ^7.0"
86
  },
87
  "require-dev": {
88
+ "phpunit/phpunit": "^4.8"
 
 
 
89
  },
90
  "type": "library",
91
  "autoload": {
92
  "psr-4": {
93
+ "Dhii\\Configuration\\PHPCSFixer\\": "src/"
94
  }
95
  },
96
  "notification-url": "https://packagist.org/downloads/",
103
  "email": "development@dhii.co"
104
  }
105
  ],
106
+ "description": "A default PHP CS Fixer config implementation",
107
+ "time": "2016-09-03 14:45:03"
108
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  {
110
  "name": "doctrine/instantiator",
111
+ "version": "dev-master",
112
  "source": {
113
  "type": "git",
114
  "url": "https://github.com/doctrine/instantiator.git",
115
+ "reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a"
116
  },
117
  "dist": {
118
  "type": "zip",
119
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/416fb8ad1d095a87f1d21bc40711843cd122fd4a",
120
+ "reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a",
121
  "shasum": ""
122
  },
123
  "require": {
158
  "constructor",
159
  "instantiate"
160
  ],
161
+ "time": "2016-03-31 10:24:22"
162
  },
163
  {
164
+ "name": "friendsofphp/php-cs-fixer",
165
+ "version": "v1.11.8",
166
  "source": {
167
  "type": "git",
168
+ "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
169
+ "reference": "117137e9970054d022b7656209f094dab852b90c"
170
  },
171
  "dist": {
172
  "type": "zip",
173
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/117137e9970054d022b7656209f094dab852b90c",
174
+ "reference": "117137e9970054d022b7656209f094dab852b90c",
175
  "shasum": ""
176
  },
177
  "require": {
178
+ "ext-tokenizer": "*",
179
+ "php": ">=5.3.6",
180
+ "sebastian/diff": "~1.1",
181
+ "symfony/console": "~2.3|~3.0",
182
+ "symfony/event-dispatcher": "~2.1|~3.0",
183
+ "symfony/filesystem": "~2.1|~3.0",
184
+ "symfony/finder": "~2.1|~3.0",
185
+ "symfony/process": "~2.3|~3.0",
186
+ "symfony/stopwatch": "~2.5|~3.0"
187
  },
188
+ "conflict": {
189
+ "hhvm": "<3.9"
190
  },
191
+ "require-dev": {
192
+ "phpunit/phpunit": "^4.5|^5",
193
+ "satooshi/php-coveralls": "^0.7.1"
 
 
194
  },
195
+ "bin": [
196
+ "php-cs-fixer"
197
+ ],
198
+ "type": "application",
199
  "autoload": {
200
  "psr-4": {
201
+ "Symfony\\CS\\": "Symfony/CS/"
202
  }
203
  },
204
  "notification-url": "https://packagist.org/downloads/",
207
  ],
208
  "authors": [
209
  {
210
+ "name": "Dariusz Rumiński",
211
+ "email": "dariusz.ruminski@gmail.com"
212
+ },
213
+ {
214
+ "name": "Fabien Potencier",
215
+ "email": "fabien@symfony.com"
216
  }
217
  ],
218
+ "description": "A tool to automatically fix PHP code style",
219
+ "time": "2016-08-16 23:31:05"
 
 
 
 
 
220
  },
221
  {
222
+ "name": "guzzle/guzzle",
223
+ "version": "dev-master",
224
  "source": {
225
  "type": "git",
226
+ "url": "https://github.com/guzzle/guzzle3.git",
227
+ "reference": "f7778ed85e3db90009d79725afd6c3a82dab32fe"
228
  },
229
  "dist": {
230
  "type": "zip",
231
+ "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/f7778ed85e3db90009d79725afd6c3a82dab32fe",
232
+ "reference": "f7778ed85e3db90009d79725afd6c3a82dab32fe",
233
  "shasum": ""
234
  },
235
  "require": {
236
+ "ext-curl": "*",
237
+ "php": ">=5.3.3",
238
+ "symfony/event-dispatcher": "~2.1"
239
+ },
240
+ "replace": {
241
+ "guzzle/batch": "self.version",
242
+ "guzzle/cache": "self.version",
243
+ "guzzle/common": "self.version",
244
+ "guzzle/http": "self.version",
245
+ "guzzle/inflection": "self.version",
246
+ "guzzle/iterator": "self.version",
247
+ "guzzle/log": "self.version",
248
+ "guzzle/parser": "self.version",
249
+ "guzzle/plugin": "self.version",
250
+ "guzzle/plugin-async": "self.version",
251
+ "guzzle/plugin-backoff": "self.version",
252
+ "guzzle/plugin-cache": "self.version",
253
+ "guzzle/plugin-cookie": "self.version",
254
+ "guzzle/plugin-curlauth": "self.version",
255
+ "guzzle/plugin-error-response": "self.version",
256
+ "guzzle/plugin-history": "self.version",
257
+ "guzzle/plugin-log": "self.version",
258
+ "guzzle/plugin-md5": "self.version",
259
+ "guzzle/plugin-mock": "self.version",
260
+ "guzzle/plugin-oauth": "self.version",
261
+ "guzzle/service": "self.version",
262
+ "guzzle/stream": "self.version"
263
  },
264
  "require-dev": {
265
+ "doctrine/cache": "~1.3",
266
+ "monolog/monolog": "~1.0",
267
+ "phpunit/phpunit": "3.7.*",
268
+ "psr/log": "~1.0",
269
+ "symfony/class-loader": "~2.1",
270
+ "zendframework/zend-cache": "2.*,<2.3",
271
+ "zendframework/zend-log": "2.*,<2.3"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  },
273
+ "suggest": {
274
+ "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
 
 
 
275
  },
276
  "type": "library",
277
  "extra": {
278
  "branch-alias": {
279
+ "dev-master": "3.9-dev"
280
  }
281
  },
282
  "autoload": {
283
+ "psr-0": {
284
+ "Guzzle": "src/",
285
+ "Guzzle\\Tests": "tests/"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  },
288
  "notification-url": "https://packagist.org/downloads/",
289
  "license": [
290
+ "MIT"
291
  ],
292
  "authors": [
293
  {
294
+ "name": "Michael Dowling",
295
+ "email": "mtdowling@gmail.com",
296
+ "homepage": "https://github.com/mtdowling"
297
  },
298
  {
299
+ "name": "Guzzle Community",
300
+ "homepage": "https://github.com/guzzle/guzzle/contributors"
 
 
 
 
 
 
301
  }
302
  ],
303
+ "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
304
+ "homepage": "http://guzzlephp.org/",
305
+ "keywords": [
306
+ "client",
307
+ "curl",
308
+ "framework",
309
+ "http",
310
+ "http client",
311
+ "rest",
312
+ "web service"
313
+ ],
314
+ "abandoned": "guzzlehttp/guzzle",
315
+ "time": "2016-10-26 18:22:07"
316
  },
317
  {
318
  "name": "phpdocumentor/reflection-common",
319
+ "version": "dev-master",
320
  "source": {
321
  "type": "git",
322
  "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
323
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
324
  },
325
  "dist": {
326
  "type": "zip",
327
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
328
+ "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
329
  "shasum": ""
330
  },
331
  "require": {
366
  "reflection",
367
  "static analysis"
368
  ],
369
+ "time": "2015-12-27 11:43:31"
370
  },
371
  {
372
  "name": "phpdocumentor/reflection-docblock",
373
+ "version": "3.1.1",
374
  "source": {
375
  "type": "git",
376
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
377
+ "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
378
  },
379
  "dist": {
380
  "type": "zip",
381
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
382
+ "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
383
  "shasum": ""
384
  },
385
  "require": {
386
+ "php": ">=5.5",
387
+ "phpdocumentor/reflection-common": "^1.0@dev",
388
+ "phpdocumentor/type-resolver": "^0.2.0",
389
  "webmozart/assert": "^1.0"
390
  },
391
  "require-dev": {
392
+ "mockery/mockery": "^0.9.4",
393
+ "phpunit/phpunit": "^4.4"
 
394
  },
395
  "type": "library",
 
 
 
 
 
396
  "autoload": {
397
  "psr-4": {
398
  "phpDocumentor\\Reflection\\": [
411
  }
412
  ],
413
  "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
414
+ "time": "2016-09-30 07:12:33"
415
  },
416
  {
417
  "name": "phpdocumentor/type-resolver",
418
+ "version": "0.2.1",
419
  "source": {
420
  "type": "git",
421
  "url": "https://github.com/phpDocumentor/TypeResolver.git",
422
+ "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
423
  },
424
  "dist": {
425
  "type": "zip",
426
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
427
+ "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
428
  "shasum": ""
429
  },
430
  "require": {
431
+ "php": ">=5.5",
432
  "phpdocumentor/reflection-common": "^1.0"
433
  },
434
  "require-dev": {
458
  "email": "me@mikevanriel.com"
459
  }
460
  ],
461
+ "time": "2016-11-25 06:54:22"
462
  },
463
  {
464
  "name": "phpspec/prophecy",
465
+ "version": "dev-master",
466
  "source": {
467
  "type": "git",
468
  "url": "https://github.com/phpspec/prophecy.git",
469
+ "reference": "6c52c2722f8460122f96f86346600e1077ce22cb"
470
  },
471
  "dist": {
472
  "type": "zip",
473
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb",
474
+ "reference": "6c52c2722f8460122f96f86346600e1077ce22cb",
475
  "shasum": ""
476
  },
477
  "require": {
478
  "doctrine/instantiator": "^1.0.2",
479
  "php": "^5.3|^7.0",
480
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
481
+ "sebastian/comparator": "^1.1",
482
+ "sebastian/recursion-context": "^1.0|^2.0"
483
  },
484
  "require-dev": {
485
+ "phpspec/phpspec": "^2.0",
486
+ "phpunit/phpunit": "^4.8 || ^5.6.5"
487
  },
488
  "type": "library",
489
  "extra": {
490
  "branch-alias": {
491
+ "dev-master": "1.6.x-dev"
492
  }
493
  },
494
  "autoload": {
521
  "spy",
522
  "stub"
523
  ],
524
+ "time": "2016-11-21 14:58:47"
525
  },
526
  {
527
  "name": "phpunit/php-code-coverage",
528
+ "version": "2.2.x-dev",
529
  "source": {
530
  "type": "git",
531
  "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
532
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
533
  },
534
  "dist": {
535
  "type": "zip",
536
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
537
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
538
  "shasum": ""
539
  },
540
  "require": {
541
+ "php": ">=5.3.3",
542
+ "phpunit/php-file-iterator": "~1.3",
543
+ "phpunit/php-text-template": "~1.2",
544
+ "phpunit/php-token-stream": "~1.3",
545
+ "sebastian/environment": "^1.3.2",
546
+ "sebastian/version": "~1.0"
 
 
 
 
547
  },
548
  "require-dev": {
549
+ "ext-xdebug": ">=2.1.4",
550
+ "phpunit/phpunit": "~4"
551
  },
552
  "suggest": {
553
+ "ext-dom": "*",
554
+ "ext-xdebug": ">=2.2.1",
555
+ "ext-xmlwriter": "*"
556
  },
557
  "type": "library",
558
  "extra": {
559
  "branch-alias": {
560
+ "dev-master": "2.2.x-dev"
561
  }
562
  },
563
  "autoload": {
572
  "authors": [
573
  {
574
  "name": "Sebastian Bergmann",
575
+ "email": "sb@sebastian-bergmann.de",
576
  "role": "lead"
577
  }
578
  ],
583
  "testing",
584
  "xunit"
585
  ],
586
+ "time": "2015-10-06 15:47:00"
587
  },
588
  {
589
  "name": "phpunit/php-file-iterator",
590
+ "version": "dev-master",
591
  "source": {
592
  "type": "git",
593
  "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
594
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
595
  },
596
  "dist": {
597
  "type": "zip",
598
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
599
+ "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
600
  "shasum": ""
601
  },
602
  "require": {
630
  "filesystem",
631
  "iterator"
632
  ],
633
+ "time": "2016-10-03 07:40:28"
634
  },
635
  {
636
  "name": "phpunit/php-text-template",
671
  "keywords": [
672
  "template"
673
  ],
674
+ "time": "2015-06-21 13:50:34"
675
  },
676
  {
677
  "name": "phpunit/php-timer",
678
+ "version": "1.0.8",
679
  "source": {
680
  "type": "git",
681
  "url": "https://github.com/sebastianbergmann/php-timer.git",
682
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
683
  },
684
  "dist": {
685
  "type": "zip",
686
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
687
+ "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
688
  "shasum": ""
689
  },
690
  "require": {
691
+ "php": ">=5.3.3"
692
  },
693
  "require-dev": {
694
+ "phpunit/phpunit": "~4|~5"
695
  },
696
  "type": "library",
 
 
 
 
 
697
  "autoload": {
698
  "classmap": [
699
  "src/"
715
  "keywords": [
716
  "timer"
717
  ],
718
+ "time": "2016-05-12 18:03:57"
719
  },
720
  {
721
  "name": "phpunit/php-token-stream",
722
+ "version": "dev-master",
723
  "source": {
724
  "type": "git",
725
  "url": "https://github.com/sebastianbergmann/php-token-stream.git",
726
+ "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b"
727
  },
728
  "dist": {
729
  "type": "zip",
730
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b",
731
+ "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b",
732
  "shasum": ""
733
  },
734
  "require": {
735
  "ext-tokenizer": "*",
736
+ "php": ">=5.3.3"
737
  },
738
  "require-dev": {
739
+ "phpunit/phpunit": "~4.2"
740
  },
741
  "type": "library",
742
  "extra": {
743
  "branch-alias": {
744
+ "dev-master": "1.4-dev"
745
  }
746
  },
747
  "autoload": {
764
  "keywords": [
765
  "tokenizer"
766
  ],
767
+ "time": "2016-11-15 14:06:22"
768
  },
769
  {
770
  "name": "phpunit/phpunit",
771
+ "version": "4.8.x-dev",
772
  "source": {
773
  "type": "git",
774
  "url": "https://github.com/sebastianbergmann/phpunit.git",
775
+ "reference": "1202e3ce2047810607df9858a7bf8d5573077deb"
776
  },
777
  "dist": {
778
  "type": "zip",
779
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1202e3ce2047810607df9858a7bf8d5573077deb",
780
+ "reference": "1202e3ce2047810607df9858a7bf8d5573077deb",
781
  "shasum": ""
782
  },
783
  "require": {
784
  "ext-dom": "*",
785
  "ext-json": "*",
786
+ "ext-pcre": "*",
787
+ "ext-reflection": "*",
788
+ "ext-spl": "*",
789
+ "php": ">=5.3.3",
790
+ "phpspec/prophecy": "^1.3.1",
791
+ "phpunit/php-code-coverage": "~2.1",
792
+ "phpunit/php-file-iterator": "~1.4",
793
+ "phpunit/php-text-template": "~1.2",
794
+ "phpunit/php-timer": "^1.0.6",
795
+ "phpunit/phpunit-mock-objects": "~2.3",
796
+ "sebastian/comparator": "~1.2.2",
797
+ "sebastian/diff": "~1.2",
798
+ "sebastian/environment": "~1.3",
799
+ "sebastian/exporter": "~1.2",
800
+ "sebastian/global-state": "~1.0",
801
+ "sebastian/version": "~1.0",
802
+ "symfony/yaml": "~2.1|~3.0"
 
 
 
 
 
 
 
 
 
 
 
803
  },
804
  "suggest": {
805
+ "phpunit/php-invoker": "~1.1"
 
806
  },
807
  "bin": [
808
  "phpunit"
810
  "type": "library",
811
  "extra": {
812
  "branch-alias": {
813
+ "dev-master": "4.8.x-dev"
814
  }
815
  },
816
  "autoload": {
836
  "testing",
837
  "xunit"
838
  ],
839
+ "time": "2017-01-21 14:05:27"
840
  },
841
  {
842
  "name": "phpunit/phpunit-mock-objects",
843
+ "version": "2.3.x-dev",
844
  "source": {
845
  "type": "git",
846
  "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
847
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
848
  },
849
  "dist": {
850
  "type": "zip",
851
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
852
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
853
  "shasum": ""
854
  },
855
  "require": {
856
+ "doctrine/instantiator": "^1.0.2",
857
+ "php": ">=5.3.3",
858
+ "phpunit/php-text-template": "~1.2",
859
+ "sebastian/exporter": "~1.2"
 
 
 
860
  },
861
  "require-dev": {
862
+ "phpunit/phpunit": "~4.4"
863
  },
864
  "suggest": {
865
  "ext-soap": "*"
867
  "type": "library",
868
  "extra": {
869
  "branch-alias": {
870
+ "dev-master": "2.3.x-dev"
871
  }
872
  },
873
  "autoload": {
882
  "authors": [
883
  {
884
  "name": "Sebastian Bergmann",
885
+ "email": "sb@sebastian-bergmann.de",
886
  "role": "lead"
887
  }
888
  ],
892
  "mock",
893
  "xunit"
894
  ],
895
+ "time": "2015-10-02 06:51:40"
 
896
  },
897
  {
898
+ "name": "psr/log",
899
+ "version": "dev-master",
900
  "source": {
901
  "type": "git",
902
+ "url": "https://github.com/php-fig/log.git",
903
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
904
  },
905
  "dist": {
906
  "type": "zip",
907
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
908
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
909
  "shasum": ""
910
  },
911
  "require": {
912
+ "php": ">=5.3.0"
 
 
 
913
  },
914
  "type": "library",
915
  "extra": {
918
  }
919
  },
920
  "autoload": {
921
+ "psr-4": {
922
+ "Psr\\Log\\": "Psr/Log/"
923
+ }
924
  },
925
  "notification-url": "https://packagist.org/downloads/",
926
  "license": [
927
+ "MIT"
928
  ],
929
  "authors": [
930
  {
931
+ "name": "PHP-FIG",
932
+ "homepage": "http://www.php-fig.org/"
933
  }
934
  ],
935
+ "description": "Common interface for logging libraries",
936
+ "homepage": "https://github.com/php-fig/log",
937
+ "keywords": [
938
+ "log",
939
+ "psr",
940
+ "psr-3"
941
+ ],
942
+ "time": "2016-10-10 12:19:37"
943
+ },
944
+ {
945
+ "name": "ptrofimov/xpmock",
946
+ "version": "1.1.5",
947
+ "source": {
948
+ "type": "git",
949
+ "url": "https://github.com/ptrofimov/xpmock.git",
950
+ "reference": "5b95ace33624b66bf4e854071b8856722fde515e"
951
+ },
952
+ "dist": {
953
+ "type": "zip",
954
+ "url": "https://api.github.com/repos/ptrofimov/xpmock/zipball/5b95ace33624b66bf4e854071b8856722fde515e",
955
+ "reference": "5b95ace33624b66bf4e854071b8856722fde515e",
956
+ "shasum": ""
957
+ },
958
+ "require": {
959
+ "php": ">=5.3.0"
960
+ },
961
+ "require-dev": {
962
+ "phpunit/phpunit": "3.7.*"
963
+ },
964
+ "type": "library",
965
+ "autoload": {
966
+ "psr-0": {
967
+ "Xpmock": "src"
968
+ }
969
+ },
970
+ "notification-url": "https://packagist.org/downloads/",
971
+ "license": [
972
+ "MIT"
973
+ ],
974
+ "description": "PHPUnit: simple syntax to create mock-objects",
975
+ "time": "2014-01-02 16:42:27"
976
+ },
977
+ {
978
+ "name": "satooshi/php-coveralls",
979
+ "version": "1.0.x-dev",
980
+ "source": {
981
+ "type": "git",
982
+ "url": "https://github.com/satooshi/php-coveralls.git",
983
+ "reference": "da51d304fe8622bf9a6da39a8446e7afd432115c"
984
+ },
985
+ "dist": {
986
+ "type": "zip",
987
+ "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/da51d304fe8622bf9a6da39a8446e7afd432115c",
988
+ "reference": "da51d304fe8622bf9a6da39a8446e7afd432115c",
989
+ "shasum": ""
990
+ },
991
+ "require": {
992
+ "ext-json": "*",
993
+ "ext-simplexml": "*",
994
+ "guzzle/guzzle": "^2.8|^3.0",
995
+ "php": ">=5.3.3",
996
+ "psr/log": "^1.0",
997
+ "symfony/config": "^2.1|^3.0",
998
+ "symfony/console": "^2.1|^3.0",
999
+ "symfony/stopwatch": "^2.0|^3.0",
1000
+ "symfony/yaml": "^2.0|^3.0"
1001
+ },
1002
+ "suggest": {
1003
+ "symfony/http-kernel": "Allows Symfony integration"
1004
+ },
1005
+ "bin": [
1006
+ "bin/coveralls"
1007
+ ],
1008
+ "type": "library",
1009
+ "autoload": {
1010
+ "psr-4": {
1011
+ "Satooshi\\": "src/Satooshi/"
1012
+ }
1013
+ },
1014
+ "notification-url": "https://packagist.org/downloads/",
1015
+ "license": [
1016
+ "MIT"
1017
+ ],
1018
+ "authors": [
1019
+ {
1020
+ "name": "Kitamura Satoshi",
1021
+ "email": "with.no.parachute@gmail.com",
1022
+ "homepage": "https://www.facebook.com/satooshi.jp"
1023
+ }
1024
+ ],
1025
+ "description": "PHP client library for Coveralls API",
1026
+ "homepage": "https://github.com/satooshi/php-coveralls",
1027
+ "keywords": [
1028
+ "ci",
1029
+ "coverage",
1030
+ "github",
1031
+ "test"
1032
+ ],
1033
+ "time": "2016-01-20 17:35:46"
1034
  },
1035
  {
1036
  "name": "sebastian/comparator",
1037
+ "version": "dev-master",
1038
  "source": {
1039
  "type": "git",
1040
  "url": "https://github.com/sebastianbergmann/comparator.git",
1041
+ "reference": "2f09d5a251c4a92d1a80518c2166b5d0d742bc63"
1042
  },
1043
  "dist": {
1044
  "type": "zip",
1045
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2f09d5a251c4a92d1a80518c2166b5d0d742bc63",
1046
+ "reference": "2f09d5a251c4a92d1a80518c2166b5d0d742bc63",
1047
  "shasum": ""
1048
  },
1049
  "require": {
1050
+ "php": "^5.3.3 || ^7.0",
1051
+ "sebastian/diff": "^1.2",
1052
+ "sebastian/exporter": "^1.2 || ^2.0"
1053
  },
1054
  "require-dev": {
1055
+ "phpunit/phpunit": "^4.8"
1056
  },
1057
  "type": "library",
1058
  "extra": {
1059
  "branch-alias": {
1060
+ "dev-master": "1.2.x-dev"
1061
  }
1062
  },
1063
  "autoload": {
1088
  }
1089
  ],
1090
  "description": "Provides the functionality to compare PHP values for equality",
1091
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
1092
  "keywords": [
1093
  "comparator",
1094
  "compare",
1095
  "equality"
1096
  ],
1097
+ "time": "2016-12-10 08:07:52"
1098
  },
1099
  {
1100
  "name": "sebastian/diff",
1101
+ "version": "dev-master",
1102
  "source": {
1103
  "type": "git",
1104
  "url": "https://github.com/sebastianbergmann/diff.git",
1105
+ "reference": "d0814318784b7756fb932116acd19ee3b0cbe67a"
1106
  },
1107
  "dist": {
1108
  "type": "zip",
1109
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/d0814318784b7756fb932116acd19ee3b0cbe67a",
1110
+ "reference": "d0814318784b7756fb932116acd19ee3b0cbe67a",
1111
  "shasum": ""
1112
  },
1113
  "require": {
1114
+ "php": ">=5.3.3"
1115
  },
1116
  "require-dev": {
1117
+ "phpunit/phpunit": "~4.8"
1118
  },
1119
  "type": "library",
1120
  "extra": {
1121
  "branch-alias": {
1122
+ "dev-master": "1.4-dev"
1123
  }
1124
  },
1125
  "autoload": {
1146
  "keywords": [
1147
  "diff"
1148
  ],
1149
+ "time": "2016-10-03 07:45:03"
1150
  },
1151
  {
1152
  "name": "sebastian/environment",
1153
+ "version": "1.3.x-dev",
1154
  "source": {
1155
  "type": "git",
1156
  "url": "https://github.com/sebastianbergmann/environment.git",
1157
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
1158
  },
1159
  "dist": {
1160
  "type": "zip",
1161
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
1162
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
1163
  "shasum": ""
1164
  },
1165
  "require": {
1166
+ "php": "^5.3.3 || ^7.0"
1167
  },
1168
  "require-dev": {
1169
+ "phpunit/phpunit": "^4.8 || ^5.0"
1170
  },
1171
  "type": "library",
1172
  "extra": {
1173
  "branch-alias": {
1174
+ "dev-master": "1.3.x-dev"
1175
  }
1176
  },
1177
  "autoload": {
1196
  "environment",
1197
  "hhvm"
1198
  ],
1199
+ "time": "2016-08-18 05:49:44"
1200
  },
1201
  {
1202
  "name": "sebastian/exporter",
1203
+ "version": "1.2.x-dev",
1204
  "source": {
1205
  "type": "git",
1206
  "url": "https://github.com/sebastianbergmann/exporter.git",
1207
+ "reference": "7dfcd2418aacbdb5e123fb23ac735acfdd6c588d"
1208
  },
1209
  "dist": {
1210
  "type": "zip",
1211
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7dfcd2418aacbdb5e123fb23ac735acfdd6c588d",
1212
+ "reference": "7dfcd2418aacbdb5e123fb23ac735acfdd6c588d",
1213
  "shasum": ""
1214
  },
1215
  "require": {
1216
+ "php": ">=5.3.3",
1217
+ "sebastian/recursion-context": "~1.0"
1218
  },
1219
  "require-dev": {
1220
  "ext-mbstring": "*",
1221
+ "phpunit/phpunit": "~4.4"
1222
  },
1223
  "type": "library",
1224
  "extra": {
1225
  "branch-alias": {
1226
+ "dev-master": "1.3.x-dev"
1227
  }
1228
  },
1229
  "autoload": {
1263
  "export",
1264
  "exporter"
1265
  ],
1266
+ "time": "2016-10-03 07:44:30"
1267
  },
1268
  {
1269
  "name": "sebastian/global-state",
1270
+ "version": "1.1.x-dev",
1271
  "source": {
1272
  "type": "git",
1273
  "url": "https://github.com/sebastianbergmann/global-state.git",
1274
+ "reference": "5a2b9ba59e8cf82fd1fdd7efb7d7846fd69ac36d"
1275
  },
1276
  "dist": {
1277
  "type": "zip",
1278
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/5a2b9ba59e8cf82fd1fdd7efb7d7846fd69ac36d",
1279
+ "reference": "5a2b9ba59e8cf82fd1fdd7efb7d7846fd69ac36d",
1280
  "shasum": ""
1281
  },
1282
  "require": {
1283
+ "php": ">=5.3.3"
1284
  },
1285
  "require-dev": {
1286
+ "phpunit/phpunit": "~4.2|~5.0"
1287
  },
1288
  "suggest": {
1289
  "ext-uopz": "*"
1291
  "type": "library",
1292
  "extra": {
1293
  "branch-alias": {
1294
+ "dev-master": "1.0-dev"
1295
  }
1296
  },
1297
  "autoload": {
1314
  "keywords": [
1315
  "global state"
1316
  ],
1317
+ "time": "2016-10-03 07:46:22"
1318
  },
1319
  {
1320
+ "name": "sebastian/recursion-context",
1321
+ "version": "1.0.x-dev",
1322
  "source": {
1323
  "type": "git",
1324
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
1325
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
1326
  },
1327
  "dist": {
1328
  "type": "zip",
1329
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
1330
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
1331
  "shasum": ""
1332
  },
1333
  "require": {
1334
+ "php": ">=5.3.3"
 
 
1335
  },
1336
  "require-dev": {
1337
+ "phpunit/phpunit": "~4.4"
1338
  },
1339
  "type": "library",
1340
  "extra": {
1341
  "branch-alias": {
1342
+ "dev-master": "1.0.x-dev"
1343
  }
1344
  },
1345
  "autoload": {
1352
  "BSD-3-Clause"
1353
  ],
1354
  "authors": [
1355
+ {
1356
+ "name": "Jeff Welch",
1357
+ "email": "whatthejeff@gmail.com"
1358
+ },
1359
  {
1360
  "name": "Sebastian Bergmann",
1361
  "email": "sebastian@phpunit.de"
1362
+ },
1363
+ {
1364
+ "name": "Adam Harvey",
1365
+ "email": "aharvey@php.net"
1366
  }
1367
  ],
1368
+ "description": "Provides functionality to recursively process PHP variables",
1369
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1370
+ "time": "2016-10-03 07:41:43"
1371
  },
1372
  {
1373
+ "name": "sebastian/version",
1374
+ "version": "1.0.6",
1375
  "source": {
1376
  "type": "git",
1377
+ "url": "https://github.com/sebastianbergmann/version.git",
1378
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
1379
  },
1380
  "dist": {
1381
  "type": "zip",
1382
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
1383
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
1384
+ "shasum": ""
1385
+ },
1386
+ "type": "library",
1387
+ "autoload": {
1388
+ "classmap": [
1389
+ "src/"
1390
+ ]
1391
+ },
1392
+ "notification-url": "https://packagist.org/downloads/",
1393
+ "license": [
1394
+ "BSD-3-Clause"
1395
+ ],
1396
+ "authors": [
1397
+ {
1398
+ "name": "Sebastian Bergmann",
1399
+ "email": "sebastian@phpunit.de",
1400
+ "role": "lead"
1401
+ }
1402
+ ],
1403
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1404
+ "homepage": "https://github.com/sebastianbergmann/version",
1405
+ "time": "2015-06-21 13:59:46"
1406
+ },
1407
+ {
1408
+ "name": "symfony/config",
1409
+ "version": "dev-master",
1410
+ "source": {
1411
+ "type": "git",
1412
+ "url": "https://github.com/symfony/config.git",
1413
+ "reference": "ba3da262813160b4963fb36f573c886592da6acb"
1414
+ },
1415
+ "dist": {
1416
+ "type": "zip",
1417
+ "url": "https://api.github.com/repos/symfony/config/zipball/ba3da262813160b4963fb36f573c886592da6acb",
1418
+ "reference": "ba3da262813160b4963fb36f573c886592da6acb",
1419
  "shasum": ""
1420
  },
1421
  "require": {
1422
+ "php": ">=5.5.9",
1423
+ "symfony/filesystem": "~2.8|~3.0"
1424
  },
1425
  "require-dev": {
1426
+ "symfony/yaml": "~3.0"
1427
+ },
1428
+ "suggest": {
1429
+ "symfony/yaml": "To use the yaml reference dumper"
1430
  },
1431
  "type": "library",
1432
  "extra": {
1433
  "branch-alias": {
1434
+ "dev-master": "3.3-dev"
1435
  }
1436
  },
1437
  "autoload": {
1438
+ "psr-4": {
1439
+ "Symfony\\Component\\Config\\": ""
1440
+ },
1441
+ "exclude-from-classmap": [
1442
+ "/Tests/"
1443
  ]
1444
  },
1445
  "notification-url": "https://packagist.org/downloads/",
1446
  "license": [
1447
+ "MIT"
1448
  ],
1449
  "authors": [
1450
  {
1451
+ "name": "Fabien Potencier",
1452
+ "email": "fabien@symfony.com"
1453
+ },
1454
+ {
1455
+ "name": "Symfony Community",
1456
+ "homepage": "https://symfony.com/contributors"
1457
  }
1458
  ],
1459
+ "description": "Symfony Config Component",
1460
+ "homepage": "https://symfony.com",
1461
+ "time": "2017-01-09 21:03:44"
1462
  },
1463
  {
1464
+ "name": "symfony/console",
1465
+ "version": "dev-master",
1466
  "source": {
1467
  "type": "git",
1468
+ "url": "https://github.com/symfony/console.git",
1469
+ "reference": "08efa49aa07dde0747198c6075a1061c750e9884"
1470
  },
1471
  "dist": {
1472
  "type": "zip",
1473
+ "url": "https://api.github.com/repos/symfony/console/zipball/08efa49aa07dde0747198c6075a1061c750e9884",
1474
+ "reference": "08efa49aa07dde0747198c6075a1061c750e9884",
1475
  "shasum": ""
1476
  },
1477
  "require": {
1478
+ "php": ">=5.5.9",
1479
+ "symfony/debug": "~2.8|~3.0",
1480
+ "symfony/polyfill-mbstring": "~1.0"
1481
  },
1482
  "require-dev": {
1483
+ "psr/log": "~1.0",
1484
+ "symfony/dependency-injection": "~2.8|~3.0",
1485
+ "symfony/event-dispatcher": "~2.8|~3.0",
1486
+ "symfony/filesystem": "~2.8|~3.0",
1487
+ "symfony/http-kernel": "~2.8|~3.0",
1488
+ "symfony/process": "~2.8|~3.0"
1489
+ },
1490
+ "suggest": {
1491
+ "psr/log": "For using the console logger",
1492
+ "symfony/event-dispatcher": "",
1493
+ "symfony/filesystem": "",
1494
+ "symfony/process": ""
1495
  },
1496
  "type": "library",
1497
  "extra": {
1498
  "branch-alias": {
1499
+ "dev-master": "3.3-dev"
1500
  }
1501
  },
1502
  "autoload": {
1503
+ "psr-4": {
1504
+ "Symfony\\Component\\Console\\": ""
1505
+ },
1506
+ "exclude-from-classmap": [
1507
+ "/Tests/"
1508
  ]
1509
  },
1510
  "notification-url": "https://packagist.org/downloads/",
1511
  "license": [
1512
+ "MIT"
1513
  ],
1514
  "authors": [
1515
  {
1516
+ "name": "Fabien Potencier",
1517
+ "email": "fabien@symfony.com"
 
 
 
 
1518
  },
1519
  {
1520
+ "name": "Symfony Community",
1521
+ "homepage": "https://symfony.com/contributors"
1522
  }
1523
  ],
1524
+ "description": "Symfony Console Component",
1525
+ "homepage": "https://symfony.com",
1526
+ "time": "2017-01-11 12:05:48"
1527
  },
1528
  {
1529
+ "name": "symfony/debug",
1530
+ "version": "dev-master",
1531
  "source": {
1532
  "type": "git",
1533
+ "url": "https://github.com/symfony/debug.git",
1534
+ "reference": "e990e0b4f58e2cb64ebf05845fa982d06011957d"
1535
  },
1536
  "dist": {
1537
  "type": "zip",
1538
+ "url": "https://api.github.com/repos/symfony/debug/zipball/e990e0b4f58e2cb64ebf05845fa982d06011957d",
1539
+ "reference": "e990e0b4f58e2cb64ebf05845fa982d06011957d",
1540
  "shasum": ""
1541
  },
1542
  "require": {
1543
+ "php": ">=5.5.9",
1544
+ "psr/log": "~1.0"
1545
+ },
1546
+ "conflict": {
1547
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
1548
+ },
1549
+ "require-dev": {
1550
+ "symfony/http-kernel": "~2.8|~3.0"
1551
  },
1552
  "type": "library",
1553
  "extra": {
1554
  "branch-alias": {
1555
+ "dev-master": "3.3-dev"
1556
  }
1557
  },
1558
  "autoload": {
1559
+ "psr-4": {
1560
+ "Symfony\\Component\\Debug\\": ""
1561
+ },
1562
+ "exclude-from-classmap": [
1563
+ "/Tests/"
1564
  ]
1565
  },
1566
  "notification-url": "https://packagist.org/downloads/",
1567
  "license": [
1568
+ "MIT"
1569
  ],
1570
  "authors": [
1571
  {
1572
+ "name": "Fabien Potencier",
1573
+ "email": "fabien@symfony.com"
1574
+ },
1575
+ {
1576
+ "name": "Symfony Community",
1577
+ "homepage": "https://symfony.com/contributors"
1578
  }
1579
  ],
1580
+ "description": "Symfony Debug Component",
1581
+ "homepage": "https://symfony.com",
1582
+ "time": "2017-01-20 10:22:07"
1583
  },
1584
  {
1585
+ "name": "symfony/event-dispatcher",
1586
+ "version": "2.8.x-dev",
1587
  "source": {
1588
  "type": "git",
1589
+ "url": "https://github.com/symfony/event-dispatcher.git",
1590
+ "reference": "74877977f90fb9c3e46378d5764217c55f32df34"
1591
  },
1592
  "dist": {
1593
  "type": "zip",
1594
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74877977f90fb9c3e46378d5764217c55f32df34",
1595
+ "reference": "74877977f90fb9c3e46378d5764217c55f32df34",
1596
  "shasum": ""
1597
  },
1598
  "require": {
1599
+ "php": ">=5.3.9"
1600
+ },
1601
+ "require-dev": {
1602
+ "psr/log": "~1.0",
1603
+ "symfony/config": "~2.0,>=2.0.5|~3.0.0",
1604
+ "symfony/dependency-injection": "~2.6|~3.0.0",
1605
+ "symfony/expression-language": "~2.6|~3.0.0",
1606
+ "symfony/stopwatch": "~2.3|~3.0.0"
1607
+ },
1608
+ "suggest": {
1609
+ "symfony/dependency-injection": "",
1610
+ "symfony/http-kernel": ""
1611
  },
1612
  "type": "library",
1613
  "extra": {
1614
  "branch-alias": {
1615
+ "dev-master": "2.8-dev"
1616
  }
1617
  },
1618
  "autoload": {
1619
+ "psr-4": {
1620
+ "Symfony\\Component\\EventDispatcher\\": ""
1621
+ },
1622
+ "exclude-from-classmap": [
1623
+ "/Tests/"
1624
  ]
1625
  },
1626
  "notification-url": "https://packagist.org/downloads/",
1627
  "license": [
1628
+ "MIT"
1629
  ],
1630
  "authors": [
1631
  {
1632
+ "name": "Fabien Potencier",
1633
+ "email": "fabien@symfony.com"
1634
+ },
1635
+ {
1636
+ "name": "Symfony Community",
1637
+ "homepage": "https://symfony.com/contributors"
1638
  }
1639
  ],
1640
+ "description": "Symfony EventDispatcher Component",
1641
+ "homepage": "https://symfony.com",
1642
+ "time": "2017-01-02 20:30:24"
1643
  },
1644
  {
1645
+ "name": "symfony/filesystem",
1646
+ "version": "dev-master",
1647
  "source": {
1648
  "type": "git",
1649
+ "url": "https://github.com/symfony/filesystem.git",
1650
+ "reference": "b2de62936fea037d501159f52b7b6172cc962282"
1651
  },
1652
  "dist": {
1653
  "type": "zip",
1654
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2de62936fea037d501159f52b7b6172cc962282",
1655
+ "reference": "b2de62936fea037d501159f52b7b6172cc962282",
1656
  "shasum": ""
1657
  },
1658
  "require": {
1659
+ "php": ">=5.5.9"
 
1660
  },
1661
+ "type": "library",
1662
+ "extra": {
1663
+ "branch-alias": {
1664
+ "dev-master": "3.3-dev"
1665
+ }
1666
  },
 
1667
  "autoload": {
1668
  "psr-4": {
1669
+ "Symfony\\Component\\Filesystem\\": ""
1670
+ },
1671
+ "exclude-from-classmap": [
1672
+ "/Tests/"
1673
+ ]
1674
  },
1675
  "notification-url": "https://packagist.org/downloads/",
1676
  "license": [
1677
  "MIT"
1678
  ],
1679
+ "authors": [
1680
+ {
1681
+ "name": "Fabien Potencier",
1682
+ "email": "fabien@symfony.com"
1683
+ },
1684
+ {
1685
+ "name": "Symfony Community",
1686
+ "homepage": "https://symfony.com/contributors"
1687
+ }
1688
+ ],
1689
+ "description": "Symfony Filesystem Component",
1690
+ "homepage": "https://symfony.com",
1691
+ "time": "2017-01-08 21:15:04"
1692
  },
1693
  {
1694
+ "name": "symfony/finder",
1695
+ "version": "dev-master",
1696
  "source": {
1697
  "type": "git",
1698
+ "url": "https://github.com/symfony/finder.git",
1699
+ "reference": "791ac099b1687c0bd82f7230ec0d8fc8550c81dc"
1700
  },
1701
  "dist": {
1702
  "type": "zip",
1703
+ "url": "https://api.github.com/repos/symfony/finder/zipball/791ac099b1687c0bd82f7230ec0d8fc8550c81dc",
1704
+ "reference": "791ac099b1687c0bd82f7230ec0d8fc8550c81dc",
1705
  "shasum": ""
1706
  },
1707
  "require": {
1708
+ "php": ">=5.5.9"
 
 
 
 
 
 
1709
  },
 
 
 
 
1710
  "type": "library",
1711
  "extra": {
1712
  "branch-alias": {
1713
+ "dev-master": "3.3-dev"
1714
  }
1715
  },
1716
+ "autoload": {
1717
+ "psr-4": {
1718
+ "Symfony\\Component\\Finder\\": ""
1719
+ },
1720
+ "exclude-from-classmap": [
1721
+ "/Tests/"
1722
+ ]
1723
+ },
1724
  "notification-url": "https://packagist.org/downloads/",
1725
  "license": [
1726
+ "MIT"
1727
  ],
1728
  "authors": [
1729
  {
1730
+ "name": "Fabien Potencier",
1731
+ "email": "fabien@symfony.com"
1732
+ },
1733
+ {
1734
+ "name": "Symfony Community",
1735
+ "homepage": "https://symfony.com/contributors"
1736
  }
1737
  ],
1738
+ "description": "Symfony Finder Component",
1739
+ "homepage": "https://symfony.com",
1740
+ "time": "2017-01-02 20:33:09"
 
 
 
 
1741
  },
1742
  {
1743
+ "name": "symfony/polyfill-mbstring",
1744
+ "version": "dev-master",
1745
  "source": {
1746
  "type": "git",
1747
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
1748
+ "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4"
1749
  },
1750
  "dist": {
1751
  "type": "zip",
1752
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4",
1753
+ "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4",
1754
  "shasum": ""
1755
  },
1756
  "require": {
1757
  "php": ">=5.3.3"
1758
  },
1759
  "suggest": {
1760
+ "ext-mbstring": "For best performance"
1761
  },
1762
  "type": "library",
1763
  "extra": {
1764
  "branch-alias": {
1765
+ "dev-master": "1.3-dev"
1766
  }
1767
  },
1768
  "autoload": {
1769
  "psr-4": {
1770
+ "Symfony\\Polyfill\\Mbstring\\": ""
1771
  },
1772
  "files": [
1773
  "bootstrap.php"
1779
  ],
1780
  "authors": [
1781
  {
1782
+ "name": "Nicolas Grekas",
1783
+ "email": "p@tchwork.com"
1784
  },
1785
  {
1786
+ "name": "Symfony Community",
1787
+ "homepage": "https://symfony.com/contributors"
1788
  }
1789
  ],
1790
+ "description": "Symfony polyfill for the Mbstring extension",
1791
  "homepage": "https://symfony.com",
1792
  "keywords": [
1793
  "compatibility",
1794
+ "mbstring",
1795
  "polyfill",
1796
+ "portable",
1797
+ "shim"
1798
  ],
1799
+ "time": "2016-11-14 01:06:16"
1800
  },
1801
  {
1802
+ "name": "symfony/process",
1803
+ "version": "dev-master",
1804
  "source": {
1805
  "type": "git",
1806
+ "url": "https://github.com/symfony/process.git",
1807
+ "reference": "6c687d5ae36a8677a6e3ce020d12b18feac79d5b"
1808
  },
1809
  "dist": {
1810
  "type": "zip",
1811
+ "url": "https://api.github.com/repos/symfony/process/zipball/6c687d5ae36a8677a6e3ce020d12b18feac79d5b",
1812
+ "reference": "6c687d5ae36a8677a6e3ce020d12b18feac79d5b",
1813
  "shasum": ""
1814
  },
1815
  "require": {
1816
+ "php": ">=5.5.9"
 
 
 
1817
  },
1818
  "type": "library",
1819
+ "extra": {
1820
+ "branch-alias": {
1821
+ "dev-master": "3.3-dev"
1822
+ }
1823
+ },
1824
  "autoload": {
1825
+ "psr-4": {
1826
+ "Symfony\\Component\\Process\\": ""
1827
+ },
1828
+ "exclude-from-classmap": [
1829
+ "/Tests/"
1830
  ]
1831
  },
1832
  "notification-url": "https://packagist.org/downloads/",
1833
  "license": [
1834
+ "MIT"
1835
  ],
1836
  "authors": [
1837
  {
1838
+ "name": "Fabien Potencier",
1839
+ "email": "fabien@symfony.com"
1840
+ },
1841
+ {
1842
+ "name": "Symfony Community",
1843
+ "homepage": "https://symfony.com/contributors"
1844
+ }
1845
+ ],
1846
+ "description": "Symfony Process Component",
1847
+ "homepage": "https://symfony.com",
1848
+ "time": "2017-01-02 20:33:09"
1849
+ },
1850
+ {
1851
+ "name": "symfony/stopwatch",
1852
+ "version": "dev-master",
1853
+ "source": {
1854
+ "type": "git",
1855
+ "url": "https://github.com/symfony/stopwatch.git",
1856
+ "reference": "edfe3407825f9657fd38a05171eb5b8df8563146"
1857
+ },
1858
+ "dist": {
1859
+ "type": "zip",
1860
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/edfe3407825f9657fd38a05171eb5b8df8563146",
1861
+ "reference": "edfe3407825f9657fd38a05171eb5b8df8563146",
1862
+ "shasum": ""
1863
+ },
1864
+ "require": {
1865
+ "php": ">=5.5.9"
1866
+ },
1867
+ "type": "library",
1868
+ "extra": {
1869
+ "branch-alias": {
1870
+ "dev-master": "3.3-dev"
1871
+ }
1872
+ },
1873
+ "autoload": {
1874
+ "psr-4": {
1875
+ "Symfony\\Component\\Stopwatch\\": ""
1876
+ },
1877
+ "exclude-from-classmap": [
1878
+ "/Tests/"
1879
+ ]
1880
+ },
1881
+ "notification-url": "https://packagist.org/downloads/",
1882
+ "license": [
1883
+ "MIT"
1884
+ ],
1885
+ "authors": [
1886
+ {
1887
+ "name": "Fabien Potencier",
1888
+ "email": "fabien@symfony.com"
1889
+ },
1890
+ {
1891
+ "name": "Symfony Community",
1892
+ "homepage": "https://symfony.com/contributors"
1893
+ }
1894
+ ],
1895
+ "description": "Symfony Stopwatch Component",
1896
+ "homepage": "https://symfony.com",
1897
+ "time": "2017-01-02 20:33:09"
1898
+ },
1899
+ {
1900
+ "name": "symfony/yaml",
1901
+ "version": "dev-master",
1902
+ "source": {
1903
+ "type": "git",
1904
+ "url": "https://github.com/symfony/yaml.git",
1905
+ "reference": "d67fe7eaf6fdb1a9350bf2bdd727d64dbd814ddc"
1906
+ },
1907
+ "dist": {
1908
+ "type": "zip",
1909
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/d67fe7eaf6fdb1a9350bf2bdd727d64dbd814ddc",
1910
+ "reference": "d67fe7eaf6fdb1a9350bf2bdd727d64dbd814ddc",
1911
+ "shasum": ""
1912
+ },
1913
+ "require": {
1914
+ "php": ">=5.5.9"
1915
+ },
1916
+ "require-dev": {
1917
+ "symfony/console": "~2.8|~3.0"
1918
+ },
1919
+ "suggest": {
1920
+ "symfony/console": "For validating YAML files using the lint command"
1921
+ },
1922
+ "type": "library",
1923
+ "extra": {
1924
+ "branch-alias": {
1925
+ "dev-master": "3.3-dev"
1926
+ }
1927
+ },
1928
+ "autoload": {
1929
+ "psr-4": {
1930
+ "Symfony\\Component\\Yaml\\": ""
1931
+ },
1932
+ "exclude-from-classmap": [
1933
+ "/Tests/"
1934
+ ]
1935
+ },
1936
+ "notification-url": "https://packagist.org/downloads/",
1937
+ "license": [
1938
+ "MIT"
1939
+ ],
1940
+ "authors": [
1941
+ {
1942
+ "name": "Fabien Potencier",
1943
+ "email": "fabien@symfony.com"
1944
+ },
1945
+ {
1946
+ "name": "Symfony Community",
1947
+ "homepage": "https://symfony.com/contributors"
1948
  }
1949
  ],
1950
+ "description": "Symfony Yaml Component",
1951
+ "homepage": "https://symfony.com",
1952
+ "time": "2017-01-21 07:50:08"
1953
  },
1954
  {
1955
  "name": "webmozart/assert",
1956
+ "version": "dev-master",
1957
  "source": {
1958
  "type": "git",
1959
  "url": "https://github.com/webmozart/assert.git",
1960
+ "reference": "4a8bf11547e139e77b651365113fc12850c43d9a"
1961
  },
1962
  "dist": {
1963
  "type": "zip",
1964
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/4a8bf11547e139e77b651365113fc12850c43d9a",
1965
+ "reference": "4a8bf11547e139e77b651365113fc12850c43d9a",
1966
  "shasum": ""
1967
  },
1968
  "require": {
1969
+ "php": "^5.3.3 || ^7.0"
 
1970
  },
1971
  "require-dev": {
1972
  "phpunit/phpunit": "^4.6",
1999
  "check",
2000
  "validate"
2001
  ],
2002
+ "time": "2016-11-23 20:04:41"
2003
  }
2004
  ],
2005
  "aliases": [],
2006
  "minimum-stability": "dev",
2007
+ "stability-flags": {
2008
+ "dhii/php-cs-fixer-config": 20
2009
+ },
2010
+ "prefer-stable": false,
2011
  "prefer-lowest": false,
2012
  "platform": {
2013
+ "php": "^5.3 | ^7.0"
2014
  },
2015
  "platform-dev": []
2016
  }
vendor/dhii/data-key-value-aware-interface/nbproject/project.properties ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_create_2e_tests=false
2
+ auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_enabled=false
3
+ auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_path=
4
+ auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_enabled=false
5
+ auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_path=
6
+ auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_enabled=false
7
+ auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_path=
8
+ auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_enabled=false
9
+ auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_path=
10
+ auxiliary.org-netbeans-modules-php-phpunit.test_2e_groups_2e_ask=false
11
+ auxiliary.org-netbeans-modules-php-phpunit.test_2e_run_2e_all=false
12
+ file.reference.data-value-interface-vendor=vendor
13
+ file.reference.data-value-object-interface-vendor=vendor
14
+ file.reference.test-functional=test/functional
15
+ include.path=\
16
+ ${php.global.include.path}:\
17
+ ${file.reference.data-value-interface-vendor}
18
+ php.version=PHP_53
19
+ source.encoding=UTF-8
20
+ src.dir=src
21
+ tags.asp=false
22
+ tags.short=false
23
+ test.src.dir=${file.reference.test-functional}
24
+ testing.providers=PhpUnit
25
+ web.root=.
vendor/dhii/data-key-value-aware-interface/nbproject/project.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://www.netbeans.org/ns/project/1">
3
+ <type>org.netbeans.modules.php.project</type>
4
+ <configuration>
5
+ <data xmlns="http://www.netbeans.org/ns/php-project/1">
6
+ <name>dhii - data-key-value-aware-interface</name>
7
+ </data>
8
+ </configuration>
9
+ </project>
vendor/dhii/{module-interface → data-key-value-aware-interface}/phpunit.xml RENAMED
@@ -32,4 +32,4 @@
32
  <log type="testdox-html" target="./test/log/testdox.html"/>
33
  <log type="testdox-text" target="./test/log/testdox.txt"/>
34
  </logging>
35
- </phpunit>
32
  <log type="testdox-html" target="./test/log/testdox.html"/>
33
  <log type="testdox-text" target="./test/log/testdox.txt"/>
34
  </logging>
35
+ </phpunit>
vendor/dhii/data-key-value-aware-interface/src/KeyAwareInterface.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Data;
4
+
5
+ /**
6
+ * Something that can have a key.
7
+ *
8
+ * A key is an identifier, i.e. a code.
9
+ *
10
+ * @since 0.1
11
+ */
12
+ interface KeyAwareInterface
13
+ {
14
+ /**
15
+ * Retrieve the key of interface.
16
+ *
17
+ * @since 0.1
18
+ *
19
+ * @return string The key that this interface has.
20
+ */
21
+ public function getKey();
22
+ }
vendor/dhii/data-key-value-aware-interface/src/KeyValueAwareInterface.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Data;
4
+
5
+ /**
6
+ * Represents something that can have a key and a value.
7
+ *
8
+ * An example could be an option, or a collection item, or a mapping.
9
+ *
10
+ * @since 0.1
11
+ */
12
+ interface KeyValueAwareInterface extends
13
+ KeyAwareInterface,
14
+ ValueAwareInterface
15
+ {
16
+ }
vendor/dhii/data-key-value-aware-interface/src/ValueAwareInterface.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Data;
4
+
5
+ /**
6
+ * Something that can represent or have a value.
7
+ *
8
+ * @since 0.1
9
+ */
10
+ interface ValueAwareInterface
11
+ {
12
+ /**
13
+ * Retrieves the value that this object represents.
14
+ *
15
+ * @since 0.1
16
+ *
17
+ * @return mixed The value that this object represents.
18
+ */
19
+ public function getValue();
20
+ }
vendor/dhii/{containers → data-key-value-aware-interface}/test/bootstrap.php RENAMED
File without changes
vendor/dhii/data-key-value-aware-interface/test/functional/KeyAwareInterfaceTest.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Data\FuncTest;
4
+
5
+ /**
6
+ * Tests {@see \Dhii\Data\ValueAwareInterface}.
7
+ *
8
+ * @since 0.1
9
+ */
10
+ class KeyAwareInterfaceTest extends \Xpmock\TestCase
11
+ {
12
+ const TEST_SUBJECT_CLASSNAME = 'Dhii\\Data\\KeyAwareInterface';
13
+
14
+ /**
15
+ * Creates a new instance of the test subject.
16
+ *
17
+ * @since 0.1
18
+ *
19
+ * @return \Dhii\Data\KeyAwareInterface A new instance of the test subject.
20
+ */
21
+ public function createInstance()
22
+ {
23
+ $mock = $this->mock(static::TEST_SUBJECT_CLASSNAME)
24
+ ->getKey()
25
+ ->new();
26
+
27
+ return $mock;
28
+ }
29
+
30
+ /**
31
+ * Tests whether a valid instance of the test subject can be created.
32
+ *
33
+ * @since 0.1
34
+ */
35
+ public function testCanBeCreated()
36
+ {
37
+ $subject = $this->createInstance();
38
+
39
+ $this->assertInstanceOf(static::TEST_SUBJECT_CLASSNAME, $subject, 'A valid instance of the test subject could not be created');
40
+ }
41
+ }
vendor/dhii/data-key-value-aware-interface/test/functional/KeyValueAwareInterfaceTest.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Data\FuncTest;
4
+
5
+ /**
6
+ * Tests {@see \Dhii\Data\KeyValueAwareInterface
7
+ *
8
+ * @since 0.1
9
+ */
10
+ class KeyValueAwareInterfaceTest extends \Xpmock\TestCase
11
+ {
12
+ const TEST_SUBJECT_CLASSNAME = 'Dhii\\Data\\ValueAwareInterface';
13
+
14
+ /**
15
+ * Creates a new instance of the test subject.
16
+ *
17
+ * @since 0.1
18
+ *
19
+ * @return \Dhii\Data\KeyValueAwareInterface A new instance of the test subject.
20
+ */
21
+ public function createInstance()
22
+ {
23
+ $mock = $this->mock(static::TEST_SUBJECT_CLASSNAME)
24
+ ->getKey()
25
+ ->getValue()
26
+ ->new();
27
+
28
+ return $mock;
29
+ }
30
+
31
+ /**
32
+ * Tests whether a valid instance of the test subject can be created.
33
+ *
34
+ * @since 0.1
35
+ */
36
+ public function testCanBeCreated()
37
+ {
38
+ $subject = $this->createInstance();
39
+
40
+ $this->assertInstanceOf(static::TEST_SUBJECT_CLASSNAME, $subject, 'A valid instance of the test subject could not be created');
41
+ }
42
+ }
vendor/dhii/data-key-value-aware-interface/test/functional/ValueAwareInterfaceTest.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Data\FuncTest;
4
+
5
+ /**
6
+ * Tests {@see \Dhii\Data\ValueAwareInterface}.
7
+ *
8
+ * @since 0.1
9
+ */
10
+ class ValueAwareInterfaceTest extends \Xpmock\TestCase
11
+ {
12
+ const TEST_SUBJECT_CLASSNAME = 'Dhii\\Data\\ValueAwareInterface';
13
+
14
+ /**
15
+ * Creates a new instance of the test subject.
16
+ *
17
+ * @since 0.1
18
+ *
19
+ * @return \Dhii\Data\ValueAwareInterface A new instance of the test subject.
20
+ */
21
+ public function createInstance()
22
+ {
23
+ $mock = $this->mock(static::TEST_SUBJECT_CLASSNAME)
24
+ ->getValue()
25
+ ->new();
26
+
27
+ return $mock;
28
+ }
29
+
30
+ /**
31
+ * Tests whether a valid instance of the test subject can be created.
32
+ *
33
+ * @since 0.1
34
+ */
35
+ public function testCanBeCreated()
36
+ {
37
+ $subject = $this->createInstance();
38
+
39
+ $this->assertInstanceOf(static::TEST_SUBJECT_CLASSNAME, $subject, 'A valid instance of the test subject could not be created');
40
+ }
41
+ }
vendor/dhii/module-interface/.env.example DELETED
@@ -1 +0,0 @@
1
- BASE_PATH=./
 
vendor/dhii/module-interface/CHANGELOG.md CHANGED
@@ -4,24 +4,8 @@ All notable changes to this project will be documented in this file.
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
 
7
- ## [[*next-version*]] - YYYY-MM-DD
8
-
9
- ## [0.2.0-alpha1] - 2020-04-10
10
- ### Changed
11
- - Module `setup()` now returns a `ServiceProviderInterface` instance.
12
- - Module `run()` now requires the `ContainerInterface` argument.
13
- - Modules are no longer key-aware.
14
-
15
- ### Removed
16
- - `DependenciesAwareInterface` has been removed.
17
- - `ModuleFactoryInterface` has been removed.
18
- - `ModuleKeyAwareInterface` has been removed.
19
-
20
  ## [0.1] - 2019-11-05
21
  Stable release
22
 
23
- ### Fixed
24
- - Modules are now allowed to throw specialized exceptions.
25
-
26
  ## [0.1-alpha1] - 2018-05-07
27
  Initial version.
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  ## [0.1] - 2019-11-05
8
  Stable release
9
 
 
 
 
10
  ## [0.1-alpha1] - 2018-05-07
11
  Initial version.
vendor/dhii/module-interface/README.md CHANGED
@@ -4,287 +4,27 @@
4
  [![Code Climate](https://codeclimate.com/github/Dhii/module-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/module-interface)
5
  [![Test Coverage](https://codeclimate.com/github/Dhii/module-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/module-interface/coverage)
6
  [![Latest Stable Version](https://poser.pugx.org/dhii/module-interface/version)](https://packagist.org/packages/dhii/module-interface)
 
7
 
8
  ## Details
9
  This package contains interfaces that are useful in describing modules and their attributes and behaviour.
10
-
11
- ### Requirements
12
- - PHP: 7.1 and up, until 8.
13
-
14
- Officially supports at least up to php 7.4.x.
15
 
16
  ### Interfaces
17
- - [`ModuleInterface`][] - The interface for a module. A module is an object that represents an
18
- application fragment. Modules are prepared using `setup()`, which returns a `ServiceProviderInterface` instance that
19
- the application may consume, and invoked using `run()`, consuming the application's DI container.
20
- - [`ModuleAwareInterface`][] - Something that can have a module retrieved.
21
- - [`ModuleExceptionInterface`][] - An exception thrown by a module.
22
-
23
- ### Usage
24
- #### Module Package
25
- In your module's pacakge, create a file that returns a module factory. This factory MUST return an instance
26
- of `ModuleInterface` from this pacakge. By convention, this file has
27
- the name `module.php`, and is located in the root directory. Below is a very basic example. In real life,
28
- the service provider and the module will often have named classes of their own, and factories and extensions
29
- will be located in `services.php` and `extensions.php` respectively, by convention.
30
-
31
- ```php
32
- // module.php
33
- use Dhii\Modular\Module\ModuleInterface;
34
- use Interop\Container\ServiceProviderInterface;
35
- use Psr\Container\ContainerInterface;
36
-
37
- return function () {
38
- return new class () implements ModuleInterface {
39
-
40
- /**
41
- * Declares services of this module.
42
- *
43
- * @return ServiceProviderInterface The service provider with the factories and extensions of this module.
44
- */
45
- public function setup() : ServiceProviderInterface
46
- {
47
- return new class () implements ServiceProviderInterface
48
- {
49
- /**
50
- * Only the factory of the last module in load order is applied.
51
- *
52
- * @return array|callable[] A map of service names to service definitions.
53
- */
54
- public function getFactories()
55
- {
56
- return [
57
- // A factory always gets one parameter: the container.
58
- 'my_module/my_service' => function (ContainerInterface $c) {
59
- // Create and return your service instance
60
- return new MyService();
61
- },
62
- ];
63
- }
64
-
65
- /**
66
- * All extensions are always applied, in load order.
67
- *
68
- * @return array|callable[] A map of service names to extensions.
69
- */
70
- public function getExtensions()
71
- {
72
- return [
73
- // An extension gets an additional parameter:
74
- // the value returned by the factory or the previously applied extensions.
75
- 'other_module/other_service' => function (
76
- ContainerInterface $c,
77
- OtherServiceInterface $previous
78
- ): OtherServiceInterface {
79
- // Perhaps decorate $previous and return the decorator
80
- return new MyDecorator($previous);
81
- },
82
- ];
83
- }
84
- };
85
- }
86
-
87
- /**
88
- * Consumes services of this and other modules.
89
- *
90
- * @param ContainerInterface $c A container with the services of all modules.
91
- */
92
- public function run(ContainerInterface $c)
93
- {
94
- $myService = $c->get('my_module/my_service');
95
- $myService->doSomething();
96
- }
97
- };
98
- };
99
- ```
100
-
101
- In the above example, the module declares a service `my_module/my_service`, and an extension
102
- for the `other_module/other_service`, which may be found in another module. Note that by convention,
103
- the service name contains the module name prefix, separated by forward slash `/`. It's possible
104
- to further "nest" services by adding slash-separated "levels". In the future, some container
105
- implementations will add benefits for modules that use this convention.
106
-
107
- Applications would often need the ability to do something with the arbitrary set of
108
- modules they require. In order for an application to be able to group all modules
109
- together, declare the package type in your `composer.json` to be `dhii-mod` by convention.
110
- Following this convention would allow all modules written by all authors to be treated
111
- uniformly.
112
-
113
- ```json
114
- {
115
- "name": "me/my_module",
116
- "type": "dhii-mod"
117
- }
118
- ```
119
-
120
- What's important here:
121
-
122
- 1. A module's `setup()` method should not cause side effects.
123
-
124
- The setup method is intended for the modules to prepare for action. Modules should not actually
125
- peform the actions during this method. The container is not available in this method, and therefore
126
- the module cannot use any services, whether of itself or of other modules, in this method. Do not
127
- try to make the module use its own services here.
128
-
129
- 2. Implement the correct interfaces.
130
-
131
- A module MUST implement `ModuleInterface`. The module's `setup()` method MUST return `ServiceProviderInterface`.
132
- Even though the [Service Provider][`container-interop/service-provider`] standard is experimental, and has been experimental for a long time, the
133
- module standard relies heavily on it. If the module standard becomes ubiquitous, this could push
134
- FIG to go forward with the Service Provider standard, hopefully making it into a PSR.
135
-
136
- 3. Observe conventions.
137
-
138
- It is important that conventions outlined here are observed. Some are necessary for smooth operation of
139
- modules and/or consuming applications. Some others may not make a difference right now, but could
140
- add benefits in the future. Please observe these conventions to ensure an optimal experience
141
- for yourself and for other users of the standard.
142
-
143
- #### Consumer Package
144
- ##### Module Installation
145
- The package that consumes modules, which is usually the application, would need to require the modules.
146
- The below example uses the [`oomphinc/composer-installers-extender`][] lib to configure Composer
147
- so that it installs all `dhii-mod` packages into the `modules` directory in the application root.
148
- Packages `me/my_module` and `me/my_other_module` would therefore go into `modules/me/my_module` and
149
- `modules/me/my_other_module` respectively.
150
-
151
- ```json
152
- {
153
- "name": "me/my_app",
154
- "require": {
155
- "me/my_module": "^0.1",
156
- "me/my_other_module": "^0.1",
157
- "oomphinc/composer-installers-extender": "^1.1"
158
- },
159
-
160
- "extra": {
161
- "installer-types": ["dhii-mod"],
162
- "installer-paths": {
163
- "modules/{$vendor}/{$name}": ["type:dhii-mod"]
164
- }
165
- }
166
- }
167
- ```
168
-
169
- ##### Module Loading
170
- Once a module has been required, it must be loaded. Module files must be explicitly loaded by the
171
- application, because the application is what determines module load order. The load order is
172
- the fundamental principle that allows modules to extend and override each other's services
173
- in a simple and intuitive way:
174
 
175
- 1. Factories in modules that are loaded later will completely override factories of modules loaded earlier.
176
-
177
- Ultimately, for each service, only one factory will be used: the one declared last. So if `my_other_module`
178
- is loaded after `my_module`, and it declares a service `my_module/my_service`,
179
- then it will override the `my_module/my_service` service declared by `my_module`.
180
- In short: **last factory wins**.
181
-
182
- 2. Extensions in modules that are loaded later will be applied after extensions of modules loaded earlier.
183
-
184
- Ultimately, extensions from _all_ modules will be applied on top of what is returned by the factory.
185
- So if `my_other_module` declares an extension `other_module/other_service`, it will be applied after
186
- the extension `other_module/other_service` declared by `my_module`.
187
- In short: **later extensions extend previous extensions**.
188
-
189
- Continuing from the examples above, if something in the application requests the service `other_module/other_service`
190
- declared by `my_other_module`, this is what is going to happen:
191
-
192
- 1. The factory in `my_other_module` is invoked.
193
- 2. The extension in `my_module` is invoked, and receives the result of the above factory as `$previous`.
194
- 3. The extension in `my_other_module` is invoked, and receives the result of the above extension as `$previous`
195
- 4. The caller of `get('other_module/other_service')` receives the result of the above extension.
196
-
197
- Thus, any module can override and/or extend services from any other module. Below is an example of what
198
- an application's bootstrap code could look like. This example uses classes from [`dhii/containers`][].
199
-
200
- ```php
201
- // bootstrap.php
202
-
203
- use Dhii\Modular\Module\ModuleInterface;
204
- use Interop\Container\ServiceProviderInterface;
205
- use Dhii\Container\CompositeCachingServiceProvider;
206
- use Dhii\Container\DelegatingContainer;
207
- use Dhii\Container\CachingContainer;
208
-
209
- (function ($file) {
210
- $baseDir = dirname($file);
211
- $modulesDir = "$baseDir/modules";
212
-
213
- // Order is important!
214
- $moduleNames = [
215
- 'me/my_module',
216
- 'me/my_other_module',
217
- ];
218
-
219
- // Create and load all modules
220
- /* @var $modules ModuleInterface[] */
221
- $modules = [];
222
- foreach ($moduleNames as $moduleName) {
223
- $moduleFactory = require_once("$modulesDir/$moduleName/module.php");
224
- $module = $moduleFactory();
225
- $modules[$moduleName] = $module;
226
- }
227
-
228
- // Retrieve all modules' service providers
229
- /* @var $providers ServiceProviderInterface[] */
230
- $providers = [];
231
- foreach ($modules as $module) {
232
- $providers[] = $module->setup();
233
- }
234
-
235
- // Group all service providers into one
236
- $provider = new CompositeCachingServiceProvider();
237
- $container = new CachingContainer(new DelegatingContainer($provider, $parentContainer = null));
238
-
239
- // Run all modules
240
- foreach ($modules as $module) {
241
- $module->run($container);
242
- }
243
- })(__FILE__);
244
- ```
245
-
246
- The above will load, setup, and run modules `me/my_module` and `me/my_other_module`, in that order,
247
- from the `modules` directory, provided that conventions have been followed by those modules.
248
- What's important to note here:
249
-
250
- 1. First _all_ modules are set up, and then _all_ modules are run.
251
-
252
- If you set up and run modules in the same step, it will not work, because the bootstrap
253
- will not have the opportunity to configure the application's DI container with services
254
- from all modules.
255
-
256
- 2. The `CompositeCachingServiceProvider` is what is responsible for resolving services correctly.
257
-
258
- This relieves the application, as the process can seem complicated, and is quite re-usable.
259
- The usage of this class is recommended.
260
-
261
- 3. The `DelegatingContainer` optionally accepts a parent container.
262
-
263
- If your application is a module itself, and needs to be part of a larger application with its
264
- own DI container, supply it as the 2nd parameter. This will ensure that services will always
265
- be retrieved from the top-most container, regardless of where the definition is declared.
266
-
267
- 4. The `CachingContainer` ensures services are cached.
268
-
269
- Effectively, this means that all services are singletons, i.e. there will only be one instance
270
- of each service in the application. This is most commonly the desired behaviour. Without the
271
- `CachingContainer`, i.e. with just the `DelegatingContainer`, service definitions will get
272
- invoked every time `get()` is called, which is usually undesirable.
273
-
274
- 5. Conventions are important.
275
-
276
- If modules did not place the `module.php` file into their root directories, the bootstrap
277
- would not be able to load each module by just its package name. Modules which do not
278
- follow that convention must have their `module.php` file loaded separately, which would
279
- make the bootstrap code more complicated.
280
 
281
 
282
  [Dhii]: https://github.com/Dhii/dhii
283
 
284
- [`dhii/containers`]: https://packagist.org/packages/dhii/containers
285
- [`oomphinc/composer-installers-extender`]: https://packagist.org/packages/oomphinc/composer-installers-extender
286
- [`container-interop/service-provider`]: https://packagist.org/packages/container-interop/service-provider
287
-
288
- [`ModuleInterface`]: src/ModuleInterface.php
289
- [`ModuleAwareInterface`]: src/ModuleAwareInterface.php
290
- [`ModuleExceptionInterface`]: src/Exception/ModuleExceptionInterface.php
4
  [![Code Climate](https://codeclimate.com/github/Dhii/module-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/module-interface)
5
  [![Test Coverage](https://codeclimate.com/github/Dhii/module-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/module-interface/coverage)
6
  [![Latest Stable Version](https://poser.pugx.org/dhii/module-interface/version)](https://packagist.org/packages/dhii/module-interface)
7
+ [![This package complies with Dhii standards](https://img.shields.io/badge/Dhii-Compliant-green.svg?style=flat-square)][Dhii]
8
 
9
  ## Details
10
  This package contains interfaces that are useful in describing modules and their attributes and behaviour.
 
 
 
 
 
11
 
12
  ### Interfaces
13
+ - [`ModuleInterface`][ModuleInterface] - Represents a module. A module MUST have a key, and MUST be able to be set up
14
+ and run separately in order to have the chance to prepare itself and let other potential modules to do the same. The
15
+ `setup()` method MAY return a container with the services provided by that module. The `run()` method MAY accept an
16
+ optional container with the services provided by the application, but MUST handle the case where no container is provided.
17
+ The container provided to `run()` MAY be the same container returned from `setup()`. Implementations that consume
18
+ their own services SHOULD therefore rely only on what is provided to `run()`, which gives the application the means
19
+ to add or override services. Nevertheless, implementations MUST NOT assume that the container received by `run()` is
20
+ the same container returned from `setup()`.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
+ ### Requirements
23
+ This package officially supports PHP 5.3 until PHP 7.3. Theoretically, it should work on higher versions of PHP just
24
+ the same, at the very least until PHP 8. However, it does not appear possible to build on PHP 5.3 and 7.4 at the same
25
+ time, because there seems to be no distro which has both of those in its toolchain.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
 
28
  [Dhii]: https://github.com/Dhii/dhii
29
 
30
+ [ModuleInterface]: src/ModuleInterface.php
 
 
 
 
 
 
vendor/dhii/module-interface/composer.json CHANGED
@@ -12,12 +12,18 @@
12
  "prefer-stable": true,
13
  "minimum-stability": "dev",
14
  "require": {
15
- "php": "^7.1",
16
- "psr/container": "^1.0",
17
- "container-interop/service-provider": "^0.4"
 
18
  },
19
  "require-dev": {
20
- "phpunit/phpunit": "^6.0 | ^7.0"
 
 
 
 
 
21
  },
22
  "autoload": {
23
  "psr-4": {
@@ -27,16 +33,16 @@
27
  "autoload-dev": {
28
  "psr-4": {
29
  "Dhii\\Modular\\Module\\UnitTest\\": "test/unit",
30
- "Dhii\\Modular\\Module\\FuncTest\\": "test/functional",
31
- "Dhii\\Modular\\Module\\Test\\": "test/stubs"
32
  }
33
  },
34
  "scripts": {
35
- "test": "phpunit"
 
36
  },
37
  "extra": {
38
  "branch-alias": {
39
- "dev-develop": "0.2.x-dev"
40
  }
41
  }
42
  }
12
  "prefer-stable": true,
13
  "minimum-stability": "dev",
14
  "require": {
15
+ "php": "^5.3 | ^7.0",
16
+ "dhii/exception-interface": "^0.1 | ^0.2",
17
+ "dhii/data-key-value-aware-interface": "^0.1",
18
+ "dhii/factory-interface": "^0.1-alpha1"
19
  },
20
  "require-dev": {
21
+ "phpunit/phpunit": "^4.8",
22
+ "ptrofimov/xpmock": "^1.1",
23
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
24
+ "codeclimate/php-test-reporter": "<=0.3.2",
25
+ "dhii/stringable-interface": "^0.1",
26
+ "psr/container": "^1.0"
27
  },
28
  "autoload": {
29
  "psr-4": {
33
  "autoload-dev": {
34
  "psr-4": {
35
  "Dhii\\Modular\\Module\\UnitTest\\": "test/unit",
36
+ "Dhii\\Modular\\Module\\FuncTest\\": "test/functional"
 
37
  }
38
  },
39
  "scripts": {
40
+ "test": "phpunit",
41
+ "csfix": "php-cs-fixer fix -vvv"
42
  },
43
  "extra": {
44
  "branch-alias": {
45
+ "dev-develop": "0.1.x-dev"
46
  }
47
  }
48
  }
vendor/dhii/module-interface/composer.lock DELETED
@@ -1,1569 +0,0 @@
1
- {
2
- "_readme": [
3
- "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
- "This file is @generated automatically"
6
- ],
7
- "content-hash": "f870e9a04e6a5595167e21a6ec1938cf",
8
- "packages": [
9
- {
10
- "name": "container-interop/service-provider",
11
- "version": "v0.4.0",
12
- "source": {
13
- "type": "git",
14
- "url": "https://github.com/container-interop/service-provider.git",
15
- "reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
16
- },
17
- "dist": {
18
- "type": "zip",
19
- "url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
20
- "reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
21
- "shasum": ""
22
- },
23
- "require": {
24
- "psr/container": "^1.0"
25
- },
26
- "type": "library",
27
- "autoload": {
28
- "psr-4": {
29
- "Interop\\Container\\": "src/"
30
- }
31
- },
32
- "notification-url": "https://packagist.org/downloads/",
33
- "license": [
34
- "MIT"
35
- ],
36
- "description": "Promoting container interoperability through standard service providers",
37
- "homepage": "https://github.com/container-interop/service-provider",
38
- "time": "2017-09-20T14:13:36+00:00"
39
- },
40
- {
41
- "name": "psr/container",
42
- "version": "1.0.0",
43
- "source": {
44
- "type": "git",
45
- "url": "https://github.com/php-fig/container.git",
46
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
47
- },
48
- "dist": {
49
- "type": "zip",
50
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
51
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
52
- "shasum": ""
53
- },
54
- "require": {
55
- "php": ">=5.3.0"
56
- },
57
- "type": "library",
58
- "extra": {
59
- "branch-alias": {
60
- "dev-master": "1.0.x-dev"
61
- }
62
- },
63
- "autoload": {
64
- "psr-4": {
65
- "Psr\\Container\\": "src/"
66
- }
67
- },
68
- "notification-url": "https://packagist.org/downloads/",
69
- "license": [
70
- "MIT"
71
- ],
72
- "authors": [
73
- {
74
- "name": "PHP-FIG",
75
- "homepage": "http://www.php-fig.org/"
76
- }
77
- ],
78
- "description": "Common Container Interface (PHP FIG PSR-11)",
79
- "homepage": "https://github.com/php-fig/container",
80
- "keywords": [
81
- "PSR-11",
82
- "container",
83
- "container-interface",
84
- "container-interop",
85
- "psr"
86
- ],
87
- "time": "2017-02-14T16:28:37+00:00"
88
- }
89
- ],
90
- "packages-dev": [
91
- {
92
- "name": "doctrine/instantiator",
93
- "version": "1.3.0",
94
- "source": {
95
- "type": "git",
96
- "url": "https://github.com/doctrine/instantiator.git",
97
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
98
- },
99
- "dist": {
100
- "type": "zip",
101
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
102
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
103
- "shasum": ""
104
- },
105
- "require": {
106
- "php": "^7.1"
107
- },
108
- "require-dev": {
109
- "doctrine/coding-standard": "^6.0",
110
- "ext-pdo": "*",
111
- "ext-phar": "*",
112
- "phpbench/phpbench": "^0.13",
113
- "phpstan/phpstan-phpunit": "^0.11",
114
- "phpstan/phpstan-shim": "^0.11",
115
- "phpunit/phpunit": "^7.0"
116
- },
117
- "type": "library",
118
- "extra": {
119
- "branch-alias": {
120
- "dev-master": "1.2.x-dev"
121
- }
122
- },
123
- "autoload": {
124
- "psr-4": {
125
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
126
- }
127
- },
128
- "notification-url": "https://packagist.org/downloads/",
129
- "license": [
130
- "MIT"
131
- ],
132
- "authors": [
133
- {
134
- "name": "Marco Pivetta",
135
- "email": "ocramius@gmail.com",
136
- "homepage": "http://ocramius.github.com/"
137
- }
138
- ],
139
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
140
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
141
- "keywords": [
142
- "constructor",
143
- "instantiate"
144
- ],
145
- "time": "2019-10-21T16:45:58+00:00"
146
- },
147
- {
148
- "name": "myclabs/deep-copy",
149
- "version": "1.9.5",
150
- "source": {
151
- "type": "git",
152
- "url": "https://github.com/myclabs/DeepCopy.git",
153
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
154
- },
155
- "dist": {
156
- "type": "zip",
157
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
158
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
159
- "shasum": ""
160
- },
161
- "require": {
162
- "php": "^7.1"
163
- },
164
- "replace": {
165
- "myclabs/deep-copy": "self.version"
166
- },
167
- "require-dev": {
168
- "doctrine/collections": "^1.0",
169
- "doctrine/common": "^2.6",
170
- "phpunit/phpunit": "^7.1"
171
- },
172
- "type": "library",
173
- "autoload": {
174
- "psr-4": {
175
- "DeepCopy\\": "src/DeepCopy/"
176
- },
177
- "files": [
178
- "src/DeepCopy/deep_copy.php"
179
- ]
180
- },
181
- "notification-url": "https://packagist.org/downloads/",
182
- "license": [
183
- "MIT"
184
- ],
185
- "description": "Create deep copies (clones) of your objects",
186
- "keywords": [
187
- "clone",
188
- "copy",
189
- "duplicate",
190
- "object",
191
- "object graph"
192
- ],
193
- "time": "2020-01-17T21:11:47+00:00"
194
- },
195
- {
196
- "name": "phar-io/manifest",
197
- "version": "1.0.3",
198
- "source": {
199
- "type": "git",
200
- "url": "https://github.com/phar-io/manifest.git",
201
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
202
- },
203
- "dist": {
204
- "type": "zip",
205
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
206
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
207
- "shasum": ""
208
- },
209
- "require": {
210
- "ext-dom": "*",
211
- "ext-phar": "*",
212
- "phar-io/version": "^2.0",
213
- "php": "^5.6 || ^7.0"
214
- },
215
- "type": "library",
216
- "extra": {
217
- "branch-alias": {
218
- "dev-master": "1.0.x-dev"
219
- }
220
- },
221
- "autoload": {
222
- "classmap": [
223
- "src/"
224
- ]
225
- },
226
- "notification-url": "https://packagist.org/downloads/",
227
- "license": [
228
- "BSD-3-Clause"
229
- ],
230
- "authors": [
231
- {
232
- "name": "Arne Blankerts",
233
- "email": "arne@blankerts.de",
234
- "role": "Developer"
235
- },
236
- {
237
- "name": "Sebastian Heuer",
238
- "email": "sebastian@phpeople.de",
239
- "role": "Developer"
240
- },
241
- {
242
- "name": "Sebastian Bergmann",
243
- "email": "sebastian@phpunit.de",
244
- "role": "Developer"
245
- }
246
- ],
247
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
248
- "time": "2018-07-08T19:23:20+00:00"
249
- },
250
- {
251
- "name": "phar-io/version",
252
- "version": "2.0.1",
253
- "source": {
254
- "type": "git",
255
- "url": "https://github.com/phar-io/version.git",
256
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
257
- },
258
- "dist": {
259
- "type": "zip",
260
- "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
261
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
262
- "shasum": ""
263
- },
264
- "require": {
265
- "php": "^5.6 || ^7.0"
266
- },
267
- "type": "library",
268
- "autoload": {
269
- "classmap": [
270
- "src/"
271
- ]
272
- },
273
- "notification-url": "https://packagist.org/downloads/",
274
- "license": [
275
- "BSD-3-Clause"
276
- ],
277
- "authors": [
278
- {
279
- "name": "Arne Blankerts",
280
- "email": "arne@blankerts.de",
281
- "role": "Developer"
282
- },
283
- {
284
- "name": "Sebastian Heuer",
285
- "email": "sebastian@phpeople.de",
286
- "role": "Developer"
287
- },
288
- {
289
- "name": "Sebastian Bergmann",
290
- "email": "sebastian@phpunit.de",
291
- "role": "Developer"
292
- }
293
- ],
294
- "description": "Library for handling version information and constraints",
295
- "time": "2018-07-08T19:19:57+00:00"
296
- },
297
- {
298
- "name": "phpdocumentor/reflection-common",
299
- "version": "2.0.0",
300
- "source": {
301
- "type": "git",
302
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
303
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
304
- },
305
- "dist": {
306
- "type": "zip",
307
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
308
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
309
- "shasum": ""
310
- },
311
- "require": {
312
- "php": ">=7.1"
313
- },
314
- "require-dev": {
315
- "phpunit/phpunit": "~6"
316
- },
317
- "type": "library",
318
- "extra": {
319
- "branch-alias": {
320
- "dev-master": "2.x-dev"
321
- }
322
- },
323
- "autoload": {
324
- "psr-4": {
325
- "phpDocumentor\\Reflection\\": "src/"
326
- }
327
- },
328
- "notification-url": "https://packagist.org/downloads/",
329
- "license": [
330
- "MIT"
331
- ],
332
- "authors": [
333
- {
334
- "name": "Jaap van Otterdijk",
335
- "email": "opensource@ijaap.nl"
336
- }
337
- ],
338
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
339
- "homepage": "http://www.phpdoc.org",
340
- "keywords": [
341
- "FQSEN",
342
- "phpDocumentor",
343
- "phpdoc",
344
- "reflection",
345
- "static analysis"
346
- ],
347
- "time": "2018-08-07T13:53:10+00:00"
348
- },
349
- {
350
- "name": "phpdocumentor/reflection-docblock",
351
- "version": "4.3.4",
352
- "source": {
353
- "type": "git",
354
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
355
- "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
356
- },
357
- "dist": {
358
- "type": "zip",
359
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
360
- "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
361
- "shasum": ""
362
- },
363
- "require": {
364
- "php": "^7.0",
365
- "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
366
- "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
367
- "webmozart/assert": "^1.0"
368
- },
369
- "require-dev": {
370
- "doctrine/instantiator": "^1.0.5",
371
- "mockery/mockery": "^1.0",
372
- "phpdocumentor/type-resolver": "0.4.*",
373
- "phpunit/phpunit": "^6.4"
374
- },
375
- "type": "library",
376
- "extra": {
377
- "branch-alias": {
378
- "dev-master": "4.x-dev"
379
- }
380
- },
381
- "autoload": {
382
- "psr-4": {
383
- "phpDocumentor\\Reflection\\": [
384
- "src/"
385
- ]
386
- }
387
- },
388
- "notification-url": "https://packagist.org/downloads/",
389
- "license": [
390
- "MIT"
391
- ],
392
- "authors": [
393
- {
394
- "name": "Mike van Riel",
395
- "email": "me@mikevanriel.com"
396
- }
397
- ],
398
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
399
- "time": "2019-12-28T18:55:12+00:00"
400
- },
401
- {
402
- "name": "phpdocumentor/type-resolver",
403
- "version": "1.0.1",
404
- "source": {
405
- "type": "git",
406
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
407
- "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
408
- },
409
- "dist": {
410
- "type": "zip",
411
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
412
- "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
413
- "shasum": ""
414
- },
415
- "require": {
416
- "php": "^7.1",
417
- "phpdocumentor/reflection-common": "^2.0"
418
- },
419
- "require-dev": {
420
- "ext-tokenizer": "^7.1",
421
- "mockery/mockery": "~1",
422
- "phpunit/phpunit": "^7.0"
423
- },
424
- "type": "library",
425
- "extra": {
426
- "branch-alias": {
427
- "dev-master": "1.x-dev"
428
- }
429
- },
430
- "autoload": {
431
- "psr-4": {
432
- "phpDocumentor\\Reflection\\": "src"
433
- }
434
- },
435
- "notification-url": "https://packagist.org/downloads/",
436
- "license": [
437
- "MIT"
438
- ],
439
- "authors": [
440
- {
441
- "name": "Mike van Riel",
442
- "email": "me@mikevanriel.com"
443
- }
444
- ],
445
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
446
- "time": "2019-08-22T18:11:29+00:00"
447
- },
448
- {
449
- "name": "phpspec/prophecy",
450
- "version": "v1.10.3",
451
- "source": {
452
- "type": "git",
453
- "url": "https://github.com/phpspec/prophecy.git",
454
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
455
- },
456
- "dist": {
457
- "type": "zip",
458
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
459
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
460
- "shasum": ""
461
- },
462
- "require": {
463
- "doctrine/instantiator": "^1.0.2",
464
- "php": "^5.3|^7.0",
465
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
466
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
467
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
468
- },
469
- "require-dev": {
470
- "phpspec/phpspec": "^2.5 || ^3.2",
471
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
472
- },
473
- "type": "library",
474
- "extra": {
475
- "branch-alias": {
476
- "dev-master": "1.10.x-dev"
477
- }
478
- },
479
- "autoload": {
480
- "psr-4": {
481
- "Prophecy\\": "src/Prophecy"
482
- }
483
- },
484
- "notification-url": "https://packagist.org/downloads/",
485
- "license": [
486
- "MIT"
487
- ],
488
- "authors": [
489
- {
490
- "name": "Konstantin Kudryashov",
491
- "email": "ever.zet@gmail.com",
492
- "homepage": "http://everzet.com"
493
- },
494
- {
495
- "name": "Marcello Duarte",
496
- "email": "marcello.duarte@gmail.com"
497
- }
498
- ],
499
- "description": "Highly opinionated mocking framework for PHP 5.3+",
500
- "homepage": "https://github.com/phpspec/prophecy",
501
- "keywords": [
502
- "Double",
503
- "Dummy",
504
- "fake",
505
- "mock",
506
- "spy",
507
- "stub"
508
- ],
509
- "time": "2020-03-05T15:02:03+00:00"
510
- },
511
- {
512
- "name": "phpunit/php-code-coverage",
513
- "version": "6.1.4",
514
- "source": {
515
- "type": "git",
516
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
517
- "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d"
518
- },
519
- "dist": {
520
- "type": "zip",
521
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
522
- "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
523
- "shasum": ""
524
- },
525
- "require": {
526
- "ext-dom": "*",
527
- "ext-xmlwriter": "*",
528
- "php": "^7.1",
529
- "phpunit/php-file-iterator": "^2.0",
530
- "phpunit/php-text-template": "^1.2.1",
531
- "phpunit/php-token-stream": "^3.0",
532
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
533
- "sebastian/environment": "^3.1 || ^4.0",
534
- "sebastian/version": "^2.0.1",
535
- "theseer/tokenizer": "^1.1"
536
- },
537
- "require-dev": {
538
- "phpunit/phpunit": "^7.0"
539
- },
540
- "suggest": {
541
- "ext-xdebug": "^2.6.0"
542
- },
543
- "type": "library",
544
- "extra": {
545
- "branch-alias": {
546
- "dev-master": "6.1-dev"
547
- }
548
- },
549
- "autoload": {
550
- "classmap": [
551
- "src/"
552
- ]
553
- },
554
- "notification-url": "https://packagist.org/downloads/",
555
- "license": [
556
- "BSD-3-Clause"
557
- ],
558
- "authors": [
559
- {
560
- "name": "Sebastian Bergmann",
561
- "email": "sebastian@phpunit.de",
562
- "role": "lead"
563
- }
564
- ],
565
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
566
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
567
- "keywords": [
568
- "coverage",
569
- "testing",
570
- "xunit"
571
- ],
572
- "time": "2018-10-31T16:06:48+00:00"
573
- },
574
- {
575
- "name": "phpunit/php-file-iterator",
576
- "version": "2.0.2",
577
- "source": {
578
- "type": "git",
579
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
580
- "reference": "050bedf145a257b1ff02746c31894800e5122946"
581
- },
582
- "dist": {
583
- "type": "zip",
584
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
585
- "reference": "050bedf145a257b1ff02746c31894800e5122946",
586
- "shasum": ""
587
- },
588
- "require": {
589
- "php": "^7.1"
590
- },
591
- "require-dev": {
592
- "phpunit/phpunit": "^7.1"
593
- },
594
- "type": "library",
595
- "extra": {
596
- "branch-alias": {
597
- "dev-master": "2.0.x-dev"
598
- }
599
- },
600
- "autoload": {
601
- "classmap": [
602
- "src/"
603
- ]
604
- },
605
- "notification-url": "https://packagist.org/downloads/",
606
- "license": [
607
- "BSD-3-Clause"
608
- ],
609
- "authors": [
610
- {
611
- "name": "Sebastian Bergmann",
612
- "email": "sebastian@phpunit.de",
613
- "role": "lead"
614
- }
615
- ],
616
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
617
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
618
- "keywords": [
619
- "filesystem",
620
- "iterator"
621
- ],
622
- "time": "2018-09-13T20:33:42+00:00"
623
- },
624
- {
625
- "name": "phpunit/php-text-template",
626
- "version": "1.2.1",
627
- "source": {
628
- "type": "git",
629
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
630
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
631
- },
632
- "dist": {
633
- "type": "zip",
634
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
635
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
636
- "shasum": ""
637
- },
638
- "require": {
639
- "php": ">=5.3.3"
640
- },
641
- "type": "library",
642
- "autoload": {
643
- "classmap": [
644
- "src/"
645
- ]
646
- },
647
- "notification-url": "https://packagist.org/downloads/",
648
- "license": [
649
- "BSD-3-Clause"
650
- ],
651
- "authors": [
652
- {
653
- "name": "Sebastian Bergmann",
654
- "email": "sebastian@phpunit.de",
655
- "role": "lead"
656
- }
657
- ],
658
- "description": "Simple template engine.",
659
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
660
- "keywords": [
661
- "template"
662
- ],
663
- "time": "2015-06-21T13:50:34+00:00"
664
- },
665
- {
666
- "name": "phpunit/php-timer",
667
- "version": "2.1.2",
668
- "source": {
669
- "type": "git",
670
- "url": "https://github.com/sebastianbergmann/php-timer.git",
671
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
672
- },
673
- "dist": {
674
- "type": "zip",
675
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
676
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
677
- "shasum": ""
678
- },
679
- "require": {
680
- "php": "^7.1"
681
- },
682
- "require-dev": {
683
- "phpunit/phpunit": "^7.0"
684
- },
685
- "type": "library",
686
- "extra": {
687
- "branch-alias": {
688
- "dev-master": "2.1-dev"
689
- }
690
- },
691
- "autoload": {
692
- "classmap": [
693
- "src/"
694
- ]
695
- },
696
- "notification-url": "https://packagist.org/downloads/",
697
- "license": [
698
- "BSD-3-Clause"
699
- ],
700
- "authors": [
701
- {
702
- "name": "Sebastian Bergmann",
703
- "email": "sebastian@phpunit.de",
704
- "role": "lead"
705
- }
706
- ],
707
- "description": "Utility class for timing",
708
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
709
- "keywords": [
710
- "timer"
711
- ],
712
- "time": "2019-06-07T04:22:29+00:00"
713
- },
714
- {
715
- "name": "phpunit/php-token-stream",
716
- "version": "3.1.1",
717
- "source": {
718
- "type": "git",
719
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
720
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
721
- },
722
- "dist": {
723
- "type": "zip",
724
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
725
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
726
- "shasum": ""
727
- },
728
- "require": {
729
- "ext-tokenizer": "*",
730
- "php": "^7.1"
731
- },
732
- "require-dev": {
733
- "phpunit/phpunit": "^7.0"
734
- },
735
- "type": "library",
736
- "extra": {
737
- "branch-alias": {
738
- "dev-master": "3.1-dev"
739
- }
740
- },
741
- "autoload": {
742
- "classmap": [
743
- "src/"
744
- ]
745
- },
746
- "notification-url": "https://packagist.org/downloads/",
747
- "license": [
748
- "BSD-3-Clause"
749
- ],
750
- "authors": [
751
- {
752
- "name": "Sebastian Bergmann",
753
- "email": "sebastian@phpunit.de"
754
- }
755
- ],
756
- "description": "Wrapper around PHP's tokenizer extension.",
757
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
758
- "keywords": [
759
- "tokenizer"
760
- ],
761
- "time": "2019-09-17T06:23:10+00:00"
762
- },
763
- {
764
- "name": "phpunit/phpunit",
765
- "version": "7.5.20",
766
- "source": {
767
- "type": "git",
768
- "url": "https://github.com/sebastianbergmann/phpunit.git",
769
- "reference": "9467db479d1b0487c99733bb1e7944d32deded2c"
770
- },
771
- "dist": {
772
- "type": "zip",
773
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c",
774
- "reference": "9467db479d1b0487c99733bb1e7944d32deded2c",
775
- "shasum": ""
776
- },
777
- "require": {
778
- "doctrine/instantiator": "^1.1",
779
- "ext-dom": "*",
780
- "ext-json": "*",
781
- "ext-libxml": "*",
782
- "ext-mbstring": "*",
783
- "ext-xml": "*",
784
- "myclabs/deep-copy": "^1.7",
785
- "phar-io/manifest": "^1.0.2",
786
- "phar-io/version": "^2.0",
787
- "php": "^7.1",
788
- "phpspec/prophecy": "^1.7",
789
- "phpunit/php-code-coverage": "^6.0.7",
790
- "phpunit/php-file-iterator": "^2.0.1",
791
- "phpunit/php-text-template": "^1.2.1",
792
- "phpunit/php-timer": "^2.1",
793
- "sebastian/comparator": "^3.0",
794
- "sebastian/diff": "^3.0",
795
- "sebastian/environment": "^4.0",
796
- "sebastian/exporter": "^3.1",
797
- "sebastian/global-state": "^2.0",
798
- "sebastian/object-enumerator": "^3.0.3",
799
- "sebastian/resource-operations": "^2.0",
800
- "sebastian/version": "^2.0.1"
801
- },
802
- "conflict": {
803
- "phpunit/phpunit-mock-objects": "*"
804
- },
805
- "require-dev": {
806
- "ext-pdo": "*"
807
- },
808
- "suggest": {
809
- "ext-soap": "*",
810
- "ext-xdebug": "*",
811
- "phpunit/php-invoker": "^2.0"
812
- },
813
- "bin": [
814
- "phpunit"
815
- ],
816
- "type": "library",
817
- "extra": {
818
- "branch-alias": {
819
- "dev-master": "7.5-dev"
820
- }
821
- },
822
- "autoload": {
823
- "classmap": [
824
- "src/"
825
- ]
826
- },
827
- "notification-url": "https://packagist.org/downloads/",
828
- "license": [
829
- "BSD-3-Clause"
830
- ],
831
- "authors": [
832
- {
833
- "name": "Sebastian Bergmann",
834
- "email": "sebastian@phpunit.de",
835
- "role": "lead"
836
- }
837
- ],
838
- "description": "The PHP Unit Testing framework.",
839
- "homepage": "https://phpunit.de/",
840
- "keywords": [
841
- "phpunit",
842
- "testing",
843
- "xunit"
844
- ],
845
- "time": "2020-01-08T08:45:45+00:00"
846
- },
847
- {
848
- "name": "sebastian/code-unit-reverse-lookup",
849
- "version": "1.0.1",
850
- "source": {
851
- "type": "git",
852
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
853
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
854
- },
855
- "dist": {
856
- "type": "zip",
857
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
858
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
859
- "shasum": ""
860
- },
861
- "require": {
862
- "php": "^5.6 || ^7.0"
863
- },
864
- "require-dev": {
865
- "phpunit/phpunit": "^5.7 || ^6.0"
866
- },
867
- "type": "library",
868
- "extra": {
869
- "branch-alias": {
870
- "dev-master": "1.0.x-dev"
871
- }
872
- },
873
- "autoload": {
874
- "classmap": [
875
- "src/"
876
- ]
877
- },
878
- "notification-url": "https://packagist.org/downloads/",
879
- "license": [
880
- "BSD-3-Clause"
881
- ],
882
- "authors": [
883
- {
884
- "name": "Sebastian Bergmann",
885
- "email": "sebastian@phpunit.de"
886
- }
887
- ],
888
- "description": "Looks up which function or method a line of code belongs to",
889
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
890
- "time": "2017-03-04T06:30:41+00:00"
891
- },
892
- {
893
- "name": "sebastian/comparator",
894
- "version": "3.0.2",
895
- "source": {
896
- "type": "git",
897
- "url": "https://github.com/sebastianbergmann/comparator.git",
898
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
899
- },
900
- "dist": {
901
- "type": "zip",
902
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
903
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
904
- "shasum": ""
905
- },
906
- "require": {
907
- "php": "^7.1",
908
- "sebastian/diff": "^3.0",
909
- "sebastian/exporter": "^3.1"
910
- },
911
- "require-dev": {
912
- "phpunit/phpunit": "^7.1"
913
- },
914
- "type": "library",
915
- "extra": {
916
- "branch-alias": {
917
- "dev-master": "3.0-dev"
918
- }
919
- },
920
- "autoload": {
921
- "classmap": [
922
- "src/"
923
- ]
924
- },
925
- "notification-url": "https://packagist.org/downloads/",
926
- "license": [
927
- "BSD-3-Clause"
928
- ],
929
- "authors": [
930
- {
931
- "name": "Jeff Welch",
932
- "email": "whatthejeff@gmail.com"
933
- },
934
- {
935
- "name": "Volker Dusch",
936
- "email": "github@wallbash.com"
937
- },
938
- {
939
- "name": "Bernhard Schussek",
940
- "email": "bschussek@2bepublished.at"
941
- },
942
- {
943
- "name": "Sebastian Bergmann",
944
- "email": "sebastian@phpunit.de"
945
- }
946
- ],
947
- "description": "Provides the functionality to compare PHP values for equality",
948
- "homepage": "https://github.com/sebastianbergmann/comparator",
949
- "keywords": [
950
- "comparator",
951
- "compare",
952
- "equality"
953
- ],
954
- "time": "2018-07-12T15:12:46+00:00"
955
- },
956
- {
957
- "name": "sebastian/diff",
958
- "version": "3.0.2",
959
- "source": {
960
- "type": "git",
961
- "url": "https://github.com/sebastianbergmann/diff.git",
962
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
963
- },
964
- "dist": {
965
- "type": "zip",
966
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
967
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
968
- "shasum": ""
969
- },
970
- "require": {
971
- "php": "^7.1"
972
- },
973
- "require-dev": {
974
- "phpunit/phpunit": "^7.5 || ^8.0",
975
- "symfony/process": "^2 || ^3.3 || ^4"
976
- },
977
- "type": "library",
978
- "extra": {
979
- "branch-alias": {
980
- "dev-master": "3.0-dev"
981
- }
982
- },
983
- "autoload": {
984
- "classmap": [
985
- "src/"
986
- ]
987
- },
988
- "notification-url": "https://packagist.org/downloads/",
989
- "license": [
990
- "BSD-3-Clause"
991
- ],
992
- "authors": [
993
- {
994
- "name": "Kore Nordmann",
995
- "email": "mail@kore-nordmann.de"
996
- },
997
- {
998
- "name": "Sebastian Bergmann",
999
- "email": "sebastian@phpunit.de"
1000
- }
1001
- ],
1002
- "description": "Diff implementation",
1003
- "homepage": "https://github.com/sebastianbergmann/diff",
1004
- "keywords": [
1005
- "diff",
1006
- "udiff",
1007
- "unidiff",
1008
- "unified diff"
1009
- ],
1010
- "time": "2019-02-04T06:01:07+00:00"
1011
- },
1012
- {
1013
- "name": "sebastian/environment",
1014
- "version": "4.2.3",
1015
- "source": {
1016
- "type": "git",
1017
- "url": "https://github.com/sebastianbergmann/environment.git",
1018
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
1019
- },
1020
- "dist": {
1021
- "type": "zip",
1022
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
1023
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
1024
- "shasum": ""
1025
- },
1026
- "require": {
1027
- "php": "^7.1"
1028
- },
1029
- "require-dev": {
1030
- "phpunit/phpunit": "^7.5"
1031
- },
1032
- "suggest": {
1033
- "ext-posix": "*"
1034
- },
1035
- "type": "library",
1036
- "extra": {
1037
- "branch-alias": {
1038
- "dev-master": "4.2-dev"
1039
- }
1040
- },
1041
- "autoload": {
1042
- "classmap": [
1043
- "src/"
1044
- ]
1045
- },
1046
- "notification-url": "https://packagist.org/downloads/",
1047
- "license": [
1048
- "BSD-3-Clause"
1049
- ],
1050
- "authors": [
1051
- {
1052
- "name": "Sebastian Bergmann",
1053
- "email": "sebastian@phpunit.de"
1054
- }
1055
- ],
1056
- "description": "Provides functionality to handle HHVM/PHP environments",
1057
- "homepage": "http://www.github.com/sebastianbergmann/environment",
1058
- "keywords": [
1059
- "Xdebug",
1060
- "environment",
1061
- "hhvm"
1062
- ],
1063
- "time": "2019-11-20T08:46:58+00:00"
1064
- },
1065
- {
1066
- "name": "sebastian/exporter",
1067
- "version": "3.1.2",
1068
- "source": {
1069
- "type": "git",
1070
- "url": "https://github.com/sebastianbergmann/exporter.git",
1071
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
1072
- },
1073
- "dist": {
1074
- "type": "zip",
1075
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
1076
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
1077
- "shasum": ""
1078
- },
1079
- "require": {
1080
- "php": "^7.0",
1081
- "sebastian/recursion-context": "^3.0"
1082
- },
1083
- "require-dev": {
1084
- "ext-mbstring": "*",
1085
- "phpunit/phpunit": "^6.0"
1086
- },
1087
- "type": "library",
1088
- "extra": {
1089
- "branch-alias": {
1090
- "dev-master": "3.1.x-dev"
1091
- }
1092
- },
1093
- "autoload": {
1094
- "classmap": [
1095
- "src/"
1096
- ]
1097
- },
1098
- "notification-url": "https://packagist.org/downloads/",
1099
- "license": [
1100
- "BSD-3-Clause"
1101
- ],
1102
- "authors": [
1103
- {
1104
- "name": "Sebastian Bergmann",
1105
- "email": "sebastian@phpunit.de"
1106
- },
1107
- {
1108
- "name": "Jeff Welch",
1109
- "email": "whatthejeff@gmail.com"
1110
- },
1111
- {
1112
- "name": "Volker Dusch",
1113
- "email": "github@wallbash.com"
1114
- },
1115
- {
1116
- "name": "Adam Harvey",
1117
- "email": "aharvey@php.net"
1118
- },
1119
- {
1120
- "name": "Bernhard Schussek",
1121
- "email": "bschussek@gmail.com"
1122
- }
1123
- ],
1124
- "description": "Provides the functionality to export PHP variables for visualization",
1125
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
1126
- "keywords": [
1127
- "export",
1128
- "exporter"
1129
- ],
1130
- "time": "2019-09-14T09:02:43+00:00"
1131
- },
1132
- {
1133
- "name": "sebastian/global-state",
1134
- "version": "2.0.0",
1135
- "source": {
1136
- "type": "git",
1137
- "url": "https://github.com/sebastianbergmann/global-state.git",
1138
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
1139
- },
1140
- "dist": {
1141
- "type": "zip",
1142
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1143
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1144
- "shasum": ""
1145
- },
1146
- "require": {
1147
- "php": "^7.0"
1148
- },
1149
- "require-dev": {
1150
- "phpunit/phpunit": "^6.0"
1151
- },
1152
- "suggest": {
1153
- "ext-uopz": "*"
1154
- },
1155
- "type": "library",
1156
- "extra": {
1157
- "branch-alias": {
1158
- "dev-master": "2.0-dev"
1159
- }
1160
- },
1161
- "autoload": {
1162
- "classmap": [
1163
- "src/"
1164
- ]
1165
- },
1166
- "notification-url": "https://packagist.org/downloads/",
1167
- "license": [
1168
- "BSD-3-Clause"
1169
- ],
1170
- "authors": [
1171
- {
1172
- "name": "Sebastian Bergmann",
1173
- "email": "sebastian@phpunit.de"
1174
- }
1175
- ],
1176
- "description": "Snapshotting of global state",
1177
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
1178
- "keywords": [
1179
- "global state"
1180
- ],
1181
- "time": "2017-04-27T15:39:26+00:00"
1182
- },
1183
- {
1184
- "name": "sebastian/object-enumerator",
1185
- "version": "3.0.3",
1186
- "source": {
1187
- "type": "git",
1188
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1189
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
1190
- },
1191
- "dist": {
1192
- "type": "zip",
1193
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1194
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1195
- "shasum": ""
1196
- },
1197
- "require": {
1198
- "php": "^7.0",
1199
- "sebastian/object-reflector": "^1.1.1",
1200
- "sebastian/recursion-context": "^3.0"
1201
- },
1202
- "require-dev": {
1203
- "phpunit/phpunit": "^6.0"
1204
- },
1205
- "type": "library",
1206
- "extra": {
1207
- "branch-alias": {
1208
- "dev-master": "3.0.x-dev"
1209
- }
1210
- },
1211
- "autoload": {
1212
- "classmap": [
1213
- "src/"
1214
- ]
1215
- },
1216
- "notification-url": "https://packagist.org/downloads/",
1217
- "license": [
1218
- "BSD-3-Clause"
1219
- ],
1220
- "authors": [
1221
- {
1222
- "name": "Sebastian Bergmann",
1223
- "email": "sebastian@phpunit.de"
1224
- }
1225
- ],
1226
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1227
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1228
- "time": "2017-08-03T12:35:26+00:00"
1229
- },
1230
- {
1231
- "name": "sebastian/object-reflector",
1232
- "version": "1.1.1",
1233
- "source": {
1234
- "type": "git",
1235
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
1236
- "reference": "773f97c67f28de00d397be301821b06708fca0be"
1237
- },
1238
- "dist": {
1239
- "type": "zip",
1240
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
1241
- "reference": "773f97c67f28de00d397be301821b06708fca0be",
1242
- "shasum": ""
1243
- },
1244
- "require": {
1245
- "php": "^7.0"
1246
- },
1247
- "require-dev": {
1248
- "phpunit/phpunit": "^6.0"
1249
- },
1250
- "type": "library",
1251
- "extra": {
1252
- "branch-alias": {
1253
- "dev-master": "1.1-dev"
1254
- }
1255
- },
1256
- "autoload": {
1257
- "classmap": [
1258
- "src/"
1259
- ]
1260
- },
1261
- "notification-url": "https://packagist.org/downloads/",
1262
- "license": [
1263
- "BSD-3-Clause"
1264
- ],
1265
- "authors": [
1266
- {
1267
- "name": "Sebastian Bergmann",
1268
- "email": "sebastian@phpunit.de"
1269
- }
1270
- ],
1271
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
1272
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
1273
- "time": "2017-03-29T09:07:27+00:00"
1274
- },
1275
- {
1276
- "name": "sebastian/recursion-context",
1277
- "version": "3.0.0",
1278
- "source": {
1279
- "type": "git",
1280
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
1281
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
1282
- },
1283
- "dist": {
1284
- "type": "zip",
1285
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1286
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1287
- "shasum": ""
1288
- },
1289
- "require": {
1290
- "php": "^7.0"
1291
- },
1292
- "require-dev": {
1293
- "phpunit/phpunit": "^6.0"
1294
- },
1295
- "type": "library",
1296
- "extra": {
1297
- "branch-alias": {
1298
- "dev-master": "3.0.x-dev"
1299
- }
1300
- },
1301
- "autoload": {
1302
- "classmap": [
1303
- "src/"
1304
- ]
1305
- },
1306
- "notification-url": "https://packagist.org/downloads/",
1307
- "license": [
1308
- "BSD-3-Clause"
1309
- ],
1310
- "authors": [
1311
- {
1312
- "name": "Jeff Welch",
1313
- "email": "whatthejeff@gmail.com"
1314
- },
1315
- {
1316
- "name": "Sebastian Bergmann",
1317
- "email": "sebastian@phpunit.de"
1318
- },
1319
- {
1320
- "name": "Adam Harvey",
1321
- "email": "aharvey@php.net"
1322
- }
1323
- ],
1324
- "description": "Provides functionality to recursively process PHP variables",
1325
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1326
- "time": "2017-03-03T06:23:57+00:00"
1327
- },
1328
- {
1329
- "name": "sebastian/resource-operations",
1330
- "version": "2.0.1",
1331
- "source": {
1332
- "type": "git",
1333
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
1334
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
1335
- },
1336
- "dist": {
1337
- "type": "zip",
1338
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
1339
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
1340
- "shasum": ""
1341
- },
1342
- "require": {
1343
- "php": "^7.1"
1344
- },
1345
- "type": "library",
1346
- "extra": {
1347
- "branch-alias": {
1348
- "dev-master": "2.0-dev"
1349
- }
1350
- },
1351
- "autoload": {
1352
- "classmap": [
1353
- "src/"
1354
- ]
1355
- },
1356
- "notification-url": "https://packagist.org/downloads/",
1357
- "license": [
1358
- "BSD-3-Clause"
1359
- ],
1360
- "authors": [
1361
- {
1362
- "name": "Sebastian Bergmann",
1363
- "email": "sebastian@phpunit.de"
1364
- }
1365
- ],
1366
- "description": "Provides a list of PHP built-in functions that operate on resources",
1367
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1368
- "time": "2018-10-04T04:07:39+00:00"
1369
- },
1370
- {
1371
- "name": "sebastian/version",
1372
- "version": "2.0.1",
1373
- "source": {
1374
- "type": "git",
1375
- "url": "https://github.com/sebastianbergmann/version.git",
1376
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1377
- },
1378
- "dist": {
1379
- "type": "zip",
1380
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1381
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1382
- "shasum": ""
1383
- },
1384
- "require": {
1385
- "php": ">=5.6"
1386
- },
1387
- "type": "library",
1388
- "extra": {
1389
- "branch-alias": {
1390
- "dev-master": "2.0.x-dev"
1391
- }
1392
- },
1393
- "autoload": {
1394
- "classmap": [
1395
- "src/"
1396
- ]
1397
- },
1398
- "notification-url": "https://packagist.org/downloads/",
1399
- "license": [
1400
- "BSD-3-Clause"
1401
- ],
1402
- "authors": [
1403
- {
1404
- "name": "Sebastian Bergmann",
1405
- "email": "sebastian@phpunit.de",
1406
- "role": "lead"
1407
- }
1408
- ],
1409
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1410
- "homepage": "https://github.com/sebastianbergmann/version",
1411
- "time": "2016-10-03T07:35:21+00:00"
1412
- },
1413
- {
1414
- "name": "symfony/polyfill-ctype",
1415
- "version": "v1.14.0",
1416
- "source": {
1417
- "type": "git",
1418
- "url": "https://github.com/symfony/polyfill-ctype.git",
1419
- "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38"
1420
- },
1421
- "dist": {
1422
- "type": "zip",
1423
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
1424
- "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
1425
- "shasum": ""
1426
- },
1427
- "require": {
1428
- "php": ">=5.3.3"
1429
- },
1430
- "suggest": {
1431
- "ext-ctype": "For best performance"
1432
- },
1433
- "type": "library",
1434
- "extra": {
1435
- "branch-alias": {
1436
- "dev-master": "1.14-dev"
1437
- }
1438
- },
1439
- "autoload": {
1440
- "psr-4": {
1441
- "Symfony\\Polyfill\\Ctype\\": ""
1442
- },
1443
- "files": [
1444
- "bootstrap.php"
1445
- ]
1446
- },
1447
- "notification-url": "https://packagist.org/downloads/",
1448
- "license": [
1449
- "MIT"
1450
- ],
1451
- "authors": [
1452
- {
1453
- "name": "Gert de Pagter",
1454
- "email": "BackEndTea@gmail.com"
1455
- },
1456
- {
1457
- "name": "Symfony Community",
1458
- "homepage": "https://symfony.com/contributors"
1459
- }
1460
- ],
1461
- "description": "Symfony polyfill for ctype functions",
1462
- "homepage": "https://symfony.com",
1463
- "keywords": [
1464
- "compatibility",
1465
- "ctype",
1466
- "polyfill",
1467
- "portable"
1468
- ],
1469
- "time": "2020-01-13T11:15:53+00:00"
1470
- },
1471
- {
1472
- "name": "theseer/tokenizer",
1473
- "version": "1.1.3",
1474
- "source": {
1475
- "type": "git",
1476
- "url": "https://github.com/theseer/tokenizer.git",
1477
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
1478
- },
1479
- "dist": {
1480
- "type": "zip",
1481
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
1482
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
1483
- "shasum": ""
1484
- },
1485
- "require": {
1486
- "ext-dom": "*",
1487
- "ext-tokenizer": "*",
1488
- "ext-xmlwriter": "*",
1489
- "php": "^7.0"
1490
- },
1491
- "type": "library",
1492
- "autoload": {
1493
- "classmap": [
1494
- "src/"
1495
- ]
1496
- },
1497
- "notification-url": "https://packagist.org/downloads/",
1498
- "license": [
1499
- "BSD-3-Clause"
1500
- ],
1501
- "authors": [
1502
- {
1503
- "name": "Arne Blankerts",
1504
- "email": "arne@blankerts.de",
1505
- "role": "Developer"
1506
- }
1507
- ],
1508
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
1509
- "time": "2019-06-13T22:48:21+00:00"
1510
- },
1511
- {
1512
- "name": "webmozart/assert",
1513
- "version": "1.7.0",
1514
- "source": {
1515
- "type": "git",
1516
- "url": "https://github.com/webmozart/assert.git",
1517
- "reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
1518
- },
1519
- "dist": {
1520
- "type": "zip",
1521
- "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
1522
- "reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
1523
- "shasum": ""
1524
- },
1525
- "require": {
1526
- "php": "^5.3.3 || ^7.0",
1527
- "symfony/polyfill-ctype": "^1.8"
1528
- },
1529
- "conflict": {
1530
- "vimeo/psalm": "<3.6.0"
1531
- },
1532
- "require-dev": {
1533
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
1534
- },
1535
- "type": "library",
1536
- "autoload": {
1537
- "psr-4": {
1538
- "Webmozart\\Assert\\": "src/"
1539
- }
1540
- },
1541
- "notification-url": "https://packagist.org/downloads/",
1542
- "license": [
1543
- "MIT"
1544
- ],
1545
- "authors": [
1546
- {
1547
- "name": "Bernhard Schussek",
1548
- "email": "bschussek@gmail.com"
1549
- }
1550
- ],
1551
- "description": "Assertions to validate method input/output with nice error messages.",
1552
- "keywords": [
1553
- "assert",
1554
- "check",
1555
- "validate"
1556
- ],
1557
- "time": "2020-02-14T12:15:55+00:00"
1558
- }
1559
- ],
1560
- "aliases": [],
1561
- "minimum-stability": "dev",
1562
- "stability-flags": [],
1563
- "prefer-stable": true,
1564
- "prefer-lowest": false,
1565
- "platform": {
1566
- "php": "^7.1"
1567
- },
1568
- "platform-dev": []
1569
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/src/DependenciesAwareInterface.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Modular\Module;
4
+
5
+ use Dhii\Util\String\StringableInterface as Stringable;
6
+ use stdClass;
7
+ use Traversable;
8
+
9
+ /**
10
+ * Something that is aware of, and can provide, a list of dependencies.
11
+ *
12
+ * @since [*next-version*]
13
+ */
14
+ interface DependenciesAwareInterface
15
+ {
16
+ /**
17
+ * Retrieves the dependencies.
18
+ *
19
+ * @since [*next-version*]
20
+ *
21
+ * @return string[]|Stringable[]|stdClass|Traversable A list of dependencies.
22
+ */
23
+ public function getDependencies();
24
+ }
vendor/dhii/module-interface/src/Exception/ModuleExceptionInterface.php CHANGED
@@ -3,15 +3,15 @@
3
  namespace Dhii\Modular\Module\Exception;
4
 
5
  use Dhii\Modular\Module\ModuleAwareInterface;
6
- use Throwable;
7
 
8
  /**
9
  * Represents an exception that is thrown in relation to a module.
10
  *
11
- * @since 0.2
12
  */
13
  interface ModuleExceptionInterface extends
14
- Throwable,
15
  ModuleAwareInterface
16
  {
17
  }
3
  namespace Dhii\Modular\Module\Exception;
4
 
5
  use Dhii\Modular\Module\ModuleAwareInterface;
6
+ use Dhii\Exception\ThrowableInterface;
7
 
8
  /**
9
  * Represents an exception that is thrown in relation to a module.
10
  *
11
+ * @since [*next-version*]
12
  */
13
  interface ModuleExceptionInterface extends
14
+ ThrowableInterface,
15
  ModuleAwareInterface
16
  {
17
  }
vendor/dhii/module-interface/src/ModuleAwareInterface.php CHANGED
@@ -5,14 +5,14 @@ namespace Dhii\Modular\Module;
5
  /**
6
  * Something that can have a module instance retrieved.
7
  *
8
- * @since 0.2
9
  */
10
  interface ModuleAwareInterface
11
  {
12
  /**
13
  * Retrieves the module that is associated with this instance.
14
  *
15
- * @since 0.2
16
  *
17
  * @return ModuleInterface|null The module, if applicable; otherwise, null.
18
  */
5
  /**
6
  * Something that can have a module instance retrieved.
7
  *
8
+ * @since [*next-version*]
9
  */
10
  interface ModuleAwareInterface
11
  {
12
  /**
13
  * Retrieves the module that is associated with this instance.
14
  *
15
+ * @since [*next-version*]
16
  *
17
  * @return ModuleInterface|null The module, if applicable; otherwise, null.
18
  */
vendor/dhii/module-interface/src/ModuleFactoryInterface.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Modular\Module;
4
+
5
+ use Dhii\Factory\FactoryInterface;
6
+
7
+ /**
8
+ * Something that can create new module instances from module configuration.
9
+ *
10
+ * @since [*next-version*]
11
+ */
12
+ interface ModuleFactoryInterface extends FactoryInterface
13
+ {
14
+ /**
15
+ * {@inheritdoc}
16
+ *
17
+ * @since [*next-version*]
18
+ *
19
+ * @return ModuleInterface The created module instance.
20
+ */
21
+ public function make($config = null);
22
+ }
vendor/dhii/module-interface/src/ModuleInterface.php CHANGED
@@ -2,51 +2,43 @@
2
 
3
  namespace Dhii\Modular\Module;
4
 
5
- use Dhii\Modular\Module\Exception\ModuleExceptionInterface;
6
- use Interop\Container\ServiceProviderInterface;
7
  use Psr\Container\ContainerInterface;
8
 
9
  /**
10
- * Something that represents an application module.
11
  *
12
- * @since 0.2
 
 
 
13
  */
14
- interface ModuleInterface
15
  {
16
  /**
17
- * Performs module-specific setup and provides a service provider.
18
- *
19
- * This method SHOULD be called at least once before {@link ModuleInterface::run()} may be invoked for a particular
20
- * module instance. The returned service provider instance SHOULD be incorporated by the application into the
21
- * container instance that is then given to this module's {@link ModuleInterface::run()} method.
22
  *
23
- * The application MAY also incorporate the service provider into the container instance given to other modules,
24
- * but this is not required. As such, services factories in the returned service provider should not assume the
25
- * existence of other module's services. Use proxy services together with {@link ContainerInterface::has()} for
26
- * optionally integrating with other modules.
27
  *
28
- * @since 0.2
29
  *
30
- * @return ServiceProviderInterface A service provider instance for this module's services.
31
- *
32
- * @throws ModuleExceptionInterface If module setup failed and/or a service provider instance could not be returned.
33
  */
34
- public function setup() : ServiceProviderInterface;
35
 
36
  /**
37
  * Runs the module.
38
  *
39
- * This method MUST be called after the module has been set up using {@link ModuleInterface::setup()}. A services
40
- * container MUST be given to this method, and MUST incorporate the services from the service provider returned
41
- * by the same module's {@link ModuleInterface::setup()} method. This container instance is not guaranteed to be
42
- * the same instance given to other modules. As such, it is strongly advised to assume it is not, and to avoid
43
- * referencing services from other modules.
44
- *
45
- * @since 0.2
46
  *
47
- * @param ContainerInterface $c A services container instance.
48
  *
49
- * @throws ModuleExceptionInterface If the module failed to run.
50
  */
51
- public function run(ContainerInterface $c);
52
  }
2
 
3
  namespace Dhii\Modular\Module;
4
 
5
+ use Dhii\Data\KeyAwareInterface;
 
6
  use Psr\Container\ContainerInterface;
7
 
8
  /**
9
+ * Anything that represents a system module.
10
  *
11
+ * A module is represented by an key, which is not limited to any type or form. It can be numeric, a slug, a hash or
12
+ * even a user-friendly name. What matters is that it **uniquely** identifies the module.
13
+ *
14
+ * @since [*next-version*]
15
  */
16
+ interface ModuleInterface extends KeyAwareInterface
17
  {
18
  /**
19
+ * Performs module-specific setup and optionally provides a container.
 
 
 
 
20
  *
21
+ * This method SHOULD be used to allow the module to set up and prepare itself for invocation.
22
+ * If required, the module MAY provide services in a container. However, the usage of this container is dependent on
23
+ * the consumer and as such there is no guarantee that the container will actually be utilized.
 
24
  *
25
+ * @since [*next-version*]
26
  *
27
+ * @return ContainerInterface|null A DI container instance, if any.
 
 
28
  */
29
+ public function setup();
30
 
31
  /**
32
  * Runs the module.
33
  *
34
+ * This method MUST be called when the module has been set up and is ready for invocation.
35
+ * A service container MAY be given to this method, which MAY consume its services. This container is not
36
+ * necessarily the same container returned by the instance's `setup()` method. In fact, it is strongly advised to
37
+ * assume that this is not the case.
 
 
 
38
  *
39
+ * @since [*next-version*]
40
  *
41
+ * @param ContainerInterface|null $c Optional DI container instance.
42
  */
43
+ public function run(ContainerInterface $c = null);
44
  }
vendor/dhii/module-interface/src/ModuleKeyAwareInterface.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Dhii\Modular\Module;
4
+
5
+ use Dhii\Util\String\StringableInterface as Stringable;
6
+
7
+ /**
8
+ * Something that can have a module key retrieved.
9
+ *
10
+ * @since [*next-version*]
11
+ */
12
+ interface ModuleKeyAwareInterface
13
+ {
14
+ /**
15
+ * Retrieves the module key associated with this instance.
16
+ *
17
+ * @since [*next-version*]
18
+ *
19
+ * @return string|Stringable|null The key, if applicable; otherwise, null.
20
+ */
21
+ public function getModuleKey();
22
+ }
vendor/dhii/module-interface/test/bootstrap.php DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
-
3
- error_reporting(E_ALL | E_STRICT);
4
-
5
- require_once dirname(__FILE__).'/../vendor/autoload.php';
 
 
 
 
 
vendor/dhii/module-interface/test/stubs/GetImplementingMockBuilderCapableTrait.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\Module\Test;
4
-
5
- use PHPUnit\Framework\MockObject\MockBuilder;
6
- use Throwable;
7
- use Exception;
8
- use Error;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- /**
12
- * Eases development of tests by allowing creation of more complex mocks.
13
- *
14
- * The original {@see TestCase::getMockBuilder()} allows mocking only a class or an interface.
15
- * But sometimes, it is necessary to mock a class that implements one or more interfaces.
16
- * One such case is with exceptions: testing an interface that extends {@see Throwable} requires the extension
17
- * of {@see Exception} or {@see Error} by the mock.
18
- */
19
- trait GetImplementingMockBuilderCapableTrait
20
- {
21
- /**
22
- * Retrieves a builder for a class that extends the specified base class, while implementing the specified interfaces.
23
- *
24
- * @param string $baseClassName The name of the base class to extend.
25
- * @param array $interfaceNames The names of interfaces to implement
26
- * @return MockBuilder A builder for the new class.
27
- */
28
- public function getImplementingMockBuilder(string $baseClassName, array $interfaceNames)
29
- {
30
- $className = uniqid("{$baseClassName}_");
31
- $interfaceNames = implode(', ', $interfaceNames);
32
- $classString = "abstract class $className extends $baseClassName implements $interfaceNames {}";
33
-
34
- eval($classString);
35
-
36
- return $this->getMockBuilder($className);
37
- }
38
-
39
- /**
40
- * Retrieves a mock builder for the specified classname.
41
- *
42
- * @param string $className
43
- * @return MockBuilder The builder.
44
- */
45
- abstract public function getMockBuilder($className): MockBuilder;
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/test/unit/Exception/ModuleExceptionInterfaceTest.php DELETED
@@ -1,64 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\UnitTest\Exception;
4
-
5
- use Dhii\Modular\Module\Exception\ModuleExceptionInterface as TestSubject;
6
- use Dhii\Modular\Module\ModuleAwareInterface;
7
- use Dhii\Modular\Module\Test\GetImplementingMockBuilderCapableTrait;
8
- use Exception;
9
- use PHPUnit\Framework\MockObject\MockObject;
10
- use PHPUnit\Framework\TestCase;
11
-
12
- /**
13
- * Tests {@see TestSubject}.
14
- *
15
- * @since 0.2
16
- */
17
- class ModuleExceptionInterfaceTest extends TestCase
18
- {
19
- use GetImplementingMockBuilderCapableTrait;
20
-
21
- /**
22
- * Creates a new instance of the test subject.
23
- *
24
- * @since 0.2
25
- *
26
- * @return TestSubject&MockObject
27
- */
28
- public function createInstance()
29
- {
30
- $mock = $this->getImplementingMockBuilder(Exception::class, [TestSubject::class])
31
- ->setMethods([])
32
- ->getMock();
33
-
34
- return $mock;
35
- }
36
-
37
- /**
38
- * Tests whether a valid instance of the test subject can be created.
39
- *
40
- * @since 0.2
41
- */
42
- public function testCanBeCreated()
43
- {
44
- $subject = $this->createInstance();
45
-
46
- $this->assertInstanceOf(
47
- TestSubject::class,
48
- $subject,
49
- 'A valid instance of the test subject could not be created'
50
- );
51
-
52
- $this->assertInstanceOf(
53
- 'Throwable',
54
- $subject,
55
- 'Exception must be throwable'
56
- );
57
-
58
- $this->assertInstanceOf(
59
- ModuleAwareInterface::class,
60
- $subject,
61
- 'Subject does not implement required interface'
62
- );
63
- }
64
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/test/unit/ModuleAwareInterfaceTest.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\UnitTest\Module;
4
-
5
- use Dhii\Modular\Module\ModuleAwareInterface as TestSubject;
6
- use PHPUnit_Framework_MockObject_MockObject as MockObject;
7
- use PHPUnit\Framework\TestCase;
8
-
9
- /**
10
- * Tests {@see TestSubject}.
11
- *
12
- * @since 0.2
13
- */
14
- class ModuleAwareInterfaceTest extends TestCase
15
- {
16
- /**
17
- * Creates a new instance of the test subject.
18
- *
19
- * @since 0.2
20
- *
21
- * @return TestSubject&MockObject
22
- */
23
- public function createInstance()
24
- {
25
- $mock = $this->getMockBuilder(TestSubject::class)
26
- ->getMock();
27
-
28
- return $mock;
29
- }
30
-
31
- /**
32
- * Tests whether a valid instance of the test subject can be created.
33
- *
34
- * @since 0.2
35
- */
36
- public function testCanBeCreated()
37
- {
38
- $subject = $this->createInstance();
39
-
40
- $this->assertInstanceOf(
41
- TestSubject::class,
42
- $subject,
43
- 'A valid instance of the test subject could not be created'
44
- );
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/test/unit/ModuleInterfaceTest.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\UnitTest\Module;
4
-
5
- use Dhii\Modular\Module\ModuleInterface as TestSubject;
6
- use PHPUnit\Framework\MockObject\MockObject as MockObject;
7
- use PHPUnit\Framework\TestCase;
8
-
9
- /**
10
- * Tests {@see TestSubject}.
11
- *
12
- * @since 0.2
13
- */
14
- class ModuleInterfaceTest extends TestCase
15
- {
16
- /**
17
- * Creates a new instance of the test subject.
18
- *
19
- * @since 0.2
20
- *
21
- * @return TestSubject&MockObject
22
- */
23
- public function createInstance()
24
- {
25
- $mock = $this->getMockBuilder(TestSubject::class)
26
- ->getMock();
27
-
28
- return $mock;
29
- }
30
-
31
- /**
32
- * Tests whether a valid instance of the test subject can be created.
33
- *
34
- * @since 0.2
35
- */
36
- public function testCanBeCreated()
37
- {
38
- $subject = $this->createInstance();
39
-
40
- $this->assertInstanceOf(
41
- TestSubject::class,
42
- $subject,
43
- 'A valid instance of the test subject could not be created'
44
- );
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/travis.php.ini ADDED
@@ -0,0 +1 @@
 
1
+ memory_limit = 2048M
vendor/psr/simple-cache/.editorconfig DELETED
@@ -1,12 +0,0 @@
1
- ; This file is for unifying the coding style for different editors and IDEs.
2
- ; More information at http://editorconfig.org
3
-
4
- root = true
5
-
6
- [*]
7
- charset = utf-8
8
- indent_size = 4
9
- indent_style = space
10
- end_of_line = lf
11
- insert_final_newline = true
12
- trim_trailing_whitespace = true
 
 
 
 
 
 
 
 
 
 
 
 
vendor/psr/simple-cache/LICENSE.md DELETED
@@ -1,21 +0,0 @@
1
- # The MIT License (MIT)
2
-
3
- Copyright (c) 2016 PHP Framework Interoperability Group
4
-
5
- > Permission is hereby granted, free of charge, to any person obtaining a copy
6
- > of this software and associated documentation files (the "Software"), to deal
7
- > in the Software without restriction, including without limitation the rights
8
- > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- > copies of the Software, and to permit persons to whom the Software is
10
- > furnished to do so, subject to the following conditions:
11
- >
12
- > The above copyright notice and this permission notice shall be included in
13
- > all copies or substantial portions of the Software.
14
- >
15
- > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- > THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/psr/simple-cache/README.md DELETED
@@ -1,8 +0,0 @@
1
- PHP FIG Simple Cache PSR
2
- ========================
3
-
4
- This repository holds all interfaces related to PSR-16.
5
-
6
- Note that this is not a cache implementation of its own. It is merely an interface that describes a cache implementation. See [the specification](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md) for more details.
7
-
8
- You can find implementations of the specification by looking for packages providing the [psr/simple-cache-implementation](https://packagist.org/providers/psr/simple-cache-implementation) virtual package.
 
 
 
 
 
 
 
 
vendor/psr/simple-cache/composer.json DELETED
@@ -1,25 +0,0 @@
1
- {
2
- "name": "psr/simple-cache",
3
- "description": "Common interfaces for simple caching",
4
- "keywords": ["psr", "psr-16", "cache", "simple-cache", "caching"],
5
- "license": "MIT",
6
- "authors": [
7
- {
8
- "name": "PHP-FIG",
9
- "homepage": "http://www.php-fig.org/"
10
- }
11
- ],
12
- "require": {
13
- "php": ">=5.3.0"
14
- },
15
- "autoload": {
16
- "psr-4": {
17
- "Psr\\SimpleCache\\": "src/"
18
- }
19
- },
20
- "extra": {
21
- "branch-alias": {
22
- "dev-master": "1.0.x-dev"
23
- }
24
- }
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/psr/simple-cache/src/CacheException.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace Psr\SimpleCache;
4
-
5
- /**
6
- * Interface used for all types of exceptions thrown by the implementing library.
7
- */
8
- interface CacheException
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/psr/simple-cache/src/CacheInterface.php DELETED
@@ -1,114 +0,0 @@
1
- <?php
2
-
3
- namespace Psr\SimpleCache;
4
-
5
- interface CacheInterface
6
- {
7
- /**
8
- * Fetches a value from the cache.
9
- *
10
- * @param string $key The unique key of this item in the cache.
11
- * @param mixed $default Default value to return if the key does not exist.
12
- *
13
- * @return mixed The value of the item from the cache, or $default in case of cache miss.
14
- *
15
- * @throws \Psr\SimpleCache\InvalidArgumentException
16
- * MUST be thrown if the $key string is not a legal value.
17
- */
18
- public function get($key, $default = null);
19
-
20
- /**
21
- * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.
22
- *
23
- * @param string $key The key of the item to store.
24
- * @param mixed $value The value of the item to store, must be serializable.
25
- * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
26
- * the driver supports TTL then the library may set a default value
27
- * for it or let the driver take care of that.
28
- *
29
- * @return bool True on success and false on failure.
30
- *
31
- * @throws \Psr\SimpleCache\InvalidArgumentException
32
- * MUST be thrown if the $key string is not a legal value.
33
- */
34
- public function set($key, $value, $ttl = null);
35
-
36
- /**
37
- * Delete an item from the cache by its unique key.
38
- *
39
- * @param string $key The unique cache key of the item to delete.
40
- *
41
- * @return bool True if the item was successfully removed. False if there was an error.
42
- *
43
- * @throws \Psr\SimpleCache\InvalidArgumentException
44
- * MUST be thrown if the $key string is not a legal value.
45
- */
46
- public function delete($key);
47
-
48
- /**
49
- * Wipes clean the entire cache's keys.
50
- *
51
- * @return bool True on success and false on failure.
52
- */
53
- public function clear();
54
-
55
- /**
56
- * Obtains multiple cache items by their unique keys.
57
- *
58
- * @param iterable $keys A list of keys that can obtained in a single operation.
59
- * @param mixed $default Default value to return for keys that do not exist.
60
- *
61
- * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.
62
- *
63
- * @throws \Psr\SimpleCache\InvalidArgumentException
64
- * MUST be thrown if $keys is neither an array nor a Traversable,
65
- * or if any of the $keys are not a legal value.
66
- */
67
- public function getMultiple($keys, $default = null);
68
-
69
- /**
70
- * Persists a set of key => value pairs in the cache, with an optional TTL.
71
- *
72
- * @param iterable $values A list of key => value pairs for a multiple-set operation.
73
- * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
74
- * the driver supports TTL then the library may set a default value
75
- * for it or let the driver take care of that.
76
- *
77
- * @return bool True on success and false on failure.
78
- *
79
- * @throws \Psr\SimpleCache\InvalidArgumentException
80
- * MUST be thrown if $values is neither an array nor a Traversable,
81
- * or if any of the $values are not a legal value.
82
- */
83
- public function setMultiple($values, $ttl = null);
84
-
85
- /**
86
- * Deletes multiple cache items in a single operation.
87
- *
88
- * @param iterable $keys A list of string-based keys to be deleted.
89
- *
90
- * @return bool True if the items were successfully removed. False if there was an error.
91
- *
92
- * @throws \Psr\SimpleCache\InvalidArgumentException
93
- * MUST be thrown if $keys is neither an array nor a Traversable,
94
- * or if any of the $keys are not a legal value.
95
- */
96
- public function deleteMultiple($keys);
97
-
98
- /**
99
- * Determines whether an item is present in the cache.
100
- *
101
- * NOTE: It is recommended that has() is only to be used for cache warming type purposes
102
- * and not to be used within your live applications operations for get/set, as this method
103
- * is subject to a race condition where your has() will return true and immediately after,
104
- * another script can remove it making the state of your app out of date.
105
- *
106
- * @param string $key The cache item key.
107
- *
108
- * @return bool
109
- *
110
- * @throws \Psr\SimpleCache\InvalidArgumentException
111
- * MUST be thrown if the $key string is not a legal value.
112
- */
113
- public function has($key);
114
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/psr/simple-cache/src/InvalidArgumentException.php DELETED
@@ -1,13 +0,0 @@
1
- <?php
2
-
3
- namespace Psr\SimpleCache;
4
-
5
- /**
6
- * Exception interface for invalid cache arguments.
7
- *
8
- * When an invalid argument is passed it must throw an exception which implements
9
- * this interface
10
- */
11
- interface InvalidArgumentException extends CacheException
12
- {
13
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/ralouphie/getallheaders/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Ralph Khattar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
vendor/ralouphie/getallheaders/README.md ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ getallheaders
2
+ =============
3
+
4
+ PHP `getallheaders()` polyfill. Compatible with PHP >= 5.3.
5
+
6
+ [![Build Status](https://travis-ci.org/ralouphie/getallheaders.svg?branch=master)](https://travis-ci.org/ralouphie/getallheaders)
7
+ [![Coverage Status](https://coveralls.io/repos/ralouphie/getallheaders/badge.png?branch=master)](https://coveralls.io/r/ralouphie/getallheaders?branch=master)
8
+ [![Latest Stable Version](https://poser.pugx.org/ralouphie/getallheaders/v/stable.png)](https://packagist.org/packages/ralouphie/getallheaders)
9
+ [![Latest Unstable Version](https://poser.pugx.org/ralouphie/getallheaders/v/unstable.png)](https://packagist.org/packages/ralouphie/getallheaders)
10
+ [![License](https://poser.pugx.org/ralouphie/getallheaders/license.png)](https://packagist.org/packages/ralouphie/getallheaders)
11
+
12
+
13
+ This is a simple polyfill for [`getallheaders()`](http://www.php.net/manual/en/function.getallheaders.php).
14
+
15
+ ## Install
16
+
17
+ For PHP version **`>= 5.6`**:
18
+
19
+ ```
20
+ composer require ralouphie/getallheaders
21
+ ```
22
+
23
+ For PHP version **`< 5.6`**:
24
+
25
+ ```
26
+ composer require ralouphie/getallheaders "^2"
27
+ ```
vendor/ralouphie/getallheaders/composer.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "ralouphie/getallheaders",
3
+ "description": "A polyfill for getallheaders.",
4
+ "license": "MIT",
5
+ "authors": [
6
+ {
7
+ "name": "Ralph Khattar",
8
+ "email": "ralph.khattar@gmail.com"
9
+ }
10
+ ],
11
+ "require": {
12
+ "php": ">=5.6"
13
+ },
14
+ "require-dev": {
15
+ "phpunit/phpunit": "^5 || ^6.5",
16
+ "php-coveralls/php-coveralls": "^2.1"
17
+ },
18
+ "autoload": {
19
+ "files": ["src/getallheaders.php"]
20
+ },
21
+ "autoload-dev": {
22
+ "psr-4": {
23
+ "getallheaders\\Tests\\": "tests/"
24
+ }
25
+ }
26
+ }
vendor/ralouphie/getallheaders/src/getallheaders.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!function_exists('getallheaders')) {
4
+
5
+ /**
6
+ * Get all HTTP header key/values as an associative array for the current request.
7
+ *
8
+ * @return string[string] The HTTP header key/value pairs.
9
+ */
10
+ function getallheaders()
11
+ {
12
+ $headers = array();
13
+
14
+ $copy_server = array(
15
+ 'CONTENT_TYPE' => 'Content-Type',
16
+ 'CONTENT_LENGTH' => 'Content-Length',
17
+ 'CONTENT_MD5' => 'Content-Md5',
18
+ );
19
+
20
+ foreach ($_SERVER as $key => $value) {
21
+ if (substr($key, 0, 5) === 'HTTP_') {
22
+ $key = substr($key, 5);
23
+ if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) {
24
+ $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key))));
25
+ $headers[$key] = $value;
26
+ }
27
+ } elseif (isset($copy_server[$key])) {
28
+ $headers[$copy_server[$key]] = $value;
29
+ }
30
+ }
31
+
32
+ if (!isset($headers['Authorization'])) {
33
+ if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
34
+ $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
35
+ } elseif (isset($_SERVER['PHP_AUTH_USER'])) {
36
+ $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';
37
+ $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass);
38
+ } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
39
+ $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
40
+ }
41
+ }
42
+
43
+ return $headers;
44
+ }
45
+
46
+ }
vendor/wp-oop/transient-cache/CHANGELOG.md DELETED
@@ -1,30 +0,0 @@
1
- # Change log
2
- All notable changes to this project will be documented in this file.
3
-
4
- The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
- and this project adheres to [Semantic Versioning](http://semver.org/).
6
-
7
- ## [[*next-version*]] - YYYY-MM-DD
8
-
9
- ## [0.1.0-alpha3] - 2020-07-08
10
- ### Added
11
- - Missing function imports.
12
-
13
- ### Changed
14
- - (#13) Improved exception messages
15
-
16
- ## [0.1.0-alpha2] - 2020-04-19
17
- ### Fixed
18
- - False-negative check used to confirm the negative because of wrong option name.
19
- - Non-getter interface methods of `CachePool` now return `true` on success.
20
- - Non-getter interface methods of `CachePool` now declare and throw proper exceptions.
21
-
22
- ### Added
23
- - `SilentPool`, which wraps cache pools that throw non-PSR-16 exceptions and suppress them, making the pool compatible (#7).
24
- - Missing documentation.
25
-
26
- ### Changed
27
- - Centralized behaviour like option deletion, and option/transient retrieval/assignment.
28
-
29
- ## [0.1.0-alpha1] - 2020-04-14
30
- Initial version.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/README.md DELETED
@@ -1,105 +0,0 @@
1
- # WP Transient Cache
2
-
3
- [![Build Status](https://travis-ci.com/wp-oop/transient-cache.svg?branch=develop)](https://travis-ci.org/wp-oop/transient-cache)
4
- [![Latest Stable Version](https://poser.pugx.org/wp-oop/transient-cache/version)](https://packagist.org/packages/wp-oop/transient-cache)
5
-
6
- A fully compliant [PSR-16][] wrapper for WP transients.
7
-
8
- ## Details
9
- A common means of caching values in WordPress is by using [transients][transients-api]. However, this approach suffers
10
- from several problems:
11
-
12
- 1. Coupling to WordPress. You can't just suddenly substitute the caching mechanism you are using for another mechanism,
13
- and everything still works.
14
- 2. No namespacing. All transients live in the same namespace, and independent consumers cannot reliably use
15
- arbitrary keys without the risk of possible conflict.
16
- 3. No true modularity. Due to the above, if your application is [modular][`dhii/module-interface`], it cannot
17
- decide which caching mechanisms to use for what, because that would have already been decided by your modules.
18
- 4. Missing features. For example, it is not possible to clear all values related to a particular thing in one go.
19
- Exceptions are missing too, and you have to rely on ambiguous return values.
20
-
21
- This standards-compliant wrapper addresses all of the above. It is a true PSR-16 cache, which uses WordPress
22
- transients as storage. Exceptions are raised, interfaces implemented, and true false-negative detection is in place.
23
- Each instance of the cache pool is logically independent from other instances, provided that it is given a unique
24
- name. The application is once again in control, and modules that use cache can become platform agnostic.
25
-
26
- ### Compatibility
27
- - `CachePool` and `CachePoolFactory` offer best-practices error handling, throwing meaningful exceptions
28
- when something goes wrong. This violates PSR-16, but allows you to know what is failing.
29
- - `SilentPool` and `SilentPoolFactory` offer PSR-16 compatibility at the cost of error handling,
30
- hiding exceptions, and returning standards-compatible values. This complies with PSR-16, but at the cost of
31
- clarity and verbosity.
32
-
33
- ### Usage
34
- ```php
35
- /*
36
- * Set up the factory - usually in a service definition
37
- */
38
- use wpdb;
39
- use Psr\SimpleCache\CacheInterface;
40
- use WpOop\TransientCache\CachePoolFactory;
41
- use WpOop\TransientCache\SilentPoolFactory;
42
-
43
- /* @var $wpdb wpdb */
44
- $factory = new CachePoolFactory($wpdb);
45
- // Optionally hide exceptions for PSR-16 compatibility
46
- $factory = new SilentPoolFactory($factory); // Optional, and not recommended for testing environments!
47
-
48
- /*
49
- * Create cache pools - usually somewhere else
50
- */
51
- // Same wpdb instance used, default value generated automatically
52
- $pool1 = $factory->createCachePool('client-access-tokens');
53
- $pool2 = $factory->createCachePool('remote-api-responses');
54
- $pool3 = $factory->createCachePool('other-stuff');
55
-
56
- /*
57
- * Use cache pools - usually injected into a client class
58
- */
59
-
60
- // No collision of key between different pools
61
- $pool1->set('123', $someToken);
62
- $pool2->set('123', $someResponseBody);
63
- $pool3->set('123', false);
64
-
65
- // Depend on an interop standard
66
- (function (CacheInterface $cache) {
67
- // False negative detection: correctly determines that the value is actually `false`
68
- $cache->has('123'); // true
69
- $cache->get('123', uniqid('default')) === false; // true
70
- })($pool3);
71
-
72
- // Clear all values within a pool
73
- $pool2->clear();
74
- $pool2->has('123'); // false
75
- $pool1->has('123'); // true
76
- ```
77
-
78
- ### Limitations
79
- #### Key Length
80
- Due to the way the underlying backend (the WordPress transients via options) works, **the combined length of the
81
- pool name and cache key MUST NOT exceed a 171 char limit**. This is because (at least in WP 5.0+)
82
- the [length of the `option_name` field of the `options` table is 191 chars][1], and transients require the longest
83
- prefix of `_transient_timeout_` to the option name, which together with the 1-char separator is 20 chars. Using
84
- anything greater than this length will result in potentially devastating behaviour described in [Trac #15058][].
85
-
86
- In any case, the general recommendation is that **consumers SHOULD NOT use cache keys longer than 64 chars**,
87
- as this is the minimal length required for support by the PSR-16 spec. Using anything longer than that will
88
- cause consumers to become dependent on implementation detail, which breaks interoperability.
89
- Given that, **the cache pool name SHOULD NOT exceed 107 chars**.
90
-
91
- #### Value Length
92
- The storage backend (WP options) [declares][2] the corresponding field to be of type [`LONGTEXT`][], which
93
- [allows][3] up to **4 GB** (2<sup>32</sup>) of data. This is therefore the limit on cache values.
94
-
95
-
96
- [transients-api]: https://codex.wordpress.org/Transients_API
97
- [`dhii/module-interface`]: https://github.com/Dhii/module-interface
98
-
99
- [PSR-16]: https://www.php-fig.org/psr/psr-16/
100
- [`LONGTEXT`]: https://dev.mysql.com/doc/refman/8.0/en/blob.html
101
-
102
- [1]: https://github.com/WordPress/WordPress/blob/5.0-branch/wp-admin/includes/schema.php#L142
103
- [2]: https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/schema.php#L144
104
- [3]: https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html#data-types-storage-reqs-strings
105
- [Trac #15058]: https://core.trac.wordpress.org/ticket/15058
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/composer.json DELETED
@@ -1,37 +0,0 @@
1
- {
2
- "name": "wp-oop/transient-cache",
3
- "description": "A PSR-16 wrapper for WP transients.",
4
- "minimum-stability": "dev",
5
- "license": "MIT",
6
- "authors": [
7
- {
8
- "name": "Anton Ukhanev",
9
- "email": "xedin.unknown@gmail.com",
10
- "role": "Developer"
11
- }
12
- ],
13
- "require": {
14
- "php": "^7.1",
15
- "psr/simple-cache": "^1.0"
16
- },
17
- "require-dev": {
18
- "phpunit/phpunit": "^7.1",
19
- "johnpbloch/wordpress-core": "^5.0",
20
- "brain/monkey": "^2.3"
21
- },
22
- "autoload": {
23
- "psr-4": {
24
- "WpOop\\TransientCache\\": "src"
25
- }
26
- },
27
- "autoload-dev": {
28
- "psr-4": {
29
- "WpOop\\TransientCache\\Tests\\Func\\": "tests/functional"
30
- }
31
- },
32
- "extra": {
33
- "branch-alias": {
34
- "dev-develop": "0.1.x-dev"
35
- }
36
- }
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/CachePool.php DELETED
@@ -1,609 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache;
5
-
6
- use DateInterval;
7
- use DateTimeImmutable;
8
- use Exception;
9
- use Psr\SimpleCache\CacheInterface;
10
- use RangeException;
11
- use RuntimeException;
12
- use wpdb;
13
- use WpOop\TransientCache\Exception\CacheException;
14
- use WpOop\TransientCache\Exception\InvalidArgumentException;
15
- use Psr\SimpleCache\InvalidArgumentException as InvalidArgumentExceptionInterface;
16
-
17
- use function is_int;
18
- use function is_iterable;
19
- use function is_null;
20
- use function sprintf;
21
- use function strlen;
22
- use function strpos;
23
- use function str_split;
24
- use function substr;
25
- use function delete_transient;
26
- use function get_option;
27
- use function get_transient;
28
- use function set_transient;
29
-
30
- /**
31
- * {@inheritDoc}
32
- *
33
- * Uses WordPress transients as storage medium.
34
- */
35
- class CachePool implements CacheInterface
36
- {
37
- public const RESERVED_KEY_SYMBOLS = '{}()/\@:';
38
- public const NAMESPACE_SEPARATOR = '/';
39
-
40
- protected const TABLE_NAME_OPTIONS = 'options';
41
- protected const FIELD_NAME_OPTION_NAME = 'option_name';
42
- protected const OPTION_NAME_PREFIX_TRANSIENT = '_transient_';
43
- protected const OPTION_NAME_PREFIX_TIMEOUT = 'timeout_';
44
- protected const OPTION_NAME_MAX_LENGTH = 191;
45
-
46
- /**
47
- * @var wpdb
48
- */
49
- protected $wpdb;
50
- /**
51
- * @var string
52
- */
53
- protected $poolName;
54
- /**
55
- * @var mixed
56
- */
57
- protected $defaultValue;
58
- /**
59
- * @var int|DateInterval
60
- */
61
- protected $defaultTtl;
62
-
63
- /**
64
- * @param wpdb $wpdb The WP database object.
65
- * @param string $poolName The name of this cache pool. Must be unique to this instance.
66
- * @param mixed $defaultValue A random value. Used for false-negative detection. The more chaotic - the better.
67
- * @param int|DateInterval $defaultTtl Default TTL to use when caching new entries.
68
- */
69
- public function __construct(wpdb $wpdb, string $poolName, $defaultValue, $defaultTtl = 0)
70
- {
71
- if ($poolName === static::OPTION_NAME_PREFIX_TIMEOUT) {
72
- throw new RangeException(sprintf('Pool name cannot be "%1$s"', static::OPTION_NAME_PREFIX_TIMEOUT));
73
- }
74
-
75
- $this->wpdb = $wpdb;
76
- $this->poolName = $poolName;
77
- $this->defaultValue = $defaultValue;
78
- $this->defaultTtl = $defaultTtl;
79
- }
80
-
81
- /**
82
- * @inheritDoc
83
- *
84
- * @throws CacheException If problem retrieving.
85
- */
86
- public function get($key, $default = null)
87
- {
88
- $this->validateKey($key);
89
- $transientKey = $this->prepareKey($key);
90
-
91
- try {
92
- $value = $this->getTransient($transientKey);
93
- } catch (RangeException $e) {
94
- return $default;
95
- } catch (RuntimeException $e) {
96
- $message = sprintf('Could not retrieve cache for key "%1$s": %2$s', $key, $e->getMessage());
97
- throw new CacheException($message, 0, $e);
98
- }
99
-
100
- return $value;
101
- }
102
-
103
- /**
104
- * @inheritDoc
105
- *
106
- * @throws CacheException If TTL cannot be normalized to a number of seconds.
107
- * @throws InvalidArgumentException If TTL is invalid.
108
- */
109
- public function set($key, $value, $ttl = null)
110
- {
111
- $this->validateKey($key);
112
- $origKey = $key;
113
- $key = $this->prepareKey($key);
114
-
115
- $ttl = is_null($ttl) ? $this->defaultTtl : $ttl;
116
-
117
- try {
118
- $ttl = $ttl instanceof DateInterval
119
- ? $this->getIntervalDuration($ttl)
120
- : $ttl;
121
- } catch (Exception $e) {
122
- throw new CacheException(sprintf('Could not normalize cache TTL: %s', $e->getMessage()));
123
- }
124
-
125
- if (!is_int($ttl)) {
126
- throw new InvalidArgumentException('The specified cache TTL is invalid');
127
- }
128
-
129
- try {
130
- $this->setTransient($key, $value, $ttl);
131
- } catch (RuntimeException $e) {
132
- $message = sprintf('Could not write value for key "%1$s" to cache: %2$s', $origKey, $e->getMessage());
133
- throw new CacheException($message, 0, $e);
134
- }
135
-
136
- return true;
137
- }
138
-
139
- /**
140
- * @inheritDoc
141
- *
142
- * @throws CacheException If problem deleting.
143
- */
144
- public function delete($key)
145
- {
146
- $this->validateKey($key);
147
- $origKey = $key;
148
- $key = $this->prepareKey($key);
149
-
150
- try {
151
- $this->deleteTransient($key);
152
- } catch (Exception $e) {
153
- $message = sprintf('Failed to delete cache for key "%1$s": %2$s', $origKey, $e->getMessage());
154
- throw new CacheException($message, 0, $e);
155
- }
156
-
157
- return true;
158
- }
159
-
160
- /**
161
- * @inheritDoc
162
- *
163
- * @throws CacheException If problem clearing.
164
- */
165
- public function clear()
166
- {
167
- try {
168
- $keys = $this->getAllKeys();
169
- $this->deleteMultiple($keys);
170
- } catch (Exception|InvalidArgumentExceptionInterface $e) {
171
- throw new CacheException(sprintf('Failed to clear cache: %s', $e->getMessage()), 0, $e);
172
- }
173
-
174
- return true;
175
- }
176
-
177
- /**
178
- * @inheritDoc
179
- *
180
- * @throws CacheException If problem retrieving.
181
- */
182
- public function getMultiple($keys, $default = null)
183
- {
184
- if (!is_iterable($keys)) {
185
- throw new InvalidArgumentException('List of keys is not an iterable value');
186
- }
187
-
188
- $entries = [];
189
- foreach ($keys as $key) {
190
- $value = $this->get($key, $default);
191
- $entries[$key] = $value;
192
- }
193
-
194
- return $entries;
195
- }
196
-
197
- /**
198
- * @inheritDoc
199
- *
200
- * @throws CacheException If problem persisting.
201
- */
202
- public function setMultiple($values, $ttl = null)
203
- {
204
- if (!is_iterable($values)) {
205
- throw new InvalidArgumentException('List of keys is not an iterable value');
206
- }
207
-
208
- try {
209
- $ttl = $ttl instanceof DateInterval
210
- ? $this->getIntervalDuration($ttl)
211
- : $ttl;
212
- } catch (Exception $e) {
213
- throw new CacheException(sprintf('Could not normalize cache TTL: %s', $e->getMessage()));
214
- }
215
-
216
- foreach ($values as $key => $value) {
217
- $this->set($key, $value, $ttl);
218
- }
219
-
220
- return true;
221
- }
222
-
223
- /**
224
- * @inheritDoc
225
- *
226
- * @throws CacheException If problem deleting.
227
- */
228
- public function deleteMultiple($keys)
229
- {
230
- if (!is_iterable($keys)) {
231
- throw new InvalidArgumentException('List of keys is not an iterable value');
232
- }
233
-
234
- foreach ($keys as $key) {
235
- $this->delete($key);
236
- }
237
-
238
- return true;
239
- }
240
-
241
- /**
242
- * @inheritDoc
243
- *
244
- * @throws CacheException If problem determining.
245
- */
246
- public function has($key)
247
- {
248
- $default = $this->defaultValue;
249
- $value = $this->get($key, $default);
250
-
251
- return $value !== $default;
252
- }
253
-
254
- /**
255
- * Retrieves a transient value, by key.
256
- *
257
- * @param string $key The transient key.
258
- *
259
- * @return mixed The transient value.
260
- *
261
- * @throws RangeException If transient for key not found.
262
- * @throws RuntimeException If problem retrieving.
263
- */
264
- protected function getTransient(string $key)
265
- {
266
- $value = $this->getTransientOriginal($key);
267
-
268
- if ($value !== false) {
269
- return $value;
270
- }
271
-
272
- $prefix = static::OPTION_NAME_PREFIX_TRANSIENT;
273
- $optionKey = "{$prefix}{$key}";
274
-
275
- try {
276
- $this->getOption($optionKey);
277
- } catch (RangeException $e) {
278
- throw new RangeException(sprintf('Transient for key "%1$s" does not exist', $key), 0, $e);
279
- } catch (RuntimeException $e) {
280
- throw new RuntimeException(sprintf('Could not verify existence of transient "%1$s"', $key), 0, $e);
281
- }
282
-
283
- return $value;
284
- }
285
-
286
- /**
287
- * Retrieves a transient value as is.
288
- *
289
- * @param string $key The transient key.
290
- *
291
- * @return mixed The transient value.
292
- */
293
- protected function getTransientOriginal(string $key)
294
- {
295
- $value = get_transient($key);
296
-
297
- return $value;
298
- }
299
-
300
- /**
301
- * Assigns a transient value, by key.
302
- *
303
- * @param string $key The transient key.
304
- * @param mixed $value The transient value. Any serializable object.
305
- * @param int $ttl The amount of seconds after which the transient will expire.
306
- *
307
- * @throws RangeException If key invalid.
308
- * @throws RuntimeException If problem setting.
309
- */
310
- protected function setTransient(string $key, $value, int $ttl): void
311
- {
312
- $this->validateTransientKey($key);
313
-
314
- if(!set_transient($key, $value, $ttl)) {
315
- throw new RuntimeException(sprintf('set_transient() failed with key "%1$s" with TTL %2$ss', $key, $ttl));
316
- }
317
- }
318
-
319
- /**
320
- * Retrieves an option value by name.
321
- *
322
- * @param string $key The option name.
323
- *
324
- * @return mixed The option value.
325
- *
326
- * @throws RangeException If option value does not exist.
327
- * @throws RuntimeException If problem retrieving option.
328
- */
329
- protected function getOption(string $key)
330
- {
331
- $errorValue = $this->defaultValue;
332
- $value = $this->getOptionOriginal($key, $errorValue);
333
-
334
- if ($value === $errorValue) {
335
- throw new RangeException(sprintf('Option for key "%1$s" does not exist', $key));
336
- }
337
-
338
- return $value;
339
- }
340
-
341
- /**
342
- * Retrieves an option value by name.
343
- *
344
- * @param string $key The option key.
345
- * @param null $default The value to return if option not found.
346
- *
347
- * @return mixed The option value.
348
- */
349
- protected function getOptionOriginal(string $key, $default = null)
350
- {
351
- return get_option($key, $default);
352
- }
353
-
354
- /**
355
- * Deletes a transient with the specified key.
356
- *
357
- * @param string $key The key to delete a transient for.
358
- *
359
- * @throws RuntimeException If problem deleting.
360
- */
361
- protected function deleteTransient(string $key): void
362
- {
363
- if (!delete_transient($key)) {
364
- throw new RuntimeException(sprintf('delete_transient() failed for key "%1$s"', $key));
365
- }
366
- }
367
-
368
- /**
369
- * Validates a cache key.
370
- *
371
- * @param string $key The key to validate.
372
- *
373
- * @throws InvalidArgumentException If key is invalid.
374
- */
375
- protected function validateKey(string $key)
376
- {
377
- $prefix = $this->getTimeoutOptionNamePrefix();
378
- if (strlen("{$prefix}{$key}") > static::OPTION_NAME_MAX_LENGTH) {
379
- throw new InvalidArgumentException(sprintf(
380
- 'Given the %1$d char length of this cache pool\'s name, the key length must not exceed %2$d chars',
381
- strlen($this->poolName),
382
- static::OPTION_NAME_MAX_LENGTH - strlen($prefix)
383
- ));
384
- }
385
-
386
- $reservedSymbols = str_split(static::RESERVED_KEY_SYMBOLS, 1);
387
-
388
- foreach ($reservedSymbols as $symbol) {
389
- if (strpos($key, $symbol) !== false) {
390
- throw new InvalidArgumentException(sprintf('Cache key "%1$s" is invalid', $key));
391
- }
392
- }
393
- }
394
-
395
- /**
396
- * Validates a transient key.
397
- *
398
- * @param string $key The key to validate.
399
- *
400
- * @throws RangeException If key is invalid.
401
- */
402
- protected function validateTransientKey(string $key): void
403
- {
404
- $maxLength = $this->getTransientKeyMaxLength();
405
- $keyLength = strlen($key);
406
- if ($keyLength > $maxLength) {
407
- throw new RangeException(sprintf('Transient key "%1$s" length is %2$d chars, which exceeds max length of %3$d chars', $key, $keyLength, $maxLength));
408
- }
409
- }
410
-
411
- /**
412
- * Retrieves the amount of characters at most allowed in a transient key.
413
- *
414
- * @return int The amount of characters.
415
- */
416
- protected function getTransientKeyMaxLength(): int
417
- {
418
- $longestPrefix = $this->getTransientTimeoutOptionNamePrefix();
419
- $keyMaxLength = static::OPTION_NAME_MAX_LENGTH - strlen($longestPrefix);
420
-
421
- return $keyMaxLength;
422
- }
423
-
424
- /**
425
- * Prepares a cache key, giving it a namespace.
426
- *
427
- * @param string $key The key to prepare.
428
- *
429
- * @return string The prepared key.
430
- */
431
- protected function prepareKey(string $key): string
432
- {
433
- $namespace = $this->poolName;
434
- $separator = static::NAMESPACE_SEPARATOR;
435
- return "{$namespace}{$separator}{$key}";
436
- }
437
-
438
- /**
439
- * Retrieves all keys that correspond to this cache pool.
440
- *
441
- * @throws Exception If problem retrieving.
442
- *
443
- * @return iterable A list of keys.
444
- */
445
- protected function getAllKeys(): iterable
446
- {
447
- $tableName = $this->getTableName(static::TABLE_NAME_OPTIONS);
448
- $fieldName = static::FIELD_NAME_OPTION_NAME;
449
- $prefix = $this->getOptionNamePrefix();
450
- $query = "SELECT `$fieldName` FROM `$tableName` WHERE `$fieldName` LIKE '%$prefix'";
451
- $results = $this->selectColumn($query, $fieldName);
452
- $keys = $this->getCacheKeysFromOptionNames($results);
453
-
454
- return $keys;
455
- }
456
-
457
- /**
458
- * Runs a SELECT query, and retrieves a list of values for a field with the specified name.
459
- *
460
- * @param string $query The SELECT query.
461
- * @param string $columnName The name of the field to retrieve.
462
- * @param array $args Query parameters.
463
- *
464
- * @return iterable The list of values for the specified field.
465
- */
466
- protected function selectColumn(string $query, string $columnName, array $args = []): iterable
467
- {
468
- $query = $this->prepareQuery($query, $args);
469
- $results = $this->wpdb->get_col($query, $columnName);
470
-
471
- return $results;
472
- }
473
-
474
- /**
475
- * Retrieve the name of a DB table by its identifier.
476
- *
477
- * @param string $identifier The table identifier.
478
- *
479
- * @return string The table name in the DB.
480
- */
481
- protected function getTableName(string $identifier): string
482
- {
483
- $prefix = $this->wpdb->prefix;
484
- $tableName = "{$prefix}{$identifier}";
485
-
486
- return $tableName;
487
- }
488
-
489
- /**
490
- * Prepares a parameterized query.
491
- *
492
- * @param string $query The query to prepare. May include placeholders.
493
- * @param array $params The parameters that will replace corresponding placeholders in the query.
494
- *
495
- * @return string The prepared query. Parameters will be interpolated.
496
- */
497
- protected function prepareQuery(string $query, array $params = []): string
498
- {
499
- if (empty($params)) {
500
- return $query;
501
- }
502
-
503
- $prepared = $this->wpdb->prepare($query, ...$params);
504
-
505
- return $prepared;
506
- }
507
-
508
- /**
509
- * Retrieves all cache keys that correspond to the given list of option names
510
- *
511
- * @param iterable $optionNames
512
- *
513
- * @throws Exception If problem retrieving.
514
- *
515
- * @return iterable A list of cache keys.
516
- */
517
- protected function getCacheKeysFromOptionNames(iterable $optionNames): iterable
518
- {
519
- $keys = [];
520
-
521
- foreach ($optionNames as $name) {
522
- $key = $this->getCacheKeyFromOptionName($name);
523
- $keys[] = $key;
524
- }
525
-
526
- return $keys;
527
- }
528
-
529
- /**
530
- * Retrieves the prefix of option names that represent transients of this cache pool.
531
- *
532
- * @return string The prefix.
533
- */
534
- protected function getOptionNamePrefix(): string
535
- {
536
- $transientPrefix = static::OPTION_NAME_PREFIX_TRANSIENT;
537
- $separator = static::NAMESPACE_SEPARATOR;
538
- $namespace = $this->poolName;
539
- $prefix = "{$transientPrefix}{$namespace}{$separator}";
540
-
541
- return $prefix;
542
- }
543
-
544
- /**
545
- * Retrieves the prefix of option names that represent transient timeouts of this cache pool.
546
- *
547
- * @return string The prefix.
548
- */
549
- protected function getTimeoutOptionNamePrefix(): string
550
- {
551
- $transientPrefix = $this->getTransientTimeoutOptionNamePrefix();
552
- $separator = static::NAMESPACE_SEPARATOR;
553
- $namespace = $this->poolName;
554
- $prefix = "{$transientPrefix}{$namespace}{$separator}";
555
-
556
- return $prefix;
557
- }
558
-
559
- /**
560
- * Retrieves the prefix of an option name that represents a transient timeout.
561
- *
562
- * This is the longest prefix of transient options.
563
- *
564
- * @return string The prefix.
565
- */
566
- protected function getTransientTimeoutOptionNamePrefix(): string
567
- {
568
- return static::OPTION_NAME_PREFIX_TRANSIENT . static::OPTION_NAME_PREFIX_TIMEOUT;
569
- }
570
-
571
- /**
572
- * Retrieves the cache key that corresponds to the specified option name.
573
- *
574
- * @param string $name The option name.
575
- *
576
- * @return string The cache key.
577
- *
578
- * @throws Exception If problem determining key.
579
- */
580
- protected function getCacheKeyFromOptionName(string $name): string
581
- {
582
- $prefix = $this->getOptionNamePrefix();
583
-
584
- if (strpos($name, $prefix) !== 0) {
585
- throw new RangeException(sprintf('Option name "%1$s" is not formed according to this cache pool', $name));
586
- }
587
-
588
- $key = substr($name, strlen($prefix));
589
-
590
- return $key;
591
- }
592
-
593
- /**
594
- * Retrieves the total duration from an interval.
595
- *
596
- * @param DateInterval $interval The interval.
597
- *
598
- * @throws Exception If problem retrieving.
599
- *
600
- * @return int The duration in seconds.
601
- */
602
- protected function getIntervalDuration(DateInterval $interval): int
603
- {
604
- $reference = new DateTimeImmutable();
605
- $endTime = $reference->add($interval);
606
-
607
- return $endTime->getTimestamp() - $reference->getTimestamp();
608
- }
609
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/CachePoolFactory.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache;
5
-
6
- use DateInterval;
7
- use Psr\SimpleCache\CacheInterface;
8
- use wpdb;
9
-
10
- use function uniqid;
11
-
12
- /**
13
- * @inheritDoc
14
- */
15
- class CachePoolFactory implements CachePoolFactoryInterface
16
- {
17
- /**
18
- * @var wpdb
19
- */
20
- protected $wpdb;
21
- /**
22
- * @var int|DateInterval
23
- */
24
- protected $defaultTtl;
25
-
26
- /**
27
- * @param wpdb $wpdb The WP database adapter.
28
- * @param int $defaultTtl The TTL to use if no TTL is supplied at consumption time.
29
- */
30
- public function __construct(wpdb $wpdb, $defaultTtl = 0)
31
- {
32
- $this->wpdb = $wpdb;
33
- $this->defaultTtl = $defaultTtl;
34
- }
35
-
36
- /**
37
- * @inheritDoc
38
- */
39
- public function createCachePool(string $poolName): CacheInterface
40
- {
41
- $default = uniqid('default');
42
- $pool = new CachePool($this->wpdb, $poolName, $default, $this->defaultTtl);
43
-
44
- return $pool;
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/CachePoolFactoryInterface.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache;
5
-
6
- use Psr\SimpleCache\CacheInterface;
7
-
8
- /**
9
- * A factory that can create cache pool.
10
- */
11
- interface CachePoolFactoryInterface
12
- {
13
- /**
14
- * Creates a new cache pool.
15
- *
16
- * @param string $poolName The unique pool name.
17
- *
18
- * @return CacheInterface The new pool.
19
- */
20
- public function createCachePool(string $poolName): CacheInterface;
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/Exception/CacheException.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache\Exception;
5
-
6
- use Exception;
7
- use Psr\SimpleCache\CacheException as CacheExceptionInterface;
8
-
9
- /**
10
- * @inheritDoc
11
- */
12
- class CacheException extends Exception implements CacheExceptionInterface
13
- {
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/Exception/InvalidArgumentException.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache\Exception;
5
-
6
- use InvalidArgumentException as NativeInvalidArgumentException;
7
- use Psr\SimpleCache\InvalidArgumentException as PsrInvalidArgumentException;
8
-
9
- /**
10
- * @inheritDoc
11
- */
12
- class InvalidArgumentException extends NativeInvalidArgumentException implements PsrInvalidArgumentException
13
- {
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/SilentPool.php DELETED
@@ -1,154 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache;
5
-
6
- use Exception;
7
- use Psr\SimpleCache\InvalidArgumentException as InvalidArgumentExceptionInterface;
8
- use Psr\SimpleCache\CacheInterface;
9
-
10
- /**
11
- * Wraps a pool that throws wrong exceptions in a 100% PSR-compliant one by hiding exceptions :(
12
- *
13
- * Homage to excellent SilentPool gin.
14
- */
15
- class SilentPool implements CacheInterface
16
- {
17
- /**
18
- * @var CacheInterface
19
- */
20
- protected $cache;
21
-
22
- /**
23
- * @param CacheInterface $cache A possibly non-compliant cache pool.
24
- */
25
- public function __construct(CacheInterface $cache)
26
- {
27
- $this->cache = $cache;
28
- }
29
-
30
- /**
31
- * @inheritDoc
32
- */
33
- public function get($key, $default = null)
34
- {
35
- try {
36
- return $this->cache->get($key);
37
- } catch (Exception $e) {
38
- if ($e instanceof InvalidArgumentExceptionInterface) {
39
- throw $e;
40
- }
41
-
42
- return $default;
43
- }
44
- }
45
-
46
- /**
47
- * @inheritDoc
48
- */
49
- public function set($key, $value, $ttl = null)
50
- {
51
- try {
52
- return $this->cache->set($key, $value, $ttl);
53
- } catch (Exception $e) {
54
- if ($e instanceof InvalidArgumentExceptionInterface) {
55
- throw $e;
56
- }
57
-
58
- return false;
59
- }
60
- }
61
-
62
- /**
63
- * @inheritDoc
64
- */
65
- public function delete($key)
66
- {
67
- try {
68
- return $this->cache->delete($key);
69
- } catch (Exception $e) {
70
- if ($e instanceof InvalidArgumentExceptionInterface) {
71
- throw $e;
72
- }
73
-
74
- return false;
75
- }
76
- }
77
-
78
- /**
79
- * @inheritDoc
80
- */
81
- public function clear()
82
- {
83
- try {
84
- return $this->cache->clear();
85
- } catch (Exception $e) {
86
-
87
- return false;
88
- }
89
- }
90
-
91
- /**
92
- * @inheritDoc
93
- */
94
- public function getMultiple($keys, $default = null)
95
- {
96
- try {
97
- return $this->cache->getMultiple($keys, $default);
98
- } catch (Exception $e) {
99
- if ($e instanceof InvalidArgumentExceptionInterface) {
100
- throw $e;
101
- }
102
-
103
- return [];
104
- }
105
- }
106
-
107
- /**
108
- * @inheritDoc
109
- */
110
- public function setMultiple($values, $ttl = null)
111
- {
112
- try {
113
- return $this->cache->setMultiple($values, $ttl);
114
- } catch (Exception $e) {
115
- if ($e instanceof InvalidArgumentExceptionInterface) {
116
- throw $e;
117
- }
118
-
119
- return false;
120
- }
121
- }
122
-
123
- /**
124
- * @inheritDoc
125
- */
126
- public function deleteMultiple($keys)
127
- {
128
- try {
129
- return $this->cache->deleteMultiple($keys);
130
- } catch (Exception $e) {
131
- if ($e instanceof InvalidArgumentExceptionInterface) {
132
- throw $e;
133
- }
134
-
135
- return false;
136
- }
137
- }
138
-
139
- /**
140
- * @inheritDoc
141
- */
142
- public function has($key)
143
- {
144
- try {
145
- return $this->cache->has($key);
146
- } catch (Exception $e) {
147
- if ($e instanceof InvalidArgumentExceptionInterface) {
148
- throw $e;
149
- }
150
-
151
- return false;
152
- }
153
- }
154
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/wp-oop/transient-cache/src/SilentPoolFactory.php DELETED
@@ -1,33 +0,0 @@
1
- <?php
2
- declare(strict_types=1);
3
-
4
- namespace WpOop\TransientCache;
5
-
6
- use Psr\SimpleCache\CacheInterface;
7
-
8
- /**
9
- * Creates cache pools that throw only PSR-legal exceptions.
10
- */
11
- class SilentPoolFactory implements CachePoolFactoryInterface
12
- {
13
- /**
14
- * @var CachePoolFactoryInterface
15
- */
16
- protected $factory;
17
-
18
- /**
19
- * @param CachePoolFactoryInterface $factory A factory of possibly non-compliant cache pools.
20
- */
21
- public function __construct(CachePoolFactoryInterface $factory)
22
- {
23
- $this->factory = $factory;
24
- }
25
-
26
- /**
27
- * @inheritDoc
28
- */
29
- public function createCachePool(string $poolName): CacheInterface
30
- {
31
- return new SilentPool($this->factory->createCachePool($poolName));
32
- }
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
woocommerce-paypal-payments.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce PayPal Payments
4
  * Plugin URI: https://woocommerce.com/products/woocommerce-paypal-payments/
5
  * Description: PayPal's latest complete payments processing solution. Accept PayPal, PayPal Credit, credit/debit cards, alternative digital wallets local payment types and bank accounts. Turn on only PayPal options or process a full suite of payment methods. Enable global transaction with extensive currency and country coverage.
6
- * Version: 1.0.1
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com/
9
  * License: GPL-2.0
3
  * Plugin Name: WooCommerce PayPal Payments
4
  * Plugin URI: https://woocommerce.com/products/woocommerce-paypal-payments/
5
  * Description: PayPal's latest complete payments processing solution. Accept PayPal, PayPal Credit, credit/debit cards, alternative digital wallets local payment types and bank accounts. Turn on only PayPal options or process a full suite of payment methods. Enable global transaction with extensive currency and country coverage.
6
+ * Version: 1.0.2
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com/
9
  * License: GPL-2.0