Remove XMLRPC Pingback Ping - Version 1.5

Version Description

  • Code hardening.
  • Verified compatibility with WP 5.9.3
Download this release

Release Info

Developer cleverplugins
Plugin Icon 128x128 Remove XMLRPC Pingback Ping
Version 1.5
Comparing to
See all releases

Code changes from version 1.4 to 1.5

Files changed (44) hide show
  1. README.txt +15 -5
  2. composer.json +0 -5
  3. composer.lock +0 -56
  4. phpcs.xml +0 -38
  5. remove-xmlrpc-pingback-ping.php +159 -126
  6. vendor/autoload.php +5 -0
  7. vendor/composer/ClassLoader.php +141 -14
  8. vendor/composer/InstalledVersions.php +352 -0
  9. vendor/composer/autoload_classmap.php +22 -1
  10. vendor/composer/autoload_namespaces.php +1 -1
  11. vendor/composer/autoload_psr4.php +3 -1
  12. vendor/composer/autoload_real.php +5 -22
  13. vendor/composer/autoload_static.php +42 -0
  14. vendor/composer/installed.json +224 -39
  15. vendor/composer/installed.php +50 -0
  16. vendor/composer/platform_check.php +26 -0
  17. vendor/typisttech/imposter-plugin/LICENSE +21 -0
  18. vendor/typisttech/imposter-plugin/README.md +199 -0
  19. vendor/typisttech/imposter-plugin/composer.json +66 -0
  20. vendor/typisttech/imposter-plugin/composer.lock +5008 -0
  21. vendor/typisttech/imposter-plugin/src/AutoloadMerger.php +40 -0
  22. vendor/typisttech/imposter-plugin/src/ImposterPlugin.php +70 -0
  23. vendor/typisttech/imposter-plugin/src/Transformer.php +53 -0
  24. vendor/typisttech/imposter/LICENSE +21 -0
  25. vendor/typisttech/imposter/README.md +320 -0
  26. vendor/typisttech/imposter/composer.json +69 -0
  27. vendor/typisttech/imposter/composer.lock +4108 -0
  28. vendor/typisttech/imposter/src/ArrayUtil.php +35 -0
  29. vendor/typisttech/imposter/src/Config.php +81 -0
  30. vendor/typisttech/imposter/src/ConfigCollection.php +43 -0
  31. vendor/typisttech/imposter/src/ConfigCollectionFactory.php +68 -0
  32. vendor/typisttech/imposter/src/ConfigCollectionInterface.php +25 -0
  33. vendor/typisttech/imposter/src/ConfigFactory.php +30 -0
  34. vendor/typisttech/imposter/src/ConfigInterface.php +20 -0
  35. vendor/typisttech/imposter/src/Filesystem.php +94 -0
  36. vendor/typisttech/imposter/src/FilesystemInterface.php +61 -0
  37. vendor/typisttech/imposter/src/Imposter.php +135 -0
  38. vendor/typisttech/imposter/src/ImposterFactory.php +30 -0
  39. vendor/typisttech/imposter/src/ImposterInterface.php +38 -0
  40. vendor/typisttech/imposter/src/ProjectConfig.php +61 -0
  41. vendor/typisttech/imposter/src/ProjectConfigInterface.php +24 -0
  42. vendor/typisttech/imposter/src/StringUtil.php +23 -0
  43. vendor/typisttech/imposter/src/Transformer.php +166 -0
  44. vendor/typisttech/imposter/src/TransformerInterface.php +17 -0
README.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Remove & Disable XML-RPC Pingback ===
2
- Contributors: cleverplugins, lkoudal
3
  Tags: xmlrpc, xml-rpc, ping, pingback, disable ping, disable xmlrpc, disable pingback, disable xml-rpc
4
  Requires at least: 5.2
5
  Requires PHP: 5.6
6
- Tested up to: 5.8
7
- Stable tag: 1.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -35,7 +35,7 @@ Use [Sucuri's WordPress DDOS Scanner](http://labs.sucuri.net/?is-my-wordpress-dd
35
 
36
  = Why Not Just Disable XMLRPC Altogether? =
37
 
38
- Yes, you can choose to do that, but if you use popular plugins like JetPack (that use XMLRPC) then those plugins will stop working 100%. That is why this small plugin exists.
39
 
40
  == Installation ==
41
 
@@ -74,6 +74,11 @@ It could be! Use [Sucuri's WordPress DDOS Scanner](https://labs.sucuri.net/?is-m
74
 
75
  == Changelog ==
76
 
 
 
 
 
 
77
  = 1.4 =
78
  * New: Added a count under "Settings -> General" to see number of blocked attempts.
79
  * Tested up to WP 5.8
@@ -92,4 +97,9 @@ It could be! Use [Sucuri's WordPress DDOS Scanner](https://labs.sucuri.net/?is-m
92
  * version bump
93
 
94
  = 1.0.0 =
95
- * First release
 
 
 
 
 
1
  === Remove & Disable XML-RPC Pingback ===
2
+ Contributors: lkoudal, cleverplugins
3
  Tags: xmlrpc, xml-rpc, ping, pingback, disable ping, disable xmlrpc, disable pingback, disable xml-rpc
4
  Requires at least: 5.2
5
  Requires PHP: 5.6
6
+ Tested up to: 5.9.3
7
+ Stable tag: 1.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
35
 
36
  = Why Not Just Disable XMLRPC Altogether? =
37
 
38
+ Yes, you can choose to do that, but if you use popular plugins like JetPack (that use XMLRPC) then those plugins will stop working. That is why this small plugin exists.
39
 
40
  == Installation ==
41
 
74
 
75
  == Changelog ==
76
 
77
+ = 1.5 =
78
+ * Code hardening.
79
+ * Verified compatibility with WP 5.9.3
80
+
81
+
82
  = 1.4 =
83
  * New: Added a count under "Settings -> General" to see number of blocked attempts.
84
  * Tested up to WP 5.8
97
  * version bump
98
 
99
  = 1.0.0 =
100
+ * First release
101
+
102
+ == Upgrade Notice ==
103
+
104
+ = 1.5 =
105
+ Worth the update...
composer.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "require": {
3
- "collizo4sky/persist-admin-notices-dismissal": "^1.4"
4
- }
5
- }
 
 
 
 
 
composer.lock DELETED
@@ -1,56 +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": "c7835049a1679de286f7a9cb1e8389d5",
8
- "packages": [
9
- {
10
- "name": "collizo4sky/persist-admin-notices-dismissal",
11
- "version": "1.4.4",
12
- "source": {
13
- "type": "git",
14
- "url": "https://github.com/w3guy/persist-admin-notices-dismissal.git",
15
- "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4"
16
- },
17
- "dist": {
18
- "type": "zip",
19
- "url": "https://api.github.com/repos/w3guy/persist-admin-notices-dismissal/zipball/900739eb6b0ec0210465f5983a6d4e0e420289e4",
20
- "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4",
21
- "shasum": ""
22
- },
23
- "require": {
24
- "php": ">=5.4"
25
- },
26
- "type": "library",
27
- "autoload": {
28
- "classmap": [
29
- "persist-admin-notices-dismissal.php"
30
- ]
31
- },
32
- "notification-url": "https://packagist.org/downloads/",
33
- "license": [
34
- "GPL-3.0-or-later"
35
- ],
36
- "authors": [
37
- {
38
- "name": "Collins Agbonghama",
39
- "email": "me@w3guy.com",
40
- "role": "developer"
41
- }
42
- ],
43
- "description": "Simple library to persist dismissal of admin notices across pages in WordPress dashboard.",
44
- "time": "2020-12-31T17:12:37+00:00"
45
- }
46
- ],
47
- "packages-dev": [],
48
- "aliases": [],
49
- "minimum-stability": "stable",
50
- "stability-flags": [],
51
- "prefer-stable": false,
52
- "prefer-lowest": false,
53
- "platform": [],
54
- "platform-dev": [],
55
- "plugin-api-version": "1.1.0"
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
phpcs.xml DELETED
@@ -1,38 +0,0 @@
1
- <?xml version="1.0"?>
2
- <ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WordPress Coding Standards" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
3
-
4
- <description>The Coding standard for the WordPress Coding Standards itself.</description>
5
-
6
- <file>.</file>
7
-
8
- <arg value="sp"/>
9
- <arg name="extensions" value="php"/>
10
-
11
- <exclude-pattern>/bin/class-ruleset-test.php</exclude-pattern>
12
- <!-- Exclude Composer vendor directory. -->
13
- <exclude-pattern>*/vendor/*</exclude-pattern>
14
-
15
- <rule ref="WordPress-Extra">
16
- <exclude name="WordPress.Files.FileName"/>
17
- </rule>
18
-
19
- <!-- <rule ref="WordPress-Docs"/> -->
20
-
21
- <!-- Enforce PSR1 compatible namespaces. -->
22
- <rule ref="PSR1.Classes.ClassDeclaration"/>
23
-
24
- <rule ref="WordPress.Arrays.MultipleStatementAlignment">
25
- <properties>
26
- <property name="alignMultilineItems" value="!=100"/>
27
- <property name="exact" value="false" phpcs-only="true"/>
28
- </properties>
29
- </rule>
30
-
31
- <rule ref="PSR2.Methods.FunctionClosingBrace"/>
32
-
33
- <rule ref="WordPress.NamingConventions.PrefixAllGlobals.DeprecatedWhitelistCommentFound">
34
- <!-- False positive for whitelist comment recognition, but no use fixing this now
35
- as the WPCS native whitelist comments are deprecated anyhow. -->
36
- <exclude-pattern>/WordPress/AbstractClassRestrictionsSniff\.php$</exclude-pattern>
37
- </rule>
38
- </ruleset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
remove-xmlrpc-pingback-ping.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Remove XMLRPC Pingback Ping
4
  Plugin URI: http://wordpress.org/plugins/remove-xmlrpc-pingback-ping
5
  Description: Prevent WordPress from participating in and being a victim of pingback denial of service attacks.
6
- Version: 1.4
7
  Author: WP Security Ninja
8
  Author URI: https://wpsecurityninja.com/
9
  License: GPL-2.0+
@@ -27,155 +27,191 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
27
  */
28
 
29
  // If this file is called directly, abort.
30
- if ( ! defined( 'WPINC' ) ) {
31
  die;
32
  }
33
 
34
- define( 'RXPP_PLUGIN_URL', plugin_dir_path( __FILE__ ) );
35
-
36
- require RXPP_PLUGIN_URL . 'vendor/autoload.php';
37
- add_action( 'admin_init', array( 'PAnD', 'init' ) );
38
-
39
- add_filter( 'admin_init', 'xrpp_settings_register_fields' );
40
- add_action( 'admin_notices', 'xrpp_admin_notice_blocked_attempts' );
41
- add_filter( 'xmlrpc_methods', 'rxpp_remove_xmlrpc_pingback_ping' );
42
- register_uninstall_hook( __FILE__, 'do_rxpp_uninstall_function' );
43
-
44
- /**
45
- * Returns current plugin version (read dynamically from file itself)
46
- *
47
- * @author Lars Koudal
48
- * @since v0.0.1
49
- * @version v1.0.0 Monday, August 9th, 2021.
50
- * @access public static
51
- * @return mixed
52
- */
53
- function xrpp_get_plugin_version() {
54
- $plugin_data = get_file_data( __FILE__, array( 'version' => 'Version' ), 'plugin' );
 
55
  return $plugin_data['version'];
56
  }
57
 
58
 
59
 
60
- /**
61
- * xrpp_admin_notice_blocked_attempts.
62
- *
63
- * @author Lars Koudal
64
- * @since v0.0.1
65
- * @version v1.0.0 Monday, August 9th, 2021.
66
- * @return void
67
- */
68
- function xrpp_admin_notice_blocked_attempts() {
 
 
 
 
 
 
69
 
70
- if ( PAnD::is_admin_notice_active( 'xrpp-newsletter-notice-30' ) ) {
71
- ?>
72
- <div data-dismissible="xrpp-newsletter-notice-30" class="updated notice notice-success is-dismissible">
73
- <h3>Join the WP Security Ninja Newsletter</h3>
74
-
75
- <p>WordPress security made easy - Protect your website from hackers and malicious software.</p>
76
-
77
- <form class="ml-block-form" action="https://static.mailerlite.com/webforms/submit/h9i9y0" data-code="h9i9y0" method="post" target="_blank">
78
-
79
- <table>
80
- <tbody>
81
- <tr>
82
- <td>
83
- <img src="<?php echo esc_url( plugin_dir_url( __FILE__ ) . 'images/sn-icon.png' ); ?>" class="alignleft" width="100" style="margin-right:10px;" alt="Sign up for wpsecurityninja.com newsletter">
84
- </td>
85
- <td>
86
- <input type="text" class="regular-text" data-inputmask="" name="fields[name]" placeholder="Name" autocomplete="name" style="width:15em;">
87
- </td>
88
- <td>
89
- <input aria-label="email" aria-required="true" data-inputmask="" type="email" class="regular-text required email" data-inputmask="" name="fields[email]" placeholder="Email" autocomplete="email" style="width:15em;">
90
- </td>
91
- <td>
92
- <button type="submit" class="button button-primary">Subscribe</button>
93
- </td>
94
- </tr>
95
- </table>
96
-
97
- <input type="hidden" name="fields[signupsource]" value="RXPP Plugin <?php echo esc_attr( xrpp_get_plugin_version() ); ?>">
98
- <input type="hidden" name="ml-submit" value="1">
99
- <input type="hidden" name="anticsrf" value="true">
100
- </form>
101
- <p>You can unsubscribe anytime. For more details, review our <a href="https://wpsecurityninja.com/privacy-policy/" target="_blank">Privacy Policy</a>.</p>
102
- <p><small>Signup form is shown every 30 days until dismissed</small></p>
 
 
103
  </div>
104
 
105
- <?php
106
  }
107
 
108
- if ( ! PAnD::is_admin_notice_active( 'xrpp-admin-notice-14' ) ) {
109
  return;
110
  }
111
- $rxpp_blocked_methods_count = get_option( 'rxpp_blocked_methods_count', false );
112
  ?>
113
- <div data-dismissible="xrpp-admin-notice-14" class="updated notice notice-success is-dismissible">
114
- <h2>Protected from XML-RPC pingback DOS attacks!</h2>
115
- <p>You are preventing denial of service attacks on your website.</p>
116
  <?php
117
- if ( $rxpp_blocked_methods_count ) {
118
- ?>
119
- <p><strong>
120
- <?php
121
- // translators: Show number of attempts blocked so far
122
- printf( esc_html__( '%s blocked attempts so far!', 'remove-xmlrpc-pingback-ping' ), esc_attr( $rxpp_blocked_methods_count ) );
123
- ?>
124
  </strong></p>
125
- <?php
126
  }
127
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
128
 
 
129
 
130
- <p>Serious about security? Try out our Security Ninja plugin that protects you for many more security problems.</p>
 
 
131
  <table>
132
- <th>
133
- <td>
134
- <a class="button button-secondary" href="https://wpsecurityninja.com/?utm_source=remove_xmlrpc_plugin&utm_medium=plugin&utm_content=notice" aria-label="Visit wpsecurityninja.com now" data-name="WP Security Ninja" target="_blank" rel="noopener">Visit wpsecurityninja.com</a>
135
- </td>
136
- <td>or</td>
137
- <td>
138
- <a class="button button-primary" href="<?php echo esc_url( admin_url( 'plugin-install.php?s="Security+Ninja+–+Secure+Firewall+%26+Secure+Malware+Scanner"+"WP+Security+Ninja"&tab=search&type=term' ) ); ?>" aria-label="Install WP Security Ninja free" data-name="WP Security Ninja">Install for free</a>
139
- </td>
140
- </th>
 
 
 
141
  </table>
142
- <p></p>
143
 
144
- </div>
145
- <?php
 
 
 
 
 
 
 
146
  }
147
 
148
 
149
 
150
- /**
151
- * rxpp_remove_xmlrpc_pingback_ping.
152
- *
153
- * @author Lars Koudal
154
- * @since v0.0.1
155
- * @version v1.0.0 Monday, August 9th, 2021.
156
- * @param mixed $methods
157
- * @return mixed
158
- */
159
- function rxpp_remove_xmlrpc_pingback_ping( $methods ) {
160
- unset( $methods['pingback.ping'] );
 
161
  // update count
162
- $rxpp_blocked_methods_count = get_option( 'rxpp_blocked_methods_count', 0 );
163
  $rxpp_blocked_methods_count++;
164
- update_option( 'rxpp_blocked_methods_count', $rxpp_blocked_methods_count, false );
165
  return $methods;
166
  }
167
 
168
 
169
- /**
170
- * do_rxpp_uninstall_function.
171
- *
172
- * @author Lars Koudal
173
- * @since v0.0.1
174
- * @version v1.0.0 Monday, August 9th, 2021.
175
- * @return void
176
- */
177
- function do_rxpp_uninstall_function() {
178
- delete_option( 'rxpp_blocked_methods_count' );
 
179
  }
180
 
181
 
@@ -188,9 +224,10 @@ function do_rxpp_uninstall_function() {
188
  * @global
189
  * @return void
190
  */
191
- function xrpp_settings_register_fields() {
192
- register_setting( 'general', 'blocked_pingback_ping', 'esc_attr' );
193
- add_settings_field( 'blocked_pingback_ping', '<label for="blocked_pingback_ping">' . __( 'Blocked pingback.ping attacks', 'xrpp_blocked_count' ) . '</label>', 'xrpp_settings_fields_html', 'general' );
 
194
  }
195
 
196
 
@@ -203,13 +240,9 @@ function xrpp_settings_register_fields() {
203
  * @global
204
  * @return void
205
  */
206
- function xrpp_settings_fields_html() {
207
- $value = get_option( 'rxpp_blocked_methods_count', 0 );
208
- echo esc_html( number_format_i18n( $value ) );
 
209
  echo '<p class="description">Proteced by the Remove & Disable XML-RPC Pingback plugin.</p>';
210
  }
211
-
212
-
213
-
214
-
215
-
3
  Plugin Name: Remove XMLRPC Pingback Ping
4
  Plugin URI: http://wordpress.org/plugins/remove-xmlrpc-pingback-ping
5
  Description: Prevent WordPress from participating in and being a victim of pingback denial of service attacks.
6
+ Version: 1.5
7
  Author: WP Security Ninja
8
  Author URI: https://wpsecurityninja.com/
9
  License: GPL-2.0+
27
  */
28
 
29
  // If this file is called directly, abort.
30
+ if (!defined('WPINC')) {
31
  die;
32
  }
33
 
34
+ define('RXPP_PLUGIN_URL', plugin_dir_path(__FILE__));
35
+
36
+ require RXPP_PLUGIN_URL . 'vendor/autoload.php';
37
+ add_action('admin_init', array('PAnD', 'init'));
38
+
39
+ add_filter('admin_init', 'xrpp_settings_register_fields');
40
+ add_action('admin_notices', 'xrpp_admin_notice_blocked_attempts');
41
+ add_filter('xmlrpc_methods', 'rxpp_remove_xmlrpc_pingback_ping');
42
+ register_uninstall_hook(__FILE__, 'do_rxpp_uninstall_function');
43
+
44
+ /**
45
+ * Returns current plugin version (read dynamically from file itself)
46
+ *
47
+ * @author Lars Koudal
48
+ * @since v0.0.1
49
+ * @version v1.0.0 Monday, August 9th, 2021.
50
+ * @access public static
51
+ * @return mixed
52
+ */
53
+ function xrpp_get_plugin_version()
54
+ {
55
+ $plugin_data = get_file_data(__FILE__, array('version' => 'Version'), 'plugin');
56
  return $plugin_data['version'];
57
  }
58
 
59
 
60
 
61
+ /**
62
+ * xrpp_admin_notice_blocked_attempts.
63
+ *
64
+ * @author Lars Koudal
65
+ * @since v0.0.1
66
+ * @version v1.0.0 Monday, August 9th, 2021.
67
+ * @return void
68
+ */
69
+ function xrpp_admin_notice_blocked_attempts()
70
+ {
71
+
72
+ if (PAnD::is_admin_notice_active('xrpp-newsletter-notice-30')) {
73
+
74
+ $current_user = wp_get_current_user();
75
+ $admin_name = $current_user->user_firstname;
76
 
77
+ if ($current_user->user_lastname) {
78
+ $admin_name .= ' ' . $current_user->user_lastname;
79
+ }
80
+ ?>
81
+ <div data-dismissible="xrpp-newsletter-notice-30" class="updated notice notice-success is-dismissible">
82
+ <h3>Join the WP Security Ninja Newsletter</h3>
83
+
84
+ <p>WordPress security made easy - Protect your website from hackers and malicious software.</p>
85
+
86
+ <form class="ml-block-form" action="https://static.mailerlite.com/webforms/submit/h9i9y0" data-code="h9i9y0" method="post" target="_blank">
87
+
88
+ <table>
89
+ <tbody>
90
+ <tr>
91
+ <td>
92
+ <img src="<?php echo esc_url(plugin_dir_url(__FILE__) . 'images/sn-icon.png'); ?>" class="alignleft" width="100" style="margin-right:10px;" alt="Sign up for wpsecurityninja.com newsletter">
93
+ </td>
94
+ <td>
95
+ <input type="text" class="regular-text" data-inputmask="" name="fields[name]" placeholder="Name" autocomplete="name" value="<?php echo esc_html($admin_name); ?>" style="width:15em;">
96
+ </td>
97
+ <td>
98
+ <input aria-label="email" aria-required="true" data-inputmask="" type="email" class="regular-text required email" data-inputmask="" name="fields[email]" placeholder="Email" autocomplete="email" value="<?php echo esc_html($current_user->user_email); ?>" style="width:15em;">
99
+ </td>
100
+ <td>
101
+ <button type="submit" class="button button-primary">Subscribe</button>
102
+ </td>
103
+ </tr>
104
+ </table>
105
+
106
+ <input type="hidden" name="fields[signupsource]" value="RXPP Plugin <?php echo esc_attr(xrpp_get_plugin_version()); ?>">
107
+ <input type="hidden" name="ml-submit" value="1">
108
+ <input type="hidden" name="anticsrf" value="true">
109
+ </form>
110
+ <p>You can unsubscribe anytime. For more details, review our <a href="https://wpsecurityninja.com/privacy-policy/" target="_blank">Privacy Policy</a>.</p>
111
+ <p><small>Signup form is shown every 30 days until dismissed</small></p>
112
  </div>
113
 
114
+ <?php
115
  }
116
 
117
+ if (!PAnD::is_admin_notice_active('xrpp-admin-notice-14')) {
118
  return;
119
  }
120
+ $rxpp_blocked_methods_count = get_option('rxpp_blocked_methods_count', false);
121
  ?>
122
+ <div data-dismissible="xrpp-admin-notice-14" class="updated notice notice-success is-dismissible">
123
+ <h2>You are protected from XML-RPC pingback DOS attacks!</h2>
124
+ <p>You are preventing denial of service attacks on your website.</p>
125
  <?php
126
+ if ($rxpp_blocked_methods_count) {
127
+ ?>
128
+ <p><strong>
129
+ <?php
130
+ // translators: Show number of attempts blocked so far
131
+ printf(esc_html__('%s blocked attempts so far!', 'remove-xmlrpc-pingback-ping'), esc_attr($rxpp_blocked_methods_count));
132
+ ?>
133
  </strong></p>
134
+ <?php
135
  }
136
  ?>
137
+ <?php
138
+
139
+ $current_user = wp_get_current_user();
140
+ $admin_name = $current_user->user_firstname;
141
+
142
+ if ($current_user->user_lastname) {
143
+ $admin_name .= ' ' . $current_user->user_lastname;
144
+ }
145
+
146
+ if ('' === $admin_name) {
147
+ $admin_name = $current_user->display_name;
148
+ }
149
+ ?>
150
 
151
+ <p>Serious about security? Try out our Security Ninja plugin that protects you for many more security problems. <a class="button button-primary button-small" href="https://wpsecurityninja.com/?utm_source=remove_xmlrpc_plugin&utm_medium=plugin&utm_content=notice" aria-label="Visit wpsecurityninja.com now" data-name="WP Security Ninja" target="_blank" rel="noopener">Visit wpsecurityninja.com</a></p>
152
 
153
+ <form class="ml-block-form" action="https://static.mailerlite.com/webforms/submit/h9i9y0" data-code="h9i9y0" method="post" target="_blank">
154
+ <hr>
155
+ <p>Sign up for our newsletter here:</p>
156
  <table>
157
+ <tbody>
158
+ <tr>
159
+ <td>
160
+ <input type="text" class="regular-text" data-inputmask="" name="fields[name]" placeholder="Name" autocomplete="name" value="<?php echo esc_html($admin_name); ?>" style="width:15em;">
161
+ </td>
162
+ <td>
163
+ <input aria-label="email" aria-required="true" data-inputmask="" type="email" class="regular-text required email" data-inputmask="" name="fields[email]" placeholder="Email" autocomplete="email" value="<?php echo esc_html($current_user->user_email); ?>" style="width:15em;">
164
+ </td>
165
+ <td>
166
+ <button type="submit" class="button button-primary">Subscribe</button>
167
+ </td>
168
+ </tr>
169
  </table>
 
170
 
171
+ <input type="hidden" name="fields[signupsource]" value="RXPP Plugin <?php echo esc_attr(xrpp_get_plugin_version()); ?>">
172
+ <input type="hidden" name="ml-submit" value="1">
173
+ <input type="hidden" name="anticsrf" value="true">
174
+ </form>
175
+ <br/>
176
+
177
+
178
+ </div>
179
+ <?php
180
  }
181
 
182
 
183
 
184
+ /**
185
+ * rxpp_remove_xmlrpc_pingback_ping.
186
+ *
187
+ * @author Lars Koudal
188
+ * @since v0.0.1
189
+ * @version v1.0.0 Monday, August 9th, 2021.
190
+ * @param mixed $methods
191
+ * @return mixed
192
+ */
193
+ function rxpp_remove_xmlrpc_pingback_ping($methods)
194
+ {
195
+ unset($methods['pingback.ping']);
196
  // update count
197
+ $rxpp_blocked_methods_count = get_option('rxpp_blocked_methods_count', 0);
198
  $rxpp_blocked_methods_count++;
199
+ update_option('rxpp_blocked_methods_count', $rxpp_blocked_methods_count, false);
200
  return $methods;
201
  }
202
 
203
 
204
+ /**
205
+ * do_rxpp_uninstall_function.
206
+ *
207
+ * @author Lars Koudal
208
+ * @since v0.0.1
209
+ * @version v1.0.0 Monday, August 9th, 2021.
210
+ * @return void
211
+ */
212
+ function do_rxpp_uninstall_function()
213
+ {
214
+ delete_option('rxpp_blocked_methods_count');
215
  }
216
 
217
 
224
  * @global
225
  * @return void
226
  */
227
+ function xrpp_settings_register_fields()
228
+ {
229
+ register_setting('general', 'blocked_pingback_ping', 'esc_attr');
230
+ add_settings_field('blocked_pingback_ping', '<label for="blocked_pingback_ping">' . __('Blocked pingback.ping attacks', 'xrpp_blocked_count') . '</label>', 'xrpp_settings_fields_html', 'general');
231
  }
232
 
233
 
240
  * @global
241
  * @return void
242
  */
243
+ function xrpp_settings_fields_html()
244
+ {
245
+ $value = get_option('rxpp_blocked_methods_count', 0);
246
+ echo esc_html(number_format_i18n($value));
247
  echo '<p class="description">Proteced by the Remove & Disable XML-RPC Pingback plugin.</p>';
248
  }
 
 
 
 
 
vendor/autoload.php CHANGED
@@ -2,6 +2,11 @@
2
 
3
  // autoload.php @generated by Composer
4
 
 
 
 
 
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
  return ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94::getLoader();
2
 
3
  // autoload.php @generated by Composer
4
 
5
+ if (PHP_VERSION_ID < 50600) {
6
+ echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
7
+ exit(1);
8
+ }
9
+
10
  require_once __DIR__ . '/composer/autoload_real.php';
11
 
12
  return ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -37,26 +37,80 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
 
 
 
45
  // PSR-4
 
 
 
 
46
  private $prefixLengthsPsr4 = array();
 
 
 
 
47
  private $prefixDirsPsr4 = array();
 
 
 
 
48
  private $fallbackDirsPsr4 = array();
49
 
50
  // PSR-0
 
 
 
 
51
  private $prefixesPsr0 = array();
 
 
 
 
52
  private $fallbackDirsPsr0 = array();
53
 
 
54
  private $useIncludePath = false;
 
 
 
 
 
55
  private $classMap = array();
 
 
56
  private $classMapAuthoritative = false;
 
 
 
 
 
57
  private $missingClasses = array();
 
 
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
@@ -66,28 +120,47 @@ class ClassLoader
66
  return array();
67
  }
68
 
 
 
 
 
69
  public function getPrefixesPsr4()
70
  {
71
  return $this->prefixDirsPsr4;
72
  }
73
 
 
 
 
 
74
  public function getFallbackDirs()
75
  {
76
  return $this->fallbackDirsPsr0;
77
  }
78
 
 
 
 
 
79
  public function getFallbackDirsPsr4()
80
  {
81
  return $this->fallbackDirsPsr4;
82
  }
83
 
 
 
 
 
84
  public function getClassMap()
85
  {
86
  return $this->classMap;
87
  }
88
 
89
  /**
90
- * @param array $classMap Class to filename map
 
 
 
91
  */
92
  public function addClassMap(array $classMap)
93
  {
@@ -102,9 +175,11 @@ class ClassLoader
102
  * Registers a set of PSR-0 directories for a given prefix, either
103
  * appending or prepending to the ones previously set for this prefix.
104
  *
105
- * @param string $prefix The prefix
106
- * @param array|string $paths The PSR-0 root directories
107
- * @param bool $prepend Whether to prepend the directories
 
 
108
  */
109
  public function add($prefix, $paths, $prepend = false)
110
  {
@@ -147,11 +222,13 @@ class ClassLoader
147
  * Registers a set of PSR-4 directories for a given namespace, either
148
  * appending or prepending to the ones previously set for this namespace.
149
  *
150
- * @param string $prefix The prefix/namespace, with trailing '\\'
151
- * @param array|string $paths The PSR-4 base directories
152
- * @param bool $prepend Whether to prepend the directories
153
  *
154
  * @throws \InvalidArgumentException
 
 
155
  */
156
  public function addPsr4($prefix, $paths, $prepend = false)
157
  {
@@ -195,8 +272,10 @@ class ClassLoader
195
  * Registers a set of PSR-0 directories for a given prefix,
196
  * replacing any others previously set for this prefix.
197
  *
198
- * @param string $prefix The prefix
199
- * @param array|string $paths The PSR-0 base directories
 
 
200
  */
201
  public function set($prefix, $paths)
202
  {
@@ -211,10 +290,12 @@ class ClassLoader
211
  * Registers a set of PSR-4 directories for a given namespace,
212
  * replacing any others previously set for this namespace.
213
  *
214
- * @param string $prefix The prefix/namespace, with trailing '\\'
215
- * @param array|string $paths The PSR-4 base directories
216
  *
217
  * @throws \InvalidArgumentException
 
 
218
  */
219
  public function setPsr4($prefix, $paths)
220
  {
@@ -234,6 +315,8 @@ class ClassLoader
234
  * Turns on searching the include path for class files.
235
  *
236
  * @param bool $useIncludePath
 
 
237
  */
238
  public function setUseIncludePath($useIncludePath)
239
  {
@@ -256,6 +339,8 @@ class ClassLoader
256
  * that have not been registered with the class map.
257
  *
258
  * @param bool $classMapAuthoritative
 
 
259
  */
260
  public function setClassMapAuthoritative($classMapAuthoritative)
261
  {
@@ -276,6 +361,8 @@ class ClassLoader
276
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
  *
278
  * @param string|null $apcuPrefix
 
 
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
@@ -296,25 +383,44 @@ class ClassLoader
296
  * Registers this instance as an autoloader.
297
  *
298
  * @param bool $prepend Whether to prepend the autoloader or not
 
 
299
  */
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
306
  * Unregisters this instance as an autoloader.
 
 
307
  */
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
314
  * Loads the given class or interface.
315
  *
316
  * @param string $class The name of the class
317
- * @return bool|null True if loaded, null otherwise
318
  */
319
  public function loadClass($class)
320
  {
@@ -323,6 +429,8 @@ class ClassLoader
323
 
324
  return true;
325
  }
 
 
326
  }
327
 
328
  /**
@@ -367,6 +475,21 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
@@ -438,6 +561,10 @@ class ClassLoader
438
  * Scope isolated include.
439
  *
440
  * Prevents access to $this/self from included files.
 
 
 
 
441
  */
442
  function includeFile($file)
443
  {
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
45
+ /** @var ?string */
46
+ private $vendorDir;
47
+
48
  // PSR-4
49
+ /**
50
+ * @var array[]
51
+ * @psalm-var array<string, array<string, int>>
52
+ */
53
  private $prefixLengthsPsr4 = array();
54
+ /**
55
+ * @var array[]
56
+ * @psalm-var array<string, array<int, string>>
57
+ */
58
  private $prefixDirsPsr4 = array();
59
+ /**
60
+ * @var array[]
61
+ * @psalm-var array<string, string>
62
+ */
63
  private $fallbackDirsPsr4 = array();
64
 
65
  // PSR-0
66
+ /**
67
+ * @var array[]
68
+ * @psalm-var array<string, array<string, string[]>>
69
+ */
70
  private $prefixesPsr0 = array();
71
+ /**
72
+ * @var array[]
73
+ * @psalm-var array<string, string>
74
+ */
75
  private $fallbackDirsPsr0 = array();
76
 
77
+ /** @var bool */
78
  private $useIncludePath = false;
79
+
80
+ /**
81
+ * @var string[]
82
+ * @psalm-var array<string, string>
83
+ */
84
  private $classMap = array();
85
+
86
+ /** @var bool */
87
  private $classMapAuthoritative = false;
88
+
89
+ /**
90
+ * @var bool[]
91
+ * @psalm-var array<string, bool>
92
+ */
93
  private $missingClasses = array();
94
+
95
+ /** @var ?string */
96
  private $apcuPrefix;
97
 
98
+ /**
99
+ * @var self[]
100
+ */
101
+ private static $registeredLoaders = array();
102
+
103
+ /**
104
+ * @param ?string $vendorDir
105
+ */
106
+ public function __construct($vendorDir = null)
107
+ {
108
+ $this->vendorDir = $vendorDir;
109
+ }
110
+
111
+ /**
112
+ * @return string[]
113
+ */
114
  public function getPrefixes()
115
  {
116
  if (!empty($this->prefixesPsr0)) {
120
  return array();
121
  }
122
 
123
+ /**
124
+ * @return array[]
125
+ * @psalm-return array<string, array<int, string>>
126
+ */
127
  public function getPrefixesPsr4()
128
  {
129
  return $this->prefixDirsPsr4;
130
  }
131
 
132
+ /**
133
+ * @return array[]
134
+ * @psalm-return array<string, string>
135
+ */
136
  public function getFallbackDirs()
137
  {
138
  return $this->fallbackDirsPsr0;
139
  }
140
 
141
+ /**
142
+ * @return array[]
143
+ * @psalm-return array<string, string>
144
+ */
145
  public function getFallbackDirsPsr4()
146
  {
147
  return $this->fallbackDirsPsr4;
148
  }
149
 
150
+ /**
151
+ * @return string[] Array of classname => path
152
+ * @psalm-return array<string, string>
153
+ */
154
  public function getClassMap()
155
  {
156
  return $this->classMap;
157
  }
158
 
159
  /**
160
+ * @param string[] $classMap Class to filename map
161
+ * @psalm-param array<string, string> $classMap
162
+ *
163
+ * @return void
164
  */
165
  public function addClassMap(array $classMap)
166
  {
175
  * Registers a set of PSR-0 directories for a given prefix, either
176
  * appending or prepending to the ones previously set for this prefix.
177
  *
178
+ * @param string $prefix The prefix
179
+ * @param string[]|string $paths The PSR-0 root directories
180
+ * @param bool $prepend Whether to prepend the directories
181
+ *
182
+ * @return void
183
  */
184
  public function add($prefix, $paths, $prepend = false)
185
  {
222
  * Registers a set of PSR-4 directories for a given namespace, either
223
  * appending or prepending to the ones previously set for this namespace.
224
  *
225
+ * @param string $prefix The prefix/namespace, with trailing '\\'
226
+ * @param string[]|string $paths The PSR-4 base directories
227
+ * @param bool $prepend Whether to prepend the directories
228
  *
229
  * @throws \InvalidArgumentException
230
+ *
231
+ * @return void
232
  */
233
  public function addPsr4($prefix, $paths, $prepend = false)
234
  {
272
  * Registers a set of PSR-0 directories for a given prefix,
273
  * replacing any others previously set for this prefix.
274
  *
275
+ * @param string $prefix The prefix
276
+ * @param string[]|string $paths The PSR-0 base directories
277
+ *
278
+ * @return void
279
  */
280
  public function set($prefix, $paths)
281
  {
290
  * Registers a set of PSR-4 directories for a given namespace,
291
  * replacing any others previously set for this namespace.
292
  *
293
+ * @param string $prefix The prefix/namespace, with trailing '\\'
294
+ * @param string[]|string $paths The PSR-4 base directories
295
  *
296
  * @throws \InvalidArgumentException
297
+ *
298
+ * @return void
299
  */
300
  public function setPsr4($prefix, $paths)
301
  {
315
  * Turns on searching the include path for class files.
316
  *
317
  * @param bool $useIncludePath
318
+ *
319
+ * @return void
320
  */
321
  public function setUseIncludePath($useIncludePath)
322
  {
339
  * that have not been registered with the class map.
340
  *
341
  * @param bool $classMapAuthoritative
342
+ *
343
+ * @return void
344
  */
345
  public function setClassMapAuthoritative($classMapAuthoritative)
346
  {
361
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
362
  *
363
  * @param string|null $apcuPrefix
364
+ *
365
+ * @return void
366
  */
367
  public function setApcuPrefix($apcuPrefix)
368
  {
383
  * Registers this instance as an autoloader.
384
  *
385
  * @param bool $prepend Whether to prepend the autoloader or not
386
+ *
387
+ * @return void
388
  */
389
  public function register($prepend = false)
390
  {
391
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
392
+
393
+ if (null === $this->vendorDir) {
394
+ return;
395
+ }
396
+
397
+ if ($prepend) {
398
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
399
+ } else {
400
+ unset(self::$registeredLoaders[$this->vendorDir]);
401
+ self::$registeredLoaders[$this->vendorDir] = $this;
402
+ }
403
  }
404
 
405
  /**
406
  * Unregisters this instance as an autoloader.
407
+ *
408
+ * @return void
409
  */
410
  public function unregister()
411
  {
412
  spl_autoload_unregister(array($this, 'loadClass'));
413
+
414
+ if (null !== $this->vendorDir) {
415
+ unset(self::$registeredLoaders[$this->vendorDir]);
416
+ }
417
  }
418
 
419
  /**
420
  * Loads the given class or interface.
421
  *
422
  * @param string $class The name of the class
423
+ * @return true|null True if loaded, null otherwise
424
  */
425
  public function loadClass($class)
426
  {
429
 
430
  return true;
431
  }
432
+
433
+ return null;
434
  }
435
 
436
  /**
475
  return $file;
476
  }
477
 
478
+ /**
479
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
480
+ *
481
+ * @return self[]
482
+ */
483
+ public static function getRegisteredLoaders()
484
+ {
485
+ return self::$registeredLoaders;
486
+ }
487
+
488
+ /**
489
+ * @param string $class
490
+ * @param string $ext
491
+ * @return string|false
492
+ */
493
  private function findFileWithExtension($class, $ext)
494
  {
495
  // PSR-4 lookup
561
  * Scope isolated include.
562
  *
563
  * Prevents access to $this/self from included files.
564
+ *
565
+ * @param string $file
566
+ * @return void
567
+ * @private
568
  */
569
  function includeFile($file)
570
  {
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+ /**
19
+ * This class is copied in every Composer installed project and available to all
20
+ *
21
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
+ *
23
+ * To require its presence, you can require `composer-runtime-api ^2.0`
24
+ *
25
+ * @final
26
+ */
27
+ class InstalledVersions
28
+ {
29
+ /**
30
+ * @var mixed[]|null
31
+ * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
32
+ */
33
+ private static $installed;
34
+
35
+ /**
36
+ * @var bool|null
37
+ */
38
+ private static $canGetVendors;
39
+
40
+ /**
41
+ * @var array[]
42
+ * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
43
+ */
44
+ private static $installedByVendor = array();
45
+
46
+ /**
47
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
48
+ *
49
+ * @return string[]
50
+ * @psalm-return list<string>
51
+ */
52
+ public static function getInstalledPackages()
53
+ {
54
+ $packages = array();
55
+ foreach (self::getInstalled() as $installed) {
56
+ $packages[] = array_keys($installed['versions']);
57
+ }
58
+
59
+ if (1 === \count($packages)) {
60
+ return $packages[0];
61
+ }
62
+
63
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
64
+ }
65
+
66
+ /**
67
+ * Returns a list of all package names with a specific type e.g. 'library'
68
+ *
69
+ * @param string $type
70
+ * @return string[]
71
+ * @psalm-return list<string>
72
+ */
73
+ public static function getInstalledPackagesByType($type)
74
+ {
75
+ $packagesByType = array();
76
+
77
+ foreach (self::getInstalled() as $installed) {
78
+ foreach ($installed['versions'] as $name => $package) {
79
+ if (isset($package['type']) && $package['type'] === $type) {
80
+ $packagesByType[] = $name;
81
+ }
82
+ }
83
+ }
84
+
85
+ return $packagesByType;
86
+ }
87
+
88
+ /**
89
+ * Checks whether the given package is installed
90
+ *
91
+ * This also returns true if the package name is provided or replaced by another package
92
+ *
93
+ * @param string $packageName
94
+ * @param bool $includeDevRequirements
95
+ * @return bool
96
+ */
97
+ public static function isInstalled($packageName, $includeDevRequirements = true)
98
+ {
99
+ foreach (self::getInstalled() as $installed) {
100
+ if (isset($installed['versions'][$packageName])) {
101
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
102
+ }
103
+ }
104
+
105
+ return false;
106
+ }
107
+
108
+ /**
109
+ * Checks whether the given package satisfies a version constraint
110
+ *
111
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
112
+ *
113
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
114
+ *
115
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
116
+ * @param string $packageName
117
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
118
+ * @return bool
119
+ */
120
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
121
+ {
122
+ $constraint = $parser->parseConstraints($constraint);
123
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
124
+
125
+ return $provided->matches($constraint);
126
+ }
127
+
128
+ /**
129
+ * Returns a version constraint representing all the range(s) which are installed for a given package
130
+ *
131
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
132
+ * whether a given version of a package is installed, and not just whether it exists
133
+ *
134
+ * @param string $packageName
135
+ * @return string Version constraint usable with composer/semver
136
+ */
137
+ public static function getVersionRanges($packageName)
138
+ {
139
+ foreach (self::getInstalled() as $installed) {
140
+ if (!isset($installed['versions'][$packageName])) {
141
+ continue;
142
+ }
143
+
144
+ $ranges = array();
145
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
146
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
147
+ }
148
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
149
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
150
+ }
151
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
152
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
153
+ }
154
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
155
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
156
+ }
157
+
158
+ return implode(' || ', $ranges);
159
+ }
160
+
161
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
162
+ }
163
+
164
+ /**
165
+ * @param string $packageName
166
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
167
+ */
168
+ public static function getVersion($packageName)
169
+ {
170
+ foreach (self::getInstalled() as $installed) {
171
+ if (!isset($installed['versions'][$packageName])) {
172
+ continue;
173
+ }
174
+
175
+ if (!isset($installed['versions'][$packageName]['version'])) {
176
+ return null;
177
+ }
178
+
179
+ return $installed['versions'][$packageName]['version'];
180
+ }
181
+
182
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
183
+ }
184
+
185
+ /**
186
+ * @param string $packageName
187
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
188
+ */
189
+ public static function getPrettyVersion($packageName)
190
+ {
191
+ foreach (self::getInstalled() as $installed) {
192
+ if (!isset($installed['versions'][$packageName])) {
193
+ continue;
194
+ }
195
+
196
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
197
+ return null;
198
+ }
199
+
200
+ return $installed['versions'][$packageName]['pretty_version'];
201
+ }
202
+
203
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
204
+ }
205
+
206
+ /**
207
+ * @param string $packageName
208
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
209
+ */
210
+ public static function getReference($packageName)
211
+ {
212
+ foreach (self::getInstalled() as $installed) {
213
+ if (!isset($installed['versions'][$packageName])) {
214
+ continue;
215
+ }
216
+
217
+ if (!isset($installed['versions'][$packageName]['reference'])) {
218
+ return null;
219
+ }
220
+
221
+ return $installed['versions'][$packageName]['reference'];
222
+ }
223
+
224
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
225
+ }
226
+
227
+ /**
228
+ * @param string $packageName
229
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
230
+ */
231
+ public static function getInstallPath($packageName)
232
+ {
233
+ foreach (self::getInstalled() as $installed) {
234
+ if (!isset($installed['versions'][$packageName])) {
235
+ continue;
236
+ }
237
+
238
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
239
+ }
240
+
241
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
242
+ }
243
+
244
+ /**
245
+ * @return array
246
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
247
+ */
248
+ public static function getRootPackage()
249
+ {
250
+ $installed = self::getInstalled();
251
+
252
+ return $installed[0]['root'];
253
+ }
254
+
255
+ /**
256
+ * Returns the raw installed.php data for custom implementations
257
+ *
258
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
259
+ * @return array[]
260
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
261
+ */
262
+ public static function getRawData()
263
+ {
264
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
265
+
266
+ if (null === self::$installed) {
267
+ // only require the installed.php file if this file is loaded from its dumped location,
268
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
269
+ if (substr(__DIR__, -8, 1) !== 'C') {
270
+ self::$installed = include __DIR__ . '/installed.php';
271
+ } else {
272
+ self::$installed = array();
273
+ }
274
+ }
275
+
276
+ return self::$installed;
277
+ }
278
+
279
+ /**
280
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
281
+ *
282
+ * @return array[]
283
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
284
+ */
285
+ public static function getAllRawData()
286
+ {
287
+ return self::getInstalled();
288
+ }
289
+
290
+ /**
291
+ * Lets you reload the static array from another file
292
+ *
293
+ * This is only useful for complex integrations in which a project needs to use
294
+ * this class but then also needs to execute another project's autoloader in process,
295
+ * and wants to ensure both projects have access to their version of installed.php.
296
+ *
297
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
298
+ * the data it needs from this class, then call reload() with
299
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
300
+ * the project in which it runs can then also use this class safely, without
301
+ * interference between PHPUnit's dependencies and the project's dependencies.
302
+ *
303
+ * @param array[] $data A vendor/composer/installed.php data set
304
+ * @return void
305
+ *
306
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
307
+ */
308
+ public static function reload($data)
309
+ {
310
+ self::$installed = $data;
311
+ self::$installedByVendor = array();
312
+ }
313
+
314
+ /**
315
+ * @return array[]
316
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
317
+ */
318
+ private static function getInstalled()
319
+ {
320
+ if (null === self::$canGetVendors) {
321
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
322
+ }
323
+
324
+ $installed = array();
325
+
326
+ if (self::$canGetVendors) {
327
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
328
+ if (isset(self::$installedByVendor[$vendorDir])) {
329
+ $installed[] = self::$installedByVendor[$vendorDir];
330
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
331
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
332
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
333
+ self::$installed = $installed[count($installed) - 1];
334
+ }
335
+ }
336
+ }
337
+ }
338
+
339
+ if (null === self::$installed) {
340
+ // only require the installed.php file if this file is loaded from its dumped location,
341
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
342
+ if (substr(__DIR__, -8, 1) !== 'C') {
343
+ self::$installed = require __DIR__ . '/installed.php';
344
+ } else {
345
+ self::$installed = array();
346
+ }
347
+ }
348
+ $installed[] = self::$installed;
349
+
350
+ return $installed;
351
+ }
352
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -2,9 +2,30 @@
2
 
3
  // autoload_classmap.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  'PAnD' => $vendorDir . '/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  );
2
 
3
  // autoload_classmap.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  'PAnD' => $vendorDir . '/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php',
11
+ 'TypistTech\\Imposter\\ArrayUtil' => $vendorDir . '/typisttech/imposter/src/ArrayUtil.php',
12
+ 'TypistTech\\Imposter\\Config' => $vendorDir . '/typisttech/imposter/src/Config.php',
13
+ 'TypistTech\\Imposter\\ConfigCollection' => $vendorDir . '/typisttech/imposter/src/ConfigCollection.php',
14
+ 'TypistTech\\Imposter\\ConfigCollectionFactory' => $vendorDir . '/typisttech/imposter/src/ConfigCollectionFactory.php',
15
+ 'TypistTech\\Imposter\\ConfigCollectionInterface' => $vendorDir . '/typisttech/imposter/src/ConfigCollectionInterface.php',
16
+ 'TypistTech\\Imposter\\ConfigFactory' => $vendorDir . '/typisttech/imposter/src/ConfigFactory.php',
17
+ 'TypistTech\\Imposter\\ConfigInterface' => $vendorDir . '/typisttech/imposter/src/ConfigInterface.php',
18
+ 'TypistTech\\Imposter\\Filesystem' => $vendorDir . '/typisttech/imposter/src/Filesystem.php',
19
+ 'TypistTech\\Imposter\\FilesystemInterface' => $vendorDir . '/typisttech/imposter/src/FilesystemInterface.php',
20
+ 'TypistTech\\Imposter\\Imposter' => $vendorDir . '/typisttech/imposter/src/Imposter.php',
21
+ 'TypistTech\\Imposter\\ImposterFactory' => $vendorDir . '/typisttech/imposter/src/ImposterFactory.php',
22
+ 'TypistTech\\Imposter\\ImposterInterface' => $vendorDir . '/typisttech/imposter/src/ImposterInterface.php',
23
+ 'TypistTech\\Imposter\\Plugin\\AutoloadMerger' => $vendorDir . '/typisttech/imposter-plugin/src/AutoloadMerger.php',
24
+ 'TypistTech\\Imposter\\Plugin\\ImposterPlugin' => $vendorDir . '/typisttech/imposter-plugin/src/ImposterPlugin.php',
25
+ 'TypistTech\\Imposter\\Plugin\\Transformer' => $vendorDir . '/typisttech/imposter-plugin/src/Transformer.php',
26
+ 'TypistTech\\Imposter\\ProjectConfig' => $vendorDir . '/typisttech/imposter/src/ProjectConfig.php',
27
+ 'TypistTech\\Imposter\\ProjectConfigInterface' => $vendorDir . '/typisttech/imposter/src/ProjectConfigInterface.php',
28
+ 'TypistTech\\Imposter\\StringUtil' => $vendorDir . '/typisttech/imposter/src/StringUtil.php',
29
+ 'TypistTech\\Imposter\\Transformer' => $vendorDir . '/typisttech/imposter/src/Transformer.php',
30
+ 'TypistTech\\Imposter\\TransformerInterface' => $vendorDir . '/typisttech/imposter/src/TransformerInterface.php',
31
  );
vendor/composer/autoload_namespaces.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_namespaces.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_namespaces.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_psr4.php CHANGED
@@ -2,8 +2,10 @@
2
 
3
  // autoload_psr4.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
9
  );
2
 
3
  // autoload_psr4.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'TypistTech\\Imposter\\Plugin\\' => array($vendorDir . '/typisttech/imposter-plugin/src'),
10
+ 'TypistTech\\Imposter\\' => array($vendorDir . '/typisttech/imposter/src'),
11
  );
vendor/composer/autoload_real.php CHANGED
@@ -22,31 +22,14 @@ class ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94
22
  return self::$loader;
23
  }
24
 
 
 
25
  spl_autoload_register(array('ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94', 'loadClassLoader'), true, true);
26
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
  spl_autoload_unregister(array('ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94', '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\ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94::getInitializer($loader));
34
- } else {
35
- $map = require __DIR__ . '/autoload_namespaces.php';
36
- foreach ($map as $namespace => $path) {
37
- $loader->set($namespace, $path);
38
- }
39
-
40
- $map = require __DIR__ . '/autoload_psr4.php';
41
- foreach ($map as $namespace => $path) {
42
- $loader->setPsr4($namespace, $path);
43
- }
44
-
45
- $classMap = require __DIR__ . '/autoload_classmap.php';
46
- if ($classMap) {
47
- $loader->addClassMap($classMap);
48
- }
49
- }
50
 
51
  $loader->register(true);
52
 
22
  return self::$loader;
23
  }
24
 
25
+ require __DIR__ . '/platform_check.php';
26
+
27
  spl_autoload_register(array('ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
29
  spl_autoload_unregister(array('ComposerAutoloaderInitc69f9e022a7575f97fc2ef8db9826a94', 'loadClassLoader'));
30
 
31
+ require __DIR__ . '/autoload_static.php';
32
+ call_user_func(\Composer\Autoload\ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94::getInitializer($loader));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  $loader->register(true);
35
 
vendor/composer/autoload_static.php CHANGED
@@ -6,13 +6,55 @@ namespace Composer\Autoload;
6
 
7
  class ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94
8
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  public static $classMap = array (
 
10
  'PAnD' => __DIR__ . '/..' . '/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  );
12
 
13
  public static function getInitializer(ClassLoader $loader)
14
  {
15
  return \Closure::bind(function () use ($loader) {
 
 
16
  $loader->classMap = ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94::$classMap;
17
 
18
  }, null, ClassLoader::class);
6
 
7
  class ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94
8
  {
9
+ public static $prefixLengthsPsr4 = array (
10
+ 'T' =>
11
+ array (
12
+ 'TypistTech\\Imposter\\Plugin\\' => 27,
13
+ 'TypistTech\\Imposter\\' => 20,
14
+ ),
15
+ );
16
+
17
+ public static $prefixDirsPsr4 = array (
18
+ 'TypistTech\\Imposter\\Plugin\\' =>
19
+ array (
20
+ 0 => __DIR__ . '/..' . '/typisttech/imposter-plugin/src',
21
+ ),
22
+ 'TypistTech\\Imposter\\' =>
23
+ array (
24
+ 0 => __DIR__ . '/..' . '/typisttech/imposter/src',
25
+ ),
26
+ );
27
+
28
  public static $classMap = array (
29
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
30
  'PAnD' => __DIR__ . '/..' . '/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php',
31
+ 'TypistTech\\Imposter\\ArrayUtil' => __DIR__ . '/..' . '/typisttech/imposter/src/ArrayUtil.php',
32
+ 'TypistTech\\Imposter\\Config' => __DIR__ . '/..' . '/typisttech/imposter/src/Config.php',
33
+ 'TypistTech\\Imposter\\ConfigCollection' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigCollection.php',
34
+ 'TypistTech\\Imposter\\ConfigCollectionFactory' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigCollectionFactory.php',
35
+ 'TypistTech\\Imposter\\ConfigCollectionInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigCollectionInterface.php',
36
+ 'TypistTech\\Imposter\\ConfigFactory' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigFactory.php',
37
+ 'TypistTech\\Imposter\\ConfigInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigInterface.php',
38
+ 'TypistTech\\Imposter\\Filesystem' => __DIR__ . '/..' . '/typisttech/imposter/src/Filesystem.php',
39
+ 'TypistTech\\Imposter\\FilesystemInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/FilesystemInterface.php',
40
+ 'TypistTech\\Imposter\\Imposter' => __DIR__ . '/..' . '/typisttech/imposter/src/Imposter.php',
41
+ 'TypistTech\\Imposter\\ImposterFactory' => __DIR__ . '/..' . '/typisttech/imposter/src/ImposterFactory.php',
42
+ 'TypistTech\\Imposter\\ImposterInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ImposterInterface.php',
43
+ 'TypistTech\\Imposter\\Plugin\\AutoloadMerger' => __DIR__ . '/..' . '/typisttech/imposter-plugin/src/AutoloadMerger.php',
44
+ 'TypistTech\\Imposter\\Plugin\\ImposterPlugin' => __DIR__ . '/..' . '/typisttech/imposter-plugin/src/ImposterPlugin.php',
45
+ 'TypistTech\\Imposter\\Plugin\\Transformer' => __DIR__ . '/..' . '/typisttech/imposter-plugin/src/Transformer.php',
46
+ 'TypistTech\\Imposter\\ProjectConfig' => __DIR__ . '/..' . '/typisttech/imposter/src/ProjectConfig.php',
47
+ 'TypistTech\\Imposter\\ProjectConfigInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ProjectConfigInterface.php',
48
+ 'TypistTech\\Imposter\\StringUtil' => __DIR__ . '/..' . '/typisttech/imposter/src/StringUtil.php',
49
+ 'TypistTech\\Imposter\\Transformer' => __DIR__ . '/..' . '/typisttech/imposter/src/Transformer.php',
50
+ 'TypistTech\\Imposter\\TransformerInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/TransformerInterface.php',
51
  );
52
 
53
  public static function getInitializer(ClassLoader $loader)
54
  {
55
  return \Closure::bind(function () use ($loader) {
56
+ $loader->prefixLengthsPsr4 = ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94::$prefixLengthsPsr4;
57
+ $loader->prefixDirsPsr4 = ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94::$prefixDirsPsr4;
58
  $loader->classMap = ComposerStaticInitc69f9e022a7575f97fc2ef8db9826a94::$classMap;
59
 
60
  }, null, ClassLoader::class);
vendor/composer/installed.json CHANGED
@@ -1,41 +1,226 @@
1
- [
2
- {
3
- "name": "collizo4sky/persist-admin-notices-dismissal",
4
- "version": "1.4.4",
5
- "version_normalized": "1.4.4.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/w3guy/persist-admin-notices-dismissal.git",
9
- "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/w3guy/persist-admin-notices-dismissal/zipball/900739eb6b0ec0210465f5983a6d4e0e420289e4",
14
- "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4",
15
- "shasum": ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  },
17
- "require": {
18
- "php": ">=5.4"
19
- },
20
- "time": "2020-12-31T17:12:37+00:00",
21
- "type": "library",
22
- "installation-source": "dist",
23
- "autoload": {
24
- "classmap": [
25
- "persist-admin-notices-dismissal.php"
26
- ]
27
- },
28
- "notification-url": "https://packagist.org/downloads/",
29
- "license": [
30
- "GPL-3.0-or-later"
31
- ],
32
- "authors": [
33
- {
34
- "name": "Collins Agbonghama",
35
- "email": "me@w3guy.com",
36
- "role": "developer"
37
- }
38
- ],
39
- "description": "Simple library to persist dismissal of admin notices across pages in WordPress dashboard."
40
- }
41
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "collizo4sky/persist-admin-notices-dismissal",
5
+ "version": "1.4.4",
6
+ "version_normalized": "1.4.4.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/w3guy/persist-admin-notices-dismissal.git",
10
+ "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4"
11
+ },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/w3guy/persist-admin-notices-dismissal/zipball/900739eb6b0ec0210465f5983a6d4e0e420289e4",
15
+ "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4",
16
+ "shasum": ""
17
+ },
18
+ "require": {
19
+ "php": ">=5.4"
20
+ },
21
+ "time": "2020-12-31T17:12:37+00:00",
22
+ "type": "library",
23
+ "installation-source": "dist",
24
+ "autoload": {
25
+ "classmap": [
26
+ "persist-admin-notices-dismissal.php"
27
+ ]
28
+ },
29
+ "notification-url": "https://packagist.org/downloads/",
30
+ "license": [
31
+ "GPL-3.0-or-later"
32
+ ],
33
+ "authors": [
34
+ {
35
+ "name": "Collins Agbonghama",
36
+ "email": "me@w3guy.com",
37
+ "role": "developer"
38
+ }
39
+ ],
40
+ "description": "Simple library to persist dismissal of admin notices across pages in WordPress dashboard.",
41
+ "install-path": "../collizo4sky/persist-admin-notices-dismissal"
42
  },
43
+ {
44
+ "name": "typisttech/imposter",
45
+ "version": "0.6.1",
46
+ "version_normalized": "0.6.1.0",
47
+ "source": {
48
+ "type": "git",
49
+ "url": "https://github.com/TypistTech/imposter.git",
50
+ "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83"
51
+ },
52
+ "dist": {
53
+ "type": "zip",
54
+ "url": "https://api.github.com/repos/TypistTech/imposter/zipball/f52b1a2289d2ea9c660cf9595085d0b11469af83",
55
+ "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83",
56
+ "shasum": ""
57
+ },
58
+ "require": {
59
+ "ext-json": "*",
60
+ "php": "^7.3 || ^8.0"
61
+ },
62
+ "require-dev": {
63
+ "codeception/codeception": "^4.1",
64
+ "codeception/mockery-module": "^0.4.0",
65
+ "codeception/module-asserts": "^1.3",
66
+ "codeception/module-filesystem": "^1.0",
67
+ "squizlabs/php_codesniffer": "^3.5"
68
+ },
69
+ "suggest": {
70
+ "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter"
71
+ },
72
+ "time": "2020-12-06T22:57:09+00:00",
73
+ "type": "library",
74
+ "extra": {
75
+ "branch-alias": {
76
+ "dev-master": "0.6.x-dev"
77
+ }
78
+ },
79
+ "installation-source": "dist",
80
+ "autoload": {
81
+ "psr-4": {
82
+ "TypistTech\\Imposter\\": "src"
83
+ }
84
+ },
85
+ "notification-url": "https://packagist.org/downloads/",
86
+ "license": [
87
+ "MIT"
88
+ ],
89
+ "authors": [
90
+ {
91
+ "name": "Typist Tech",
92
+ "email": "imposter@typist.tech",
93
+ "homepage": "https://typist.tech"
94
+ },
95
+ {
96
+ "name": "Tang Rufus",
97
+ "email": "tangrufus@gmail.com",
98
+ "homepage": "https://typist.tech",
99
+ "role": "Developer"
100
+ }
101
+ ],
102
+ "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.",
103
+ "homepage": "https://github.com/TypistTech/imposter",
104
+ "keywords": [
105
+ "composer",
106
+ "dependency",
107
+ "monkey-patching",
108
+ "namespace",
109
+ "wordpress"
110
+ ],
111
+ "support": {
112
+ "email": "imposter@typist.tech",
113
+ "issues": "https://github.com/TypistTech/imposter/issues",
114
+ "source": "https://github.com/TypistTech/imposter"
115
+ },
116
+ "funding": [
117
+ {
118
+ "url": "https://typist.tech/donation/",
119
+ "type": "custom"
120
+ },
121
+ {
122
+ "url": "https://www.paypal.me/iAmTangRufus/30usd",
123
+ "type": "custom"
124
+ },
125
+ {
126
+ "url": "https://github.com/tangrufus",
127
+ "type": "github"
128
+ }
129
+ ],
130
+ "install-path": "../typisttech/imposter"
131
  },
132
+ {
133
+ "name": "typisttech/imposter-plugin",
134
+ "version": "0.6.2",
135
+ "version_normalized": "0.6.2.0",
136
+ "source": {
137
+ "type": "git",
138
+ "url": "https://github.com/TypistTech/imposter-plugin.git",
139
+ "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c"
140
+ },
141
+ "dist": {
142
+ "type": "zip",
143
+ "url": "https://api.github.com/repos/TypistTech/imposter-plugin/zipball/15fa3c90aca3b79497f438b9e02a6176498de53c",
144
+ "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c",
145
+ "shasum": ""
146
+ },
147
+ "require": {
148
+ "composer-plugin-api": "^1.1 || ^2.0",
149
+ "php": "^7.3 || ^8.0",
150
+ "typisttech/imposter": "^0.6.1"
151
+ },
152
+ "require-dev": {
153
+ "codeception/codeception": "^4.1",
154
+ "codeception/module-asserts": "^1.3",
155
+ "codeception/module-cli": "^1.1",
156
+ "codeception/module-filesystem": "^1.0",
157
+ "composer/composer": "^1.10.19 || ^2.0",
158
+ "squizlabs/php_codesniffer": "^3.5",
159
+ "typisttech/codeception-composer-project-module": "^0.1.1"
160
+ },
161
+ "time": "2020-12-06T23:41:30+00:00",
162
+ "type": "composer-plugin",
163
+ "extra": {
164
+ "branch-alias": {
165
+ "dev-master": "0.6.x-dev"
166
+ },
167
+ "class": "TypistTech\\Imposter\\Plugin\\ImposterPlugin"
168
+ },
169
+ "installation-source": "dist",
170
+ "autoload": {
171
+ "psr-4": {
172
+ "TypistTech\\Imposter\\Plugin\\": "src"
173
+ }
174
+ },
175
+ "notification-url": "https://packagist.org/downloads/",
176
+ "license": [
177
+ "MIT"
178
+ ],
179
+ "authors": [
180
+ {
181
+ "name": "Typist Tech",
182
+ "email": "imposter-plugin@typist.tech",
183
+ "homepage": "https://www.typist.tech"
184
+ },
185
+ {
186
+ "name": "Tang Rufus",
187
+ "email": "tangrufus@gmail.com",
188
+ "homepage": "https://www.typist.tech",
189
+ "role": "Developer"
190
+ }
191
+ ],
192
+ "description": "Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.",
193
+ "homepage": "https://github.com/TypistTech/imposter-plugin",
194
+ "keywords": [
195
+ "composer",
196
+ "composer-plugin",
197
+ "dependency",
198
+ "monkey-patching",
199
+ "namespace",
200
+ "wordpress"
201
+ ],
202
+ "support": {
203
+ "email": "imposter-plugin@typist.tech",
204
+ "issues": "https://github.com/TypistTech/imposter-plugin/issues",
205
+ "source": "https://github.com/TypistTech/imposter-plugin"
206
+ },
207
+ "funding": [
208
+ {
209
+ "url": "https://typist.tech/donation/",
210
+ "type": "custom"
211
+ },
212
+ {
213
+ "url": "https://www.paypal.me/iAmTangRufus/30usd",
214
+ "type": "custom"
215
+ },
216
+ {
217
+ "url": "https://github.com/tangrufus",
218
+ "type": "github"
219
+ }
220
+ ],
221
+ "install-path": "../typisttech/imposter-plugin"
222
+ }
223
+ ],
224
+ "dev": false,
225
+ "dev-package-names": []
226
+ }
vendor/composer/installed.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array(
2
+ 'root' => array(
3
+ 'pretty_version' => '1.0.0+no-version-set',
4
+ 'version' => '1.0.0.0',
5
+ 'type' => 'library',
6
+ 'install_path' => __DIR__ . '/../../',
7
+ 'aliases' => array(),
8
+ 'reference' => NULL,
9
+ 'name' => '__root__',
10
+ 'dev' => false,
11
+ ),
12
+ 'versions' => array(
13
+ '__root__' => array(
14
+ 'pretty_version' => '1.0.0+no-version-set',
15
+ 'version' => '1.0.0.0',
16
+ 'type' => 'library',
17
+ 'install_path' => __DIR__ . '/../../',
18
+ 'aliases' => array(),
19
+ 'reference' => NULL,
20
+ 'dev_requirement' => false,
21
+ ),
22
+ 'collizo4sky/persist-admin-notices-dismissal' => array(
23
+ 'pretty_version' => '1.4.4',
24
+ 'version' => '1.4.4.0',
25
+ 'type' => 'library',
26
+ 'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal',
27
+ 'aliases' => array(),
28
+ 'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4',
29
+ 'dev_requirement' => false,
30
+ ),
31
+ 'typisttech/imposter' => array(
32
+ 'pretty_version' => '0.6.1',
33
+ 'version' => '0.6.1.0',
34
+ 'type' => 'library',
35
+ 'install_path' => __DIR__ . '/../typisttech/imposter',
36
+ 'aliases' => array(),
37
+ 'reference' => 'f52b1a2289d2ea9c660cf9595085d0b11469af83',
38
+ 'dev_requirement' => false,
39
+ ),
40
+ 'typisttech/imposter-plugin' => array(
41
+ 'pretty_version' => '0.6.2',
42
+ 'version' => '0.6.2.0',
43
+ 'type' => 'composer-plugin',
44
+ 'install_path' => __DIR__ . '/../typisttech/imposter-plugin',
45
+ 'aliases' => array(),
46
+ 'reference' => '15fa3c90aca3b79497f438b9e02a6176498de53c',
47
+ 'dev_requirement' => false,
48
+ ),
49
+ ),
50
+ );
vendor/composer/platform_check.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // platform_check.php @generated by Composer
4
+
5
+ $issues = array();
6
+
7
+ if (!(PHP_VERSION_ID >= 70300)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
9
+ }
10
+
11
+ if ($issues) {
12
+ if (!headers_sent()) {
13
+ header('HTTP/1.1 500 Internal Server Error');
14
+ }
15
+ if (!ini_get('display_errors')) {
16
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+ } elseif (!headers_sent()) {
19
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+ }
21
+ }
22
+ trigger_error(
23
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+ E_USER_ERROR
25
+ );
26
+ }
vendor/typisttech/imposter-plugin/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2017-2020 Typist Tech <info@typist.tech>
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/typisttech/imposter-plugin/README.md ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Imposter Plugin
4
+
5
+ </div>
6
+
7
+ <div align="center">
8
+
9
+
10
+ [![Packagist](https://img.shields.io/packagist/v/typisttech/imposter-plugin.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter-plugin)
11
+ [![Packagist](https://img.shields.io/packagist/dt/typisttech/imposter-plugin.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter-plugin)
12
+ [![PHP from Packagist](https://img.shields.io/packagist/php-v/TypistTech/imposter-plugin?style=flat-square)](https://packagist.org/packages/typisttech/imposter-plugin)
13
+ [![CircleCI](https://img.shields.io/circleci/build/gh/TypistTech/imposter-plugin?style=flat-square)](https://circleci.com/gh/TypistTech/imposter-plugin)
14
+ [![license](https://img.shields.io/github/license/TypistTech/imposter-plugin.svg?style=flat-square)](https://github.com/TypistTech/imposter-plugin/blob/master/LICENSE)
15
+ [![Twitter Follow @TangRufus](https://img.shields.io/twitter/follow/TangRufus?style=flat-square&color=1da1f2&logo=twitter)](https://twitter.com/tangrufus)
16
+ [![Hire Typist Tech](https://img.shields.io/badge/Hire-Typist%20Tech-ff69b4.svg?style=flat-square)](https://www.typist.tech/contact/)
17
+
18
+ </div>
19
+
20
+ <p align="center">
21
+ <strong>Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.</strong>
22
+ <br />
23
+ <br />
24
+ Built with ♥ by <a href="https://www.typist.tech/">Typist Tech</a>
25
+ </p>
26
+
27
+ ---
28
+
29
+ **Imposter Plugin** is an open source project and completely free to use.
30
+
31
+ However, the amount of effort needed to maintain and develop new features is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below:
32
+
33
+ <div align="center">
34
+
35
+ [![GitHub via Sponsor](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=flat-square&logo=github)](https://github.com/sponsors/TangRufus)
36
+ [![Sponsor via PayPal](https://img.shields.io/badge/Sponsor-PayPal-blue.svg?style=flat-square&logo=paypal)](https://typist.tech/go/paypal-donate/)
37
+ [![More Sponsorship Information](https://img.shields.io/badge/Sponsor-More%20Details-ff69b4?style=flat-square)](https://typist.tech/donate/imposter-plugin/)
38
+
39
+ </div>
40
+
41
+ ---
42
+
43
+ Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins. Imposter Plugin is a composer plugin wrapper for [Imposter](https://github.com/TypistTech/imposter/).
44
+
45
+ ## Why?
46
+
47
+ Because of the lack of dependency management in WordPress, if two plugins bundled conflicting versions of the same package, hard-to-reproduce bugs arise.
48
+ Monkey patching composer vendor packages, wrapping them inside your own namespace is a less-than-ideal solution to avoid such conflicts.
49
+
50
+ See:
51
+ - [A Narrative of Using Composer in a WordPress Plugin](https://wptavern.com/a-narrative-of-using-composer-in-a-wordpress-plugin)
52
+ - [A Warning About Using Composer With WordPress](https://wppusher.com/blog/a-warning-about-using-composer-with-wordpress/)
53
+
54
+ ## Install
55
+
56
+ Installation should be done via composer, details of how to install composer can be found at [https://getcomposer.org/](https://getcomposer.org/).
57
+
58
+ First, add Imposter configuration in your `composer.json`
59
+
60
+ ```json
61
+ "extra": {
62
+ "imposter": {
63
+ "namespace": "My\\App\\Vendor",
64
+ "excludes": [
65
+ "dummy/dummy-excluded"
66
+ ]
67
+ }
68
+ }
69
+ ```
70
+
71
+ Then, install via composer cli
72
+
73
+ ```bash
74
+ composer require typisttech/imposter-plugin
75
+ ```
76
+
77
+ See: [Imposter readme](https://github.com/Typisttech/imposter#config) for details.
78
+
79
+ ---
80
+
81
+ <p align="center">
82
+ <strong>Typist Tech is ready to build your next awesome WordPress site. <a href="https://typist.tech/contact/">Hire us!</a></strong>
83
+ </p>
84
+
85
+ ---
86
+
87
+ ## Usage
88
+
89
+ ### Sit Back and Relax
90
+
91
+ Once installed, this plugin hooks into `composer install`, `composer update` and `composer dump-autoload`, automatically run [imposter](https://github.com/TypistTech/imposter/) for you.
92
+ Besides, imposter plugin autoloads all modified files as [classmap](https://getcomposer.org/doc/04-schema.md#classmap).
93
+
94
+ When those events triggered, this plugin:
95
+ 1. looks for `/path/to/project/root/composer.json`
96
+ 2. finds out [vendor-dir](https://getcomposer.org/doc/06-config.md#vendor-dir)
97
+ 3. finds out all [required packages](https://getcomposer.org/doc/04-schema.md#require), including those required by dependencies
98
+ 4. finds out all [autoload paths](https://getcomposer.org/doc/04-schema.md#autoload) for all required packages
99
+ 5. prefixes all namespaces with the imposter-plugin namespace defined in your `composer.json`
100
+
101
+ Learn more on [imposter's readme](https://github.com/TypistTech/imposter#usage).
102
+
103
+ ## Known Issues
104
+
105
+ Help wanted. Pull requests are welcomed.
106
+
107
+ 1. Imposter run twice when `composer install` and `composer update`
108
+ 1. Traits are not transformed
109
+ 1. Virtual packages are not supported
110
+
111
+ ## Frequently Asked Questions
112
+
113
+ ### What can I find more information?
114
+
115
+ Learn more on [imposter's readme](https://github.com/TypistTech/imposter/) for more details.
116
+
117
+ ### How about not hooking into composer commands?
118
+
119
+ Use [imposter](https://github.com/TypistTech/imposter/) directly.
120
+
121
+ ### Do you have real life examples that use this composer plugin?
122
+
123
+ Here you go:
124
+
125
+ * [Sunny](https://github.com/Typisttech/sunny)
126
+ * [WP Cloudflare Guard](https://github.com/TypistTech/wp-cloudflare-guard)
127
+
128
+
129
+ *Add your own [here](https://github.com/TypistTech/imposter-plugin/edit/master/README.md)*
130
+
131
+ ### Which composer versions are supported?
132
+
133
+ Both v1 and v2.
134
+
135
+ ### Will you add support for older PHP versions?
136
+
137
+ Never! This plugin will only work on [actively supported PHP versions](https://secure.php.net/supported-versions.php).
138
+
139
+ Don't use it on **end of life** or **security fixes only** PHP versions.
140
+
141
+ ### It looks awesome. Where can I find some more goodies like this
142
+
143
+ - Articles on [Typist Tech's blog](https://typist.tech)
144
+ - [Tang Rufus' WordPress plugins](https://profiles.wordpress.org/tangrufus#content-plugins) on wp.org
145
+ - More projects on [Typist Tech's GitHub profile](https://github.com/TypistTech)
146
+ - Stay tuned on [Typist Tech's newsletter](https://typist.tech/go/newsletter)
147
+ - Follow [Tang Rufus' Twitter account](https://twitter.com/TangRufus)
148
+ - **Hire [Tang Rufus](https://typist.tech/contact) to build your next awesome site**
149
+
150
+ ### Where can I give 5-star reviews?
151
+
152
+ Thanks! Glad you like it. It's important to let me knows somebody is using this project. Please consider:
153
+
154
+ - [tweet](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2FTypistTech%2Fimposter-plugin&via=tangrufus&text=Imposter%20Plugin%20-%20Composer%20plugin%20that%20wraps%20all%20%23composer%20vendor%20packages%20inside%20your%20own%20namespace.%20Intended%20for%20%23WordPress%20plugins) something good with mentioning [@TangRufus](https://twitter.com/tangrufus)
155
+ - ★ star [the Github repo](https://github.com/TypistTech/imposter-plugin)
156
+ - [👀 watch](https://github.com/TypistTech/imposter-plugin/subscription) the Github repo
157
+ - write tutorials and blog posts
158
+ - **[hire](https://www.typist.tech/contact/) Typist Tech**
159
+
160
+ ## Testing
161
+
162
+ ```bash
163
+ composer test
164
+ composer style:check
165
+ ```
166
+
167
+ ## Alternatives
168
+
169
+ Here is a list of alternatives that I found. However, none of these satisfied my requirements.
170
+
171
+ *If you know other similar projects, feel free to edit this section!*
172
+
173
+ * [Mozart](https://github.com/coenjacobs/mozart) by Coen Jacobs
174
+ - Works with PSR0 and PSR4
175
+ - Dependency packages store in a different directory
176
+
177
+ * [PHP Scoper](https://github.com/humbug/php-scoper)
178
+ - Prefixes all PHP namespaces in a file/directory to isolate the code bundled in PHARs
179
+
180
+ ## Feedback
181
+
182
+ **Please provide feedback!** We want to make this project as useful as possible.
183
+ Please [submit an issue](https://github.com/TypistTech/imposter-plugin/issues/new) and point out what you do and don't like, or fork the project and [send pull requests](https://github.com/TypistTech/imposter-plugin/pulls/).
184
+ **No issue is too small.**
185
+
186
+ ## Security Vulnerabilities
187
+
188
+ If you discover a security vulnerability within this project, please email us at [imposter-plugin@typist.tech](mailto:imposter-plugin@typist.tech).
189
+ All security vulnerabilities will be promptly addressed.
190
+
191
+ ## Credits
192
+
193
+ [Imposter Plugin](https://github.com/TypistTech/imposter-plugin) is a [Typist Tech](https://typist.tech) project and maintained by [Tang Rufus](https://twitter.com/TangRufus), freelance developer for [hire](https://www.typist.tech/contact/).
194
+
195
+ Full list of contributors can be found [here](https://github.com/TypistTech/imposter-plugin/graphs/contributors).
196
+
197
+ ## License
198
+
199
+ [Imposter Plugin](https://github.com/TypistTech/imposter-plugin) is released under the [MIT License](https://opensource.org/licenses/MIT).
vendor/typisttech/imposter-plugin/composer.json ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "typisttech/imposter-plugin",
3
+ "type": "composer-plugin",
4
+ "description": "Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.",
5
+ "keywords": [
6
+ "composer",
7
+ "composer-plugin",
8
+ "dependency",
9
+ "monkey-patching",
10
+ "namespace",
11
+ "wordpress"
12
+ ],
13
+ "homepage": "https://github.com/TypistTech/imposter-plugin",
14
+ "license": "MIT",
15
+ "authors": [
16
+ {
17
+ "name": "Typist Tech",
18
+ "email": "imposter-plugin@typist.tech",
19
+ "homepage": "https://www.typist.tech"
20
+ },
21
+ {
22
+ "name": "Tang Rufus",
23
+ "email": "tangrufus@gmail.com",
24
+ "homepage": "https://www.typist.tech",
25
+ "role": "Developer"
26
+ }
27
+ ],
28
+ "require": {
29
+ "php": "^7.3 || ^8.0",
30
+ "composer-plugin-api": "^1.1 || ^2.0",
31
+ "typisttech/imposter": "^0.6.1"
32
+ },
33
+ "require-dev": {
34
+ "codeception/codeception": "^4.1",
35
+ "codeception/module-asserts": "^1.3",
36
+ "codeception/module-cli": "^1.1",
37
+ "codeception/module-filesystem": "^1.0",
38
+ "composer/composer": "^1.10.19 || ^2.0",
39
+ "squizlabs/php_codesniffer": "^3.5",
40
+ "typisttech/codeception-composer-project-module": "^0.1.1"
41
+ },
42
+ "config": {
43
+ "sort-packages": true
44
+ },
45
+ "extra": {
46
+ "branch-alias": {
47
+ "dev-master": "0.6.x-dev"
48
+ },
49
+ "class": "TypistTech\\Imposter\\Plugin\\ImposterPlugin"
50
+ },
51
+ "autoload": {
52
+ "psr-4": {
53
+ "TypistTech\\Imposter\\Plugin\\": "src"
54
+ }
55
+ },
56
+ "scripts": {
57
+ "style:check": "phpcs",
58
+ "style:fix": "phpcbf",
59
+ "test": "codecept run --debug"
60
+ },
61
+ "support": {
62
+ "email": "imposter-plugin@typist.tech",
63
+ "issues": "https://github.com/TypistTech/imposter-plugin/issues",
64
+ "source": "https://github.com/TypistTech/imposter-plugin"
65
+ }
66
+ }
vendor/typisttech/imposter-plugin/composer.lock ADDED
@@ -0,0 +1,5008 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "f45fc3f505c9346231a87a2a319243a1",
8
+ "packages": [
9
+ {
10
+ "name": "typisttech/imposter",
11
+ "version": "0.6.1",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/TypistTech/imposter.git",
15
+ "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/TypistTech/imposter/zipball/f52b1a2289d2ea9c660cf9595085d0b11469af83",
20
+ "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "ext-json": "*",
25
+ "php": "^7.3 || ^8.0"
26
+ },
27
+ "require-dev": {
28
+ "codeception/codeception": "^4.1",
29
+ "codeception/mockery-module": "^0.4.0",
30
+ "codeception/module-asserts": "^1.3",
31
+ "codeception/module-filesystem": "^1.0",
32
+ "squizlabs/php_codesniffer": "^3.5"
33
+ },
34
+ "suggest": {
35
+ "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter"
36
+ },
37
+ "type": "library",
38
+ "extra": {
39
+ "branch-alias": {
40
+ "dev-master": "0.6.x-dev"
41
+ }
42
+ },
43
+ "autoload": {
44
+ "psr-4": {
45
+ "TypistTech\\Imposter\\": "src"
46
+ }
47
+ },
48
+ "notification-url": "https://packagist.org/downloads/",
49
+ "license": [
50
+ "MIT"
51
+ ],
52
+ "authors": [
53
+ {
54
+ "name": "Typist Tech",
55
+ "email": "imposter@typist.tech",
56
+ "homepage": "https://typist.tech"
57
+ },
58
+ {
59
+ "name": "Tang Rufus",
60
+ "email": "tangrufus@gmail.com",
61
+ "homepage": "https://typist.tech",
62
+ "role": "Developer"
63
+ }
64
+ ],
65
+ "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.",
66
+ "homepage": "https://github.com/TypistTech/imposter",
67
+ "keywords": [
68
+ "composer",
69
+ "dependency",
70
+ "monkey-patching",
71
+ "namespace",
72
+ "wordpress"
73
+ ],
74
+ "support": {
75
+ "email": "imposter@typist.tech",
76
+ "issues": "https://github.com/TypistTech/imposter/issues",
77
+ "source": "https://github.com/TypistTech/imposter"
78
+ },
79
+ "funding": [
80
+ {
81
+ "url": "https://typist.tech/donation/",
82
+ "type": "custom"
83
+ },
84
+ {
85
+ "url": "https://www.paypal.me/iAmTangRufus/30usd",
86
+ "type": "custom"
87
+ },
88
+ {
89
+ "url": "https://github.com/tangrufus",
90
+ "type": "github"
91
+ }
92
+ ],
93
+ "time": "2020-12-06T22:57:09+00:00"
94
+ }
95
+ ],
96
+ "packages-dev": [
97
+ {
98
+ "name": "behat/gherkin",
99
+ "version": "v4.6.2",
100
+ "source": {
101
+ "type": "git",
102
+ "url": "https://github.com/Behat/Gherkin.git",
103
+ "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31"
104
+ },
105
+ "dist": {
106
+ "type": "zip",
107
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31",
108
+ "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31",
109
+ "shasum": ""
110
+ },
111
+ "require": {
112
+ "php": ">=5.3.1"
113
+ },
114
+ "require-dev": {
115
+ "phpunit/phpunit": "~4.5|~5",
116
+ "symfony/phpunit-bridge": "~2.7|~3|~4",
117
+ "symfony/yaml": "~2.3|~3|~4"
118
+ },
119
+ "suggest": {
120
+ "symfony/yaml": "If you want to parse features, represented in YAML files"
121
+ },
122
+ "type": "library",
123
+ "extra": {
124
+ "branch-alias": {
125
+ "dev-master": "4.4-dev"
126
+ }
127
+ },
128
+ "autoload": {
129
+ "psr-0": {
130
+ "Behat\\Gherkin": "src/"
131
+ }
132
+ },
133
+ "notification-url": "https://packagist.org/downloads/",
134
+ "license": [
135
+ "MIT"
136
+ ],
137
+ "authors": [
138
+ {
139
+ "name": "Konstantin Kudryashov",
140
+ "email": "ever.zet@gmail.com",
141
+ "homepage": "http://everzet.com"
142
+ }
143
+ ],
144
+ "description": "Gherkin DSL parser for PHP 5.3",
145
+ "homepage": "http://behat.org/",
146
+ "keywords": [
147
+ "BDD",
148
+ "Behat",
149
+ "Cucumber",
150
+ "DSL",
151
+ "gherkin",
152
+ "parser"
153
+ ],
154
+ "support": {
155
+ "issues": "https://github.com/Behat/Gherkin/issues",
156
+ "source": "https://github.com/Behat/Gherkin/tree/master"
157
+ },
158
+ "time": "2020-03-17T14:03:26+00:00"
159
+ },
160
+ {
161
+ "name": "codeception/codeception",
162
+ "version": "4.1.12",
163
+ "source": {
164
+ "type": "git",
165
+ "url": "https://github.com/Codeception/Codeception.git",
166
+ "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd"
167
+ },
168
+ "dist": {
169
+ "type": "zip",
170
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd",
171
+ "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd",
172
+ "shasum": ""
173
+ },
174
+ "require": {
175
+ "behat/gherkin": "^4.4.0",
176
+ "codeception/lib-asserts": "^1.0",
177
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
178
+ "codeception/stub": "^2.0 | ^3.0",
179
+ "ext-curl": "*",
180
+ "ext-json": "*",
181
+ "ext-mbstring": "*",
182
+ "guzzlehttp/psr7": "~1.4",
183
+ "php": ">=5.6.0 <9.0",
184
+ "symfony/console": ">=2.7 <6.0",
185
+ "symfony/css-selector": ">=2.7 <6.0",
186
+ "symfony/event-dispatcher": ">=2.7 <6.0",
187
+ "symfony/finder": ">=2.7 <6.0",
188
+ "symfony/yaml": ">=2.7 <6.0"
189
+ },
190
+ "require-dev": {
191
+ "codeception/module-asserts": "*@dev",
192
+ "codeception/module-cli": "*@dev",
193
+ "codeception/module-db": "*@dev",
194
+ "codeception/module-filesystem": "*@dev",
195
+ "codeception/module-phpbrowser": "*@dev",
196
+ "codeception/specify": "~0.3",
197
+ "codeception/util-universalframework": "*@dev",
198
+ "monolog/monolog": "~1.8",
199
+ "squizlabs/php_codesniffer": "~2.0",
200
+ "symfony/process": ">=2.7 <6.0",
201
+ "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0"
202
+ },
203
+ "suggest": {
204
+ "codeception/specify": "BDD-style code blocks",
205
+ "codeception/verify": "BDD-style assertions",
206
+ "hoa/console": "For interactive console functionality",
207
+ "stecman/symfony-console-completion": "For BASH autocompletion",
208
+ "symfony/phpunit-bridge": "For phpunit-bridge support"
209
+ },
210
+ "bin": [
211
+ "codecept"
212
+ ],
213
+ "type": "library",
214
+ "extra": {
215
+ "branch-alias": []
216
+ },
217
+ "autoload": {
218
+ "psr-4": {
219
+ "Codeception\\": "src/Codeception",
220
+ "Codeception\\Extension\\": "ext"
221
+ }
222
+ },
223
+ "notification-url": "https://packagist.org/downloads/",
224
+ "license": [
225
+ "MIT"
226
+ ],
227
+ "authors": [
228
+ {
229
+ "name": "Michael Bodnarchuk",
230
+ "email": "davert@mail.ua",
231
+ "homepage": "http://codegyre.com"
232
+ }
233
+ ],
234
+ "description": "BDD-style testing framework",
235
+ "homepage": "http://codeception.com/",
236
+ "keywords": [
237
+ "BDD",
238
+ "TDD",
239
+ "acceptance testing",
240
+ "functional testing",
241
+ "unit testing"
242
+ ],
243
+ "support": {
244
+ "issues": "https://github.com/Codeception/Codeception/issues",
245
+ "source": "https://github.com/Codeception/Codeception/tree/4.1.12"
246
+ },
247
+ "funding": [
248
+ {
249
+ "url": "https://opencollective.com/codeception",
250
+ "type": "open_collective"
251
+ }
252
+ ],
253
+ "time": "2020-11-16T06:36:57+00:00"
254
+ },
255
+ {
256
+ "name": "codeception/lib-asserts",
257
+ "version": "1.13.2",
258
+ "source": {
259
+ "type": "git",
260
+ "url": "https://github.com/Codeception/lib-asserts.git",
261
+ "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6"
262
+ },
263
+ "dist": {
264
+ "type": "zip",
265
+ "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6",
266
+ "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6",
267
+ "shasum": ""
268
+ },
269
+ "require": {
270
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0",
271
+ "ext-dom": "*",
272
+ "php": ">=5.6.0 <9.0"
273
+ },
274
+ "type": "library",
275
+ "autoload": {
276
+ "classmap": [
277
+ "src/"
278
+ ]
279
+ },
280
+ "notification-url": "https://packagist.org/downloads/",
281
+ "license": [
282
+ "MIT"
283
+ ],
284
+ "authors": [
285
+ {
286
+ "name": "Michael Bodnarchuk",
287
+ "email": "davert@mail.ua",
288
+ "homepage": "http://codegyre.com"
289
+ },
290
+ {
291
+ "name": "Gintautas Miselis"
292
+ },
293
+ {
294
+ "name": "Gustavo Nieves",
295
+ "homepage": "https://medium.com/@ganieves"
296
+ }
297
+ ],
298
+ "description": "Assertion methods used by Codeception core and Asserts module",
299
+ "homepage": "https://codeception.com/",
300
+ "keywords": [
301
+ "codeception"
302
+ ],
303
+ "support": {
304
+ "issues": "https://github.com/Codeception/lib-asserts/issues",
305
+ "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2"
306
+ },
307
+ "time": "2020-10-21T16:26:20+00:00"
308
+ },
309
+ {
310
+ "name": "codeception/module-asserts",
311
+ "version": "1.3.1",
312
+ "source": {
313
+ "type": "git",
314
+ "url": "https://github.com/Codeception/module-asserts.git",
315
+ "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de"
316
+ },
317
+ "dist": {
318
+ "type": "zip",
319
+ "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de",
320
+ "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de",
321
+ "shasum": ""
322
+ },
323
+ "require": {
324
+ "codeception/codeception": "*@dev",
325
+ "codeception/lib-asserts": "^1.13.1",
326
+ "php": ">=5.6.0 <9.0"
327
+ },
328
+ "conflict": {
329
+ "codeception/codeception": "<4.0"
330
+ },
331
+ "type": "library",
332
+ "autoload": {
333
+ "classmap": [
334
+ "src/"
335
+ ]
336
+ },
337
+ "notification-url": "https://packagist.org/downloads/",
338
+ "license": [
339
+ "MIT"
340
+ ],
341
+ "authors": [
342
+ {
343
+ "name": "Michael Bodnarchuk"
344
+ },
345
+ {
346
+ "name": "Gintautas Miselis"
347
+ },
348
+ {
349
+ "name": "Gustavo Nieves",
350
+ "homepage": "https://medium.com/@ganieves"
351
+ }
352
+ ],
353
+ "description": "Codeception module containing various assertions",
354
+ "homepage": "https://codeception.com/",
355
+ "keywords": [
356
+ "assertions",
357
+ "asserts",
358
+ "codeception"
359
+ ],
360
+ "support": {
361
+ "issues": "https://github.com/Codeception/module-asserts/issues",
362
+ "source": "https://github.com/Codeception/module-asserts/tree/1.3.1"
363
+ },
364
+ "time": "2020-10-21T16:48:15+00:00"
365
+ },
366
+ {
367
+ "name": "codeception/module-cli",
368
+ "version": "1.1.0",
369
+ "source": {
370
+ "type": "git",
371
+ "url": "https://github.com/Codeception/module-cli.git",
372
+ "reference": "acbdca0e99b8da003b53f3738f2ce77c8787a992"
373
+ },
374
+ "dist": {
375
+ "type": "zip",
376
+ "url": "https://api.github.com/repos/Codeception/module-cli/zipball/acbdca0e99b8da003b53f3738f2ce77c8787a992",
377
+ "reference": "acbdca0e99b8da003b53f3738f2ce77c8787a992",
378
+ "shasum": ""
379
+ },
380
+ "require": {
381
+ "codeception/codeception": "^4.0",
382
+ "php": ">=5.6.0 <9.0"
383
+ },
384
+ "conflict": {
385
+ "codeception/codeception": "<4.0"
386
+ },
387
+ "type": "library",
388
+ "autoload": {
389
+ "classmap": [
390
+ "src/"
391
+ ]
392
+ },
393
+ "notification-url": "https://packagist.org/downloads/",
394
+ "license": [
395
+ "MIT"
396
+ ],
397
+ "authors": [
398
+ {
399
+ "name": "Michael Bodnarchuk"
400
+ }
401
+ ],
402
+ "description": "Codeception module for testing basic shell commands and shell output",
403
+ "homepage": "http://codeception.com/",
404
+ "keywords": [
405
+ "codeception"
406
+ ],
407
+ "support": {
408
+ "issues": "https://github.com/Codeception/module-cli/issues",
409
+ "source": "https://github.com/Codeception/module-cli/tree/1.1.0"
410
+ },
411
+ "time": "2020-11-16T06:26:49+00:00"
412
+ },
413
+ {
414
+ "name": "codeception/module-filesystem",
415
+ "version": "1.0.3",
416
+ "source": {
417
+ "type": "git",
418
+ "url": "https://github.com/Codeception/module-filesystem.git",
419
+ "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1"
420
+ },
421
+ "dist": {
422
+ "type": "zip",
423
+ "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/781be167fb1557bfc9b61e0a4eac60a32c534ec1",
424
+ "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1",
425
+ "shasum": ""
426
+ },
427
+ "require": {
428
+ "codeception/codeception": "^4.0",
429
+ "php": ">=5.6.0 <9.0",
430
+ "symfony/finder": ">=2.7 <6.0"
431
+ },
432
+ "conflict": {
433
+ "codeception/codeception": "<4.0"
434
+ },
435
+ "type": "library",
436
+ "autoload": {
437
+ "classmap": [
438
+ "src/"
439
+ ]
440
+ },
441
+ "notification-url": "https://packagist.org/downloads/",
442
+ "license": [
443
+ "MIT"
444
+ ],
445
+ "authors": [
446
+ {
447
+ "name": "Michael Bodnarchuk"
448
+ },
449
+ {
450
+ "name": "Gintautas Miselis"
451
+ }
452
+ ],
453
+ "description": "Codeception module for testing local filesystem",
454
+ "homepage": "http://codeception.com/",
455
+ "keywords": [
456
+ "codeception",
457
+ "filesystem"
458
+ ],
459
+ "support": {
460
+ "issues": "https://github.com/Codeception/module-filesystem/issues",
461
+ "source": "https://github.com/Codeception/module-filesystem/tree/1.0.3"
462
+ },
463
+ "time": "2020-10-24T14:46:40+00:00"
464
+ },
465
+ {
466
+ "name": "codeception/phpunit-wrapper",
467
+ "version": "9.0.5",
468
+ "source": {
469
+ "type": "git",
470
+ "url": "https://github.com/Codeception/phpunit-wrapper.git",
471
+ "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45"
472
+ },
473
+ "dist": {
474
+ "type": "zip",
475
+ "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/72bac7770866799e23a7dda1ac6bec2f8baccf45",
476
+ "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45",
477
+ "shasum": ""
478
+ },
479
+ "require": {
480
+ "php": ">=7.2",
481
+ "phpunit/phpunit": "^9.0"
482
+ },
483
+ "require-dev": {
484
+ "codeception/specify": "*",
485
+ "vlucas/phpdotenv": "^3.0"
486
+ },
487
+ "type": "library",
488
+ "autoload": {
489
+ "psr-4": {
490
+ "Codeception\\PHPUnit\\": "src/"
491
+ }
492
+ },
493
+ "notification-url": "https://packagist.org/downloads/",
494
+ "license": [
495
+ "MIT"
496
+ ],
497
+ "authors": [
498
+ {
499
+ "name": "Davert",
500
+ "email": "davert.php@resend.cc"
501
+ },
502
+ {
503
+ "name": "Naktibalda"
504
+ }
505
+ ],
506
+ "description": "PHPUnit classes used by Codeception",
507
+ "support": {
508
+ "issues": "https://github.com/Codeception/phpunit-wrapper/issues",
509
+ "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.5"
510
+ },
511
+ "time": "2020-10-11T18:14:42+00:00"
512
+ },
513
+ {
514
+ "name": "codeception/stub",
515
+ "version": "3.7.0",
516
+ "source": {
517
+ "type": "git",
518
+ "url": "https://github.com/Codeception/Stub.git",
519
+ "reference": "468dd5fe659f131fc997f5196aad87512f9b1304"
520
+ },
521
+ "dist": {
522
+ "type": "zip",
523
+ "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304",
524
+ "reference": "468dd5fe659f131fc997f5196aad87512f9b1304",
525
+ "shasum": ""
526
+ },
527
+ "require": {
528
+ "phpunit/phpunit": "^8.4 | ^9.0"
529
+ },
530
+ "type": "library",
531
+ "autoload": {
532
+ "psr-4": {
533
+ "Codeception\\": "src/"
534
+ }
535
+ },
536
+ "notification-url": "https://packagist.org/downloads/",
537
+ "license": [
538
+ "MIT"
539
+ ],
540
+ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
541
+ "support": {
542
+ "issues": "https://github.com/Codeception/Stub/issues",
543
+ "source": "https://github.com/Codeception/Stub/tree/3.7.0"
544
+ },
545
+ "time": "2020-07-03T15:54:43+00:00"
546
+ },
547
+ {
548
+ "name": "composer/ca-bundle",
549
+ "version": "1.2.8",
550
+ "source": {
551
+ "type": "git",
552
+ "url": "https://github.com/composer/ca-bundle.git",
553
+ "reference": "8a7ecad675253e4654ea05505233285377405215"
554
+ },
555
+ "dist": {
556
+ "type": "zip",
557
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215",
558
+ "reference": "8a7ecad675253e4654ea05505233285377405215",
559
+ "shasum": ""
560
+ },
561
+ "require": {
562
+ "ext-openssl": "*",
563
+ "ext-pcre": "*",
564
+ "php": "^5.3.2 || ^7.0 || ^8.0"
565
+ },
566
+ "require-dev": {
567
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
568
+ "psr/log": "^1.0",
569
+ "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
570
+ },
571
+ "type": "library",
572
+ "extra": {
573
+ "branch-alias": {
574
+ "dev-master": "1.x-dev"
575
+ }
576
+ },
577
+ "autoload": {
578
+ "psr-4": {
579
+ "Composer\\CaBundle\\": "src"
580
+ }
581
+ },
582
+ "notification-url": "https://packagist.org/downloads/",
583
+ "license": [
584
+ "MIT"
585
+ ],
586
+ "authors": [
587
+ {
588
+ "name": "Jordi Boggiano",
589
+ "email": "j.boggiano@seld.be",
590
+ "homepage": "http://seld.be"
591
+ }
592
+ ],
593
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
594
+ "keywords": [
595
+ "cabundle",
596
+ "cacert",
597
+ "certificate",
598
+ "ssl",
599
+ "tls"
600
+ ],
601
+ "support": {
602
+ "irc": "irc://irc.freenode.org/composer",
603
+ "issues": "https://github.com/composer/ca-bundle/issues",
604
+ "source": "https://github.com/composer/ca-bundle/tree/1.2.8"
605
+ },
606
+ "funding": [
607
+ {
608
+ "url": "https://packagist.com",
609
+ "type": "custom"
610
+ },
611
+ {
612
+ "url": "https://github.com/composer",
613
+ "type": "github"
614
+ },
615
+ {
616
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
617
+ "type": "tidelift"
618
+ }
619
+ ],
620
+ "time": "2020-08-23T12:54:47+00:00"
621
+ },
622
+ {
623
+ "name": "composer/composer",
624
+ "version": "2.0.8",
625
+ "source": {
626
+ "type": "git",
627
+ "url": "https://github.com/composer/composer.git",
628
+ "reference": "62139b2806178adb979d76bd3437534a1a9fd490"
629
+ },
630
+ "dist": {
631
+ "type": "zip",
632
+ "url": "https://api.github.com/repos/composer/composer/zipball/62139b2806178adb979d76bd3437534a1a9fd490",
633
+ "reference": "62139b2806178adb979d76bd3437534a1a9fd490",
634
+ "shasum": ""
635
+ },
636
+ "require": {
637
+ "composer/ca-bundle": "^1.0",
638
+ "composer/semver": "^3.0",
639
+ "composer/spdx-licenses": "^1.2",
640
+ "composer/xdebug-handler": "^1.1",
641
+ "justinrainbow/json-schema": "^5.2.10",
642
+ "php": "^5.3.2 || ^7.0 || ^8.0",
643
+ "psr/log": "^1.0",
644
+ "react/promise": "^1.2 || ^2.7",
645
+ "seld/jsonlint": "^1.4",
646
+ "seld/phar-utils": "^1.0",
647
+ "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
648
+ "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
649
+ "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
650
+ "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0"
651
+ },
652
+ "require-dev": {
653
+ "phpspec/prophecy": "^1.10",
654
+ "symfony/phpunit-bridge": "^4.2 || ^5.0"
655
+ },
656
+ "suggest": {
657
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
658
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
659
+ "ext-zlib": "Allow gzip compression of HTTP requests"
660
+ },
661
+ "bin": [
662
+ "bin/composer"
663
+ ],
664
+ "type": "library",
665
+ "extra": {
666
+ "branch-alias": {
667
+ "dev-master": "2.0-dev"
668
+ }
669
+ },
670
+ "autoload": {
671
+ "psr-4": {
672
+ "Composer\\": "src/Composer"
673
+ }
674
+ },
675
+ "notification-url": "https://packagist.org/downloads/",
676
+ "license": [
677
+ "MIT"
678
+ ],
679
+ "authors": [
680
+ {
681
+ "name": "Nils Adermann",
682
+ "email": "naderman@naderman.de",
683
+ "homepage": "https://www.naderman.de"
684
+ },
685
+ {
686
+ "name": "Jordi Boggiano",
687
+ "email": "j.boggiano@seld.be",
688
+ "homepage": "https://seld.be"
689
+ }
690
+ ],
691
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
692
+ "homepage": "https://getcomposer.org/",
693
+ "keywords": [
694
+ "autoload",
695
+ "dependency",
696
+ "package"
697
+ ],
698
+ "support": {
699
+ "irc": "irc://irc.freenode.org/composer",
700
+ "issues": "https://github.com/composer/composer/issues",
701
+ "source": "https://github.com/composer/composer/tree/2.0.8"
702
+ },
703
+ "funding": [
704
+ {
705
+ "url": "https://packagist.com",
706
+ "type": "custom"
707
+ },
708
+ {
709
+ "url": "https://github.com/composer",
710
+ "type": "github"
711
+ },
712
+ {
713
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
714
+ "type": "tidelift"
715
+ }
716
+ ],
717
+ "time": "2020-12-03T16:20:39+00:00"
718
+ },
719
+ {
720
+ "name": "composer/semver",
721
+ "version": "3.2.4",
722
+ "source": {
723
+ "type": "git",
724
+ "url": "https://github.com/composer/semver.git",
725
+ "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464"
726
+ },
727
+ "dist": {
728
+ "type": "zip",
729
+ "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464",
730
+ "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464",
731
+ "shasum": ""
732
+ },
733
+ "require": {
734
+ "php": "^5.3.2 || ^7.0 || ^8.0"
735
+ },
736
+ "require-dev": {
737
+ "phpstan/phpstan": "^0.12.54",
738
+ "symfony/phpunit-bridge": "^4.2 || ^5"
739
+ },
740
+ "type": "library",
741
+ "extra": {
742
+ "branch-alias": {
743
+ "dev-main": "3.x-dev"
744
+ }
745
+ },
746
+ "autoload": {
747
+ "psr-4": {
748
+ "Composer\\Semver\\": "src"
749
+ }
750
+ },
751
+ "notification-url": "https://packagist.org/downloads/",
752
+ "license": [
753
+ "MIT"
754
+ ],
755
+ "authors": [
756
+ {
757
+ "name": "Nils Adermann",
758
+ "email": "naderman@naderman.de",
759
+ "homepage": "http://www.naderman.de"
760
+ },
761
+ {
762
+ "name": "Jordi Boggiano",
763
+ "email": "j.boggiano@seld.be",
764
+ "homepage": "http://seld.be"
765
+ },
766
+ {
767
+ "name": "Rob Bast",
768
+ "email": "rob.bast@gmail.com",
769
+ "homepage": "http://robbast.nl"
770
+ }
771
+ ],
772
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
773
+ "keywords": [
774
+ "semantic",
775
+ "semver",
776
+ "validation",
777
+ "versioning"
778
+ ],
779
+ "support": {
780
+ "irc": "irc://irc.freenode.org/composer",
781
+ "issues": "https://github.com/composer/semver/issues",
782
+ "source": "https://github.com/composer/semver/tree/3.2.4"
783
+ },
784
+ "funding": [
785
+ {
786
+ "url": "https://packagist.com",
787
+ "type": "custom"
788
+ },
789
+ {
790
+ "url": "https://github.com/composer",
791
+ "type": "github"
792
+ },
793
+ {
794
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
795
+ "type": "tidelift"
796
+ }
797
+ ],
798
+ "time": "2020-11-13T08:59:24+00:00"
799
+ },
800
+ {
801
+ "name": "composer/spdx-licenses",
802
+ "version": "1.5.5",
803
+ "source": {
804
+ "type": "git",
805
+ "url": "https://github.com/composer/spdx-licenses.git",
806
+ "reference": "de30328a7af8680efdc03e396aad24befd513200"
807
+ },
808
+ "dist": {
809
+ "type": "zip",
810
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200",
811
+ "reference": "de30328a7af8680efdc03e396aad24befd513200",
812
+ "shasum": ""
813
+ },
814
+ "require": {
815
+ "php": "^5.3.2 || ^7.0 || ^8.0"
816
+ },
817
+ "require-dev": {
818
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
819
+ },
820
+ "type": "library",
821
+ "extra": {
822
+ "branch-alias": {
823
+ "dev-main": "1.x-dev"
824
+ }
825
+ },
826
+ "autoload": {
827
+ "psr-4": {
828
+ "Composer\\Spdx\\": "src"
829
+ }
830
+ },
831
+ "notification-url": "https://packagist.org/downloads/",
832
+ "license": [
833
+ "MIT"
834
+ ],
835
+ "authors": [
836
+ {
837
+ "name": "Nils Adermann",
838
+ "email": "naderman@naderman.de",
839
+ "homepage": "http://www.naderman.de"
840
+ },
841
+ {
842
+ "name": "Jordi Boggiano",
843
+ "email": "j.boggiano@seld.be",
844
+ "homepage": "http://seld.be"
845
+ },
846
+ {
847
+ "name": "Rob Bast",
848
+ "email": "rob.bast@gmail.com",
849
+ "homepage": "http://robbast.nl"
850
+ }
851
+ ],
852
+ "description": "SPDX licenses list and validation library.",
853
+ "keywords": [
854
+ "license",
855
+ "spdx",
856
+ "validator"
857
+ ],
858
+ "support": {
859
+ "irc": "irc://irc.freenode.org/composer",
860
+ "issues": "https://github.com/composer/spdx-licenses/issues",
861
+ "source": "https://github.com/composer/spdx-licenses/tree/1.5.5"
862
+ },
863
+ "funding": [
864
+ {
865
+ "url": "https://packagist.com",
866
+ "type": "custom"
867
+ },
868
+ {
869
+ "url": "https://github.com/composer",
870
+ "type": "github"
871
+ },
872
+ {
873
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
874
+ "type": "tidelift"
875
+ }
876
+ ],
877
+ "time": "2020-12-03T16:04:16+00:00"
878
+ },
879
+ {
880
+ "name": "composer/xdebug-handler",
881
+ "version": "1.4.5",
882
+ "source": {
883
+ "type": "git",
884
+ "url": "https://github.com/composer/xdebug-handler.git",
885
+ "reference": "f28d44c286812c714741478d968104c5e604a1d4"
886
+ },
887
+ "dist": {
888
+ "type": "zip",
889
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4",
890
+ "reference": "f28d44c286812c714741478d968104c5e604a1d4",
891
+ "shasum": ""
892
+ },
893
+ "require": {
894
+ "php": "^5.3.2 || ^7.0 || ^8.0",
895
+ "psr/log": "^1.0"
896
+ },
897
+ "require-dev": {
898
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
899
+ },
900
+ "type": "library",
901
+ "autoload": {
902
+ "psr-4": {
903
+ "Composer\\XdebugHandler\\": "src"
904
+ }
905
+ },
906
+ "notification-url": "https://packagist.org/downloads/",
907
+ "license": [
908
+ "MIT"
909
+ ],
910
+ "authors": [
911
+ {
912
+ "name": "John Stevenson",
913
+ "email": "john-stevenson@blueyonder.co.uk"
914
+ }
915
+ ],
916
+ "description": "Restarts a process without Xdebug.",
917
+ "keywords": [
918
+ "Xdebug",
919
+ "performance"
920
+ ],
921
+ "support": {
922
+ "irc": "irc://irc.freenode.org/composer",
923
+ "issues": "https://github.com/composer/xdebug-handler/issues",
924
+ "source": "https://github.com/composer/xdebug-handler/tree/1.4.5"
925
+ },
926
+ "funding": [
927
+ {
928
+ "url": "https://packagist.com",
929
+ "type": "custom"
930
+ },
931
+ {
932
+ "url": "https://github.com/composer",
933
+ "type": "github"
934
+ },
935
+ {
936
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
937
+ "type": "tidelift"
938
+ }
939
+ ],
940
+ "time": "2020-11-13T08:04:11+00:00"
941
+ },
942
+ {
943
+ "name": "doctrine/instantiator",
944
+ "version": "1.4.0",
945
+ "source": {
946
+ "type": "git",
947
+ "url": "https://github.com/doctrine/instantiator.git",
948
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
949
+ },
950
+ "dist": {
951
+ "type": "zip",
952
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
953
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
954
+ "shasum": ""
955
+ },
956
+ "require": {
957
+ "php": "^7.1 || ^8.0"
958
+ },
959
+ "require-dev": {
960
+ "doctrine/coding-standard": "^8.0",
961
+ "ext-pdo": "*",
962
+ "ext-phar": "*",
963
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
964
+ "phpstan/phpstan": "^0.12",
965
+ "phpstan/phpstan-phpunit": "^0.12",
966
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
967
+ },
968
+ "type": "library",
969
+ "autoload": {
970
+ "psr-4": {
971
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
972
+ }
973
+ },
974
+ "notification-url": "https://packagist.org/downloads/",
975
+ "license": [
976
+ "MIT"
977
+ ],
978
+ "authors": [
979
+ {
980
+ "name": "Marco Pivetta",
981
+ "email": "ocramius@gmail.com",
982
+ "homepage": "https://ocramius.github.io/"
983
+ }
984
+ ],
985
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
986
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
987
+ "keywords": [
988
+ "constructor",
989
+ "instantiate"
990
+ ],
991
+ "support": {
992
+ "issues": "https://github.com/doctrine/instantiator/issues",
993
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
994
+ },
995
+ "funding": [
996
+ {
997
+ "url": "https://www.doctrine-project.org/sponsorship.html",
998
+ "type": "custom"
999
+ },
1000
+ {
1001
+ "url": "https://www.patreon.com/phpdoctrine",
1002
+ "type": "patreon"
1003
+ },
1004
+ {
1005
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
1006
+ "type": "tidelift"
1007
+ }
1008
+ ],
1009
+ "time": "2020-11-10T18:47:58+00:00"
1010
+ },
1011
+ {
1012
+ "name": "guzzlehttp/psr7",
1013
+ "version": "1.7.0",
1014
+ "source": {
1015
+ "type": "git",
1016
+ "url": "https://github.com/guzzle/psr7.git",
1017
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
1018
+ },
1019
+ "dist": {
1020
+ "type": "zip",
1021
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
1022
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
1023
+ "shasum": ""
1024
+ },
1025
+ "require": {
1026
+ "php": ">=5.4.0",
1027
+ "psr/http-message": "~1.0",
1028
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
1029
+ },
1030
+ "provide": {
1031
+ "psr/http-message-implementation": "1.0"
1032
+ },
1033
+ "require-dev": {
1034
+ "ext-zlib": "*",
1035
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
1036
+ },
1037
+ "suggest": {
1038
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
1039
+ },
1040
+ "type": "library",
1041
+ "extra": {
1042
+ "branch-alias": {
1043
+ "dev-master": "1.7-dev"
1044
+ }
1045
+ },
1046
+ "autoload": {
1047
+ "psr-4": {
1048
+ "GuzzleHttp\\Psr7\\": "src/"
1049
+ },
1050
+ "files": [
1051
+ "src/functions_include.php"
1052
+ ]
1053
+ },
1054
+ "notification-url": "https://packagist.org/downloads/",
1055
+ "license": [
1056
+ "MIT"
1057
+ ],
1058
+ "authors": [
1059
+ {
1060
+ "name": "Michael Dowling",
1061
+ "email": "mtdowling@gmail.com",
1062
+ "homepage": "https://github.com/mtdowling"
1063
+ },
1064
+ {
1065
+ "name": "Tobias Schultze",
1066
+ "homepage": "https://github.com/Tobion"
1067
+ }
1068
+ ],
1069
+ "description": "PSR-7 message implementation that also provides common utility methods",
1070
+ "keywords": [
1071
+ "http",
1072
+ "message",
1073
+ "psr-7",
1074
+ "request",
1075
+ "response",
1076
+ "stream",
1077
+ "uri",
1078
+ "url"
1079
+ ],
1080
+ "support": {
1081
+ "issues": "https://github.com/guzzle/psr7/issues",
1082
+ "source": "https://github.com/guzzle/psr7/tree/1.7.0"
1083
+ },
1084
+ "time": "2020-09-30T07:37:11+00:00"
1085
+ },
1086
+ {
1087
+ "name": "justinrainbow/json-schema",
1088
+ "version": "5.2.10",
1089
+ "source": {
1090
+ "type": "git",
1091
+ "url": "https://github.com/justinrainbow/json-schema.git",
1092
+ "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b"
1093
+ },
1094
+ "dist": {
1095
+ "type": "zip",
1096
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
1097
+ "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
1098
+ "shasum": ""
1099
+ },
1100
+ "require": {
1101
+ "php": ">=5.3.3"
1102
+ },
1103
+ "require-dev": {
1104
+ "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
1105
+ "json-schema/json-schema-test-suite": "1.2.0",
1106
+ "phpunit/phpunit": "^4.8.35"
1107
+ },
1108
+ "bin": [
1109
+ "bin/validate-json"
1110
+ ],
1111
+ "type": "library",
1112
+ "extra": {
1113
+ "branch-alias": {
1114
+ "dev-master": "5.0.x-dev"
1115
+ }
1116
+ },
1117
+ "autoload": {
1118
+ "psr-4": {
1119
+ "JsonSchema\\": "src/JsonSchema/"
1120
+ }
1121
+ },
1122
+ "notification-url": "https://packagist.org/downloads/",
1123
+ "license": [
1124
+ "MIT"
1125
+ ],
1126
+ "authors": [
1127
+ {
1128
+ "name": "Bruno Prieto Reis",
1129
+ "email": "bruno.p.reis@gmail.com"
1130
+ },
1131
+ {
1132
+ "name": "Justin Rainbow",
1133
+ "email": "justin.rainbow@gmail.com"
1134
+ },
1135
+ {
1136
+ "name": "Igor Wiedler",
1137
+ "email": "igor@wiedler.ch"
1138
+ },
1139
+ {
1140
+ "name": "Robert Schönthal",
1141
+ "email": "seroscho@googlemail.com"
1142
+ }
1143
+ ],
1144
+ "description": "A library to validate a json schema.",
1145
+ "homepage": "https://github.com/justinrainbow/json-schema",
1146
+ "keywords": [
1147
+ "json",
1148
+ "schema"
1149
+ ],
1150
+ "support": {
1151
+ "issues": "https://github.com/justinrainbow/json-schema/issues",
1152
+ "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10"
1153
+ },
1154
+ "time": "2020-05-27T16:41:55+00:00"
1155
+ },
1156
+ {
1157
+ "name": "myclabs/deep-copy",
1158
+ "version": "1.10.2",
1159
+ "source": {
1160
+ "type": "git",
1161
+ "url": "https://github.com/myclabs/DeepCopy.git",
1162
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
1163
+ },
1164
+ "dist": {
1165
+ "type": "zip",
1166
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
1167
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
1168
+ "shasum": ""
1169
+ },
1170
+ "require": {
1171
+ "php": "^7.1 || ^8.0"
1172
+ },
1173
+ "replace": {
1174
+ "myclabs/deep-copy": "self.version"
1175
+ },
1176
+ "require-dev": {
1177
+ "doctrine/collections": "^1.0",
1178
+ "doctrine/common": "^2.6",
1179
+ "phpunit/phpunit": "^7.1"
1180
+ },
1181
+ "type": "library",
1182
+ "autoload": {
1183
+ "psr-4": {
1184
+ "DeepCopy\\": "src/DeepCopy/"
1185
+ },
1186
+ "files": [
1187
+ "src/DeepCopy/deep_copy.php"
1188
+ ]
1189
+ },
1190
+ "notification-url": "https://packagist.org/downloads/",
1191
+ "license": [
1192
+ "MIT"
1193
+ ],
1194
+ "description": "Create deep copies (clones) of your objects",
1195
+ "keywords": [
1196
+ "clone",
1197
+ "copy",
1198
+ "duplicate",
1199
+ "object",
1200
+ "object graph"
1201
+ ],
1202
+ "support": {
1203
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
1204
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
1205
+ },
1206
+ "funding": [
1207
+ {
1208
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
1209
+ "type": "tidelift"
1210
+ }
1211
+ ],
1212
+ "time": "2020-11-13T09:40:50+00:00"
1213
+ },
1214
+ {
1215
+ "name": "nikic/php-parser",
1216
+ "version": "v4.10.3",
1217
+ "source": {
1218
+ "type": "git",
1219
+ "url": "https://github.com/nikic/PHP-Parser.git",
1220
+ "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984"
1221
+ },
1222
+ "dist": {
1223
+ "type": "zip",
1224
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984",
1225
+ "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984",
1226
+ "shasum": ""
1227
+ },
1228
+ "require": {
1229
+ "ext-tokenizer": "*",
1230
+ "php": ">=7.0"
1231
+ },
1232
+ "require-dev": {
1233
+ "ircmaxell/php-yacc": "^0.0.7",
1234
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
1235
+ },
1236
+ "bin": [
1237
+ "bin/php-parse"
1238
+ ],
1239
+ "type": "library",
1240
+ "extra": {
1241
+ "branch-alias": {
1242
+ "dev-master": "4.9-dev"
1243
+ }
1244
+ },
1245
+ "autoload": {
1246
+ "psr-4": {
1247
+ "PhpParser\\": "lib/PhpParser"
1248
+ }
1249
+ },
1250
+ "notification-url": "https://packagist.org/downloads/",
1251
+ "license": [
1252
+ "BSD-3-Clause"
1253
+ ],
1254
+ "authors": [
1255
+ {
1256
+ "name": "Nikita Popov"
1257
+ }
1258
+ ],
1259
+ "description": "A PHP parser written in PHP",
1260
+ "keywords": [
1261
+ "parser",
1262
+ "php"
1263
+ ],
1264
+ "support": {
1265
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
1266
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.3"
1267
+ },
1268
+ "time": "2020-12-03T17:45:45+00:00"
1269
+ },
1270
+ {
1271
+ "name": "phar-io/manifest",
1272
+ "version": "2.0.1",
1273
+ "source": {
1274
+ "type": "git",
1275
+ "url": "https://github.com/phar-io/manifest.git",
1276
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
1277
+ },
1278
+ "dist": {
1279
+ "type": "zip",
1280
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
1281
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
1282
+ "shasum": ""
1283
+ },
1284
+ "require": {
1285
+ "ext-dom": "*",
1286
+ "ext-phar": "*",
1287
+ "ext-xmlwriter": "*",
1288
+ "phar-io/version": "^3.0.1",
1289
+ "php": "^7.2 || ^8.0"
1290
+ },
1291
+ "type": "library",
1292
+ "extra": {
1293
+ "branch-alias": {
1294
+ "dev-master": "2.0.x-dev"
1295
+ }
1296
+ },
1297
+ "autoload": {
1298
+ "classmap": [
1299
+ "src/"
1300
+ ]
1301
+ },
1302
+ "notification-url": "https://packagist.org/downloads/",
1303
+ "license": [
1304
+ "BSD-3-Clause"
1305
+ ],
1306
+ "authors": [
1307
+ {
1308
+ "name": "Arne Blankerts",
1309
+ "email": "arne@blankerts.de",
1310
+ "role": "Developer"
1311
+ },
1312
+ {
1313
+ "name": "Sebastian Heuer",
1314
+ "email": "sebastian@phpeople.de",
1315
+ "role": "Developer"
1316
+ },
1317
+ {
1318
+ "name": "Sebastian Bergmann",
1319
+ "email": "sebastian@phpunit.de",
1320
+ "role": "Developer"
1321
+ }
1322
+ ],
1323
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
1324
+ "support": {
1325
+ "issues": "https://github.com/phar-io/manifest/issues",
1326
+ "source": "https://github.com/phar-io/manifest/tree/master"
1327
+ },
1328
+ "time": "2020-06-27T14:33:11+00:00"
1329
+ },
1330
+ {
1331
+ "name": "phar-io/version",
1332
+ "version": "3.0.3",
1333
+ "source": {
1334
+ "type": "git",
1335
+ "url": "https://github.com/phar-io/version.git",
1336
+ "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae"
1337
+ },
1338
+ "dist": {
1339
+ "type": "zip",
1340
+ "url": "https://api.github.com/repos/phar-io/version/zipball/726c026815142e4f8677b7cb7f2249c9ffb7ecae",
1341
+ "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae",
1342
+ "shasum": ""
1343
+ },
1344
+ "require": {
1345
+ "php": "^7.2 || ^8.0"
1346
+ },
1347
+ "type": "library",
1348
+ "autoload": {
1349
+ "classmap": [
1350
+ "src/"
1351
+ ]
1352
+ },
1353
+ "notification-url": "https://packagist.org/downloads/",
1354
+ "license": [
1355
+ "BSD-3-Clause"
1356
+ ],
1357
+ "authors": [
1358
+ {
1359
+ "name": "Arne Blankerts",
1360
+ "email": "arne@blankerts.de",
1361
+ "role": "Developer"
1362
+ },
1363
+ {
1364
+ "name": "Sebastian Heuer",
1365
+ "email": "sebastian@phpeople.de",
1366
+ "role": "Developer"
1367
+ },
1368
+ {
1369
+ "name": "Sebastian Bergmann",
1370
+ "email": "sebastian@phpunit.de",
1371
+ "role": "Developer"
1372
+ }
1373
+ ],
1374
+ "description": "Library for handling version information and constraints",
1375
+ "support": {
1376
+ "issues": "https://github.com/phar-io/version/issues",
1377
+ "source": "https://github.com/phar-io/version/tree/3.0.3"
1378
+ },
1379
+ "time": "2020-11-30T09:21:21+00:00"
1380
+ },
1381
+ {
1382
+ "name": "phpdocumentor/reflection-common",
1383
+ "version": "2.2.0",
1384
+ "source": {
1385
+ "type": "git",
1386
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1387
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
1388
+ },
1389
+ "dist": {
1390
+ "type": "zip",
1391
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1392
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1393
+ "shasum": ""
1394
+ },
1395
+ "require": {
1396
+ "php": "^7.2 || ^8.0"
1397
+ },
1398
+ "type": "library",
1399
+ "extra": {
1400
+ "branch-alias": {
1401
+ "dev-2.x": "2.x-dev"
1402
+ }
1403
+ },
1404
+ "autoload": {
1405
+ "psr-4": {
1406
+ "phpDocumentor\\Reflection\\": "src/"
1407
+ }
1408
+ },
1409
+ "notification-url": "https://packagist.org/downloads/",
1410
+ "license": [
1411
+ "MIT"
1412
+ ],
1413
+ "authors": [
1414
+ {
1415
+ "name": "Jaap van Otterdijk",
1416
+ "email": "opensource@ijaap.nl"
1417
+ }
1418
+ ],
1419
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1420
+ "homepage": "http://www.phpdoc.org",
1421
+ "keywords": [
1422
+ "FQSEN",
1423
+ "phpDocumentor",
1424
+ "phpdoc",
1425
+ "reflection",
1426
+ "static analysis"
1427
+ ],
1428
+ "support": {
1429
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
1430
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
1431
+ },
1432
+ "time": "2020-06-27T09:03:43+00:00"
1433
+ },
1434
+ {
1435
+ "name": "phpdocumentor/reflection-docblock",
1436
+ "version": "5.2.2",
1437
+ "source": {
1438
+ "type": "git",
1439
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1440
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
1441
+ },
1442
+ "dist": {
1443
+ "type": "zip",
1444
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
1445
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
1446
+ "shasum": ""
1447
+ },
1448
+ "require": {
1449
+ "ext-filter": "*",
1450
+ "php": "^7.2 || ^8.0",
1451
+ "phpdocumentor/reflection-common": "^2.2",
1452
+ "phpdocumentor/type-resolver": "^1.3",
1453
+ "webmozart/assert": "^1.9.1"
1454
+ },
1455
+ "require-dev": {
1456
+ "mockery/mockery": "~1.3.2"
1457
+ },
1458
+ "type": "library",
1459
+ "extra": {
1460
+ "branch-alias": {
1461
+ "dev-master": "5.x-dev"
1462
+ }
1463
+ },
1464
+ "autoload": {
1465
+ "psr-4": {
1466
+ "phpDocumentor\\Reflection\\": "src"
1467
+ }
1468
+ },
1469
+ "notification-url": "https://packagist.org/downloads/",
1470
+ "license": [
1471
+ "MIT"
1472
+ ],
1473
+ "authors": [
1474
+ {
1475
+ "name": "Mike van Riel",
1476
+ "email": "me@mikevanriel.com"
1477
+ },
1478
+ {
1479
+ "name": "Jaap van Otterdijk",
1480
+ "email": "account@ijaap.nl"
1481
+ }
1482
+ ],
1483
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1484
+ "support": {
1485
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1486
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
1487
+ },
1488
+ "time": "2020-09-03T19:13:55+00:00"
1489
+ },
1490
+ {
1491
+ "name": "phpdocumentor/type-resolver",
1492
+ "version": "1.4.0",
1493
+ "source": {
1494
+ "type": "git",
1495
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
1496
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
1497
+ },
1498
+ "dist": {
1499
+ "type": "zip",
1500
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1501
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1502
+ "shasum": ""
1503
+ },
1504
+ "require": {
1505
+ "php": "^7.2 || ^8.0",
1506
+ "phpdocumentor/reflection-common": "^2.0"
1507
+ },
1508
+ "require-dev": {
1509
+ "ext-tokenizer": "*"
1510
+ },
1511
+ "type": "library",
1512
+ "extra": {
1513
+ "branch-alias": {
1514
+ "dev-1.x": "1.x-dev"
1515
+ }
1516
+ },
1517
+ "autoload": {
1518
+ "psr-4": {
1519
+ "phpDocumentor\\Reflection\\": "src"
1520
+ }
1521
+ },
1522
+ "notification-url": "https://packagist.org/downloads/",
1523
+ "license": [
1524
+ "MIT"
1525
+ ],
1526
+ "authors": [
1527
+ {
1528
+ "name": "Mike van Riel",
1529
+ "email": "me@mikevanriel.com"
1530
+ }
1531
+ ],
1532
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
1533
+ "support": {
1534
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1535
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
1536
+ },
1537
+ "time": "2020-09-17T18:55:26+00:00"
1538
+ },
1539
+ {
1540
+ "name": "phpspec/prophecy",
1541
+ "version": "1.12.1",
1542
+ "source": {
1543
+ "type": "git",
1544
+ "url": "https://github.com/phpspec/prophecy.git",
1545
+ "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d"
1546
+ },
1547
+ "dist": {
1548
+ "type": "zip",
1549
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d",
1550
+ "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d",
1551
+ "shasum": ""
1552
+ },
1553
+ "require": {
1554
+ "doctrine/instantiator": "^1.2",
1555
+ "php": "^7.2 || ~8.0, <8.1",
1556
+ "phpdocumentor/reflection-docblock": "^5.2",
1557
+ "sebastian/comparator": "^3.0 || ^4.0",
1558
+ "sebastian/recursion-context": "^3.0 || ^4.0"
1559
+ },
1560
+ "require-dev": {
1561
+ "phpspec/phpspec": "^6.0",
1562
+ "phpunit/phpunit": "^8.0 || ^9.0 <9.3"
1563
+ },
1564
+ "type": "library",
1565
+ "extra": {
1566
+ "branch-alias": {
1567
+ "dev-master": "1.11.x-dev"
1568
+ }
1569
+ },
1570
+ "autoload": {
1571
+ "psr-4": {
1572
+ "Prophecy\\": "src/Prophecy"
1573
+ }
1574
+ },
1575
+ "notification-url": "https://packagist.org/downloads/",
1576
+ "license": [
1577
+ "MIT"
1578
+ ],
1579
+ "authors": [
1580
+ {
1581
+ "name": "Konstantin Kudryashov",
1582
+ "email": "ever.zet@gmail.com",
1583
+ "homepage": "http://everzet.com"
1584
+ },
1585
+ {
1586
+ "name": "Marcello Duarte",
1587
+ "email": "marcello.duarte@gmail.com"
1588
+ }
1589
+ ],
1590
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
1591
+ "homepage": "https://github.com/phpspec/prophecy",
1592
+ "keywords": [
1593
+ "Double",
1594
+ "Dummy",
1595
+ "fake",
1596
+ "mock",
1597
+ "spy",
1598
+ "stub"
1599
+ ],
1600
+ "support": {
1601
+ "issues": "https://github.com/phpspec/prophecy/issues",
1602
+ "source": "https://github.com/phpspec/prophecy/tree/1.12.1"
1603
+ },
1604
+ "time": "2020-09-29T09:10:42+00:00"
1605
+ },
1606
+ {
1607
+ "name": "phpunit/php-code-coverage",
1608
+ "version": "9.2.5",
1609
+ "source": {
1610
+ "type": "git",
1611
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1612
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
1613
+ },
1614
+ "dist": {
1615
+ "type": "zip",
1616
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
1617
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
1618
+ "shasum": ""
1619
+ },
1620
+ "require": {
1621
+ "ext-dom": "*",
1622
+ "ext-libxml": "*",
1623
+ "ext-xmlwriter": "*",
1624
+ "nikic/php-parser": "^4.10.2",
1625
+ "php": ">=7.3",
1626
+ "phpunit/php-file-iterator": "^3.0.3",
1627
+ "phpunit/php-text-template": "^2.0.2",
1628
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
1629
+ "sebastian/complexity": "^2.0",
1630
+ "sebastian/environment": "^5.1.2",
1631
+ "sebastian/lines-of-code": "^1.0.3",
1632
+ "sebastian/version": "^3.0.1",
1633
+ "theseer/tokenizer": "^1.2.0"
1634
+ },
1635
+ "require-dev": {
1636
+ "phpunit/phpunit": "^9.3"
1637
+ },
1638
+ "suggest": {
1639
+ "ext-pcov": "*",
1640
+ "ext-xdebug": "*"
1641
+ },
1642
+ "type": "library",
1643
+ "extra": {
1644
+ "branch-alias": {
1645
+ "dev-master": "9.2-dev"
1646
+ }
1647
+ },
1648
+ "autoload": {
1649
+ "classmap": [
1650
+ "src/"
1651
+ ]
1652
+ },
1653
+ "notification-url": "https://packagist.org/downloads/",
1654
+ "license": [
1655
+ "BSD-3-Clause"
1656
+ ],
1657
+ "authors": [
1658
+ {
1659
+ "name": "Sebastian Bergmann",
1660
+ "email": "sebastian@phpunit.de",
1661
+ "role": "lead"
1662
+ }
1663
+ ],
1664
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1665
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1666
+ "keywords": [
1667
+ "coverage",
1668
+ "testing",
1669
+ "xunit"
1670
+ ],
1671
+ "support": {
1672
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1673
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
1674
+ },
1675
+ "funding": [
1676
+ {
1677
+ "url": "https://github.com/sebastianbergmann",
1678
+ "type": "github"
1679
+ }
1680
+ ],
1681
+ "time": "2020-11-28T06:44:49+00:00"
1682
+ },
1683
+ {
1684
+ "name": "phpunit/php-file-iterator",
1685
+ "version": "3.0.5",
1686
+ "source": {
1687
+ "type": "git",
1688
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1689
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
1690
+ },
1691
+ "dist": {
1692
+ "type": "zip",
1693
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
1694
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
1695
+ "shasum": ""
1696
+ },
1697
+ "require": {
1698
+ "php": ">=7.3"
1699
+ },
1700
+ "require-dev": {
1701
+ "phpunit/phpunit": "^9.3"
1702
+ },
1703
+ "type": "library",
1704
+ "extra": {
1705
+ "branch-alias": {
1706
+ "dev-master": "3.0-dev"
1707
+ }
1708
+ },
1709
+ "autoload": {
1710
+ "classmap": [
1711
+ "src/"
1712
+ ]
1713
+ },
1714
+ "notification-url": "https://packagist.org/downloads/",
1715
+ "license": [
1716
+ "BSD-3-Clause"
1717
+ ],
1718
+ "authors": [
1719
+ {
1720
+ "name": "Sebastian Bergmann",
1721
+ "email": "sebastian@phpunit.de",
1722
+ "role": "lead"
1723
+ }
1724
+ ],
1725
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1726
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1727
+ "keywords": [
1728
+ "filesystem",
1729
+ "iterator"
1730
+ ],
1731
+ "support": {
1732
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1733
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
1734
+ },
1735
+ "funding": [
1736
+ {
1737
+ "url": "https://github.com/sebastianbergmann",
1738
+ "type": "github"
1739
+ }
1740
+ ],
1741
+ "time": "2020-09-28T05:57:25+00:00"
1742
+ },
1743
+ {
1744
+ "name": "phpunit/php-invoker",
1745
+ "version": "3.1.1",
1746
+ "source": {
1747
+ "type": "git",
1748
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
1749
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
1750
+ },
1751
+ "dist": {
1752
+ "type": "zip",
1753
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
1754
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
1755
+ "shasum": ""
1756
+ },
1757
+ "require": {
1758
+ "php": ">=7.3"
1759
+ },
1760
+ "require-dev": {
1761
+ "ext-pcntl": "*",
1762
+ "phpunit/phpunit": "^9.3"
1763
+ },
1764
+ "suggest": {
1765
+ "ext-pcntl": "*"
1766
+ },
1767
+ "type": "library",
1768
+ "extra": {
1769
+ "branch-alias": {
1770
+ "dev-master": "3.1-dev"
1771
+ }
1772
+ },
1773
+ "autoload": {
1774
+ "classmap": [
1775
+ "src/"
1776
+ ]
1777
+ },
1778
+ "notification-url": "https://packagist.org/downloads/",
1779
+ "license": [
1780
+ "BSD-3-Clause"
1781
+ ],
1782
+ "authors": [
1783
+ {
1784
+ "name": "Sebastian Bergmann",
1785
+ "email": "sebastian@phpunit.de",
1786
+ "role": "lead"
1787
+ }
1788
+ ],
1789
+ "description": "Invoke callables with a timeout",
1790
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
1791
+ "keywords": [
1792
+ "process"
1793
+ ],
1794
+ "support": {
1795
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
1796
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
1797
+ },
1798
+ "funding": [
1799
+ {
1800
+ "url": "https://github.com/sebastianbergmann",
1801
+ "type": "github"
1802
+ }
1803
+ ],
1804
+ "time": "2020-09-28T05:58:55+00:00"
1805
+ },
1806
+ {
1807
+ "name": "phpunit/php-text-template",
1808
+ "version": "2.0.4",
1809
+ "source": {
1810
+ "type": "git",
1811
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
1812
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
1813
+ },
1814
+ "dist": {
1815
+ "type": "zip",
1816
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
1817
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
1818
+ "shasum": ""
1819
+ },
1820
+ "require": {
1821
+ "php": ">=7.3"
1822
+ },
1823
+ "require-dev": {
1824
+ "phpunit/phpunit": "^9.3"
1825
+ },
1826
+ "type": "library",
1827
+ "extra": {
1828
+ "branch-alias": {
1829
+ "dev-master": "2.0-dev"
1830
+ }
1831
+ },
1832
+ "autoload": {
1833
+ "classmap": [
1834
+ "src/"
1835
+ ]
1836
+ },
1837
+ "notification-url": "https://packagist.org/downloads/",
1838
+ "license": [
1839
+ "BSD-3-Clause"
1840
+ ],
1841
+ "authors": [
1842
+ {
1843
+ "name": "Sebastian Bergmann",
1844
+ "email": "sebastian@phpunit.de",
1845
+ "role": "lead"
1846
+ }
1847
+ ],
1848
+ "description": "Simple template engine.",
1849
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1850
+ "keywords": [
1851
+ "template"
1852
+ ],
1853
+ "support": {
1854
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1855
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
1856
+ },
1857
+ "funding": [
1858
+ {
1859
+ "url": "https://github.com/sebastianbergmann",
1860
+ "type": "github"
1861
+ }
1862
+ ],
1863
+ "time": "2020-10-26T05:33:50+00:00"
1864
+ },
1865
+ {
1866
+ "name": "phpunit/php-timer",
1867
+ "version": "5.0.3",
1868
+ "source": {
1869
+ "type": "git",
1870
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
1871
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
1872
+ },
1873
+ "dist": {
1874
+ "type": "zip",
1875
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
1876
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
1877
+ "shasum": ""
1878
+ },
1879
+ "require": {
1880
+ "php": ">=7.3"
1881
+ },
1882
+ "require-dev": {
1883
+ "phpunit/phpunit": "^9.3"
1884
+ },
1885
+ "type": "library",
1886
+ "extra": {
1887
+ "branch-alias": {
1888
+ "dev-master": "5.0-dev"
1889
+ }
1890
+ },
1891
+ "autoload": {
1892
+ "classmap": [
1893
+ "src/"
1894
+ ]
1895
+ },
1896
+ "notification-url": "https://packagist.org/downloads/",
1897
+ "license": [
1898
+ "BSD-3-Clause"
1899
+ ],
1900
+ "authors": [
1901
+ {
1902
+ "name": "Sebastian Bergmann",
1903
+ "email": "sebastian@phpunit.de",
1904
+ "role": "lead"
1905
+ }
1906
+ ],
1907
+ "description": "Utility class for timing",
1908
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
1909
+ "keywords": [
1910
+ "timer"
1911
+ ],
1912
+ "support": {
1913
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1914
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
1915
+ },
1916
+ "funding": [
1917
+ {
1918
+ "url": "https://github.com/sebastianbergmann",
1919
+ "type": "github"
1920
+ }
1921
+ ],
1922
+ "time": "2020-10-26T13:16:10+00:00"
1923
+ },
1924
+ {
1925
+ "name": "phpunit/phpunit",
1926
+ "version": "9.5.0",
1927
+ "source": {
1928
+ "type": "git",
1929
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1930
+ "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe"
1931
+ },
1932
+ "dist": {
1933
+ "type": "zip",
1934
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
1935
+ "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
1936
+ "shasum": ""
1937
+ },
1938
+ "require": {
1939
+ "doctrine/instantiator": "^1.3.1",
1940
+ "ext-dom": "*",
1941
+ "ext-json": "*",
1942
+ "ext-libxml": "*",
1943
+ "ext-mbstring": "*",
1944
+ "ext-xml": "*",
1945
+ "ext-xmlwriter": "*",
1946
+ "myclabs/deep-copy": "^1.10.1",
1947
+ "phar-io/manifest": "^2.0.1",
1948
+ "phar-io/version": "^3.0.2",
1949
+ "php": ">=7.3",
1950
+ "phpspec/prophecy": "^1.12.1",
1951
+ "phpunit/php-code-coverage": "^9.2.3",
1952
+ "phpunit/php-file-iterator": "^3.0.5",
1953
+ "phpunit/php-invoker": "^3.1.1",
1954
+ "phpunit/php-text-template": "^2.0.3",
1955
+ "phpunit/php-timer": "^5.0.2",
1956
+ "sebastian/cli-parser": "^1.0.1",
1957
+ "sebastian/code-unit": "^1.0.6",
1958
+ "sebastian/comparator": "^4.0.5",
1959
+ "sebastian/diff": "^4.0.3",
1960
+ "sebastian/environment": "^5.1.3",
1961
+ "sebastian/exporter": "^4.0.3",
1962
+ "sebastian/global-state": "^5.0.1",
1963
+ "sebastian/object-enumerator": "^4.0.3",
1964
+ "sebastian/resource-operations": "^3.0.3",
1965
+ "sebastian/type": "^2.3",
1966
+ "sebastian/version": "^3.0.2"
1967
+ },
1968
+ "require-dev": {
1969
+ "ext-pdo": "*",
1970
+ "phpspec/prophecy-phpunit": "^2.0.1"
1971
+ },
1972
+ "suggest": {
1973
+ "ext-soap": "*",
1974
+ "ext-xdebug": "*"
1975
+ },
1976
+ "bin": [
1977
+ "phpunit"
1978
+ ],
1979
+ "type": "library",
1980
+ "extra": {
1981
+ "branch-alias": {
1982
+ "dev-master": "9.5-dev"
1983
+ }
1984
+ },
1985
+ "autoload": {
1986
+ "classmap": [
1987
+ "src/"
1988
+ ],
1989
+ "files": [
1990
+ "src/Framework/Assert/Functions.php"
1991
+ ]
1992
+ },
1993
+ "notification-url": "https://packagist.org/downloads/",
1994
+ "license": [
1995
+ "BSD-3-Clause"
1996
+ ],
1997
+ "authors": [
1998
+ {
1999
+ "name": "Sebastian Bergmann",
2000
+ "email": "sebastian@phpunit.de",
2001
+ "role": "lead"
2002
+ }
2003
+ ],
2004
+ "description": "The PHP Unit Testing framework.",
2005
+ "homepage": "https://phpunit.de/",
2006
+ "keywords": [
2007
+ "phpunit",
2008
+ "testing",
2009
+ "xunit"
2010
+ ],
2011
+ "support": {
2012
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
2013
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.0"
2014
+ },
2015
+ "funding": [
2016
+ {
2017
+ "url": "https://phpunit.de/donate.html",
2018
+ "type": "custom"
2019
+ },
2020
+ {
2021
+ "url": "https://github.com/sebastianbergmann",
2022
+ "type": "github"
2023
+ }
2024
+ ],
2025
+ "time": "2020-12-04T05:05:53+00:00"
2026
+ },
2027
+ {
2028
+ "name": "psr/container",
2029
+ "version": "1.0.0",
2030
+ "source": {
2031
+ "type": "git",
2032
+ "url": "https://github.com/php-fig/container.git",
2033
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
2034
+ },
2035
+ "dist": {
2036
+ "type": "zip",
2037
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
2038
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
2039
+ "shasum": ""
2040
+ },
2041
+ "require": {
2042
+ "php": ">=5.3.0"
2043
+ },
2044
+ "type": "library",
2045
+ "extra": {
2046
+ "branch-alias": {
2047
+ "dev-master": "1.0.x-dev"
2048
+ }
2049
+ },
2050
+ "autoload": {
2051
+ "psr-4": {
2052
+ "Psr\\Container\\": "src/"
2053
+ }
2054
+ },
2055
+ "notification-url": "https://packagist.org/downloads/",
2056
+ "license": [
2057
+ "MIT"
2058
+ ],
2059
+ "authors": [
2060
+ {
2061
+ "name": "PHP-FIG",
2062
+ "homepage": "http://www.php-fig.org/"
2063
+ }
2064
+ ],
2065
+ "description": "Common Container Interface (PHP FIG PSR-11)",
2066
+ "homepage": "https://github.com/php-fig/container",
2067
+ "keywords": [
2068
+ "PSR-11",
2069
+ "container",
2070
+ "container-interface",
2071
+ "container-interop",
2072
+ "psr"
2073
+ ],
2074
+ "support": {
2075
+ "issues": "https://github.com/php-fig/container/issues",
2076
+ "source": "https://github.com/php-fig/container/tree/master"
2077
+ },
2078
+ "time": "2017-02-14T16:28:37+00:00"
2079
+ },
2080
+ {
2081
+ "name": "psr/event-dispatcher",
2082
+ "version": "1.0.0",
2083
+ "source": {
2084
+ "type": "git",
2085
+ "url": "https://github.com/php-fig/event-dispatcher.git",
2086
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
2087
+ },
2088
+ "dist": {
2089
+ "type": "zip",
2090
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
2091
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
2092
+ "shasum": ""
2093
+ },
2094
+ "require": {
2095
+ "php": ">=7.2.0"
2096
+ },
2097
+ "type": "library",
2098
+ "extra": {
2099
+ "branch-alias": {
2100
+ "dev-master": "1.0.x-dev"
2101
+ }
2102
+ },
2103
+ "autoload": {
2104
+ "psr-4": {
2105
+ "Psr\\EventDispatcher\\": "src/"
2106
+ }
2107
+ },
2108
+ "notification-url": "https://packagist.org/downloads/",
2109
+ "license": [
2110
+ "MIT"
2111
+ ],
2112
+ "authors": [
2113
+ {
2114
+ "name": "PHP-FIG",
2115
+ "homepage": "http://www.php-fig.org/"
2116
+ }
2117
+ ],
2118
+ "description": "Standard interfaces for event handling.",
2119
+ "keywords": [
2120
+ "events",
2121
+ "psr",
2122
+ "psr-14"
2123
+ ],
2124
+ "support": {
2125
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
2126
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
2127
+ },
2128
+ "time": "2019-01-08T18:20:26+00:00"
2129
+ },
2130
+ {
2131
+ "name": "psr/http-message",
2132
+ "version": "1.0.1",
2133
+ "source": {
2134
+ "type": "git",
2135
+ "url": "https://github.com/php-fig/http-message.git",
2136
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
2137
+ },
2138
+ "dist": {
2139
+ "type": "zip",
2140
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
2141
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
2142
+ "shasum": ""
2143
+ },
2144
+ "require": {
2145
+ "php": ">=5.3.0"
2146
+ },
2147
+ "type": "library",
2148
+ "extra": {
2149
+ "branch-alias": {
2150
+ "dev-master": "1.0.x-dev"
2151
+ }
2152
+ },
2153
+ "autoload": {
2154
+ "psr-4": {
2155
+ "Psr\\Http\\Message\\": "src/"
2156
+ }
2157
+ },
2158
+ "notification-url": "https://packagist.org/downloads/",
2159
+ "license": [
2160
+ "MIT"
2161
+ ],
2162
+ "authors": [
2163
+ {
2164
+ "name": "PHP-FIG",
2165
+ "homepage": "http://www.php-fig.org/"
2166
+ }
2167
+ ],
2168
+ "description": "Common interface for HTTP messages",
2169
+ "homepage": "https://github.com/php-fig/http-message",
2170
+ "keywords": [
2171
+ "http",
2172
+ "http-message",
2173
+ "psr",
2174
+ "psr-7",
2175
+ "request",
2176
+ "response"
2177
+ ],
2178
+ "support": {
2179
+ "source": "https://github.com/php-fig/http-message/tree/master"
2180
+ },
2181
+ "time": "2016-08-06T14:39:51+00:00"
2182
+ },
2183
+ {
2184
+ "name": "psr/log",
2185
+ "version": "1.1.3",
2186
+ "source": {
2187
+ "type": "git",
2188
+ "url": "https://github.com/php-fig/log.git",
2189
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
2190
+ },
2191
+ "dist": {
2192
+ "type": "zip",
2193
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
2194
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
2195
+ "shasum": ""
2196
+ },
2197
+ "require": {
2198
+ "php": ">=5.3.0"
2199
+ },
2200
+ "type": "library",
2201
+ "extra": {
2202
+ "branch-alias": {
2203
+ "dev-master": "1.1.x-dev"
2204
+ }
2205
+ },
2206
+ "autoload": {
2207
+ "psr-4": {
2208
+ "Psr\\Log\\": "Psr/Log/"
2209
+ }
2210
+ },
2211
+ "notification-url": "https://packagist.org/downloads/",
2212
+ "license": [
2213
+ "MIT"
2214
+ ],
2215
+ "authors": [
2216
+ {
2217
+ "name": "PHP-FIG",
2218
+ "homepage": "http://www.php-fig.org/"
2219
+ }
2220
+ ],
2221
+ "description": "Common interface for logging libraries",
2222
+ "homepage": "https://github.com/php-fig/log",
2223
+ "keywords": [
2224
+ "log",
2225
+ "psr",
2226
+ "psr-3"
2227
+ ],
2228
+ "support": {
2229
+ "source": "https://github.com/php-fig/log/tree/1.1.3"
2230
+ },
2231
+ "time": "2020-03-23T09:12:05+00:00"
2232
+ },
2233
+ {
2234
+ "name": "ralouphie/getallheaders",
2235
+ "version": "3.0.3",
2236
+ "source": {
2237
+ "type": "git",
2238
+ "url": "https://github.com/ralouphie/getallheaders.git",
2239
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
2240
+ },
2241
+ "dist": {
2242
+ "type": "zip",
2243
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
2244
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
2245
+ "shasum": ""
2246
+ },
2247
+ "require": {
2248
+ "php": ">=5.6"
2249
+ },
2250
+ "require-dev": {
2251
+ "php-coveralls/php-coveralls": "^2.1",
2252
+ "phpunit/phpunit": "^5 || ^6.5"
2253
+ },
2254
+ "type": "library",
2255
+ "autoload": {
2256
+ "files": [
2257
+ "src/getallheaders.php"
2258
+ ]
2259
+ },
2260
+ "notification-url": "https://packagist.org/downloads/",
2261
+ "license": [
2262
+ "MIT"
2263
+ ],
2264
+ "authors": [
2265
+ {
2266
+ "name": "Ralph Khattar",
2267
+ "email": "ralph.khattar@gmail.com"
2268
+ }
2269
+ ],
2270
+ "description": "A polyfill for getallheaders.",
2271
+ "support": {
2272
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
2273
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
2274
+ },
2275
+ "time": "2019-03-08T08:55:37+00:00"
2276
+ },
2277
+ {
2278
+ "name": "react/promise",
2279
+ "version": "v2.8.0",
2280
+ "source": {
2281
+ "type": "git",
2282
+ "url": "https://github.com/reactphp/promise.git",
2283
+ "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
2284
+ },
2285
+ "dist": {
2286
+ "type": "zip",
2287
+ "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
2288
+ "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
2289
+ "shasum": ""
2290
+ },
2291
+ "require": {
2292
+ "php": ">=5.4.0"
2293
+ },
2294
+ "require-dev": {
2295
+ "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
2296
+ },
2297
+ "type": "library",
2298
+ "autoload": {
2299
+ "psr-4": {
2300
+ "React\\Promise\\": "src/"
2301
+ },
2302
+ "files": [
2303
+ "src/functions_include.php"
2304
+ ]
2305
+ },
2306
+ "notification-url": "https://packagist.org/downloads/",
2307
+ "license": [
2308
+ "MIT"
2309
+ ],
2310
+ "authors": [
2311
+ {
2312
+ "name": "Jan Sorgalla",
2313
+ "email": "jsorgalla@gmail.com"
2314
+ }
2315
+ ],
2316
+ "description": "A lightweight implementation of CommonJS Promises/A for PHP",
2317
+ "keywords": [
2318
+ "promise",
2319
+ "promises"
2320
+ ],
2321
+ "support": {
2322
+ "issues": "https://github.com/reactphp/promise/issues",
2323
+ "source": "https://github.com/reactphp/promise/tree/v2.8.0"
2324
+ },
2325
+ "time": "2020-05-12T15:16:56+00:00"
2326
+ },
2327
+ {
2328
+ "name": "sebastian/cli-parser",
2329
+ "version": "1.0.1",
2330
+ "source": {
2331
+ "type": "git",
2332
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
2333
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
2334
+ },
2335
+ "dist": {
2336
+ "type": "zip",
2337
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
2338
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
2339
+ "shasum": ""
2340
+ },
2341
+ "require": {
2342
+ "php": ">=7.3"
2343
+ },
2344
+ "require-dev": {
2345
+ "phpunit/phpunit": "^9.3"
2346
+ },
2347
+ "type": "library",
2348
+ "extra": {
2349
+ "branch-alias": {
2350
+ "dev-master": "1.0-dev"
2351
+ }
2352
+ },
2353
+ "autoload": {
2354
+ "classmap": [
2355
+ "src/"
2356
+ ]
2357
+ },
2358
+ "notification-url": "https://packagist.org/downloads/",
2359
+ "license": [
2360
+ "BSD-3-Clause"
2361
+ ],
2362
+ "authors": [
2363
+ {
2364
+ "name": "Sebastian Bergmann",
2365
+ "email": "sebastian@phpunit.de",
2366
+ "role": "lead"
2367
+ }
2368
+ ],
2369
+ "description": "Library for parsing CLI options",
2370
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
2371
+ "support": {
2372
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
2373
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
2374
+ },
2375
+ "funding": [
2376
+ {
2377
+ "url": "https://github.com/sebastianbergmann",
2378
+ "type": "github"
2379
+ }
2380
+ ],
2381
+ "time": "2020-09-28T06:08:49+00:00"
2382
+ },
2383
+ {
2384
+ "name": "sebastian/code-unit",
2385
+ "version": "1.0.8",
2386
+ "source": {
2387
+ "type": "git",
2388
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
2389
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
2390
+ },
2391
+ "dist": {
2392
+ "type": "zip",
2393
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
2394
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
2395
+ "shasum": ""
2396
+ },
2397
+ "require": {
2398
+ "php": ">=7.3"
2399
+ },
2400
+ "require-dev": {
2401
+ "phpunit/phpunit": "^9.3"
2402
+ },
2403
+ "type": "library",
2404
+ "extra": {
2405
+ "branch-alias": {
2406
+ "dev-master": "1.0-dev"
2407
+ }
2408
+ },
2409
+ "autoload": {
2410
+ "classmap": [
2411
+ "src/"
2412
+ ]
2413
+ },
2414
+ "notification-url": "https://packagist.org/downloads/",
2415
+ "license": [
2416
+ "BSD-3-Clause"
2417
+ ],
2418
+ "authors": [
2419
+ {
2420
+ "name": "Sebastian Bergmann",
2421
+ "email": "sebastian@phpunit.de",
2422
+ "role": "lead"
2423
+ }
2424
+ ],
2425
+ "description": "Collection of value objects that represent the PHP code units",
2426
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
2427
+ "support": {
2428
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
2429
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
2430
+ },
2431
+ "funding": [
2432
+ {
2433
+ "url": "https://github.com/sebastianbergmann",
2434
+ "type": "github"
2435
+ }
2436
+ ],
2437
+ "time": "2020-10-26T13:08:54+00:00"
2438
+ },
2439
+ {
2440
+ "name": "sebastian/code-unit-reverse-lookup",
2441
+ "version": "2.0.3",
2442
+ "source": {
2443
+ "type": "git",
2444
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
2445
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
2446
+ },
2447
+ "dist": {
2448
+ "type": "zip",
2449
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
2450
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
2451
+ "shasum": ""
2452
+ },
2453
+ "require": {
2454
+ "php": ">=7.3"
2455
+ },
2456
+ "require-dev": {
2457
+ "phpunit/phpunit": "^9.3"
2458
+ },
2459
+ "type": "library",
2460
+ "extra": {
2461
+ "branch-alias": {
2462
+ "dev-master": "2.0-dev"
2463
+ }
2464
+ },
2465
+ "autoload": {
2466
+ "classmap": [
2467
+ "src/"
2468
+ ]
2469
+ },
2470
+ "notification-url": "https://packagist.org/downloads/",
2471
+ "license": [
2472
+ "BSD-3-Clause"
2473
+ ],
2474
+ "authors": [
2475
+ {
2476
+ "name": "Sebastian Bergmann",
2477
+ "email": "sebastian@phpunit.de"
2478
+ }
2479
+ ],
2480
+ "description": "Looks up which function or method a line of code belongs to",
2481
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2482
+ "support": {
2483
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
2484
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
2485
+ },
2486
+ "funding": [
2487
+ {
2488
+ "url": "https://github.com/sebastianbergmann",
2489
+ "type": "github"
2490
+ }
2491
+ ],
2492
+ "time": "2020-09-28T05:30:19+00:00"
2493
+ },
2494
+ {
2495
+ "name": "sebastian/comparator",
2496
+ "version": "4.0.6",
2497
+ "source": {
2498
+ "type": "git",
2499
+ "url": "https://github.com/sebastianbergmann/comparator.git",
2500
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
2501
+ },
2502
+ "dist": {
2503
+ "type": "zip",
2504
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
2505
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
2506
+ "shasum": ""
2507
+ },
2508
+ "require": {
2509
+ "php": ">=7.3",
2510
+ "sebastian/diff": "^4.0",
2511
+ "sebastian/exporter": "^4.0"
2512
+ },
2513
+ "require-dev": {
2514
+ "phpunit/phpunit": "^9.3"
2515
+ },
2516
+ "type": "library",
2517
+ "extra": {
2518
+ "branch-alias": {
2519
+ "dev-master": "4.0-dev"
2520
+ }
2521
+ },
2522
+ "autoload": {
2523
+ "classmap": [
2524
+ "src/"
2525
+ ]
2526
+ },
2527
+ "notification-url": "https://packagist.org/downloads/",
2528
+ "license": [
2529
+ "BSD-3-Clause"
2530
+ ],
2531
+ "authors": [
2532
+ {
2533
+ "name": "Sebastian Bergmann",
2534
+ "email": "sebastian@phpunit.de"
2535
+ },
2536
+ {
2537
+ "name": "Jeff Welch",
2538
+ "email": "whatthejeff@gmail.com"
2539
+ },
2540
+ {
2541
+ "name": "Volker Dusch",
2542
+ "email": "github@wallbash.com"
2543
+ },
2544
+ {
2545
+ "name": "Bernhard Schussek",
2546
+ "email": "bschussek@2bepublished.at"
2547
+ }
2548
+ ],
2549
+ "description": "Provides the functionality to compare PHP values for equality",
2550
+ "homepage": "https://github.com/sebastianbergmann/comparator",
2551
+ "keywords": [
2552
+ "comparator",
2553
+ "compare",
2554
+ "equality"
2555
+ ],
2556
+ "support": {
2557
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
2558
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
2559
+ },
2560
+ "funding": [
2561
+ {
2562
+ "url": "https://github.com/sebastianbergmann",
2563
+ "type": "github"
2564
+ }
2565
+ ],
2566
+ "time": "2020-10-26T15:49:45+00:00"
2567
+ },
2568
+ {
2569
+ "name": "sebastian/complexity",
2570
+ "version": "2.0.2",
2571
+ "source": {
2572
+ "type": "git",
2573
+ "url": "https://github.com/sebastianbergmann/complexity.git",
2574
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
2575
+ },
2576
+ "dist": {
2577
+ "type": "zip",
2578
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
2579
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
2580
+ "shasum": ""
2581
+ },
2582
+ "require": {
2583
+ "nikic/php-parser": "^4.7",
2584
+ "php": ">=7.3"
2585
+ },
2586
+ "require-dev": {
2587
+ "phpunit/phpunit": "^9.3"
2588
+ },
2589
+ "type": "library",
2590
+ "extra": {
2591
+ "branch-alias": {
2592
+ "dev-master": "2.0-dev"
2593
+ }
2594
+ },
2595
+ "autoload": {
2596
+ "classmap": [
2597
+ "src/"
2598
+ ]
2599
+ },
2600
+ "notification-url": "https://packagist.org/downloads/",
2601
+ "license": [
2602
+ "BSD-3-Clause"
2603
+ ],
2604
+ "authors": [
2605
+ {
2606
+ "name": "Sebastian Bergmann",
2607
+ "email": "sebastian@phpunit.de",
2608
+ "role": "lead"
2609
+ }
2610
+ ],
2611
+ "description": "Library for calculating the complexity of PHP code units",
2612
+ "homepage": "https://github.com/sebastianbergmann/complexity",
2613
+ "support": {
2614
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
2615
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
2616
+ },
2617
+ "funding": [
2618
+ {
2619
+ "url": "https://github.com/sebastianbergmann",
2620
+ "type": "github"
2621
+ }
2622
+ ],
2623
+ "time": "2020-10-26T15:52:27+00:00"
2624
+ },
2625
+ {
2626
+ "name": "sebastian/diff",
2627
+ "version": "4.0.4",
2628
+ "source": {
2629
+ "type": "git",
2630
+ "url": "https://github.com/sebastianbergmann/diff.git",
2631
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
2632
+ },
2633
+ "dist": {
2634
+ "type": "zip",
2635
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
2636
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
2637
+ "shasum": ""
2638
+ },
2639
+ "require": {
2640
+ "php": ">=7.3"
2641
+ },
2642
+ "require-dev": {
2643
+ "phpunit/phpunit": "^9.3",
2644
+ "symfony/process": "^4.2 || ^5"
2645
+ },
2646
+ "type": "library",
2647
+ "extra": {
2648
+ "branch-alias": {
2649
+ "dev-master": "4.0-dev"
2650
+ }
2651
+ },
2652
+ "autoload": {
2653
+ "classmap": [
2654
+ "src/"
2655
+ ]
2656
+ },
2657
+ "notification-url": "https://packagist.org/downloads/",
2658
+ "license": [
2659
+ "BSD-3-Clause"
2660
+ ],
2661
+ "authors": [
2662
+ {
2663
+ "name": "Sebastian Bergmann",
2664
+ "email": "sebastian@phpunit.de"
2665
+ },
2666
+ {
2667
+ "name": "Kore Nordmann",
2668
+ "email": "mail@kore-nordmann.de"
2669
+ }
2670
+ ],
2671
+ "description": "Diff implementation",
2672
+ "homepage": "https://github.com/sebastianbergmann/diff",
2673
+ "keywords": [
2674
+ "diff",
2675
+ "udiff",
2676
+ "unidiff",
2677
+ "unified diff"
2678
+ ],
2679
+ "support": {
2680
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
2681
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
2682
+ },
2683
+ "funding": [
2684
+ {
2685
+ "url": "https://github.com/sebastianbergmann",
2686
+ "type": "github"
2687
+ }
2688
+ ],
2689
+ "time": "2020-10-26T13:10:38+00:00"
2690
+ },
2691
+ {
2692
+ "name": "sebastian/environment",
2693
+ "version": "5.1.3",
2694
+ "source": {
2695
+ "type": "git",
2696
+ "url": "https://github.com/sebastianbergmann/environment.git",
2697
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
2698
+ },
2699
+ "dist": {
2700
+ "type": "zip",
2701
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
2702
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
2703
+ "shasum": ""
2704
+ },
2705
+ "require": {
2706
+ "php": ">=7.3"
2707
+ },
2708
+ "require-dev": {
2709
+ "phpunit/phpunit": "^9.3"
2710
+ },
2711
+ "suggest": {
2712
+ "ext-posix": "*"
2713
+ },
2714
+ "type": "library",
2715
+ "extra": {
2716
+ "branch-alias": {
2717
+ "dev-master": "5.1-dev"
2718
+ }
2719
+ },
2720
+ "autoload": {
2721
+ "classmap": [
2722
+ "src/"
2723
+ ]
2724
+ },
2725
+ "notification-url": "https://packagist.org/downloads/",
2726
+ "license": [
2727
+ "BSD-3-Clause"
2728
+ ],
2729
+ "authors": [
2730
+ {
2731
+ "name": "Sebastian Bergmann",
2732
+ "email": "sebastian@phpunit.de"
2733
+ }
2734
+ ],
2735
+ "description": "Provides functionality to handle HHVM/PHP environments",
2736
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
2737
+ "keywords": [
2738
+ "Xdebug",
2739
+ "environment",
2740
+ "hhvm"
2741
+ ],
2742
+ "support": {
2743
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
2744
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
2745
+ },
2746
+ "funding": [
2747
+ {
2748
+ "url": "https://github.com/sebastianbergmann",
2749
+ "type": "github"
2750
+ }
2751
+ ],
2752
+ "time": "2020-09-28T05:52:38+00:00"
2753
+ },
2754
+ {
2755
+ "name": "sebastian/exporter",
2756
+ "version": "4.0.3",
2757
+ "source": {
2758
+ "type": "git",
2759
+ "url": "https://github.com/sebastianbergmann/exporter.git",
2760
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
2761
+ },
2762
+ "dist": {
2763
+ "type": "zip",
2764
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
2765
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
2766
+ "shasum": ""
2767
+ },
2768
+ "require": {
2769
+ "php": ">=7.3",
2770
+ "sebastian/recursion-context": "^4.0"
2771
+ },
2772
+ "require-dev": {
2773
+ "ext-mbstring": "*",
2774
+ "phpunit/phpunit": "^9.3"
2775
+ },
2776
+ "type": "library",
2777
+ "extra": {
2778
+ "branch-alias": {
2779
+ "dev-master": "4.0-dev"
2780
+ }
2781
+ },
2782
+ "autoload": {
2783
+ "classmap": [
2784
+ "src/"
2785
+ ]
2786
+ },
2787
+ "notification-url": "https://packagist.org/downloads/",
2788
+ "license": [
2789
+ "BSD-3-Clause"
2790
+ ],
2791
+ "authors": [
2792
+ {
2793
+ "name": "Sebastian Bergmann",
2794
+ "email": "sebastian@phpunit.de"
2795
+ },
2796
+ {
2797
+ "name": "Jeff Welch",
2798
+ "email": "whatthejeff@gmail.com"
2799
+ },
2800
+ {
2801
+ "name": "Volker Dusch",
2802
+ "email": "github@wallbash.com"
2803
+ },
2804
+ {
2805
+ "name": "Adam Harvey",
2806
+ "email": "aharvey@php.net"
2807
+ },
2808
+ {
2809
+ "name": "Bernhard Schussek",
2810
+ "email": "bschussek@gmail.com"
2811
+ }
2812
+ ],
2813
+ "description": "Provides the functionality to export PHP variables for visualization",
2814
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
2815
+ "keywords": [
2816
+ "export",
2817
+ "exporter"
2818
+ ],
2819
+ "support": {
2820
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
2821
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
2822
+ },
2823
+ "funding": [
2824
+ {
2825
+ "url": "https://github.com/sebastianbergmann",
2826
+ "type": "github"
2827
+ }
2828
+ ],
2829
+ "time": "2020-09-28T05:24:23+00:00"
2830
+ },
2831
+ {
2832
+ "name": "sebastian/global-state",
2833
+ "version": "5.0.2",
2834
+ "source": {
2835
+ "type": "git",
2836
+ "url": "https://github.com/sebastianbergmann/global-state.git",
2837
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
2838
+ },
2839
+ "dist": {
2840
+ "type": "zip",
2841
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
2842
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
2843
+ "shasum": ""
2844
+ },
2845
+ "require": {
2846
+ "php": ">=7.3",
2847
+ "sebastian/object-reflector": "^2.0",
2848
+ "sebastian/recursion-context": "^4.0"
2849
+ },
2850
+ "require-dev": {
2851
+ "ext-dom": "*",
2852
+ "phpunit/phpunit": "^9.3"
2853
+ },
2854
+ "suggest": {
2855
+ "ext-uopz": "*"
2856
+ },
2857
+ "type": "library",
2858
+ "extra": {
2859
+ "branch-alias": {
2860
+ "dev-master": "5.0-dev"
2861
+ }
2862
+ },
2863
+ "autoload": {
2864
+ "classmap": [
2865
+ "src/"
2866
+ ]
2867
+ },
2868
+ "notification-url": "https://packagist.org/downloads/",
2869
+ "license": [
2870
+ "BSD-3-Clause"
2871
+ ],
2872
+ "authors": [
2873
+ {
2874
+ "name": "Sebastian Bergmann",
2875
+ "email": "sebastian@phpunit.de"
2876
+ }
2877
+ ],
2878
+ "description": "Snapshotting of global state",
2879
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
2880
+ "keywords": [
2881
+ "global state"
2882
+ ],
2883
+ "support": {
2884
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
2885
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
2886
+ },
2887
+ "funding": [
2888
+ {
2889
+ "url": "https://github.com/sebastianbergmann",
2890
+ "type": "github"
2891
+ }
2892
+ ],
2893
+ "time": "2020-10-26T15:55:19+00:00"
2894
+ },
2895
+ {
2896
+ "name": "sebastian/lines-of-code",
2897
+ "version": "1.0.3",
2898
+ "source": {
2899
+ "type": "git",
2900
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
2901
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
2902
+ },
2903
+ "dist": {
2904
+ "type": "zip",
2905
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
2906
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
2907
+ "shasum": ""
2908
+ },
2909
+ "require": {
2910
+ "nikic/php-parser": "^4.6",
2911
+ "php": ">=7.3"
2912
+ },
2913
+ "require-dev": {
2914
+ "phpunit/phpunit": "^9.3"
2915
+ },
2916
+ "type": "library",
2917
+ "extra": {
2918
+ "branch-alias": {
2919
+ "dev-master": "1.0-dev"
2920
+ }
2921
+ },
2922
+ "autoload": {
2923
+ "classmap": [
2924
+ "src/"
2925
+ ]
2926
+ },
2927
+ "notification-url": "https://packagist.org/downloads/",
2928
+ "license": [
2929
+ "BSD-3-Clause"
2930
+ ],
2931
+ "authors": [
2932
+ {
2933
+ "name": "Sebastian Bergmann",
2934
+ "email": "sebastian@phpunit.de",
2935
+ "role": "lead"
2936
+ }
2937
+ ],
2938
+ "description": "Library for counting the lines of code in PHP source code",
2939
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
2940
+ "support": {
2941
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
2942
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
2943
+ },
2944
+ "funding": [
2945
+ {
2946
+ "url": "https://github.com/sebastianbergmann",
2947
+ "type": "github"
2948
+ }
2949
+ ],
2950
+ "time": "2020-11-28T06:42:11+00:00"
2951
+ },
2952
+ {
2953
+ "name": "sebastian/object-enumerator",
2954
+ "version": "4.0.4",
2955
+ "source": {
2956
+ "type": "git",
2957
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2958
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
2959
+ },
2960
+ "dist": {
2961
+ "type": "zip",
2962
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
2963
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
2964
+ "shasum": ""
2965
+ },
2966
+ "require": {
2967
+ "php": ">=7.3",
2968
+ "sebastian/object-reflector": "^2.0",
2969
+ "sebastian/recursion-context": "^4.0"
2970
+ },
2971
+ "require-dev": {
2972
+ "phpunit/phpunit": "^9.3"
2973
+ },
2974
+ "type": "library",
2975
+ "extra": {
2976
+ "branch-alias": {
2977
+ "dev-master": "4.0-dev"
2978
+ }
2979
+ },
2980
+ "autoload": {
2981
+ "classmap": [
2982
+ "src/"
2983
+ ]
2984
+ },
2985
+ "notification-url": "https://packagist.org/downloads/",
2986
+ "license": [
2987
+ "BSD-3-Clause"
2988
+ ],
2989
+ "authors": [
2990
+ {
2991
+ "name": "Sebastian Bergmann",
2992
+ "email": "sebastian@phpunit.de"
2993
+ }
2994
+ ],
2995
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2996
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2997
+ "support": {
2998
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2999
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
3000
+ },
3001
+ "funding": [
3002
+ {
3003
+ "url": "https://github.com/sebastianbergmann",
3004
+ "type": "github"
3005
+ }
3006
+ ],
3007
+ "time": "2020-10-26T13:12:34+00:00"
3008
+ },
3009
+ {
3010
+ "name": "sebastian/object-reflector",
3011
+ "version": "2.0.4",
3012
+ "source": {
3013
+ "type": "git",
3014
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
3015
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
3016
+ },
3017
+ "dist": {
3018
+ "type": "zip",
3019
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
3020
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
3021
+ "shasum": ""
3022
+ },
3023
+ "require": {
3024
+ "php": ">=7.3"
3025
+ },
3026
+ "require-dev": {
3027
+ "phpunit/phpunit": "^9.3"
3028
+ },
3029
+ "type": "library",
3030
+ "extra": {
3031
+ "branch-alias": {
3032
+ "dev-master": "2.0-dev"
3033
+ }
3034
+ },
3035
+ "autoload": {
3036
+ "classmap": [
3037
+ "src/"
3038
+ ]
3039
+ },
3040
+ "notification-url": "https://packagist.org/downloads/",
3041
+ "license": [
3042
+ "BSD-3-Clause"
3043
+ ],
3044
+ "authors": [
3045
+ {
3046
+ "name": "Sebastian Bergmann",
3047
+ "email": "sebastian@phpunit.de"
3048
+ }
3049
+ ],
3050
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
3051
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
3052
+ "support": {
3053
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
3054
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
3055
+ },
3056
+ "funding": [
3057
+ {
3058
+ "url": "https://github.com/sebastianbergmann",
3059
+ "type": "github"
3060
+ }
3061
+ ],
3062
+ "time": "2020-10-26T13:14:26+00:00"
3063
+ },
3064
+ {
3065
+ "name": "sebastian/recursion-context",
3066
+ "version": "4.0.4",
3067
+ "source": {
3068
+ "type": "git",
3069
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
3070
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
3071
+ },
3072
+ "dist": {
3073
+ "type": "zip",
3074
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
3075
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
3076
+ "shasum": ""
3077
+ },
3078
+ "require": {
3079
+ "php": ">=7.3"
3080
+ },
3081
+ "require-dev": {
3082
+ "phpunit/phpunit": "^9.3"
3083
+ },
3084
+ "type": "library",
3085
+ "extra": {
3086
+ "branch-alias": {
3087
+ "dev-master": "4.0-dev"
3088
+ }
3089
+ },
3090
+ "autoload": {
3091
+ "classmap": [
3092
+ "src/"
3093
+ ]
3094
+ },
3095
+ "notification-url": "https://packagist.org/downloads/",
3096
+ "license": [
3097
+ "BSD-3-Clause"
3098
+ ],
3099
+ "authors": [
3100
+ {
3101
+ "name": "Sebastian Bergmann",
3102
+ "email": "sebastian@phpunit.de"
3103
+ },
3104
+ {
3105
+ "name": "Jeff Welch",
3106
+ "email": "whatthejeff@gmail.com"
3107
+ },
3108
+ {
3109
+ "name": "Adam Harvey",
3110
+ "email": "aharvey@php.net"
3111
+ }
3112
+ ],
3113
+ "description": "Provides functionality to recursively process PHP variables",
3114
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
3115
+ "support": {
3116
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
3117
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
3118
+ },
3119
+ "funding": [
3120
+ {
3121
+ "url": "https://github.com/sebastianbergmann",
3122
+ "type": "github"
3123
+ }
3124
+ ],
3125
+ "time": "2020-10-26T13:17:30+00:00"
3126
+ },
3127
+ {
3128
+ "name": "sebastian/resource-operations",
3129
+ "version": "3.0.3",
3130
+ "source": {
3131
+ "type": "git",
3132
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
3133
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
3134
+ },
3135
+ "dist": {
3136
+ "type": "zip",
3137
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
3138
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
3139
+ "shasum": ""
3140
+ },
3141
+ "require": {
3142
+ "php": ">=7.3"
3143
+ },
3144
+ "require-dev": {
3145
+ "phpunit/phpunit": "^9.0"
3146
+ },
3147
+ "type": "library",
3148
+ "extra": {
3149
+ "branch-alias": {
3150
+ "dev-master": "3.0-dev"
3151
+ }
3152
+ },
3153
+ "autoload": {
3154
+ "classmap": [
3155
+ "src/"
3156
+ ]
3157
+ },
3158
+ "notification-url": "https://packagist.org/downloads/",
3159
+ "license": [
3160
+ "BSD-3-Clause"
3161
+ ],
3162
+ "authors": [
3163
+ {
3164
+ "name": "Sebastian Bergmann",
3165
+ "email": "sebastian@phpunit.de"
3166
+ }
3167
+ ],
3168
+ "description": "Provides a list of PHP built-in functions that operate on resources",
3169
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
3170
+ "support": {
3171
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
3172
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
3173
+ },
3174
+ "funding": [
3175
+ {
3176
+ "url": "https://github.com/sebastianbergmann",
3177
+ "type": "github"
3178
+ }
3179
+ ],
3180
+ "time": "2020-09-28T06:45:17+00:00"
3181
+ },
3182
+ {
3183
+ "name": "sebastian/type",
3184
+ "version": "2.3.1",
3185
+ "source": {
3186
+ "type": "git",
3187
+ "url": "https://github.com/sebastianbergmann/type.git",
3188
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
3189
+ },
3190
+ "dist": {
3191
+ "type": "zip",
3192
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
3193
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
3194
+ "shasum": ""
3195
+ },
3196
+ "require": {
3197
+ "php": ">=7.3"
3198
+ },
3199
+ "require-dev": {
3200
+ "phpunit/phpunit": "^9.3"
3201
+ },
3202
+ "type": "library",
3203
+ "extra": {
3204
+ "branch-alias": {
3205
+ "dev-master": "2.3-dev"
3206
+ }
3207
+ },
3208
+ "autoload": {
3209
+ "classmap": [
3210
+ "src/"
3211
+ ]
3212
+ },
3213
+ "notification-url": "https://packagist.org/downloads/",
3214
+ "license": [
3215
+ "BSD-3-Clause"
3216
+ ],
3217
+ "authors": [
3218
+ {
3219
+ "name": "Sebastian Bergmann",
3220
+ "email": "sebastian@phpunit.de",
3221
+ "role": "lead"
3222
+ }
3223
+ ],
3224
+ "description": "Collection of value objects that represent the types of the PHP type system",
3225
+ "homepage": "https://github.com/sebastianbergmann/type",
3226
+ "support": {
3227
+ "issues": "https://github.com/sebastianbergmann/type/issues",
3228
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
3229
+ },
3230
+ "funding": [
3231
+ {
3232
+ "url": "https://github.com/sebastianbergmann",
3233
+ "type": "github"
3234
+ }
3235
+ ],
3236
+ "time": "2020-10-26T13:18:59+00:00"
3237
+ },
3238
+ {
3239
+ "name": "sebastian/version",
3240
+ "version": "3.0.2",
3241
+ "source": {
3242
+ "type": "git",
3243
+ "url": "https://github.com/sebastianbergmann/version.git",
3244
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
3245
+ },
3246
+ "dist": {
3247
+ "type": "zip",
3248
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
3249
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
3250
+ "shasum": ""
3251
+ },
3252
+ "require": {
3253
+ "php": ">=7.3"
3254
+ },
3255
+ "type": "library",
3256
+ "extra": {
3257
+ "branch-alias": {
3258
+ "dev-master": "3.0-dev"
3259
+ }
3260
+ },
3261
+ "autoload": {
3262
+ "classmap": [
3263
+ "src/"
3264
+ ]
3265
+ },
3266
+ "notification-url": "https://packagist.org/downloads/",
3267
+ "license": [
3268
+ "BSD-3-Clause"
3269
+ ],
3270
+ "authors": [
3271
+ {
3272
+ "name": "Sebastian Bergmann",
3273
+ "email": "sebastian@phpunit.de",
3274
+ "role": "lead"
3275
+ }
3276
+ ],
3277
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
3278
+ "homepage": "https://github.com/sebastianbergmann/version",
3279
+ "support": {
3280
+ "issues": "https://github.com/sebastianbergmann/version/issues",
3281
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
3282
+ },
3283
+ "funding": [
3284
+ {
3285
+ "url": "https://github.com/sebastianbergmann",
3286
+ "type": "github"
3287
+ }
3288
+ ],
3289
+ "time": "2020-09-28T06:39:44+00:00"
3290
+ },
3291
+ {
3292
+ "name": "seld/jsonlint",
3293
+ "version": "1.8.3",
3294
+ "source": {
3295
+ "type": "git",
3296
+ "url": "https://github.com/Seldaek/jsonlint.git",
3297
+ "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57"
3298
+ },
3299
+ "dist": {
3300
+ "type": "zip",
3301
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
3302
+ "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
3303
+ "shasum": ""
3304
+ },
3305
+ "require": {
3306
+ "php": "^5.3 || ^7.0 || ^8.0"
3307
+ },
3308
+ "require-dev": {
3309
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
3310
+ },
3311
+ "bin": [
3312
+ "bin/jsonlint"
3313
+ ],
3314
+ "type": "library",
3315
+ "autoload": {
3316
+ "psr-4": {
3317
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
3318
+ }
3319
+ },
3320
+ "notification-url": "https://packagist.org/downloads/",
3321
+ "license": [
3322
+ "MIT"
3323
+ ],
3324
+ "authors": [
3325
+ {
3326
+ "name": "Jordi Boggiano",
3327
+ "email": "j.boggiano@seld.be",
3328
+ "homepage": "http://seld.be"
3329
+ }
3330
+ ],
3331
+ "description": "JSON Linter",
3332
+ "keywords": [
3333
+ "json",
3334
+ "linter",
3335
+ "parser",
3336
+ "validator"
3337
+ ],
3338
+ "support": {
3339
+ "issues": "https://github.com/Seldaek/jsonlint/issues",
3340
+ "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3"
3341
+ },
3342
+ "funding": [
3343
+ {
3344
+ "url": "https://github.com/Seldaek",
3345
+ "type": "github"
3346
+ },
3347
+ {
3348
+ "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
3349
+ "type": "tidelift"
3350
+ }
3351
+ ],
3352
+ "time": "2020-11-11T09:19:24+00:00"
3353
+ },
3354
+ {
3355
+ "name": "seld/phar-utils",
3356
+ "version": "1.1.1",
3357
+ "source": {
3358
+ "type": "git",
3359
+ "url": "https://github.com/Seldaek/phar-utils.git",
3360
+ "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796"
3361
+ },
3362
+ "dist": {
3363
+ "type": "zip",
3364
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
3365
+ "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
3366
+ "shasum": ""
3367
+ },
3368
+ "require": {
3369
+ "php": ">=5.3"
3370
+ },
3371
+ "type": "library",
3372
+ "extra": {
3373
+ "branch-alias": {
3374
+ "dev-master": "1.x-dev"
3375
+ }
3376
+ },
3377
+ "autoload": {
3378
+ "psr-4": {
3379
+ "Seld\\PharUtils\\": "src/"
3380
+ }
3381
+ },
3382
+ "notification-url": "https://packagist.org/downloads/",
3383
+ "license": [
3384
+ "MIT"
3385
+ ],
3386
+ "authors": [
3387
+ {
3388
+ "name": "Jordi Boggiano",
3389
+ "email": "j.boggiano@seld.be"
3390
+ }
3391
+ ],
3392
+ "description": "PHAR file format utilities, for when PHP phars you up",
3393
+ "keywords": [
3394
+ "phar"
3395
+ ],
3396
+ "support": {
3397
+ "issues": "https://github.com/Seldaek/phar-utils/issues",
3398
+ "source": "https://github.com/Seldaek/phar-utils/tree/master"
3399
+ },
3400
+ "time": "2020-07-07T18:42:57+00:00"
3401
+ },
3402
+ {
3403
+ "name": "spatie/temporary-directory",
3404
+ "version": "1.3.0",
3405
+ "source": {
3406
+ "type": "git",
3407
+ "url": "https://github.com/spatie/temporary-directory.git",
3408
+ "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6"
3409
+ },
3410
+ "dist": {
3411
+ "type": "zip",
3412
+ "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/f517729b3793bca58f847c5fd383ec16f03ffec6",
3413
+ "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6",
3414
+ "shasum": ""
3415
+ },
3416
+ "require": {
3417
+ "php": "^7.2|^8.0"
3418
+ },
3419
+ "require-dev": {
3420
+ "phpunit/phpunit": "^8.0|^9.0"
3421
+ },
3422
+ "type": "library",
3423
+ "autoload": {
3424
+ "psr-4": {
3425
+ "Spatie\\TemporaryDirectory\\": "src"
3426
+ }
3427
+ },
3428
+ "notification-url": "https://packagist.org/downloads/",
3429
+ "license": [
3430
+ "MIT"
3431
+ ],
3432
+ "authors": [
3433
+ {
3434
+ "name": "Alex Vanderbist",
3435
+ "email": "alex@spatie.be",
3436
+ "homepage": "https://spatie.be",
3437
+ "role": "Developer"
3438
+ }
3439
+ ],
3440
+ "description": "Easily create, use and destroy temporary directories",
3441
+ "homepage": "https://github.com/spatie/temporary-directory",
3442
+ "keywords": [
3443
+ "php",
3444
+ "spatie",
3445
+ "temporary-directory"
3446
+ ],
3447
+ "support": {
3448
+ "issues": "https://github.com/spatie/temporary-directory/issues",
3449
+ "source": "https://github.com/spatie/temporary-directory/tree/1.3.0"
3450
+ },
3451
+ "time": "2020-11-09T15:54:21+00:00"
3452
+ },
3453
+ {
3454
+ "name": "squizlabs/php_codesniffer",
3455
+ "version": "3.5.8",
3456
+ "source": {
3457
+ "type": "git",
3458
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
3459
+ "reference": "9d583721a7157ee997f235f327de038e7ea6dac4"
3460
+ },
3461
+ "dist": {
3462
+ "type": "zip",
3463
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4",
3464
+ "reference": "9d583721a7157ee997f235f327de038e7ea6dac4",
3465
+ "shasum": ""
3466
+ },
3467
+ "require": {
3468
+ "ext-simplexml": "*",
3469
+ "ext-tokenizer": "*",
3470
+ "ext-xmlwriter": "*",
3471
+ "php": ">=5.4.0"
3472
+ },
3473
+ "require-dev": {
3474
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
3475
+ },
3476
+ "bin": [
3477
+ "bin/phpcs",
3478
+ "bin/phpcbf"
3479
+ ],
3480
+ "type": "library",
3481
+ "extra": {
3482
+ "branch-alias": {
3483
+ "dev-master": "3.x-dev"
3484
+ }
3485
+ },
3486
+ "notification-url": "https://packagist.org/downloads/",
3487
+ "license": [
3488
+ "BSD-3-Clause"
3489
+ ],
3490
+ "authors": [
3491
+ {
3492
+ "name": "Greg Sherwood",
3493
+ "role": "lead"
3494
+ }
3495
+ ],
3496
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
3497
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
3498
+ "keywords": [
3499
+ "phpcs",
3500
+ "standards"
3501
+ ],
3502
+ "support": {
3503
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
3504
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
3505
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
3506
+ },
3507
+ "time": "2020-10-23T02:01:07+00:00"
3508
+ },
3509
+ {
3510
+ "name": "symfony/console",
3511
+ "version": "v5.2.0",
3512
+ "source": {
3513
+ "type": "git",
3514
+ "url": "https://github.com/symfony/console.git",
3515
+ "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b"
3516
+ },
3517
+ "dist": {
3518
+ "type": "zip",
3519
+ "url": "https://api.github.com/repos/symfony/console/zipball/3e0564fb08d44a98bd5f1960204c958e57bd586b",
3520
+ "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b",
3521
+ "shasum": ""
3522
+ },
3523
+ "require": {
3524
+ "php": ">=7.2.5",
3525
+ "symfony/polyfill-mbstring": "~1.0",
3526
+ "symfony/polyfill-php73": "^1.8",
3527
+ "symfony/polyfill-php80": "^1.15",
3528
+ "symfony/service-contracts": "^1.1|^2",
3529
+ "symfony/string": "^5.1"
3530
+ },
3531
+ "conflict": {
3532
+ "symfony/dependency-injection": "<4.4",
3533
+ "symfony/dotenv": "<5.1",
3534
+ "symfony/event-dispatcher": "<4.4",
3535
+ "symfony/lock": "<4.4",
3536
+ "symfony/process": "<4.4"
3537
+ },
3538
+ "provide": {
3539
+ "psr/log-implementation": "1.0"
3540
+ },
3541
+ "require-dev": {
3542
+ "psr/log": "~1.0",
3543
+ "symfony/config": "^4.4|^5.0",
3544
+ "symfony/dependency-injection": "^4.4|^5.0",
3545
+ "symfony/event-dispatcher": "^4.4|^5.0",
3546
+ "symfony/lock": "^4.4|^5.0",
3547
+ "symfony/process": "^4.4|^5.0",
3548
+ "symfony/var-dumper": "^4.4|^5.0"
3549
+ },
3550
+ "suggest": {
3551
+ "psr/log": "For using the console logger",
3552
+ "symfony/event-dispatcher": "",
3553
+ "symfony/lock": "",
3554
+ "symfony/process": ""
3555
+ },
3556
+ "type": "library",
3557
+ "autoload": {
3558
+ "psr-4": {
3559
+ "Symfony\\Component\\Console\\": ""
3560
+ },
3561
+ "exclude-from-classmap": [
3562
+ "/Tests/"
3563
+ ]
3564
+ },
3565
+ "notification-url": "https://packagist.org/downloads/",
3566
+ "license": [
3567
+ "MIT"
3568
+ ],
3569
+ "authors": [
3570
+ {
3571
+ "name": "Fabien Potencier",
3572
+ "email": "fabien@symfony.com"
3573
+ },
3574
+ {
3575
+ "name": "Symfony Community",
3576
+ "homepage": "https://symfony.com/contributors"
3577
+ }
3578
+ ],
3579
+ "description": "Symfony Console Component",
3580
+ "homepage": "https://symfony.com",
3581
+ "keywords": [
3582
+ "cli",
3583
+ "command line",
3584
+ "console",
3585
+ "terminal"
3586
+ ],
3587
+ "support": {
3588
+ "source": "https://github.com/symfony/console/tree/v5.2.0"
3589
+ },
3590
+ "funding": [
3591
+ {
3592
+ "url": "https://symfony.com/sponsor",
3593
+ "type": "custom"
3594
+ },
3595
+ {
3596
+ "url": "https://github.com/fabpot",
3597
+ "type": "github"
3598
+ },
3599
+ {
3600
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3601
+ "type": "tidelift"
3602
+ }
3603
+ ],
3604
+ "time": "2020-11-28T11:24:18+00:00"
3605
+ },
3606
+ {
3607
+ "name": "symfony/css-selector",
3608
+ "version": "v5.2.0",
3609
+ "source": {
3610
+ "type": "git",
3611
+ "url": "https://github.com/symfony/css-selector.git",
3612
+ "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256"
3613
+ },
3614
+ "dist": {
3615
+ "type": "zip",
3616
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256",
3617
+ "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256",
3618
+ "shasum": ""
3619
+ },
3620
+ "require": {
3621
+ "php": ">=7.2.5"
3622
+ },
3623
+ "type": "library",
3624
+ "autoload": {
3625
+ "psr-4": {
3626
+ "Symfony\\Component\\CssSelector\\": ""
3627
+ },
3628
+ "exclude-from-classmap": [
3629
+ "/Tests/"
3630
+ ]
3631
+ },
3632
+ "notification-url": "https://packagist.org/downloads/",
3633
+ "license": [
3634
+ "MIT"
3635
+ ],
3636
+ "authors": [
3637
+ {
3638
+ "name": "Fabien Potencier",
3639
+ "email": "fabien@symfony.com"
3640
+ },
3641
+ {
3642
+ "name": "Jean-François Simon",
3643
+ "email": "jeanfrancois.simon@sensiolabs.com"
3644
+ },
3645
+ {
3646
+ "name": "Symfony Community",
3647
+ "homepage": "https://symfony.com/contributors"
3648
+ }
3649
+ ],
3650
+ "description": "Symfony CssSelector Component",
3651
+ "homepage": "https://symfony.com",
3652
+ "support": {
3653
+ "source": "https://github.com/symfony/css-selector/tree/v5.2.0"
3654
+ },
3655
+ "funding": [
3656
+ {
3657
+ "url": "https://symfony.com/sponsor",
3658
+ "type": "custom"
3659
+ },
3660
+ {
3661
+ "url": "https://github.com/fabpot",
3662
+ "type": "github"
3663
+ },
3664
+ {
3665
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3666
+ "type": "tidelift"
3667
+ }
3668
+ ],
3669
+ "time": "2020-10-28T21:31:18+00:00"
3670
+ },
3671
+ {
3672
+ "name": "symfony/deprecation-contracts",
3673
+ "version": "v2.2.0",
3674
+ "source": {
3675
+ "type": "git",
3676
+ "url": "https://github.com/symfony/deprecation-contracts.git",
3677
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
3678
+ },
3679
+ "dist": {
3680
+ "type": "zip",
3681
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
3682
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
3683
+ "shasum": ""
3684
+ },
3685
+ "require": {
3686
+ "php": ">=7.1"
3687
+ },
3688
+ "type": "library",
3689
+ "extra": {
3690
+ "branch-alias": {
3691
+ "dev-master": "2.2-dev"
3692
+ },
3693
+ "thanks": {
3694
+ "name": "symfony/contracts",
3695
+ "url": "https://github.com/symfony/contracts"
3696
+ }
3697
+ },
3698
+ "autoload": {
3699
+ "files": [
3700
+ "function.php"
3701
+ ]
3702
+ },
3703
+ "notification-url": "https://packagist.org/downloads/",
3704
+ "license": [
3705
+ "MIT"
3706
+ ],
3707
+ "authors": [
3708
+ {
3709
+ "name": "Nicolas Grekas",
3710
+ "email": "p@tchwork.com"
3711
+ },
3712
+ {
3713
+ "name": "Symfony Community",
3714
+ "homepage": "https://symfony.com/contributors"
3715
+ }
3716
+ ],
3717
+ "description": "A generic function and convention to trigger deprecation notices",
3718
+ "homepage": "https://symfony.com",
3719
+ "support": {
3720
+ "source": "https://github.com/symfony/deprecation-contracts/tree/master"
3721
+ },
3722
+ "funding": [
3723
+ {
3724
+ "url": "https://symfony.com/sponsor",
3725
+ "type": "custom"
3726
+ },
3727
+ {
3728
+ "url": "https://github.com/fabpot",
3729
+ "type": "github"
3730
+ },
3731
+ {
3732
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3733
+ "type": "tidelift"
3734
+ }
3735
+ ],
3736
+ "time": "2020-09-07T11:33:47+00:00"
3737
+ },
3738
+ {
3739
+ "name": "symfony/event-dispatcher",
3740
+ "version": "v5.2.0",
3741
+ "source": {
3742
+ "type": "git",
3743
+ "url": "https://github.com/symfony/event-dispatcher.git",
3744
+ "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c"
3745
+ },
3746
+ "dist": {
3747
+ "type": "zip",
3748
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/aa13a09811e6d2ad43f8fb336bebdb7691d85d3c",
3749
+ "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c",
3750
+ "shasum": ""
3751
+ },
3752
+ "require": {
3753
+ "php": ">=7.2.5",
3754
+ "symfony/deprecation-contracts": "^2.1",
3755
+ "symfony/event-dispatcher-contracts": "^2",
3756
+ "symfony/polyfill-php80": "^1.15"
3757
+ },
3758
+ "conflict": {
3759
+ "symfony/dependency-injection": "<4.4"
3760
+ },
3761
+ "provide": {
3762
+ "psr/event-dispatcher-implementation": "1.0",
3763
+ "symfony/event-dispatcher-implementation": "2.0"
3764
+ },
3765
+ "require-dev": {
3766
+ "psr/log": "~1.0",
3767
+ "symfony/config": "^4.4|^5.0",
3768
+ "symfony/dependency-injection": "^4.4|^5.0",
3769
+ "symfony/error-handler": "^4.4|^5.0",
3770
+ "symfony/expression-language": "^4.4|^5.0",
3771
+ "symfony/http-foundation": "^4.4|^5.0",
3772
+ "symfony/service-contracts": "^1.1|^2",
3773
+ "symfony/stopwatch": "^4.4|^5.0"
3774
+ },
3775
+ "suggest": {
3776
+ "symfony/dependency-injection": "",
3777
+ "symfony/http-kernel": ""
3778
+ },
3779
+ "type": "library",
3780
+ "autoload": {
3781
+ "psr-4": {
3782
+ "Symfony\\Component\\EventDispatcher\\": ""
3783
+ },
3784
+ "exclude-from-classmap": [
3785
+ "/Tests/"
3786
+ ]
3787
+ },
3788
+ "notification-url": "https://packagist.org/downloads/",
3789
+ "license": [
3790
+ "MIT"
3791
+ ],
3792
+ "authors": [
3793
+ {
3794
+ "name": "Fabien Potencier",
3795
+ "email": "fabien@symfony.com"
3796
+ },
3797
+ {
3798
+ "name": "Symfony Community",
3799
+ "homepage": "https://symfony.com/contributors"
3800
+ }
3801
+ ],
3802
+ "description": "Symfony EventDispatcher Component",
3803
+ "homepage": "https://symfony.com",
3804
+ "support": {
3805
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.0"
3806
+ },
3807
+ "funding": [
3808
+ {
3809
+ "url": "https://symfony.com/sponsor",
3810
+ "type": "custom"
3811
+ },
3812
+ {
3813
+ "url": "https://github.com/fabpot",
3814
+ "type": "github"
3815
+ },
3816
+ {
3817
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3818
+ "type": "tidelift"
3819
+ }
3820
+ ],
3821
+ "time": "2020-11-01T16:14:45+00:00"
3822
+ },
3823
+ {
3824
+ "name": "symfony/event-dispatcher-contracts",
3825
+ "version": "v2.2.0",
3826
+ "source": {
3827
+ "type": "git",
3828
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
3829
+ "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2"
3830
+ },
3831
+ "dist": {
3832
+ "type": "zip",
3833
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2",
3834
+ "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2",
3835
+ "shasum": ""
3836
+ },
3837
+ "require": {
3838
+ "php": ">=7.2.5",
3839
+ "psr/event-dispatcher": "^1"
3840
+ },
3841
+ "suggest": {
3842
+ "symfony/event-dispatcher-implementation": ""
3843
+ },
3844
+ "type": "library",
3845
+ "extra": {
3846
+ "branch-alias": {
3847
+ "dev-master": "2.2-dev"
3848
+ },
3849
+ "thanks": {
3850
+ "name": "symfony/contracts",
3851
+ "url": "https://github.com/symfony/contracts"
3852
+ }
3853
+ },
3854
+ "autoload": {
3855
+ "psr-4": {
3856
+ "Symfony\\Contracts\\EventDispatcher\\": ""
3857
+ }
3858
+ },
3859
+ "notification-url": "https://packagist.org/downloads/",
3860
+ "license": [
3861
+ "MIT"
3862
+ ],
3863
+ "authors": [
3864
+ {
3865
+ "name": "Nicolas Grekas",
3866
+ "email": "p@tchwork.com"
3867
+ },
3868
+ {
3869
+ "name": "Symfony Community",
3870
+ "homepage": "https://symfony.com/contributors"
3871
+ }
3872
+ ],
3873
+ "description": "Generic abstractions related to dispatching event",
3874
+ "homepage": "https://symfony.com",
3875
+ "keywords": [
3876
+ "abstractions",
3877
+ "contracts",
3878
+ "decoupling",
3879
+ "interfaces",
3880
+ "interoperability",
3881
+ "standards"
3882
+ ],
3883
+ "support": {
3884
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0"
3885
+ },
3886
+ "funding": [
3887
+ {
3888
+ "url": "https://symfony.com/sponsor",
3889
+ "type": "custom"
3890
+ },
3891
+ {
3892
+ "url": "https://github.com/fabpot",
3893
+ "type": "github"
3894
+ },
3895
+ {
3896
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3897
+ "type": "tidelift"
3898
+ }
3899
+ ],
3900
+ "time": "2020-09-07T11:33:47+00:00"
3901
+ },
3902
+ {
3903
+ "name": "symfony/filesystem",
3904
+ "version": "v5.2.0",
3905
+ "source": {
3906
+ "type": "git",
3907
+ "url": "https://github.com/symfony/filesystem.git",
3908
+ "reference": "bb92ba7f38b037e531908590a858a04d85c0e238"
3909
+ },
3910
+ "dist": {
3911
+ "type": "zip",
3912
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/bb92ba7f38b037e531908590a858a04d85c0e238",
3913
+ "reference": "bb92ba7f38b037e531908590a858a04d85c0e238",
3914
+ "shasum": ""
3915
+ },
3916
+ "require": {
3917
+ "php": ">=7.2.5",
3918
+ "symfony/polyfill-ctype": "~1.8"
3919
+ },
3920
+ "type": "library",
3921
+ "autoload": {
3922
+ "psr-4": {
3923
+ "Symfony\\Component\\Filesystem\\": ""
3924
+ },
3925
+ "exclude-from-classmap": [
3926
+ "/Tests/"
3927
+ ]
3928
+ },
3929
+ "notification-url": "https://packagist.org/downloads/",
3930
+ "license": [
3931
+ "MIT"
3932
+ ],
3933
+ "authors": [
3934
+ {
3935
+ "name": "Fabien Potencier",
3936
+ "email": "fabien@symfony.com"
3937
+ },
3938
+ {
3939
+ "name": "Symfony Community",
3940
+ "homepage": "https://symfony.com/contributors"
3941
+ }
3942
+ ],
3943
+ "description": "Symfony Filesystem Component",
3944
+ "homepage": "https://symfony.com",
3945
+ "support": {
3946
+ "source": "https://github.com/symfony/filesystem/tree/v5.2.0"
3947
+ },
3948
+ "funding": [
3949
+ {
3950
+ "url": "https://symfony.com/sponsor",
3951
+ "type": "custom"
3952
+ },
3953
+ {
3954
+ "url": "https://github.com/fabpot",
3955
+ "type": "github"
3956
+ },
3957
+ {
3958
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3959
+ "type": "tidelift"
3960
+ }
3961
+ ],
3962
+ "time": "2020-11-12T09:58:18+00:00"
3963
+ },
3964
+ {
3965
+ "name": "symfony/finder",
3966
+ "version": "v5.2.0",
3967
+ "source": {
3968
+ "type": "git",
3969
+ "url": "https://github.com/symfony/finder.git",
3970
+ "reference": "fd8305521692f27eae3263895d1ef1571c71a78d"
3971
+ },
3972
+ "dist": {
3973
+ "type": "zip",
3974
+ "url": "https://api.github.com/repos/symfony/finder/zipball/fd8305521692f27eae3263895d1ef1571c71a78d",
3975
+ "reference": "fd8305521692f27eae3263895d1ef1571c71a78d",
3976
+ "shasum": ""
3977
+ },
3978
+ "require": {
3979
+ "php": ">=7.2.5"
3980
+ },
3981
+ "type": "library",
3982
+ "autoload": {
3983
+ "psr-4": {
3984
+ "Symfony\\Component\\Finder\\": ""
3985
+ },
3986
+ "exclude-from-classmap": [
3987
+ "/Tests/"
3988
+ ]
3989
+ },
3990
+ "notification-url": "https://packagist.org/downloads/",
3991
+ "license": [
3992
+ "MIT"
3993
+ ],
3994
+ "authors": [
3995
+ {
3996
+ "name": "Fabien Potencier",
3997
+ "email": "fabien@symfony.com"
3998
+ },
3999
+ {
4000
+ "name": "Symfony Community",
4001
+ "homepage": "https://symfony.com/contributors"
4002
+ }
4003
+ ],
4004
+ "description": "Symfony Finder Component",
4005
+ "homepage": "https://symfony.com",
4006
+ "support": {
4007
+ "source": "https://github.com/symfony/finder/tree/v5.2.0"
4008
+ },
4009
+ "funding": [
4010
+ {
4011
+ "url": "https://symfony.com/sponsor",
4012
+ "type": "custom"
4013
+ },
4014
+ {
4015
+ "url": "https://github.com/fabpot",
4016
+ "type": "github"
4017
+ },
4018
+ {
4019
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4020
+ "type": "tidelift"
4021
+ }
4022
+ ],
4023
+ "time": "2020-11-18T09:42:36+00:00"
4024
+ },
4025
+ {
4026
+ "name": "symfony/polyfill-ctype",
4027
+ "version": "v1.20.0",
4028
+ "source": {
4029
+ "type": "git",
4030
+ "url": "https://github.com/symfony/polyfill-ctype.git",
4031
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
4032
+ },
4033
+ "dist": {
4034
+ "type": "zip",
4035
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
4036
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
4037
+ "shasum": ""
4038
+ },
4039
+ "require": {
4040
+ "php": ">=7.1"
4041
+ },
4042
+ "suggest": {
4043
+ "ext-ctype": "For best performance"
4044
+ },
4045
+ "type": "library",
4046
+ "extra": {
4047
+ "branch-alias": {
4048
+ "dev-main": "1.20-dev"
4049
+ },
4050
+ "thanks": {
4051
+ "name": "symfony/polyfill",
4052
+ "url": "https://github.com/symfony/polyfill"
4053
+ }
4054
+ },
4055
+ "autoload": {
4056
+ "psr-4": {
4057
+ "Symfony\\Polyfill\\Ctype\\": ""
4058
+ },
4059
+ "files": [
4060
+ "bootstrap.php"
4061
+ ]
4062
+ },
4063
+ "notification-url": "https://packagist.org/downloads/",
4064
+ "license": [
4065
+ "MIT"
4066
+ ],
4067
+ "authors": [
4068
+ {
4069
+ "name": "Gert de Pagter",
4070
+ "email": "BackEndTea@gmail.com"
4071
+ },
4072
+ {
4073
+ "name": "Symfony Community",
4074
+ "homepage": "https://symfony.com/contributors"
4075
+ }
4076
+ ],
4077
+ "description": "Symfony polyfill for ctype functions",
4078
+ "homepage": "https://symfony.com",
4079
+ "keywords": [
4080
+ "compatibility",
4081
+ "ctype",
4082
+ "polyfill",
4083
+ "portable"
4084
+ ],
4085
+ "support": {
4086
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0"
4087
+ },
4088
+ "funding": [
4089
+ {
4090
+ "url": "https://symfony.com/sponsor",
4091
+ "type": "custom"
4092
+ },
4093
+ {
4094
+ "url": "https://github.com/fabpot",
4095
+ "type": "github"
4096
+ },
4097
+ {
4098
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4099
+ "type": "tidelift"
4100
+ }
4101
+ ],
4102
+ "time": "2020-10-23T14:02:19+00:00"
4103
+ },
4104
+ {
4105
+ "name": "symfony/polyfill-intl-grapheme",
4106
+ "version": "v1.20.0",
4107
+ "source": {
4108
+ "type": "git",
4109
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
4110
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c"
4111
+ },
4112
+ "dist": {
4113
+ "type": "zip",
4114
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
4115
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
4116
+ "shasum": ""
4117
+ },
4118
+ "require": {
4119
+ "php": ">=7.1"
4120
+ },
4121
+ "suggest": {
4122
+ "ext-intl": "For best performance"
4123
+ },
4124
+ "type": "library",
4125
+ "extra": {
4126
+ "branch-alias": {
4127
+ "dev-main": "1.20-dev"
4128
+ },
4129
+ "thanks": {
4130
+ "name": "symfony/polyfill",
4131
+ "url": "https://github.com/symfony/polyfill"
4132
+ }
4133
+ },
4134
+ "autoload": {
4135
+ "psr-4": {
4136
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
4137
+ },
4138
+ "files": [
4139
+ "bootstrap.php"
4140
+ ]
4141
+ },
4142
+ "notification-url": "https://packagist.org/downloads/",
4143
+ "license": [
4144
+ "MIT"
4145
+ ],
4146
+ "authors": [
4147
+ {
4148
+ "name": "Nicolas Grekas",
4149
+ "email": "p@tchwork.com"
4150
+ },
4151
+ {
4152
+ "name": "Symfony Community",
4153
+ "homepage": "https://symfony.com/contributors"
4154
+ }
4155
+ ],
4156
+ "description": "Symfony polyfill for intl's grapheme_* functions",
4157
+ "homepage": "https://symfony.com",
4158
+ "keywords": [
4159
+ "compatibility",
4160
+ "grapheme",
4161
+ "intl",
4162
+ "polyfill",
4163
+ "portable",
4164
+ "shim"
4165
+ ],
4166
+ "support": {
4167
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0"
4168
+ },
4169
+ "funding": [
4170
+ {
4171
+ "url": "https://symfony.com/sponsor",
4172
+ "type": "custom"
4173
+ },
4174
+ {
4175
+ "url": "https://github.com/fabpot",
4176
+ "type": "github"
4177
+ },
4178
+ {
4179
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4180
+ "type": "tidelift"
4181
+ }
4182
+ ],
4183
+ "time": "2020-10-23T14:02:19+00:00"
4184
+ },
4185
+ {
4186
+ "name": "symfony/polyfill-intl-normalizer",
4187
+ "version": "v1.20.0",
4188
+ "source": {
4189
+ "type": "git",
4190
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
4191
+ "reference": "727d1096295d807c309fb01a851577302394c897"
4192
+ },
4193
+ "dist": {
4194
+ "type": "zip",
4195
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
4196
+ "reference": "727d1096295d807c309fb01a851577302394c897",
4197
+ "shasum": ""
4198
+ },
4199
+ "require": {
4200
+ "php": ">=7.1"
4201
+ },
4202
+ "suggest": {
4203
+ "ext-intl": "For best performance"
4204
+ },
4205
+ "type": "library",
4206
+ "extra": {
4207
+ "branch-alias": {
4208
+ "dev-main": "1.20-dev"
4209
+ },
4210
+ "thanks": {
4211
+ "name": "symfony/polyfill",
4212
+ "url": "https://github.com/symfony/polyfill"
4213
+ }
4214
+ },
4215
+ "autoload": {
4216
+ "psr-4": {
4217
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
4218
+ },
4219
+ "files": [
4220
+ "bootstrap.php"
4221
+ ],
4222
+ "classmap": [
4223
+ "Resources/stubs"
4224
+ ]
4225
+ },
4226
+ "notification-url": "https://packagist.org/downloads/",
4227
+ "license": [
4228
+ "MIT"
4229
+ ],
4230
+ "authors": [
4231
+ {
4232
+ "name": "Nicolas Grekas",
4233
+ "email": "p@tchwork.com"
4234
+ },
4235
+ {
4236
+ "name": "Symfony Community",
4237
+ "homepage": "https://symfony.com/contributors"
4238
+ }
4239
+ ],
4240
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
4241
+ "homepage": "https://symfony.com",
4242
+ "keywords": [
4243
+ "compatibility",
4244
+ "intl",
4245
+ "normalizer",
4246
+ "polyfill",
4247
+ "portable",
4248
+ "shim"
4249
+ ],
4250
+ "support": {
4251
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0"
4252
+ },
4253
+ "funding": [
4254
+ {
4255
+ "url": "https://symfony.com/sponsor",
4256
+ "type": "custom"
4257
+ },
4258
+ {
4259
+ "url": "https://github.com/fabpot",
4260
+ "type": "github"
4261
+ },
4262
+ {
4263
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4264
+ "type": "tidelift"
4265
+ }
4266
+ ],
4267
+ "time": "2020-10-23T14:02:19+00:00"
4268
+ },
4269
+ {
4270
+ "name": "symfony/polyfill-mbstring",
4271
+ "version": "v1.20.0",
4272
+ "source": {
4273
+ "type": "git",
4274
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
4275
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
4276
+ },
4277
+ "dist": {
4278
+ "type": "zip",
4279
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
4280
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
4281
+ "shasum": ""
4282
+ },
4283
+ "require": {
4284
+ "php": ">=7.1"
4285
+ },
4286
+ "suggest": {
4287
+ "ext-mbstring": "For best performance"
4288
+ },
4289
+ "type": "library",
4290
+ "extra": {
4291
+ "branch-alias": {
4292
+ "dev-main": "1.20-dev"
4293
+ },
4294
+ "thanks": {
4295
+ "name": "symfony/polyfill",
4296
+ "url": "https://github.com/symfony/polyfill"
4297
+ }
4298
+ },
4299
+ "autoload": {
4300
+ "psr-4": {
4301
+ "Symfony\\Polyfill\\Mbstring\\": ""
4302
+ },
4303
+ "files": [
4304
+ "bootstrap.php"
4305
+ ]
4306
+ },
4307
+ "notification-url": "https://packagist.org/downloads/",
4308
+ "license": [
4309
+ "MIT"
4310
+ ],
4311
+ "authors": [
4312
+ {
4313
+ "name": "Nicolas Grekas",
4314
+ "email": "p@tchwork.com"
4315
+ },
4316
+ {
4317
+ "name": "Symfony Community",
4318
+ "homepage": "https://symfony.com/contributors"
4319
+ }
4320
+ ],
4321
+ "description": "Symfony polyfill for the Mbstring extension",
4322
+ "homepage": "https://symfony.com",
4323
+ "keywords": [
4324
+ "compatibility",
4325
+ "mbstring",
4326
+ "polyfill",
4327
+ "portable",
4328
+ "shim"
4329
+ ],
4330
+ "support": {
4331
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
4332
+ },
4333
+ "funding": [
4334
+ {
4335
+ "url": "https://symfony.com/sponsor",
4336
+ "type": "custom"
4337
+ },
4338
+ {
4339
+ "url": "https://github.com/fabpot",
4340
+ "type": "github"
4341
+ },
4342
+ {
4343
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4344
+ "type": "tidelift"
4345
+ }
4346
+ ],
4347
+ "time": "2020-10-23T14:02:19+00:00"
4348
+ },
4349
+ {
4350
+ "name": "symfony/polyfill-php73",
4351
+ "version": "v1.20.0",
4352
+ "source": {
4353
+ "type": "git",
4354
+ "url": "https://github.com/symfony/polyfill-php73.git",
4355
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
4356
+ },
4357
+ "dist": {
4358
+ "type": "zip",
4359
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
4360
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
4361
+ "shasum": ""
4362
+ },
4363
+ "require": {
4364
+ "php": ">=7.1"
4365
+ },
4366
+ "type": "library",
4367
+ "extra": {
4368
+ "branch-alias": {
4369
+ "dev-main": "1.20-dev"
4370
+ },
4371
+ "thanks": {
4372
+ "name": "symfony/polyfill",
4373
+ "url": "https://github.com/symfony/polyfill"
4374
+ }
4375
+ },
4376
+ "autoload": {
4377
+ "psr-4": {
4378
+ "Symfony\\Polyfill\\Php73\\": ""
4379
+ },
4380
+ "files": [
4381
+ "bootstrap.php"
4382
+ ],
4383
+ "classmap": [
4384
+ "Resources/stubs"
4385
+ ]
4386
+ },
4387
+ "notification-url": "https://packagist.org/downloads/",
4388
+ "license": [
4389
+ "MIT"
4390
+ ],
4391
+ "authors": [
4392
+ {
4393
+ "name": "Nicolas Grekas",
4394
+ "email": "p@tchwork.com"
4395
+ },
4396
+ {
4397
+ "name": "Symfony Community",
4398
+ "homepage": "https://symfony.com/contributors"
4399
+ }
4400
+ ],
4401
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
4402
+ "homepage": "https://symfony.com",
4403
+ "keywords": [
4404
+ "compatibility",
4405
+ "polyfill",
4406
+ "portable",
4407
+ "shim"
4408
+ ],
4409
+ "support": {
4410
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0"
4411
+ },
4412
+ "funding": [
4413
+ {
4414
+ "url": "https://symfony.com/sponsor",
4415
+ "type": "custom"
4416
+ },
4417
+ {
4418
+ "url": "https://github.com/fabpot",
4419
+ "type": "github"
4420
+ },
4421
+ {
4422
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4423
+ "type": "tidelift"
4424
+ }
4425
+ ],
4426
+ "time": "2020-10-23T14:02:19+00:00"
4427
+ },
4428
+ {
4429
+ "name": "symfony/polyfill-php80",
4430
+ "version": "v1.20.0",
4431
+ "source": {
4432
+ "type": "git",
4433
+ "url": "https://github.com/symfony/polyfill-php80.git",
4434
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
4435
+ },
4436
+ "dist": {
4437
+ "type": "zip",
4438
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
4439
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
4440
+ "shasum": ""
4441
+ },
4442
+ "require": {
4443
+ "php": ">=7.1"
4444
+ },
4445
+ "type": "library",
4446
+ "extra": {
4447
+ "branch-alias": {
4448
+ "dev-main": "1.20-dev"
4449
+ },
4450
+ "thanks": {
4451
+ "name": "symfony/polyfill",
4452
+ "url": "https://github.com/symfony/polyfill"
4453
+ }
4454
+ },
4455
+ "autoload": {
4456
+ "psr-4": {
4457
+ "Symfony\\Polyfill\\Php80\\": ""
4458
+ },
4459
+ "files": [
4460
+ "bootstrap.php"
4461
+ ],
4462
+ "classmap": [
4463
+ "Resources/stubs"
4464
+ ]
4465
+ },
4466
+ "notification-url": "https://packagist.org/downloads/",
4467
+ "license": [
4468
+ "MIT"
4469
+ ],
4470
+ "authors": [
4471
+ {
4472
+ "name": "Ion Bazan",
4473
+ "email": "ion.bazan@gmail.com"
4474
+ },
4475
+ {
4476
+ "name": "Nicolas Grekas",
4477
+ "email": "p@tchwork.com"
4478
+ },
4479
+ {
4480
+ "name": "Symfony Community",
4481
+ "homepage": "https://symfony.com/contributors"
4482
+ }
4483
+ ],
4484
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
4485
+ "homepage": "https://symfony.com",
4486
+ "keywords": [
4487
+ "compatibility",
4488
+ "polyfill",
4489
+ "portable",
4490
+ "shim"
4491
+ ],
4492
+ "support": {
4493
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
4494
+ },
4495
+ "funding": [
4496
+ {
4497
+ "url": "https://symfony.com/sponsor",
4498
+ "type": "custom"
4499
+ },
4500
+ {
4501
+ "url": "https://github.com/fabpot",
4502
+ "type": "github"
4503
+ },
4504
+ {
4505
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4506
+ "type": "tidelift"
4507
+ }
4508
+ ],
4509
+ "time": "2020-10-23T14:02:19+00:00"
4510
+ },
4511
+ {
4512
+ "name": "symfony/process",
4513
+ "version": "v5.2.0",
4514
+ "source": {
4515
+ "type": "git",
4516
+ "url": "https://github.com/symfony/process.git",
4517
+ "reference": "240e74140d4d956265048f3025c0aecbbc302d54"
4518
+ },
4519
+ "dist": {
4520
+ "type": "zip",
4521
+ "url": "https://api.github.com/repos/symfony/process/zipball/240e74140d4d956265048f3025c0aecbbc302d54",
4522
+ "reference": "240e74140d4d956265048f3025c0aecbbc302d54",
4523
+ "shasum": ""
4524
+ },
4525
+ "require": {
4526
+ "php": ">=7.2.5",
4527
+ "symfony/polyfill-php80": "^1.15"
4528
+ },
4529
+ "type": "library",
4530
+ "autoload": {
4531
+ "psr-4": {
4532
+ "Symfony\\Component\\Process\\": ""
4533
+ },
4534
+ "exclude-from-classmap": [
4535
+ "/Tests/"
4536
+ ]
4537
+ },
4538
+ "notification-url": "https://packagist.org/downloads/",
4539
+ "license": [
4540
+ "MIT"
4541
+ ],
4542
+ "authors": [
4543
+ {
4544
+ "name": "Fabien Potencier",
4545
+ "email": "fabien@symfony.com"
4546
+ },
4547
+ {
4548
+ "name": "Symfony Community",
4549
+ "homepage": "https://symfony.com/contributors"
4550
+ }
4551
+ ],
4552
+ "description": "Symfony Process Component",
4553
+ "homepage": "https://symfony.com",
4554
+ "support": {
4555
+ "source": "https://github.com/symfony/process/tree/v5.2.0"
4556
+ },
4557
+ "funding": [
4558
+ {
4559
+ "url": "https://symfony.com/sponsor",
4560
+ "type": "custom"
4561
+ },
4562
+ {
4563
+ "url": "https://github.com/fabpot",
4564
+ "type": "github"
4565
+ },
4566
+ {
4567
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4568
+ "type": "tidelift"
4569
+ }
4570
+ ],
4571
+ "time": "2020-11-02T15:47:15+00:00"
4572
+ },
4573
+ {
4574
+ "name": "symfony/service-contracts",
4575
+ "version": "v2.2.0",
4576
+ "source": {
4577
+ "type": "git",
4578
+ "url": "https://github.com/symfony/service-contracts.git",
4579
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
4580
+ },
4581
+ "dist": {
4582
+ "type": "zip",
4583
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
4584
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
4585
+ "shasum": ""
4586
+ },
4587
+ "require": {
4588
+ "php": ">=7.2.5",
4589
+ "psr/container": "^1.0"
4590
+ },
4591
+ "suggest": {
4592
+ "symfony/service-implementation": ""
4593
+ },
4594
+ "type": "library",
4595
+ "extra": {
4596
+ "branch-alias": {
4597
+ "dev-master": "2.2-dev"
4598
+ },
4599
+ "thanks": {
4600
+ "name": "symfony/contracts",
4601
+ "url": "https://github.com/symfony/contracts"
4602
+ }
4603
+ },
4604
+ "autoload": {
4605
+ "psr-4": {
4606
+ "Symfony\\Contracts\\Service\\": ""
4607
+ }
4608
+ },
4609
+ "notification-url": "https://packagist.org/downloads/",
4610
+ "license": [
4611
+ "MIT"
4612
+ ],
4613
+ "authors": [
4614
+ {
4615
+ "name": "Nicolas Grekas",
4616
+ "email": "p@tchwork.com"
4617
+ },
4618
+ {
4619
+ "name": "Symfony Community",
4620
+ "homepage": "https://symfony.com/contributors"
4621
+ }
4622
+ ],
4623
+ "description": "Generic abstractions related to writing services",
4624
+ "homepage": "https://symfony.com",
4625
+ "keywords": [
4626
+ "abstractions",
4627
+ "contracts",
4628
+ "decoupling",
4629
+ "interfaces",
4630
+ "interoperability",
4631
+ "standards"
4632
+ ],
4633
+ "support": {
4634
+ "source": "https://github.com/symfony/service-contracts/tree/master"
4635
+ },
4636
+ "funding": [
4637
+ {
4638
+ "url": "https://symfony.com/sponsor",
4639
+ "type": "custom"
4640
+ },
4641
+ {
4642
+ "url": "https://github.com/fabpot",
4643
+ "type": "github"
4644
+ },
4645
+ {
4646
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4647
+ "type": "tidelift"
4648
+ }
4649
+ ],
4650
+ "time": "2020-09-07T11:33:47+00:00"
4651
+ },
4652
+ {
4653
+ "name": "symfony/string",
4654
+ "version": "v5.2.0",
4655
+ "source": {
4656
+ "type": "git",
4657
+ "url": "https://github.com/symfony/string.git",
4658
+ "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242"
4659
+ },
4660
+ "dist": {
4661
+ "type": "zip",
4662
+ "url": "https://api.github.com/repos/symfony/string/zipball/40e975edadd4e32cd16f3753b3bad65d9ac48242",
4663
+ "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242",
4664
+ "shasum": ""
4665
+ },
4666
+ "require": {
4667
+ "php": ">=7.2.5",
4668
+ "symfony/polyfill-ctype": "~1.8",
4669
+ "symfony/polyfill-intl-grapheme": "~1.0",
4670
+ "symfony/polyfill-intl-normalizer": "~1.0",
4671
+ "symfony/polyfill-mbstring": "~1.0",
4672
+ "symfony/polyfill-php80": "~1.15"
4673
+ },
4674
+ "require-dev": {
4675
+ "symfony/error-handler": "^4.4|^5.0",
4676
+ "symfony/http-client": "^4.4|^5.0",
4677
+ "symfony/translation-contracts": "^1.1|^2",
4678
+ "symfony/var-exporter": "^4.4|^5.0"
4679
+ },
4680
+ "type": "library",
4681
+ "autoload": {
4682
+ "psr-4": {
4683
+ "Symfony\\Component\\String\\": ""
4684
+ },
4685
+ "files": [
4686
+ "Resources/functions.php"
4687
+ ],
4688
+ "exclude-from-classmap": [
4689
+ "/Tests/"
4690
+ ]
4691
+ },
4692
+ "notification-url": "https://packagist.org/downloads/",
4693
+ "license": [
4694
+ "MIT"
4695
+ ],
4696
+ "authors": [
4697
+ {
4698
+ "name": "Nicolas Grekas",
4699
+ "email": "p@tchwork.com"
4700
+ },
4701
+ {
4702
+ "name": "Symfony Community",
4703
+ "homepage": "https://symfony.com/contributors"
4704
+ }
4705
+ ],
4706
+ "description": "Symfony String component",
4707
+ "homepage": "https://symfony.com",
4708
+ "keywords": [
4709
+ "grapheme",
4710
+ "i18n",
4711
+ "string",
4712
+ "unicode",
4713
+ "utf-8",
4714
+ "utf8"
4715
+ ],
4716
+ "support": {
4717
+ "source": "https://github.com/symfony/string/tree/v5.2.0"
4718
+ },
4719
+ "funding": [
4720
+ {
4721
+ "url": "https://symfony.com/sponsor",
4722
+ "type": "custom"
4723
+ },
4724
+ {
4725
+ "url": "https://github.com/fabpot",
4726
+ "type": "github"
4727
+ },
4728
+ {
4729
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4730
+ "type": "tidelift"
4731
+ }
4732
+ ],
4733
+ "time": "2020-10-24T12:08:07+00:00"
4734
+ },
4735
+ {
4736
+ "name": "symfony/yaml",
4737
+ "version": "v5.2.0",
4738
+ "source": {
4739
+ "type": "git",
4740
+ "url": "https://github.com/symfony/yaml.git",
4741
+ "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598"
4742
+ },
4743
+ "dist": {
4744
+ "type": "zip",
4745
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598",
4746
+ "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598",
4747
+ "shasum": ""
4748
+ },
4749
+ "require": {
4750
+ "php": ">=7.2.5",
4751
+ "symfony/deprecation-contracts": "^2.1",
4752
+ "symfony/polyfill-ctype": "~1.8"
4753
+ },
4754
+ "conflict": {
4755
+ "symfony/console": "<4.4"
4756
+ },
4757
+ "require-dev": {
4758
+ "symfony/console": "^4.4|^5.0"
4759
+ },
4760
+ "suggest": {
4761
+ "symfony/console": "For validating YAML files using the lint command"
4762
+ },
4763
+ "bin": [
4764
+ "Resources/bin/yaml-lint"
4765
+ ],
4766
+ "type": "library",
4767
+ "autoload": {
4768
+ "psr-4": {
4769
+ "Symfony\\Component\\Yaml\\": ""
4770
+ },
4771
+ "exclude-from-classmap": [
4772
+ "/Tests/"
4773
+ ]
4774
+ },
4775
+ "notification-url": "https://packagist.org/downloads/",
4776
+ "license": [
4777
+ "MIT"
4778
+ ],
4779
+ "authors": [
4780
+ {
4781
+ "name": "Fabien Potencier",
4782
+ "email": "fabien@symfony.com"
4783
+ },
4784
+ {
4785
+ "name": "Symfony Community",
4786
+ "homepage": "https://symfony.com/contributors"
4787
+ }
4788
+ ],
4789
+ "description": "Symfony Yaml Component",
4790
+ "homepage": "https://symfony.com",
4791
+ "support": {
4792
+ "source": "https://github.com/symfony/yaml/tree/v5.2.0"
4793
+ },
4794
+ "funding": [
4795
+ {
4796
+ "url": "https://symfony.com/sponsor",
4797
+ "type": "custom"
4798
+ },
4799
+ {
4800
+ "url": "https://github.com/fabpot",
4801
+ "type": "github"
4802
+ },
4803
+ {
4804
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
4805
+ "type": "tidelift"
4806
+ }
4807
+ ],
4808
+ "time": "2020-11-28T10:57:20+00:00"
4809
+ },
4810
+ {
4811
+ "name": "theseer/tokenizer",
4812
+ "version": "1.2.0",
4813
+ "source": {
4814
+ "type": "git",
4815
+ "url": "https://github.com/theseer/tokenizer.git",
4816
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
4817
+ },
4818
+ "dist": {
4819
+ "type": "zip",
4820
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
4821
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
4822
+ "shasum": ""
4823
+ },
4824
+ "require": {
4825
+ "ext-dom": "*",
4826
+ "ext-tokenizer": "*",
4827
+ "ext-xmlwriter": "*",
4828
+ "php": "^7.2 || ^8.0"
4829
+ },
4830
+ "type": "library",
4831
+ "autoload": {
4832
+ "classmap": [
4833
+ "src/"
4834
+ ]
4835
+ },
4836
+ "notification-url": "https://packagist.org/downloads/",
4837
+ "license": [
4838
+ "BSD-3-Clause"
4839
+ ],
4840
+ "authors": [
4841
+ {
4842
+ "name": "Arne Blankerts",
4843
+ "email": "arne@blankerts.de",
4844
+ "role": "Developer"
4845
+ }
4846
+ ],
4847
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4848
+ "support": {
4849
+ "issues": "https://github.com/theseer/tokenizer/issues",
4850
+ "source": "https://github.com/theseer/tokenizer/tree/master"
4851
+ },
4852
+ "funding": [
4853
+ {
4854
+ "url": "https://github.com/theseer",
4855
+ "type": "github"
4856
+ }
4857
+ ],
4858
+ "time": "2020-07-12T23:59:07+00:00"
4859
+ },
4860
+ {
4861
+ "name": "typisttech/codeception-composer-project-module",
4862
+ "version": "0.1.2",
4863
+ "source": {
4864
+ "type": "git",
4865
+ "url": "https://github.com/TypistTech/codeception-composer-project-module.git",
4866
+ "reference": "f59767fa7d2b6f9de1738668f5ddc282e2e7627a"
4867
+ },
4868
+ "dist": {
4869
+ "type": "zip",
4870
+ "url": "https://api.github.com/repos/TypistTech/codeception-composer-project-module/zipball/f59767fa7d2b6f9de1738668f5ddc282e2e7627a",
4871
+ "reference": "f59767fa7d2b6f9de1738668f5ddc282e2e7627a",
4872
+ "shasum": ""
4873
+ },
4874
+ "require": {
4875
+ "php": "^7.3 || ^8.0",
4876
+ "spatie/temporary-directory": "^1.3"
4877
+ },
4878
+ "require-dev": {
4879
+ "codeception/codeception": "^4.1",
4880
+ "codeception/module-asserts": "^1.3",
4881
+ "codeception/module-cli": "^1.1",
4882
+ "codeception/module-filesystem": "^1.0",
4883
+ "squizlabs/php_codesniffer": "^3.5"
4884
+ },
4885
+ "type": "library",
4886
+ "extra": {
4887
+ "branch-alias": {
4888
+ "dev-master": "0.1.x-dev"
4889
+ }
4890
+ },
4891
+ "autoload": {
4892
+ "psr-4": {
4893
+ "Codeception\\Module\\": "src/"
4894
+ }
4895
+ },
4896
+ "notification-url": "https://packagist.org/downloads/",
4897
+ "license": [
4898
+ "MIT"
4899
+ ],
4900
+ "authors": [
4901
+ {
4902
+ "name": "Typist Tech",
4903
+ "email": "codeception-composer-project-module@typist.tech",
4904
+ "homepage": "https://www.typist.tech"
4905
+ },
4906
+ {
4907
+ "name": "Tang Rufus",
4908
+ "email": "tangrufus@gmail.com",
4909
+ "homepage": "https://www.typist.tech",
4910
+ "role": "Developer"
4911
+ }
4912
+ ],
4913
+ "description": "Create throw away composer projects for Codeception tests",
4914
+ "homepage": "https://github.com/TypistTech/codeception-composer-project-module",
4915
+ "keywords": [
4916
+ "BDD",
4917
+ "TDD",
4918
+ "codeception-module",
4919
+ "composer",
4920
+ "testing"
4921
+ ],
4922
+ "support": {
4923
+ "email": "codeception-composer-project-module@typist.tech",
4924
+ "issues": "https://github.com/TypistTech/codeception-composer-project-module/issues",
4925
+ "source": "https://github.com/TypistTech/codeception-composer-project-module"
4926
+ },
4927
+ "funding": [
4928
+ {
4929
+ "url": "https://typist.tech/donation/",
4930
+ "type": "custom"
4931
+ },
4932
+ {
4933
+ "url": "https://www.paypal.me/iAmTangRufus/30usd",
4934
+ "type": "custom"
4935
+ },
4936
+ {
4937
+ "url": "https://github.com/tangrufus",
4938
+ "type": "github"
4939
+ }
4940
+ ],
4941
+ "time": "2020-12-06T21:54:13+00:00"
4942
+ },
4943
+ {
4944
+ "name": "webmozart/assert",
4945
+ "version": "1.9.1",
4946
+ "source": {
4947
+ "type": "git",
4948
+ "url": "https://github.com/webmozart/assert.git",
4949
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
4950
+ },
4951
+ "dist": {
4952
+ "type": "zip",
4953
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
4954
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
4955
+ "shasum": ""
4956
+ },
4957
+ "require": {
4958
+ "php": "^5.3.3 || ^7.0 || ^8.0",
4959
+ "symfony/polyfill-ctype": "^1.8"
4960
+ },
4961
+ "conflict": {
4962
+ "phpstan/phpstan": "<0.12.20",
4963
+ "vimeo/psalm": "<3.9.1"
4964
+ },
4965
+ "require-dev": {
4966
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
4967
+ },
4968
+ "type": "library",
4969
+ "autoload": {
4970
+ "psr-4": {
4971
+ "Webmozart\\Assert\\": "src/"
4972
+ }
4973
+ },
4974
+ "notification-url": "https://packagist.org/downloads/",
4975
+ "license": [
4976
+ "MIT"
4977
+ ],
4978
+ "authors": [
4979
+ {
4980
+ "name": "Bernhard Schussek",
4981
+ "email": "bschussek@gmail.com"
4982
+ }
4983
+ ],
4984
+ "description": "Assertions to validate method input/output with nice error messages.",
4985
+ "keywords": [
4986
+ "assert",
4987
+ "check",
4988
+ "validate"
4989
+ ],
4990
+ "support": {
4991
+ "issues": "https://github.com/webmozart/assert/issues",
4992
+ "source": "https://github.com/webmozart/assert/tree/master"
4993
+ },
4994
+ "time": "2020-07-08T17:02:28+00:00"
4995
+ }
4996
+ ],
4997
+ "aliases": [],
4998
+ "minimum-stability": "stable",
4999
+ "stability-flags": [],
5000
+ "prefer-stable": false,
5001
+ "prefer-lowest": false,
5002
+ "platform": {
5003
+ "php": "^7.3 || ^8.0",
5004
+ "composer-plugin-api": "^1.1 || ^2.0"
5005
+ },
5006
+ "platform-dev": [],
5007
+ "plugin-api-version": "2.0.0"
5008
+ }
vendor/typisttech/imposter-plugin/src/AutoloadMerger.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter\Plugin;
6
+
7
+ use Composer\Package\RootPackageInterface;
8
+ use RuntimeException;
9
+ use TypistTech\Imposter\ImposterFactory;
10
+
11
+ class AutoloadMerger
12
+ {
13
+ public static function run(RootPackageInterface $package): void
14
+ {
15
+ $autoload = $package->getAutoload();
16
+ $autoload = array_merge_recursive($autoload, [
17
+ 'classmap' => static::getImposterAutoloads(),
18
+ ]);
19
+
20
+ $package->setAutoload($autoload);
21
+ }
22
+
23
+ /**
24
+ * @return string[]
25
+ * @todo [Help Wanted] Think of a better way to handle file not found during installation
26
+ */
27
+ protected static function getImposterAutoloads(): array
28
+ {
29
+ try {
30
+ $cwd = getcwd();
31
+ $imposter = ImposterFactory::forProject($cwd, ['typisttech/imposter-plugin']);
32
+
33
+ return array_map(function ($path) use ($cwd): string {
34
+ return str_replace($cwd . '/', '', $path);
35
+ }, $imposter->getAutoloads());
36
+ } catch (RuntimeException $exception) {
37
+ return [];
38
+ }
39
+ }
40
+ }
vendor/typisttech/imposter-plugin/src/ImposterPlugin.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter\Plugin;
6
+
7
+ use Composer\Composer;
8
+ use Composer\EventDispatcher\EventSubscriberInterface;
9
+ use Composer\IO\IOInterface;
10
+ use Composer\Package\CompletePackage;
11
+ use Composer\Package\RootPackageInterface;
12
+ use Composer\Plugin\PluginInterface;
13
+ use Composer\Script\Event;
14
+ use Composer\Script\ScriptEvents;
15
+
16
+ class ImposterPlugin implements PluginInterface, EventSubscriberInterface
17
+ {
18
+ /**
19
+ * {@inheritDoc}
20
+ */
21
+ public function activate(Composer $composer, IOInterface $io)
22
+ {
23
+ $package = $composer->getPackage();
24
+ if ($package instanceof RootPackageInterface) {
25
+ AutoloadMerger::run($package);
26
+ }
27
+
28
+ if ($package instanceof CompletePackage) {
29
+ $scripts = array_merge_recursive([
30
+ ScriptEvents::POST_INSTALL_CMD => [
31
+ '@composer dump-autoload --optimize',
32
+ ],
33
+ ScriptEvents::POST_UPDATE_CMD => [
34
+ '@composer dump-autoload --optimize',
35
+ ],
36
+ ], $package->getScripts());
37
+
38
+ $package->setScripts($scripts);
39
+ }
40
+ }
41
+
42
+ /**
43
+ * {@inheritDoc}
44
+ */
45
+ public static function getSubscribedEvents()
46
+ {
47
+ return [
48
+ ScriptEvents::PRE_AUTOLOAD_DUMP => [
49
+ ['transform', PHP_INT_MAX - 1000],
50
+ ],
51
+ ];
52
+ }
53
+
54
+ public function transform(Event $event): void
55
+ {
56
+ Transformer::run(
57
+ $event->getIO()
58
+ );
59
+ }
60
+
61
+ public function deactivate(Composer $composer, IOInterface $io)
62
+ {
63
+ // Do nothing.
64
+ }
65
+
66
+ public function uninstall(Composer $composer, IOInterface $io)
67
+ {
68
+ // Do nothing.
69
+ }
70
+ }
vendor/typisttech/imposter-plugin/src/Transformer.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter\Plugin;
6
+
7
+ use Composer\IO\IOInterface;
8
+ use TypistTech\Imposter\ImposterFactory;
9
+
10
+ class Transformer
11
+ {
12
+ public static function run(IOInterface $io): void
13
+ {
14
+ // Print an empty line to separate imposter outputs.
15
+ $io->write('', true);
16
+ $io->write('', true);
17
+ $io->write('<info>Running Imposter...</info>', true);
18
+ $io->write('<info>======================</info>', true);
19
+ $io->write('Loading package information from <comment>' . getcwd() . '/composer.json</comment>', true);
20
+
21
+ $imposter = ImposterFactory::forProject(getcwd(), ['typisttech/imposter-plugin']);
22
+
23
+ $autoloads = $imposter->getAutoloads();
24
+ $count = count($autoloads);
25
+ $index = 1;
26
+ foreach ($autoloads as $autoload) {
27
+ $io->write(" - <comment>$index/$count</comment>: Transforming $autoload", true);
28
+ $imposter->transform($autoload);
29
+ $index++;
30
+ }
31
+
32
+ $io->write('<info>Success: Imposter transformed vendor files.</info>', true);
33
+
34
+ $invalidAutoloads = $imposter->getInvalidAutoloads();
35
+ if (! empty($invalidAutoloads)) {
36
+ $invalidAutoloadsCount = count($invalidAutoloads);
37
+ $io->writeError('', true);
38
+ $io->writeError(
39
+ // phpcs:ignore Generic.Files.LineLength.TooLong
40
+ "<warning>Warning: Imposter failed to transformed $invalidAutoloadsCount of the autoload path(s).</warning>",
41
+ true
42
+ );
43
+
44
+ foreach ($invalidAutoloads as $invalidAutoload) {
45
+ $io->writeError(" - $invalidAutoload", true);
46
+ }
47
+ }
48
+
49
+ // Print empty lines to separate imposter outputs.
50
+ $io->write('', true);
51
+ $io->write('', true);
52
+ }
53
+ }
vendor/typisttech/imposter/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2017-2020 Typist Tech <info@typist.tech>
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/typisttech/imposter/README.md ADDED
@@ -0,0 +1,320 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+
3
+ # Imposter
4
+
5
+ </div>
6
+
7
+ <div align="center">
8
+
9
+
10
+ [![Packagist Version](https://img.shields.io/packagist/v/typisttech/imposter.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter)
11
+ [![Packagist Downloads](https://img.shields.io/packagist/dt/typisttech/imposter.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter)
12
+ [![PHP from Packagist](https://img.shields.io/packagist/php-v/TypistTech/imposter?style=flat-square)](https://packagist.org/packages/typisttech/imposter)
13
+ [![CircleCI](https://img.shields.io/circleci/build/gh/TypistTech/imposter?style=flat-square)](https://circleci.com/gh/TypistTech/imposter)
14
+ [![Codecov](https://img.shields.io/codecov/c/gh/typisttech/imposter?style=flat-square)](https://codecov.io/gh/TypistTech/imposter)
15
+ [![License](https://img.shields.io/github/license/TypistTech/imposter.svg?style=flat-square)](https://github.com/TypistTech/imposter/blob/master/LICENSE)
16
+ [![Twitter Follow @TangRufus](https://img.shields.io/twitter/follow/TangRufus?style=flat-square&color=1da1f2&logo=twitter)](https://twitter.com/tangrufus)
17
+ [![Hire Typist Tech](https://img.shields.io/badge/Hire-Typist%20Tech-ff69b4.svg?style=flat-square)](https://www.typist.tech/contact/)
18
+
19
+ </div>
20
+
21
+ <p align="center">
22
+ <strong>Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.</strong>
23
+ <br />
24
+ <br />
25
+ Built with ♥ by <a href="https://www.typist.tech/">Typist Tech</a>
26
+ </p>
27
+
28
+ ---
29
+
30
+ **Imposter** is an open source project and completely free to use.
31
+
32
+ However, the amount of effort needed to maintain and develop new features is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below:
33
+
34
+ <div align="center">
35
+
36
+ [![GitHub via Sponsor](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=flat-square&logo=github)](https://github.com/sponsors/TangRufus)
37
+ [![Sponsor via PayPal](https://img.shields.io/badge/Sponsor-PayPal-blue.svg?style=flat-square&logo=paypal)](https://typist.tech/go/paypal-donate/)
38
+ [![More Sponsorship Information](https://img.shields.io/badge/Sponsor-More%20Details-ff69b4?style=flat-square)](https://typist.tech/donate/imposter/)
39
+
40
+ </div>
41
+
42
+ ---
43
+
44
+ Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.
45
+
46
+ ## Why?
47
+
48
+ Because of the lack of dependency management in WordPress, if two plugins bundled conflicting versions of the same package, hard-to-reproduce bugs arise.
49
+ Monkey patching composer vendor packages, wrapping them inside your own namespace is a less-than-ideal solution to avoid such conflicts.
50
+
51
+ See:
52
+ - [A Narrative of Using Composer in a WordPress Plugin](https://wptavern.com/a-narrative-of-using-composer-in-a-wordpress-plugin)
53
+ - [A Warning About Using Composer With WordPress](https://wppusher.com/blog/a-warning-about-using-composer-with-wordpress/)
54
+
55
+ ## Install
56
+
57
+ > If you want to hook Imposter into [composer command events](https://getcomposer.org/doc/articles/scripts.md#command-events), install [Imposter Plugin](https://github.com/TypistTech/imposter-plugin) instead.
58
+ > See: [How can I integrate Imposter with composer?](#how-can-i-integrate-imposter-with-composer)
59
+
60
+ Installation should be done via composer, details of how to install composer can be found at [https://getcomposer.org/](https://getcomposer.org/).
61
+
62
+ ```bash
63
+ composer require typisttech/imposter
64
+ ```
65
+
66
+ ## Config
67
+
68
+ In your `composer.json`:
69
+
70
+ ```json
71
+ "extra": {
72
+ "imposter": {
73
+ "namespace": "My\\App\\Vendor",
74
+ "excludes": [
75
+ "dummy/dummy-excluded"
76
+ ]
77
+ }
78
+ }
79
+ ```
80
+
81
+ ### extra.imposter.namespace
82
+
83
+ *Required* String
84
+
85
+ This is the namespace prefix to be added to vendor packages.
86
+
87
+ ### extra.imposter.excludes
88
+
89
+ *Optional* Array of strings
90
+
91
+ Vendor packages which needs to be excluded from namespace prefixing.
92
+ All [composer-made packages](https://packagist.org/packages/composer/) are excluded by default.
93
+ Besides, anything under the `Composer` namespace will be excluded.
94
+
95
+ ## Usage
96
+
97
+ After every `$ composer install` and `$ composer update`:
98
+
99
+ ```php
100
+ <?php
101
+
102
+ use TypistTech\Imposter\ImposterFactory;
103
+
104
+ $imposter = ImposterFactory::forProject('/path/to/project/root');
105
+ $imposter->run();
106
+ ```
107
+
108
+ The above snippet:
109
+ 1. Look for `/path/to/project/root/composer.json`
110
+ 1. Find out [vendor-dir](https://getcomposer.org/doc/06-config.md#vendor-dir)
111
+ 1. Find out all [required packages](https://getcomposer.org/doc/04-schema.md#require), including those required by dependencies
112
+ 1. Find out all [autoload paths](https://getcomposer.org/doc/04-schema.md#autoload) for all required packages
113
+ 1. Prefix all namespaces with the imposter namespace defined in your `composer.json`
114
+
115
+ Before:
116
+ ```php
117
+ <?php
118
+
119
+ namespace Dummy\File;
120
+
121
+ use AnotherDummy\{
122
+ SubAnotherDummy, SubOtherDummy
123
+ };
124
+ use Composer;
125
+ use Composer\Plugin\PluginInterface;
126
+ use Dummy\SubOtherDummy;
127
+ use OtherDummy\SubOtherDummy;
128
+ use RuntimeException;
129
+ use \UnexpectedValueException;
130
+ use function OtherVendor\myFunc;
131
+ use const OtherVendor\MY_MAGIC_NUMBER;
132
+
133
+ $closure = function () use ($aaa) {
134
+ // Just testing.
135
+ };
136
+
137
+ class DummyClass
138
+ {
139
+ public function useClosure()
140
+ {
141
+ array_map(function () use ($xxx) {
142
+ // Just testing.
143
+ }, []);
144
+ }
145
+ }
146
+
147
+ function dummyFunction(string $namespace = null, string $use = null): array
148
+ {
149
+ if (! is_null($namespace) && $namespace === 'dummy string' && $use === 'dummy string') {
150
+ // Just testing.
151
+ }
152
+
153
+ return [];
154
+ }
155
+
156
+ foreach ([] as $namespace => $prefix) {
157
+ $aaaa = '{' . $namespace . '}' . $prefix;
158
+ }
159
+
160
+ /** Just a comment for testing $namespace transformation */
161
+ ```
162
+
163
+ After:
164
+ ```php
165
+ <?php
166
+
167
+ namespace MyPlugin\Vendor\Dummy\File;
168
+
169
+ use MyPlugin\Vendor\AnotherDummy\{
170
+ SubAnotherDummy, SubOtherDummy
171
+ };
172
+ use Composer;
173
+ use Composer\Plugin\PluginInterface;
174
+ use MyPlugin\Vendor\Dummy\SubOtherDummy;
175
+ use MyPlugin\Vendor\OtherDummy\SubOtherDummy;
176
+ use RuntimeException;
177
+ use \UnexpectedValueException;
178
+ use function MyPlugin\Vendor\OtherVendor\myFunc;
179
+ use const MyPlugin\Vendor\OtherVendor\MY_MAGIC_NUMBER;
180
+
181
+ $closure = function () use ($aaa) {
182
+ // Just testing.
183
+ };
184
+
185
+ class DummyClass
186
+ {
187
+ public function useClosure()
188
+ {
189
+ array_map(function () use ($xxx) {
190
+ // Just testing.
191
+ }, []);
192
+ }
193
+ }
194
+
195
+ function dummyFunction(string $namespace = null, string $use = null): array
196
+ {
197
+ if (! is_null($namespace) && $namespace === 'dummy string' && $use === 'dummy string') {
198
+ // Just testing.
199
+ }
200
+
201
+ return [];
202
+ }
203
+
204
+ foreach ([] as $namespace => $prefix) {
205
+ $aaaa = '{' . $namespace . '}' . $prefix;
206
+ }
207
+
208
+ /** Just a comment for testing $namespace transformation */
209
+ ```
210
+
211
+ ## Known Issues
212
+
213
+ **Help Wanted.** Pull requests are welcomed.
214
+
215
+ 1. Traits are not transformed
216
+ 1. Virtual packages are not supported
217
+
218
+ ## Frequently Asked Questions
219
+
220
+ ### How can I integrate imposter with composer?
221
+
222
+ Use [Imposter Plugin](https://github.com/TypistTech/imposter-plugin) instead.
223
+ It hooks imposter into [composer command events](https://getcomposer.org/doc/articles/scripts.md#command-events).
224
+
225
+ ### Does imposter support `PSR4`, `PSR0`, `Classmap` and `Files`?
226
+
227
+ Yes for all. PSR-4 and PSR-0 autoloading, classmap generation and files includes are supported.
228
+
229
+ ### Can I exclude some of the packages from imposter?
230
+
231
+ Yes, see [`extra.imposter.excludes`](#extraimposterexcludes).
232
+ All [composer made packages](https://packagist.org/packages/composer/) are excluded by default.
233
+
234
+ ### How about `require-dev` packages?
235
+
236
+ Imposter do nothing on `require-dev` packages because imposter is intended for avoiding production environment., not for development environment.
237
+
238
+ ### How about PHP built-in classes?
239
+
240
+ Imposter skips classes that on global namespace, for example: `\ArrayObject`, `\RuntimeException`
241
+
242
+ ### How about packages that don't use namespaces?
243
+
244
+ Not for now.
245
+ Tell me your idea by [opening an issue](https://github.com/TypistTech/imposter/issues/new).
246
+
247
+ ### How about packages that use fully qualified name?
248
+
249
+ Not for now. We need a better regex(or something better than regex) in the [Transformer](src/Transformer.php) class.
250
+ Tell me your idea by [opening an issue](https://github.com/TypistTech/imposter/issues/new)
251
+
252
+ ### Which composer versions are supported?
253
+
254
+ Both v1 and v2.
255
+
256
+ ### Will you add support for older PHP versions?
257
+
258
+ Never! This plugin will only work on [actively supported PHP versions](https://secure.php.net/supported-versions.php).
259
+
260
+ Don't use it on **end of life** or **security fixes only** PHP versions.
261
+
262
+ ### It looks awesome. Where can I find some more goodies like this
263
+
264
+ - Articles on [Typist Tech's blog](https://typist.tech)
265
+ - [Tang Rufus' WordPress plugins](https://profiles.wordpress.org/tangrufus#content-plugins) on wp.org
266
+ - More projects on [Typist Tech's GitHub profile](https://github.com/TypistTech)
267
+ - Stay tuned on [Typist Tech's newsletter](https://typist.tech/go/newsletter)
268
+ - Follow [Tang Rufus' Twitter account](https://twitter.com/TangRufus)
269
+ - **Hire [Tang Rufus](https://typist.tech/contact) to build your next awesome site**
270
+
271
+ ### Where can I give 5-star reviews?
272
+
273
+ Thanks! Glad you like it. It's important to let me knows somebody is using this project. Please consider:
274
+
275
+ - [tweet](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2FTypistTech%2Fimposter&via=tangrufus&text=Wrapping%20all%20%23composer%20vendor%20packages%20inside%20your%20own%20namespace.%20Intended%20for%20%23WordPress%20plugins&hashtags=php) something good with mentioning [@TangRufus](https://twitter.com/tangrufus)
276
+ - ★ star [the Github repo](https://github.com/TypistTech/imposter)
277
+ - [👀 watch](https://github.com/TypistTech/imposter/subscription) the Github repo
278
+ - write tutorials and blog posts
279
+ - **[hire](https://www.typist.tech/contact/) Typist Tech**
280
+
281
+ ## Testing
282
+
283
+ ```bash
284
+ composer test
285
+ composer style:check
286
+ ```
287
+
288
+ ## Alternatives
289
+
290
+ Here is a list of alternatives that I found. However, none of these satisfied my requirements.
291
+
292
+ *If you know other similar projects, feel free to edit this section!*
293
+
294
+ * [Mozart](https://github.com/coenjacobs/mozart) by Coen Jacobs
295
+ - Works with PSR0 and PSR4
296
+ - Dependency packages store in a different directory
297
+
298
+ * [PHP Scoper](https://github.com/humbug/php-scoper)
299
+ - Prefixes all PHP namespaces in a file/directory to isolate the code bundled in PHARs
300
+
301
+ ## Feedback
302
+
303
+ **Please provide feedback!** We want to make this project as useful as possible.
304
+ Please [submit an issue](https://github.com/TypistTech/imposter/issues/new) and point out what you do and don't like, or fork the project and [send pull requests](https://github.com/TypistTech/imposter/pulls/).
305
+ **No issue is too small.**
306
+
307
+ ## Security Vulnerabilities
308
+
309
+ If you discover a security vulnerability within this project, please email us at [imposter@typist.tech](mailto:imposter@typist.tech).
310
+ All security vulnerabilities will be promptly addressed.
311
+
312
+ ## Credits
313
+
314
+ [Imposter](https://github.com/TypistTech/imposter) is a [Typist Tech](https://typist.tech) project and maintained by [Tang Rufus](https://twitter.com/TangRufus), freelance developer for [hire](https://www.typist.tech/contact/).
315
+
316
+ Full list of contributors can be found [here](https://github.com/TypistTech/imposter/graphs/contributors).
317
+
318
+ ## License
319
+
320
+ [Imposter](https://github.com/TypistTech/imposter) is released under the [MIT License](https://opensource.org/licenses/MIT).
vendor/typisttech/imposter/composer.json ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "typisttech/imposter",
3
+ "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.",
4
+ "keywords": [
5
+ "composer",
6
+ "dependency",
7
+ "monkey-patching",
8
+ "namespace",
9
+ "wordpress"
10
+ ],
11
+ "homepage": "https://github.com/TypistTech/imposter",
12
+ "license": "MIT",
13
+ "authors": [
14
+ {
15
+ "name": "Typist Tech",
16
+ "email": "imposter@typist.tech",
17
+ "homepage": "https://typist.tech"
18
+ },
19
+ {
20
+ "name": "Tang Rufus",
21
+ "email": "tangrufus@gmail.com",
22
+ "homepage": "https://typist.tech",
23
+ "role": "Developer"
24
+ }
25
+ ],
26
+ "require": {
27
+ "php": "^7.3 || ^8.0",
28
+ "ext-json": "*"
29
+ },
30
+ "require-dev": {
31
+ "codeception/codeception": "^4.1",
32
+ "codeception/mockery-module": "^0.4.0",
33
+ "codeception/module-asserts": "^1.3",
34
+ "codeception/module-filesystem": "^1.0",
35
+ "squizlabs/php_codesniffer": "^3.5"
36
+ },
37
+ "suggest": {
38
+ "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter"
39
+ },
40
+ "config": {
41
+ "sort-packages": true
42
+ },
43
+ "extra": {
44
+ "branch-alias": {
45
+ "dev-master": "0.6.x-dev"
46
+ }
47
+ },
48
+ "autoload": {
49
+ "psr-4": {
50
+ "TypistTech\\Imposter\\": "src"
51
+ }
52
+ },
53
+ "autoload-dev": {
54
+ "psr-4": {
55
+ "TypistTech\\Imposter\\": "tests/unit"
56
+ }
57
+ },
58
+ "scripts": {
59
+ "style:check": "phpcs",
60
+ "style:fix": "phpcbf",
61
+ "test": "codecept run",
62
+ "test:coverage": "phpdbg -qrr ./vendor/bin/codecept run --coverage --coverage-html --coverage-xml"
63
+ },
64
+ "support": {
65
+ "email": "imposter@typist.tech",
66
+ "issues": "https://github.com/TypistTech/imposter/issues",
67
+ "source": "https://github.com/TypistTech/imposter"
68
+ }
69
+ }
vendor/typisttech/imposter/composer.lock ADDED
@@ -0,0 +1,4108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "7c3bad5bff38a84d93ec28077d54b78f",
8
+ "packages": [],
9
+ "packages-dev": [
10
+ {
11
+ "name": "behat/gherkin",
12
+ "version": "v4.6.2",
13
+ "source": {
14
+ "type": "git",
15
+ "url": "https://github.com/Behat/Gherkin.git",
16
+ "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31"
17
+ },
18
+ "dist": {
19
+ "type": "zip",
20
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31",
21
+ "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31",
22
+ "shasum": ""
23
+ },
24
+ "require": {
25
+ "php": ">=5.3.1"
26
+ },
27
+ "require-dev": {
28
+ "phpunit/phpunit": "~4.5|~5",
29
+ "symfony/phpunit-bridge": "~2.7|~3|~4",
30
+ "symfony/yaml": "~2.3|~3|~4"
31
+ },
32
+ "suggest": {
33
+ "symfony/yaml": "If you want to parse features, represented in YAML files"
34
+ },
35
+ "type": "library",
36
+ "extra": {
37
+ "branch-alias": {
38
+ "dev-master": "4.4-dev"
39
+ }
40
+ },
41
+ "autoload": {
42
+ "psr-0": {
43
+ "Behat\\Gherkin": "src/"
44
+ }
45
+ },
46
+ "notification-url": "https://packagist.org/downloads/",
47
+ "license": [
48
+ "MIT"
49
+ ],
50
+ "authors": [
51
+ {
52
+ "name": "Konstantin Kudryashov",
53
+ "email": "ever.zet@gmail.com",
54
+ "homepage": "http://everzet.com"
55
+ }
56
+ ],
57
+ "description": "Gherkin DSL parser for PHP 5.3",
58
+ "homepage": "http://behat.org/",
59
+ "keywords": [
60
+ "BDD",
61
+ "Behat",
62
+ "Cucumber",
63
+ "DSL",
64
+ "gherkin",
65
+ "parser"
66
+ ],
67
+ "support": {
68
+ "issues": "https://github.com/Behat/Gherkin/issues",
69
+ "source": "https://github.com/Behat/Gherkin/tree/master"
70
+ },
71
+ "time": "2020-03-17T14:03:26+00:00"
72
+ },
73
+ {
74
+ "name": "codeception/codeception",
75
+ "version": "4.1.12",
76
+ "source": {
77
+ "type": "git",
78
+ "url": "https://github.com/Codeception/Codeception.git",
79
+ "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd"
80
+ },
81
+ "dist": {
82
+ "type": "zip",
83
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd",
84
+ "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd",
85
+ "shasum": ""
86
+ },
87
+ "require": {
88
+ "behat/gherkin": "^4.4.0",
89
+ "codeception/lib-asserts": "^1.0",
90
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
91
+ "codeception/stub": "^2.0 | ^3.0",
92
+ "ext-curl": "*",
93
+ "ext-json": "*",
94
+ "ext-mbstring": "*",
95
+ "guzzlehttp/psr7": "~1.4",
96
+ "php": ">=5.6.0 <9.0",
97
+ "symfony/console": ">=2.7 <6.0",
98
+ "symfony/css-selector": ">=2.7 <6.0",
99
+ "symfony/event-dispatcher": ">=2.7 <6.0",
100
+ "symfony/finder": ">=2.7 <6.0",
101
+ "symfony/yaml": ">=2.7 <6.0"
102
+ },
103
+ "require-dev": {
104
+ "codeception/module-asserts": "*@dev",
105
+ "codeception/module-cli": "*@dev",
106
+ "codeception/module-db": "*@dev",
107
+ "codeception/module-filesystem": "*@dev",
108
+ "codeception/module-phpbrowser": "*@dev",
109
+ "codeception/specify": "~0.3",
110
+ "codeception/util-universalframework": "*@dev",
111
+ "monolog/monolog": "~1.8",
112
+ "squizlabs/php_codesniffer": "~2.0",
113
+ "symfony/process": ">=2.7 <6.0",
114
+ "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0"
115
+ },
116
+ "suggest": {
117
+ "codeception/specify": "BDD-style code blocks",
118
+ "codeception/verify": "BDD-style assertions",
119
+ "hoa/console": "For interactive console functionality",
120
+ "stecman/symfony-console-completion": "For BASH autocompletion",
121
+ "symfony/phpunit-bridge": "For phpunit-bridge support"
122
+ },
123
+ "bin": [
124
+ "codecept"
125
+ ],
126
+ "type": "library",
127
+ "extra": {
128
+ "branch-alias": []
129
+ },
130
+ "autoload": {
131
+ "psr-4": {
132
+ "Codeception\\": "src/Codeception",
133
+ "Codeception\\Extension\\": "ext"
134
+ }
135
+ },
136
+ "notification-url": "https://packagist.org/downloads/",
137
+ "license": [
138
+ "MIT"
139
+ ],
140
+ "authors": [
141
+ {
142
+ "name": "Michael Bodnarchuk",
143
+ "email": "davert@mail.ua",
144
+ "homepage": "http://codegyre.com"
145
+ }
146
+ ],
147
+ "description": "BDD-style testing framework",
148
+ "homepage": "http://codeception.com/",
149
+ "keywords": [
150
+ "BDD",
151
+ "TDD",
152
+ "acceptance testing",
153
+ "functional testing",
154
+ "unit testing"
155
+ ],
156
+ "support": {
157
+ "issues": "https://github.com/Codeception/Codeception/issues",
158
+ "source": "https://github.com/Codeception/Codeception/tree/4.1.12"
159
+ },
160
+ "funding": [
161
+ {
162
+ "url": "https://opencollective.com/codeception",
163
+ "type": "open_collective"
164
+ }
165
+ ],
166
+ "time": "2020-11-16T06:36:57+00:00"
167
+ },
168
+ {
169
+ "name": "codeception/lib-asserts",
170
+ "version": "1.13.2",
171
+ "source": {
172
+ "type": "git",
173
+ "url": "https://github.com/Codeception/lib-asserts.git",
174
+ "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6"
175
+ },
176
+ "dist": {
177
+ "type": "zip",
178
+ "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6",
179
+ "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6",
180
+ "shasum": ""
181
+ },
182
+ "require": {
183
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0",
184
+ "ext-dom": "*",
185
+ "php": ">=5.6.0 <9.0"
186
+ },
187
+ "type": "library",
188
+ "autoload": {
189
+ "classmap": [
190
+ "src/"
191
+ ]
192
+ },
193
+ "notification-url": "https://packagist.org/downloads/",
194
+ "license": [
195
+ "MIT"
196
+ ],
197
+ "authors": [
198
+ {
199
+ "name": "Michael Bodnarchuk",
200
+ "email": "davert@mail.ua",
201
+ "homepage": "http://codegyre.com"
202
+ },
203
+ {
204
+ "name": "Gintautas Miselis"
205
+ },
206
+ {
207
+ "name": "Gustavo Nieves",
208
+ "homepage": "https://medium.com/@ganieves"
209
+ }
210
+ ],
211
+ "description": "Assertion methods used by Codeception core and Asserts module",
212
+ "homepage": "https://codeception.com/",
213
+ "keywords": [
214
+ "codeception"
215
+ ],
216
+ "support": {
217
+ "issues": "https://github.com/Codeception/lib-asserts/issues",
218
+ "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2"
219
+ },
220
+ "time": "2020-10-21T16:26:20+00:00"
221
+ },
222
+ {
223
+ "name": "codeception/mockery-module",
224
+ "version": "0.4.0",
225
+ "source": {
226
+ "type": "git",
227
+ "url": "https://github.com/Codeception/MockeryModule.git",
228
+ "reference": "5c4af8afec81303cb859c27fdc105271caef1d02"
229
+ },
230
+ "dist": {
231
+ "type": "zip",
232
+ "url": "https://api.github.com/repos/Codeception/MockeryModule/zipball/5c4af8afec81303cb859c27fdc105271caef1d02",
233
+ "reference": "5c4af8afec81303cb859c27fdc105271caef1d02",
234
+ "shasum": ""
235
+ },
236
+ "require": {
237
+ "codeception/codeception": "^2.4|^3.0|^4.0",
238
+ "mockery/mockery": "^0.8|^0.9|^1.0"
239
+ },
240
+ "type": "library",
241
+ "autoload": {
242
+ "psr-4": {
243
+ "Codeception\\": "src"
244
+ }
245
+ },
246
+ "notification-url": "https://packagist.org/downloads/",
247
+ "license": [
248
+ "MIT"
249
+ ],
250
+ "authors": [
251
+ {
252
+ "name": "Michael Bodnarchuk",
253
+ "email": "davert.php@mailican.com"
254
+ },
255
+ {
256
+ "name": "Jáchym Toušek",
257
+ "email": "enumag@gmail.com"
258
+ }
259
+ ],
260
+ "description": "Mockery Module for Codeception",
261
+ "support": {
262
+ "issues": "https://github.com/Codeception/MockeryModule/issues",
263
+ "source": "https://github.com/Codeception/MockeryModule/tree/0.4.0"
264
+ },
265
+ "time": "2020-01-17T15:08:49+00:00"
266
+ },
267
+ {
268
+ "name": "codeception/module-asserts",
269
+ "version": "1.3.1",
270
+ "source": {
271
+ "type": "git",
272
+ "url": "https://github.com/Codeception/module-asserts.git",
273
+ "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de"
274
+ },
275
+ "dist": {
276
+ "type": "zip",
277
+ "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de",
278
+ "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de",
279
+ "shasum": ""
280
+ },
281
+ "require": {
282
+ "codeception/codeception": "*@dev",
283
+ "codeception/lib-asserts": "^1.13.1",
284
+ "php": ">=5.6.0 <9.0"
285
+ },
286
+ "conflict": {
287
+ "codeception/codeception": "<4.0"
288
+ },
289
+ "type": "library",
290
+ "autoload": {
291
+ "classmap": [
292
+ "src/"
293
+ ]
294
+ },
295
+ "notification-url": "https://packagist.org/downloads/",
296
+ "license": [
297
+ "MIT"
298
+ ],
299
+ "authors": [
300
+ {
301
+ "name": "Michael Bodnarchuk"
302
+ },
303
+ {
304
+ "name": "Gintautas Miselis"
305
+ },
306
+ {
307
+ "name": "Gustavo Nieves",
308
+ "homepage": "https://medium.com/@ganieves"
309
+ }
310
+ ],
311
+ "description": "Codeception module containing various assertions",
312
+ "homepage": "https://codeception.com/",
313
+ "keywords": [
314
+ "assertions",
315
+ "asserts",
316
+ "codeception"
317
+ ],
318
+ "support": {
319
+ "issues": "https://github.com/Codeception/module-asserts/issues",
320
+ "source": "https://github.com/Codeception/module-asserts/tree/1.3.1"
321
+ },
322
+ "time": "2020-10-21T16:48:15+00:00"
323
+ },
324
+ {
325
+ "name": "codeception/module-filesystem",
326
+ "version": "1.0.3",
327
+ "source": {
328
+ "type": "git",
329
+ "url": "https://github.com/Codeception/module-filesystem.git",
330
+ "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1"
331
+ },
332
+ "dist": {
333
+ "type": "zip",
334
+ "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/781be167fb1557bfc9b61e0a4eac60a32c534ec1",
335
+ "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1",
336
+ "shasum": ""
337
+ },
338
+ "require": {
339
+ "codeception/codeception": "^4.0",
340
+ "php": ">=5.6.0 <9.0",
341
+ "symfony/finder": ">=2.7 <6.0"
342
+ },
343
+ "conflict": {
344
+ "codeception/codeception": "<4.0"
345
+ },
346
+ "type": "library",
347
+ "autoload": {
348
+ "classmap": [
349
+ "src/"
350
+ ]
351
+ },
352
+ "notification-url": "https://packagist.org/downloads/",
353
+ "license": [
354
+ "MIT"
355
+ ],
356
+ "authors": [
357
+ {
358
+ "name": "Michael Bodnarchuk"
359
+ },
360
+ {
361
+ "name": "Gintautas Miselis"
362
+ }
363
+ ],
364
+ "description": "Codeception module for testing local filesystem",
365
+ "homepage": "http://codeception.com/",
366
+ "keywords": [
367
+ "codeception",
368
+ "filesystem"
369
+ ],
370
+ "support": {
371
+ "issues": "https://github.com/Codeception/module-filesystem/issues",
372
+ "source": "https://github.com/Codeception/module-filesystem/tree/1.0.3"
373
+ },
374
+ "time": "2020-10-24T14:46:40+00:00"
375
+ },
376
+ {
377
+ "name": "codeception/phpunit-wrapper",
378
+ "version": "9.0.5",
379
+ "source": {
380
+ "type": "git",
381
+ "url": "https://github.com/Codeception/phpunit-wrapper.git",
382
+ "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45"
383
+ },
384
+ "dist": {
385
+ "type": "zip",
386
+ "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/72bac7770866799e23a7dda1ac6bec2f8baccf45",
387
+ "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45",
388
+ "shasum": ""
389
+ },
390
+ "require": {
391
+ "php": ">=7.2",
392
+ "phpunit/phpunit": "^9.0"
393
+ },
394
+ "require-dev": {
395
+ "codeception/specify": "*",
396
+ "vlucas/phpdotenv": "^3.0"
397
+ },
398
+ "type": "library",
399
+ "autoload": {
400
+ "psr-4": {
401
+ "Codeception\\PHPUnit\\": "src/"
402
+ }
403
+ },
404
+ "notification-url": "https://packagist.org/downloads/",
405
+ "license": [
406
+ "MIT"
407
+ ],
408
+ "authors": [
409
+ {
410
+ "name": "Davert",
411
+ "email": "davert.php@resend.cc"
412
+ },
413
+ {
414
+ "name": "Naktibalda"
415
+ }
416
+ ],
417
+ "description": "PHPUnit classes used by Codeception",
418
+ "support": {
419
+ "issues": "https://github.com/Codeception/phpunit-wrapper/issues",
420
+ "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.5"
421
+ },
422
+ "time": "2020-10-11T18:14:42+00:00"
423
+ },
424
+ {
425
+ "name": "codeception/stub",
426
+ "version": "3.7.0",
427
+ "source": {
428
+ "type": "git",
429
+ "url": "https://github.com/Codeception/Stub.git",
430
+ "reference": "468dd5fe659f131fc997f5196aad87512f9b1304"
431
+ },
432
+ "dist": {
433
+ "type": "zip",
434
+ "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304",
435
+ "reference": "468dd5fe659f131fc997f5196aad87512f9b1304",
436
+ "shasum": ""
437
+ },
438
+ "require": {
439
+ "phpunit/phpunit": "^8.4 | ^9.0"
440
+ },
441
+ "type": "library",
442
+ "autoload": {
443
+ "psr-4": {
444
+ "Codeception\\": "src/"
445
+ }
446
+ },
447
+ "notification-url": "https://packagist.org/downloads/",
448
+ "license": [
449
+ "MIT"
450
+ ],
451
+ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
452
+ "support": {
453
+ "issues": "https://github.com/Codeception/Stub/issues",
454
+ "source": "https://github.com/Codeception/Stub/tree/3.7.0"
455
+ },
456
+ "time": "2020-07-03T15:54:43+00:00"
457
+ },
458
+ {
459
+ "name": "doctrine/instantiator",
460
+ "version": "1.4.0",
461
+ "source": {
462
+ "type": "git",
463
+ "url": "https://github.com/doctrine/instantiator.git",
464
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
465
+ },
466
+ "dist": {
467
+ "type": "zip",
468
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
469
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
470
+ "shasum": ""
471
+ },
472
+ "require": {
473
+ "php": "^7.1 || ^8.0"
474
+ },
475
+ "require-dev": {
476
+ "doctrine/coding-standard": "^8.0",
477
+ "ext-pdo": "*",
478
+ "ext-phar": "*",
479
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
480
+ "phpstan/phpstan": "^0.12",
481
+ "phpstan/phpstan-phpunit": "^0.12",
482
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
483
+ },
484
+ "type": "library",
485
+ "autoload": {
486
+ "psr-4": {
487
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
488
+ }
489
+ },
490
+ "notification-url": "https://packagist.org/downloads/",
491
+ "license": [
492
+ "MIT"
493
+ ],
494
+ "authors": [
495
+ {
496
+ "name": "Marco Pivetta",
497
+ "email": "ocramius@gmail.com",
498
+ "homepage": "https://ocramius.github.io/"
499
+ }
500
+ ],
501
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
502
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
503
+ "keywords": [
504
+ "constructor",
505
+ "instantiate"
506
+ ],
507
+ "support": {
508
+ "issues": "https://github.com/doctrine/instantiator/issues",
509
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
510
+ },
511
+ "funding": [
512
+ {
513
+ "url": "https://www.doctrine-project.org/sponsorship.html",
514
+ "type": "custom"
515
+ },
516
+ {
517
+ "url": "https://www.patreon.com/phpdoctrine",
518
+ "type": "patreon"
519
+ },
520
+ {
521
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
522
+ "type": "tidelift"
523
+ }
524
+ ],
525
+ "time": "2020-11-10T18:47:58+00:00"
526
+ },
527
+ {
528
+ "name": "guzzlehttp/psr7",
529
+ "version": "1.7.0",
530
+ "source": {
531
+ "type": "git",
532
+ "url": "https://github.com/guzzle/psr7.git",
533
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
534
+ },
535
+ "dist": {
536
+ "type": "zip",
537
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
538
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
539
+ "shasum": ""
540
+ },
541
+ "require": {
542
+ "php": ">=5.4.0",
543
+ "psr/http-message": "~1.0",
544
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
545
+ },
546
+ "provide": {
547
+ "psr/http-message-implementation": "1.0"
548
+ },
549
+ "require-dev": {
550
+ "ext-zlib": "*",
551
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
552
+ },
553
+ "suggest": {
554
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
555
+ },
556
+ "type": "library",
557
+ "extra": {
558
+ "branch-alias": {
559
+ "dev-master": "1.7-dev"
560
+ }
561
+ },
562
+ "autoload": {
563
+ "psr-4": {
564
+ "GuzzleHttp\\Psr7\\": "src/"
565
+ },
566
+ "files": [
567
+ "src/functions_include.php"
568
+ ]
569
+ },
570
+ "notification-url": "https://packagist.org/downloads/",
571
+ "license": [
572
+ "MIT"
573
+ ],
574
+ "authors": [
575
+ {
576
+ "name": "Michael Dowling",
577
+ "email": "mtdowling@gmail.com",
578
+ "homepage": "https://github.com/mtdowling"
579
+ },
580
+ {
581
+ "name": "Tobias Schultze",
582
+ "homepage": "https://github.com/Tobion"
583
+ }
584
+ ],
585
+ "description": "PSR-7 message implementation that also provides common utility methods",
586
+ "keywords": [
587
+ "http",
588
+ "message",
589
+ "psr-7",
590
+ "request",
591
+ "response",
592
+ "stream",
593
+ "uri",
594
+ "url"
595
+ ],
596
+ "support": {
597
+ "issues": "https://github.com/guzzle/psr7/issues",
598
+ "source": "https://github.com/guzzle/psr7/tree/1.7.0"
599
+ },
600
+ "time": "2020-09-30T07:37:11+00:00"
601
+ },
602
+ {
603
+ "name": "hamcrest/hamcrest-php",
604
+ "version": "v2.0.1",
605
+ "source": {
606
+ "type": "git",
607
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
608
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
609
+ },
610
+ "dist": {
611
+ "type": "zip",
612
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
613
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
614
+ "shasum": ""
615
+ },
616
+ "require": {
617
+ "php": "^5.3|^7.0|^8.0"
618
+ },
619
+ "replace": {
620
+ "cordoval/hamcrest-php": "*",
621
+ "davedevelopment/hamcrest-php": "*",
622
+ "kodova/hamcrest-php": "*"
623
+ },
624
+ "require-dev": {
625
+ "phpunit/php-file-iterator": "^1.4 || ^2.0",
626
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
627
+ },
628
+ "type": "library",
629
+ "extra": {
630
+ "branch-alias": {
631
+ "dev-master": "2.1-dev"
632
+ }
633
+ },
634
+ "autoload": {
635
+ "classmap": [
636
+ "hamcrest"
637
+ ]
638
+ },
639
+ "notification-url": "https://packagist.org/downloads/",
640
+ "license": [
641
+ "BSD-3-Clause"
642
+ ],
643
+ "description": "This is the PHP port of Hamcrest Matchers",
644
+ "keywords": [
645
+ "test"
646
+ ],
647
+ "support": {
648
+ "issues": "https://github.com/hamcrest/hamcrest-php/issues",
649
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
650
+ },
651
+ "time": "2020-07-09T08:09:16+00:00"
652
+ },
653
+ {
654
+ "name": "mockery/mockery",
655
+ "version": "1.4.2",
656
+ "source": {
657
+ "type": "git",
658
+ "url": "https://github.com/mockery/mockery.git",
659
+ "reference": "20cab678faed06fac225193be281ea0fddb43b93"
660
+ },
661
+ "dist": {
662
+ "type": "zip",
663
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/20cab678faed06fac225193be281ea0fddb43b93",
664
+ "reference": "20cab678faed06fac225193be281ea0fddb43b93",
665
+ "shasum": ""
666
+ },
667
+ "require": {
668
+ "hamcrest/hamcrest-php": "^2.0.1",
669
+ "lib-pcre": ">=7.0",
670
+ "php": "^7.3 || ^8.0"
671
+ },
672
+ "conflict": {
673
+ "phpunit/phpunit": "<8.0"
674
+ },
675
+ "require-dev": {
676
+ "phpunit/phpunit": "^8.5 || ^9.3"
677
+ },
678
+ "type": "library",
679
+ "extra": {
680
+ "branch-alias": {
681
+ "dev-master": "1.4.x-dev"
682
+ }
683
+ },
684
+ "autoload": {
685
+ "psr-0": {
686
+ "Mockery": "library/"
687
+ }
688
+ },
689
+ "notification-url": "https://packagist.org/downloads/",
690
+ "license": [
691
+ "BSD-3-Clause"
692
+ ],
693
+ "authors": [
694
+ {
695
+ "name": "Pádraic Brady",
696
+ "email": "padraic.brady@gmail.com",
697
+ "homepage": "http://blog.astrumfutura.com"
698
+ },
699
+ {
700
+ "name": "Dave Marshall",
701
+ "email": "dave.marshall@atstsolutions.co.uk",
702
+ "homepage": "http://davedevelopment.co.uk"
703
+ }
704
+ ],
705
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
706
+ "homepage": "https://github.com/mockery/mockery",
707
+ "keywords": [
708
+ "BDD",
709
+ "TDD",
710
+ "library",
711
+ "mock",
712
+ "mock objects",
713
+ "mockery",
714
+ "stub",
715
+ "test",
716
+ "test double",
717
+ "testing"
718
+ ],
719
+ "support": {
720
+ "issues": "https://github.com/mockery/mockery/issues",
721
+ "source": "https://github.com/mockery/mockery/tree/master"
722
+ },
723
+ "time": "2020-08-11T18:10:13+00:00"
724
+ },
725
+ {
726
+ "name": "myclabs/deep-copy",
727
+ "version": "1.10.2",
728
+ "source": {
729
+ "type": "git",
730
+ "url": "https://github.com/myclabs/DeepCopy.git",
731
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
732
+ },
733
+ "dist": {
734
+ "type": "zip",
735
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
736
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
737
+ "shasum": ""
738
+ },
739
+ "require": {
740
+ "php": "^7.1 || ^8.0"
741
+ },
742
+ "replace": {
743
+ "myclabs/deep-copy": "self.version"
744
+ },
745
+ "require-dev": {
746
+ "doctrine/collections": "^1.0",
747
+ "doctrine/common": "^2.6",
748
+ "phpunit/phpunit": "^7.1"
749
+ },
750
+ "type": "library",
751
+ "autoload": {
752
+ "psr-4": {
753
+ "DeepCopy\\": "src/DeepCopy/"
754
+ },
755
+ "files": [
756
+ "src/DeepCopy/deep_copy.php"
757
+ ]
758
+ },
759
+ "notification-url": "https://packagist.org/downloads/",
760
+ "license": [
761
+ "MIT"
762
+ ],
763
+ "description": "Create deep copies (clones) of your objects",
764
+ "keywords": [
765
+ "clone",
766
+ "copy",
767
+ "duplicate",
768
+ "object",
769
+ "object graph"
770
+ ],
771
+ "support": {
772
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
773
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
774
+ },
775
+ "funding": [
776
+ {
777
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
778
+ "type": "tidelift"
779
+ }
780
+ ],
781
+ "time": "2020-11-13T09:40:50+00:00"
782
+ },
783
+ {
784
+ "name": "nikic/php-parser",
785
+ "version": "v4.10.3",
786
+ "source": {
787
+ "type": "git",
788
+ "url": "https://github.com/nikic/PHP-Parser.git",
789
+ "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984"
790
+ },
791
+ "dist": {
792
+ "type": "zip",
793
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984",
794
+ "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984",
795
+ "shasum": ""
796
+ },
797
+ "require": {
798
+ "ext-tokenizer": "*",
799
+ "php": ">=7.0"
800
+ },
801
+ "require-dev": {
802
+ "ircmaxell/php-yacc": "^0.0.7",
803
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
804
+ },
805
+ "bin": [
806
+ "bin/php-parse"
807
+ ],
808
+ "type": "library",
809
+ "extra": {
810
+ "branch-alias": {
811
+ "dev-master": "4.9-dev"
812
+ }
813
+ },
814
+ "autoload": {
815
+ "psr-4": {
816
+ "PhpParser\\": "lib/PhpParser"
817
+ }
818
+ },
819
+ "notification-url": "https://packagist.org/downloads/",
820
+ "license": [
821
+ "BSD-3-Clause"
822
+ ],
823
+ "authors": [
824
+ {
825
+ "name": "Nikita Popov"
826
+ }
827
+ ],
828
+ "description": "A PHP parser written in PHP",
829
+ "keywords": [
830
+ "parser",
831
+ "php"
832
+ ],
833
+ "support": {
834
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
835
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.3"
836
+ },
837
+ "time": "2020-12-03T17:45:45+00:00"
838
+ },
839
+ {
840
+ "name": "phar-io/manifest",
841
+ "version": "2.0.1",
842
+ "source": {
843
+ "type": "git",
844
+ "url": "https://github.com/phar-io/manifest.git",
845
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
846
+ },
847
+ "dist": {
848
+ "type": "zip",
849
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
850
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
851
+ "shasum": ""
852
+ },
853
+ "require": {
854
+ "ext-dom": "*",
855
+ "ext-phar": "*",
856
+ "ext-xmlwriter": "*",
857
+ "phar-io/version": "^3.0.1",
858
+ "php": "^7.2 || ^8.0"
859
+ },
860
+ "type": "library",
861
+ "extra": {
862
+ "branch-alias": {
863
+ "dev-master": "2.0.x-dev"
864
+ }
865
+ },
866
+ "autoload": {
867
+ "classmap": [
868
+ "src/"
869
+ ]
870
+ },
871
+ "notification-url": "https://packagist.org/downloads/",
872
+ "license": [
873
+ "BSD-3-Clause"
874
+ ],
875
+ "authors": [
876
+ {
877
+ "name": "Arne Blankerts",
878
+ "email": "arne@blankerts.de",
879
+ "role": "Developer"
880
+ },
881
+ {
882
+ "name": "Sebastian Heuer",
883
+ "email": "sebastian@phpeople.de",
884
+ "role": "Developer"
885
+ },
886
+ {
887
+ "name": "Sebastian Bergmann",
888
+ "email": "sebastian@phpunit.de",
889
+ "role": "Developer"
890
+ }
891
+ ],
892
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
893
+ "support": {
894
+ "issues": "https://github.com/phar-io/manifest/issues",
895
+ "source": "https://github.com/phar-io/manifest/tree/master"
896
+ },
897
+ "time": "2020-06-27T14:33:11+00:00"
898
+ },
899
+ {
900
+ "name": "phar-io/version",
901
+ "version": "3.0.3",
902
+ "source": {
903
+ "type": "git",
904
+ "url": "https://github.com/phar-io/version.git",
905
+ "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae"
906
+ },
907
+ "dist": {
908
+ "type": "zip",
909
+ "url": "https://api.github.com/repos/phar-io/version/zipball/726c026815142e4f8677b7cb7f2249c9ffb7ecae",
910
+ "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae",
911
+ "shasum": ""
912
+ },
913
+ "require": {
914
+ "php": "^7.2 || ^8.0"
915
+ },
916
+ "type": "library",
917
+ "autoload": {
918
+ "classmap": [
919
+ "src/"
920
+ ]
921
+ },
922
+ "notification-url": "https://packagist.org/downloads/",
923
+ "license": [
924
+ "BSD-3-Clause"
925
+ ],
926
+ "authors": [
927
+ {
928
+ "name": "Arne Blankerts",
929
+ "email": "arne@blankerts.de",
930
+ "role": "Developer"
931
+ },
932
+ {
933
+ "name": "Sebastian Heuer",
934
+ "email": "sebastian@phpeople.de",
935
+ "role": "Developer"
936
+ },
937
+ {
938
+ "name": "Sebastian Bergmann",
939
+ "email": "sebastian@phpunit.de",
940
+ "role": "Developer"
941
+ }
942
+ ],
943
+ "description": "Library for handling version information and constraints",
944
+ "support": {
945
+ "issues": "https://github.com/phar-io/version/issues",
946
+ "source": "https://github.com/phar-io/version/tree/3.0.3"
947
+ },
948
+ "time": "2020-11-30T09:21:21+00:00"
949
+ },
950
+ {
951
+ "name": "phpdocumentor/reflection-common",
952
+ "version": "2.2.0",
953
+ "source": {
954
+ "type": "git",
955
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
956
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
957
+ },
958
+ "dist": {
959
+ "type": "zip",
960
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
961
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
962
+ "shasum": ""
963
+ },
964
+ "require": {
965
+ "php": "^7.2 || ^8.0"
966
+ },
967
+ "type": "library",
968
+ "extra": {
969
+ "branch-alias": {
970
+ "dev-2.x": "2.x-dev"
971
+ }
972
+ },
973
+ "autoload": {
974
+ "psr-4": {
975
+ "phpDocumentor\\Reflection\\": "src/"
976
+ }
977
+ },
978
+ "notification-url": "https://packagist.org/downloads/",
979
+ "license": [
980
+ "MIT"
981
+ ],
982
+ "authors": [
983
+ {
984
+ "name": "Jaap van Otterdijk",
985
+ "email": "opensource@ijaap.nl"
986
+ }
987
+ ],
988
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
989
+ "homepage": "http://www.phpdoc.org",
990
+ "keywords": [
991
+ "FQSEN",
992
+ "phpDocumentor",
993
+ "phpdoc",
994
+ "reflection",
995
+ "static analysis"
996
+ ],
997
+ "support": {
998
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
999
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
1000
+ },
1001
+ "time": "2020-06-27T09:03:43+00:00"
1002
+ },
1003
+ {
1004
+ "name": "phpdocumentor/reflection-docblock",
1005
+ "version": "5.2.2",
1006
+ "source": {
1007
+ "type": "git",
1008
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1009
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
1010
+ },
1011
+ "dist": {
1012
+ "type": "zip",
1013
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
1014
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
1015
+ "shasum": ""
1016
+ },
1017
+ "require": {
1018
+ "ext-filter": "*",
1019
+ "php": "^7.2 || ^8.0",
1020
+ "phpdocumentor/reflection-common": "^2.2",
1021
+ "phpdocumentor/type-resolver": "^1.3",
1022
+ "webmozart/assert": "^1.9.1"
1023
+ },
1024
+ "require-dev": {
1025
+ "mockery/mockery": "~1.3.2"
1026
+ },
1027
+ "type": "library",
1028
+ "extra": {
1029
+ "branch-alias": {
1030
+ "dev-master": "5.x-dev"
1031
+ }
1032
+ },
1033
+ "autoload": {
1034
+ "psr-4": {
1035
+ "phpDocumentor\\Reflection\\": "src"
1036
+ }
1037
+ },
1038
+ "notification-url": "https://packagist.org/downloads/",
1039
+ "license": [
1040
+ "MIT"
1041
+ ],
1042
+ "authors": [
1043
+ {
1044
+ "name": "Mike van Riel",
1045
+ "email": "me@mikevanriel.com"
1046
+ },
1047
+ {
1048
+ "name": "Jaap van Otterdijk",
1049
+ "email": "account@ijaap.nl"
1050
+ }
1051
+ ],
1052
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1053
+ "support": {
1054
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1055
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
1056
+ },
1057
+ "time": "2020-09-03T19:13:55+00:00"
1058
+ },
1059
+ {
1060
+ "name": "phpdocumentor/type-resolver",
1061
+ "version": "1.4.0",
1062
+ "source": {
1063
+ "type": "git",
1064
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
1065
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
1066
+ },
1067
+ "dist": {
1068
+ "type": "zip",
1069
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1070
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1071
+ "shasum": ""
1072
+ },
1073
+ "require": {
1074
+ "php": "^7.2 || ^8.0",
1075
+ "phpdocumentor/reflection-common": "^2.0"
1076
+ },
1077
+ "require-dev": {
1078
+ "ext-tokenizer": "*"
1079
+ },
1080
+ "type": "library",
1081
+ "extra": {
1082
+ "branch-alias": {
1083
+ "dev-1.x": "1.x-dev"
1084
+ }
1085
+ },
1086
+ "autoload": {
1087
+ "psr-4": {
1088
+ "phpDocumentor\\Reflection\\": "src"
1089
+ }
1090
+ },
1091
+ "notification-url": "https://packagist.org/downloads/",
1092
+ "license": [
1093
+ "MIT"
1094
+ ],
1095
+ "authors": [
1096
+ {
1097
+ "name": "Mike van Riel",
1098
+ "email": "me@mikevanriel.com"
1099
+ }
1100
+ ],
1101
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
1102
+ "support": {
1103
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1104
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
1105
+ },
1106
+ "time": "2020-09-17T18:55:26+00:00"
1107
+ },
1108
+ {
1109
+ "name": "phpspec/prophecy",
1110
+ "version": "1.12.1",
1111
+ "source": {
1112
+ "type": "git",
1113
+ "url": "https://github.com/phpspec/prophecy.git",
1114
+ "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d"
1115
+ },
1116
+ "dist": {
1117
+ "type": "zip",
1118
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d",
1119
+ "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d",
1120
+ "shasum": ""
1121
+ },
1122
+ "require": {
1123
+ "doctrine/instantiator": "^1.2",
1124
+ "php": "^7.2 || ~8.0, <8.1",
1125
+ "phpdocumentor/reflection-docblock": "^5.2",
1126
+ "sebastian/comparator": "^3.0 || ^4.0",
1127
+ "sebastian/recursion-context": "^3.0 || ^4.0"
1128
+ },
1129
+ "require-dev": {
1130
+ "phpspec/phpspec": "^6.0",
1131
+ "phpunit/phpunit": "^8.0 || ^9.0 <9.3"
1132
+ },
1133
+ "type": "library",
1134
+ "extra": {
1135
+ "branch-alias": {
1136
+ "dev-master": "1.11.x-dev"
1137
+ }
1138
+ },
1139
+ "autoload": {
1140
+ "psr-4": {
1141
+ "Prophecy\\": "src/Prophecy"
1142
+ }
1143
+ },
1144
+ "notification-url": "https://packagist.org/downloads/",
1145
+ "license": [
1146
+ "MIT"
1147
+ ],
1148
+ "authors": [
1149
+ {
1150
+ "name": "Konstantin Kudryashov",
1151
+ "email": "ever.zet@gmail.com",
1152
+ "homepage": "http://everzet.com"
1153
+ },
1154
+ {
1155
+ "name": "Marcello Duarte",
1156
+ "email": "marcello.duarte@gmail.com"
1157
+ }
1158
+ ],
1159
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
1160
+ "homepage": "https://github.com/phpspec/prophecy",
1161
+ "keywords": [
1162
+ "Double",
1163
+ "Dummy",
1164
+ "fake",
1165
+ "mock",
1166
+ "spy",
1167
+ "stub"
1168
+ ],
1169
+ "support": {
1170
+ "issues": "https://github.com/phpspec/prophecy/issues",
1171
+ "source": "https://github.com/phpspec/prophecy/tree/1.12.1"
1172
+ },
1173
+ "time": "2020-09-29T09:10:42+00:00"
1174
+ },
1175
+ {
1176
+ "name": "phpunit/php-code-coverage",
1177
+ "version": "9.2.5",
1178
+ "source": {
1179
+ "type": "git",
1180
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1181
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
1182
+ },
1183
+ "dist": {
1184
+ "type": "zip",
1185
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
1186
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
1187
+ "shasum": ""
1188
+ },
1189
+ "require": {
1190
+ "ext-dom": "*",
1191
+ "ext-libxml": "*",
1192
+ "ext-xmlwriter": "*",
1193
+ "nikic/php-parser": "^4.10.2",
1194
+ "php": ">=7.3",
1195
+ "phpunit/php-file-iterator": "^3.0.3",
1196
+ "phpunit/php-text-template": "^2.0.2",
1197
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
1198
+ "sebastian/complexity": "^2.0",
1199
+ "sebastian/environment": "^5.1.2",
1200
+ "sebastian/lines-of-code": "^1.0.3",
1201
+ "sebastian/version": "^3.0.1",
1202
+ "theseer/tokenizer": "^1.2.0"
1203
+ },
1204
+ "require-dev": {
1205
+ "phpunit/phpunit": "^9.3"
1206
+ },
1207
+ "suggest": {
1208
+ "ext-pcov": "*",
1209
+ "ext-xdebug": "*"
1210
+ },
1211
+ "type": "library",
1212
+ "extra": {
1213
+ "branch-alias": {
1214
+ "dev-master": "9.2-dev"
1215
+ }
1216
+ },
1217
+ "autoload": {
1218
+ "classmap": [
1219
+ "src/"
1220
+ ]
1221
+ },
1222
+ "notification-url": "https://packagist.org/downloads/",
1223
+ "license": [
1224
+ "BSD-3-Clause"
1225
+ ],
1226
+ "authors": [
1227
+ {
1228
+ "name": "Sebastian Bergmann",
1229
+ "email": "sebastian@phpunit.de",
1230
+ "role": "lead"
1231
+ }
1232
+ ],
1233
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1234
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1235
+ "keywords": [
1236
+ "coverage",
1237
+ "testing",
1238
+ "xunit"
1239
+ ],
1240
+ "support": {
1241
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1242
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
1243
+ },
1244
+ "funding": [
1245
+ {
1246
+ "url": "https://github.com/sebastianbergmann",
1247
+ "type": "github"
1248
+ }
1249
+ ],
1250
+ "time": "2020-11-28T06:44:49+00:00"
1251
+ },
1252
+ {
1253
+ "name": "phpunit/php-file-iterator",
1254
+ "version": "3.0.5",
1255
+ "source": {
1256
+ "type": "git",
1257
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1258
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
1259
+ },
1260
+ "dist": {
1261
+ "type": "zip",
1262
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
1263
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
1264
+ "shasum": ""
1265
+ },
1266
+ "require": {
1267
+ "php": ">=7.3"
1268
+ },
1269
+ "require-dev": {
1270
+ "phpunit/phpunit": "^9.3"
1271
+ },
1272
+ "type": "library",
1273
+ "extra": {
1274
+ "branch-alias": {
1275
+ "dev-master": "3.0-dev"
1276
+ }
1277
+ },
1278
+ "autoload": {
1279
+ "classmap": [
1280
+ "src/"
1281
+ ]
1282
+ },
1283
+ "notification-url": "https://packagist.org/downloads/",
1284
+ "license": [
1285
+ "BSD-3-Clause"
1286
+ ],
1287
+ "authors": [
1288
+ {
1289
+ "name": "Sebastian Bergmann",
1290
+ "email": "sebastian@phpunit.de",
1291
+ "role": "lead"
1292
+ }
1293
+ ],
1294
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1295
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1296
+ "keywords": [
1297
+ "filesystem",
1298
+ "iterator"
1299
+ ],
1300
+ "support": {
1301
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1302
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
1303
+ },
1304
+ "funding": [
1305
+ {
1306
+ "url": "https://github.com/sebastianbergmann",
1307
+ "type": "github"
1308
+ }
1309
+ ],
1310
+ "time": "2020-09-28T05:57:25+00:00"
1311
+ },
1312
+ {
1313
+ "name": "phpunit/php-invoker",
1314
+ "version": "3.1.1",
1315
+ "source": {
1316
+ "type": "git",
1317
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
1318
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
1319
+ },
1320
+ "dist": {
1321
+ "type": "zip",
1322
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
1323
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
1324
+ "shasum": ""
1325
+ },
1326
+ "require": {
1327
+ "php": ">=7.3"
1328
+ },
1329
+ "require-dev": {
1330
+ "ext-pcntl": "*",
1331
+ "phpunit/phpunit": "^9.3"
1332
+ },
1333
+ "suggest": {
1334
+ "ext-pcntl": "*"
1335
+ },
1336
+ "type": "library",
1337
+ "extra": {
1338
+ "branch-alias": {
1339
+ "dev-master": "3.1-dev"
1340
+ }
1341
+ },
1342
+ "autoload": {
1343
+ "classmap": [
1344
+ "src/"
1345
+ ]
1346
+ },
1347
+ "notification-url": "https://packagist.org/downloads/",
1348
+ "license": [
1349
+ "BSD-3-Clause"
1350
+ ],
1351
+ "authors": [
1352
+ {
1353
+ "name": "Sebastian Bergmann",
1354
+ "email": "sebastian@phpunit.de",
1355
+ "role": "lead"
1356
+ }
1357
+ ],
1358
+ "description": "Invoke callables with a timeout",
1359
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
1360
+ "keywords": [
1361
+ "process"
1362
+ ],
1363
+ "support": {
1364
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
1365
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
1366
+ },
1367
+ "funding": [
1368
+ {
1369
+ "url": "https://github.com/sebastianbergmann",
1370
+ "type": "github"
1371
+ }
1372
+ ],
1373
+ "time": "2020-09-28T05:58:55+00:00"
1374
+ },
1375
+ {
1376
+ "name": "phpunit/php-text-template",
1377
+ "version": "2.0.4",
1378
+ "source": {
1379
+ "type": "git",
1380
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
1381
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
1382
+ },
1383
+ "dist": {
1384
+ "type": "zip",
1385
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
1386
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
1387
+ "shasum": ""
1388
+ },
1389
+ "require": {
1390
+ "php": ">=7.3"
1391
+ },
1392
+ "require-dev": {
1393
+ "phpunit/phpunit": "^9.3"
1394
+ },
1395
+ "type": "library",
1396
+ "extra": {
1397
+ "branch-alias": {
1398
+ "dev-master": "2.0-dev"
1399
+ }
1400
+ },
1401
+ "autoload": {
1402
+ "classmap": [
1403
+ "src/"
1404
+ ]
1405
+ },
1406
+ "notification-url": "https://packagist.org/downloads/",
1407
+ "license": [
1408
+ "BSD-3-Clause"
1409
+ ],
1410
+ "authors": [
1411
+ {
1412
+ "name": "Sebastian Bergmann",
1413
+ "email": "sebastian@phpunit.de",
1414
+ "role": "lead"
1415
+ }
1416
+ ],
1417
+ "description": "Simple template engine.",
1418
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1419
+ "keywords": [
1420
+ "template"
1421
+ ],
1422
+ "support": {
1423
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1424
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
1425
+ },
1426
+ "funding": [
1427
+ {
1428
+ "url": "https://github.com/sebastianbergmann",
1429
+ "type": "github"
1430
+ }
1431
+ ],
1432
+ "time": "2020-10-26T05:33:50+00:00"
1433
+ },
1434
+ {
1435
+ "name": "phpunit/php-timer",
1436
+ "version": "5.0.3",
1437
+ "source": {
1438
+ "type": "git",
1439
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
1440
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
1441
+ },
1442
+ "dist": {
1443
+ "type": "zip",
1444
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
1445
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
1446
+ "shasum": ""
1447
+ },
1448
+ "require": {
1449
+ "php": ">=7.3"
1450
+ },
1451
+ "require-dev": {
1452
+ "phpunit/phpunit": "^9.3"
1453
+ },
1454
+ "type": "library",
1455
+ "extra": {
1456
+ "branch-alias": {
1457
+ "dev-master": "5.0-dev"
1458
+ }
1459
+ },
1460
+ "autoload": {
1461
+ "classmap": [
1462
+ "src/"
1463
+ ]
1464
+ },
1465
+ "notification-url": "https://packagist.org/downloads/",
1466
+ "license": [
1467
+ "BSD-3-Clause"
1468
+ ],
1469
+ "authors": [
1470
+ {
1471
+ "name": "Sebastian Bergmann",
1472
+ "email": "sebastian@phpunit.de",
1473
+ "role": "lead"
1474
+ }
1475
+ ],
1476
+ "description": "Utility class for timing",
1477
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
1478
+ "keywords": [
1479
+ "timer"
1480
+ ],
1481
+ "support": {
1482
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1483
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
1484
+ },
1485
+ "funding": [
1486
+ {
1487
+ "url": "https://github.com/sebastianbergmann",
1488
+ "type": "github"
1489
+ }
1490
+ ],
1491
+ "time": "2020-10-26T13:16:10+00:00"
1492
+ },
1493
+ {
1494
+ "name": "phpunit/phpunit",
1495
+ "version": "9.5.0",
1496
+ "source": {
1497
+ "type": "git",
1498
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
1499
+ "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe"
1500
+ },
1501
+ "dist": {
1502
+ "type": "zip",
1503
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
1504
+ "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
1505
+ "shasum": ""
1506
+ },
1507
+ "require": {
1508
+ "doctrine/instantiator": "^1.3.1",
1509
+ "ext-dom": "*",
1510
+ "ext-json": "*",
1511
+ "ext-libxml": "*",
1512
+ "ext-mbstring": "*",
1513
+ "ext-xml": "*",
1514
+ "ext-xmlwriter": "*",
1515
+ "myclabs/deep-copy": "^1.10.1",
1516
+ "phar-io/manifest": "^2.0.1",
1517
+ "phar-io/version": "^3.0.2",
1518
+ "php": ">=7.3",
1519
+ "phpspec/prophecy": "^1.12.1",
1520
+ "phpunit/php-code-coverage": "^9.2.3",
1521
+ "phpunit/php-file-iterator": "^3.0.5",
1522
+ "phpunit/php-invoker": "^3.1.1",
1523
+ "phpunit/php-text-template": "^2.0.3",
1524
+ "phpunit/php-timer": "^5.0.2",
1525
+ "sebastian/cli-parser": "^1.0.1",
1526
+ "sebastian/code-unit": "^1.0.6",
1527
+ "sebastian/comparator": "^4.0.5",
1528
+ "sebastian/diff": "^4.0.3",
1529
+ "sebastian/environment": "^5.1.3",
1530
+ "sebastian/exporter": "^4.0.3",
1531
+ "sebastian/global-state": "^5.0.1",
1532
+ "sebastian/object-enumerator": "^4.0.3",
1533
+ "sebastian/resource-operations": "^3.0.3",
1534
+ "sebastian/type": "^2.3",
1535
+ "sebastian/version": "^3.0.2"
1536
+ },
1537
+ "require-dev": {
1538
+ "ext-pdo": "*",
1539
+ "phpspec/prophecy-phpunit": "^2.0.1"
1540
+ },
1541
+ "suggest": {
1542
+ "ext-soap": "*",
1543
+ "ext-xdebug": "*"
1544
+ },
1545
+ "bin": [
1546
+ "phpunit"
1547
+ ],
1548
+ "type": "library",
1549
+ "extra": {
1550
+ "branch-alias": {
1551
+ "dev-master": "9.5-dev"
1552
+ }
1553
+ },
1554
+ "autoload": {
1555
+ "classmap": [
1556
+ "src/"
1557
+ ],
1558
+ "files": [
1559
+ "src/Framework/Assert/Functions.php"
1560
+ ]
1561
+ },
1562
+ "notification-url": "https://packagist.org/downloads/",
1563
+ "license": [
1564
+ "BSD-3-Clause"
1565
+ ],
1566
+ "authors": [
1567
+ {
1568
+ "name": "Sebastian Bergmann",
1569
+ "email": "sebastian@phpunit.de",
1570
+ "role": "lead"
1571
+ }
1572
+ ],
1573
+ "description": "The PHP Unit Testing framework.",
1574
+ "homepage": "https://phpunit.de/",
1575
+ "keywords": [
1576
+ "phpunit",
1577
+ "testing",
1578
+ "xunit"
1579
+ ],
1580
+ "support": {
1581
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
1582
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.0"
1583
+ },
1584
+ "funding": [
1585
+ {
1586
+ "url": "https://phpunit.de/donate.html",
1587
+ "type": "custom"
1588
+ },
1589
+ {
1590
+ "url": "https://github.com/sebastianbergmann",
1591
+ "type": "github"
1592
+ }
1593
+ ],
1594
+ "time": "2020-12-04T05:05:53+00:00"
1595
+ },
1596
+ {
1597
+ "name": "psr/container",
1598
+ "version": "1.0.0",
1599
+ "source": {
1600
+ "type": "git",
1601
+ "url": "https://github.com/php-fig/container.git",
1602
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
1603
+ },
1604
+ "dist": {
1605
+ "type": "zip",
1606
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
1607
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
1608
+ "shasum": ""
1609
+ },
1610
+ "require": {
1611
+ "php": ">=5.3.0"
1612
+ },
1613
+ "type": "library",
1614
+ "extra": {
1615
+ "branch-alias": {
1616
+ "dev-master": "1.0.x-dev"
1617
+ }
1618
+ },
1619
+ "autoload": {
1620
+ "psr-4": {
1621
+ "Psr\\Container\\": "src/"
1622
+ }
1623
+ },
1624
+ "notification-url": "https://packagist.org/downloads/",
1625
+ "license": [
1626
+ "MIT"
1627
+ ],
1628
+ "authors": [
1629
+ {
1630
+ "name": "PHP-FIG",
1631
+ "homepage": "http://www.php-fig.org/"
1632
+ }
1633
+ ],
1634
+ "description": "Common Container Interface (PHP FIG PSR-11)",
1635
+ "homepage": "https://github.com/php-fig/container",
1636
+ "keywords": [
1637
+ "PSR-11",
1638
+ "container",
1639
+ "container-interface",
1640
+ "container-interop",
1641
+ "psr"
1642
+ ],
1643
+ "support": {
1644
+ "issues": "https://github.com/php-fig/container/issues",
1645
+ "source": "https://github.com/php-fig/container/tree/master"
1646
+ },
1647
+ "time": "2017-02-14T16:28:37+00:00"
1648
+ },
1649
+ {
1650
+ "name": "psr/event-dispatcher",
1651
+ "version": "1.0.0",
1652
+ "source": {
1653
+ "type": "git",
1654
+ "url": "https://github.com/php-fig/event-dispatcher.git",
1655
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
1656
+ },
1657
+ "dist": {
1658
+ "type": "zip",
1659
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
1660
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
1661
+ "shasum": ""
1662
+ },
1663
+ "require": {
1664
+ "php": ">=7.2.0"
1665
+ },
1666
+ "type": "library",
1667
+ "extra": {
1668
+ "branch-alias": {
1669
+ "dev-master": "1.0.x-dev"
1670
+ }
1671
+ },
1672
+ "autoload": {
1673
+ "psr-4": {
1674
+ "Psr\\EventDispatcher\\": "src/"
1675
+ }
1676
+ },
1677
+ "notification-url": "https://packagist.org/downloads/",
1678
+ "license": [
1679
+ "MIT"
1680
+ ],
1681
+ "authors": [
1682
+ {
1683
+ "name": "PHP-FIG",
1684
+ "homepage": "http://www.php-fig.org/"
1685
+ }
1686
+ ],
1687
+ "description": "Standard interfaces for event handling.",
1688
+ "keywords": [
1689
+ "events",
1690
+ "psr",
1691
+ "psr-14"
1692
+ ],
1693
+ "support": {
1694
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
1695
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
1696
+ },
1697
+ "time": "2019-01-08T18:20:26+00:00"
1698
+ },
1699
+ {
1700
+ "name": "psr/http-message",
1701
+ "version": "1.0.1",
1702
+ "source": {
1703
+ "type": "git",
1704
+ "url": "https://github.com/php-fig/http-message.git",
1705
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1706
+ },
1707
+ "dist": {
1708
+ "type": "zip",
1709
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1710
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1711
+ "shasum": ""
1712
+ },
1713
+ "require": {
1714
+ "php": ">=5.3.0"
1715
+ },
1716
+ "type": "library",
1717
+ "extra": {
1718
+ "branch-alias": {
1719
+ "dev-master": "1.0.x-dev"
1720
+ }
1721
+ },
1722
+ "autoload": {
1723
+ "psr-4": {
1724
+ "Psr\\Http\\Message\\": "src/"
1725
+ }
1726
+ },
1727
+ "notification-url": "https://packagist.org/downloads/",
1728
+ "license": [
1729
+ "MIT"
1730
+ ],
1731
+ "authors": [
1732
+ {
1733
+ "name": "PHP-FIG",
1734
+ "homepage": "http://www.php-fig.org/"
1735
+ }
1736
+ ],
1737
+ "description": "Common interface for HTTP messages",
1738
+ "homepage": "https://github.com/php-fig/http-message",
1739
+ "keywords": [
1740
+ "http",
1741
+ "http-message",
1742
+ "psr",
1743
+ "psr-7",
1744
+ "request",
1745
+ "response"
1746
+ ],
1747
+ "support": {
1748
+ "source": "https://github.com/php-fig/http-message/tree/master"
1749
+ },
1750
+ "time": "2016-08-06T14:39:51+00:00"
1751
+ },
1752
+ {
1753
+ "name": "ralouphie/getallheaders",
1754
+ "version": "3.0.3",
1755
+ "source": {
1756
+ "type": "git",
1757
+ "url": "https://github.com/ralouphie/getallheaders.git",
1758
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
1759
+ },
1760
+ "dist": {
1761
+ "type": "zip",
1762
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
1763
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
1764
+ "shasum": ""
1765
+ },
1766
+ "require": {
1767
+ "php": ">=5.6"
1768
+ },
1769
+ "require-dev": {
1770
+ "php-coveralls/php-coveralls": "^2.1",
1771
+ "phpunit/phpunit": "^5 || ^6.5"
1772
+ },
1773
+ "type": "library",
1774
+ "autoload": {
1775
+ "files": [
1776
+ "src/getallheaders.php"
1777
+ ]
1778
+ },
1779
+ "notification-url": "https://packagist.org/downloads/",
1780
+ "license": [
1781
+ "MIT"
1782
+ ],
1783
+ "authors": [
1784
+ {
1785
+ "name": "Ralph Khattar",
1786
+ "email": "ralph.khattar@gmail.com"
1787
+ }
1788
+ ],
1789
+ "description": "A polyfill for getallheaders.",
1790
+ "support": {
1791
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
1792
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
1793
+ },
1794
+ "time": "2019-03-08T08:55:37+00:00"
1795
+ },
1796
+ {
1797
+ "name": "sebastian/cli-parser",
1798
+ "version": "1.0.1",
1799
+ "source": {
1800
+ "type": "git",
1801
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
1802
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
1803
+ },
1804
+ "dist": {
1805
+ "type": "zip",
1806
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
1807
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
1808
+ "shasum": ""
1809
+ },
1810
+ "require": {
1811
+ "php": ">=7.3"
1812
+ },
1813
+ "require-dev": {
1814
+ "phpunit/phpunit": "^9.3"
1815
+ },
1816
+ "type": "library",
1817
+ "extra": {
1818
+ "branch-alias": {
1819
+ "dev-master": "1.0-dev"
1820
+ }
1821
+ },
1822
+ "autoload": {
1823
+ "classmap": [
1824
+ "src/"
1825
+ ]
1826
+ },
1827
+ "notification-url": "https://packagist.org/downloads/",
1828
+ "license": [
1829
+ "BSD-3-Clause"
1830
+ ],
1831
+ "authors": [
1832
+ {
1833
+ "name": "Sebastian Bergmann",
1834
+ "email": "sebastian@phpunit.de",
1835
+ "role": "lead"
1836
+ }
1837
+ ],
1838
+ "description": "Library for parsing CLI options",
1839
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
1840
+ "support": {
1841
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
1842
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
1843
+ },
1844
+ "funding": [
1845
+ {
1846
+ "url": "https://github.com/sebastianbergmann",
1847
+ "type": "github"
1848
+ }
1849
+ ],
1850
+ "time": "2020-09-28T06:08:49+00:00"
1851
+ },
1852
+ {
1853
+ "name": "sebastian/code-unit",
1854
+ "version": "1.0.8",
1855
+ "source": {
1856
+ "type": "git",
1857
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
1858
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
1859
+ },
1860
+ "dist": {
1861
+ "type": "zip",
1862
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
1863
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
1864
+ "shasum": ""
1865
+ },
1866
+ "require": {
1867
+ "php": ">=7.3"
1868
+ },
1869
+ "require-dev": {
1870
+ "phpunit/phpunit": "^9.3"
1871
+ },
1872
+ "type": "library",
1873
+ "extra": {
1874
+ "branch-alias": {
1875
+ "dev-master": "1.0-dev"
1876
+ }
1877
+ },
1878
+ "autoload": {
1879
+ "classmap": [
1880
+ "src/"
1881
+ ]
1882
+ },
1883
+ "notification-url": "https://packagist.org/downloads/",
1884
+ "license": [
1885
+ "BSD-3-Clause"
1886
+ ],
1887
+ "authors": [
1888
+ {
1889
+ "name": "Sebastian Bergmann",
1890
+ "email": "sebastian@phpunit.de",
1891
+ "role": "lead"
1892
+ }
1893
+ ],
1894
+ "description": "Collection of value objects that represent the PHP code units",
1895
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
1896
+ "support": {
1897
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
1898
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
1899
+ },
1900
+ "funding": [
1901
+ {
1902
+ "url": "https://github.com/sebastianbergmann",
1903
+ "type": "github"
1904
+ }
1905
+ ],
1906
+ "time": "2020-10-26T13:08:54+00:00"
1907
+ },
1908
+ {
1909
+ "name": "sebastian/code-unit-reverse-lookup",
1910
+ "version": "2.0.3",
1911
+ "source": {
1912
+ "type": "git",
1913
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1914
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
1915
+ },
1916
+ "dist": {
1917
+ "type": "zip",
1918
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
1919
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
1920
+ "shasum": ""
1921
+ },
1922
+ "require": {
1923
+ "php": ">=7.3"
1924
+ },
1925
+ "require-dev": {
1926
+ "phpunit/phpunit": "^9.3"
1927
+ },
1928
+ "type": "library",
1929
+ "extra": {
1930
+ "branch-alias": {
1931
+ "dev-master": "2.0-dev"
1932
+ }
1933
+ },
1934
+ "autoload": {
1935
+ "classmap": [
1936
+ "src/"
1937
+ ]
1938
+ },
1939
+ "notification-url": "https://packagist.org/downloads/",
1940
+ "license": [
1941
+ "BSD-3-Clause"
1942
+ ],
1943
+ "authors": [
1944
+ {
1945
+ "name": "Sebastian Bergmann",
1946
+ "email": "sebastian@phpunit.de"
1947
+ }
1948
+ ],
1949
+ "description": "Looks up which function or method a line of code belongs to",
1950
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1951
+ "support": {
1952
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
1953
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
1954
+ },
1955
+ "funding": [
1956
+ {
1957
+ "url": "https://github.com/sebastianbergmann",
1958
+ "type": "github"
1959
+ }
1960
+ ],
1961
+ "time": "2020-09-28T05:30:19+00:00"
1962
+ },
1963
+ {
1964
+ "name": "sebastian/comparator",
1965
+ "version": "4.0.6",
1966
+ "source": {
1967
+ "type": "git",
1968
+ "url": "https://github.com/sebastianbergmann/comparator.git",
1969
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
1970
+ },
1971
+ "dist": {
1972
+ "type": "zip",
1973
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
1974
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
1975
+ "shasum": ""
1976
+ },
1977
+ "require": {
1978
+ "php": ">=7.3",
1979
+ "sebastian/diff": "^4.0",
1980
+ "sebastian/exporter": "^4.0"
1981
+ },
1982
+ "require-dev": {
1983
+ "phpunit/phpunit": "^9.3"
1984
+ },
1985
+ "type": "library",
1986
+ "extra": {
1987
+ "branch-alias": {
1988
+ "dev-master": "4.0-dev"
1989
+ }
1990
+ },
1991
+ "autoload": {
1992
+ "classmap": [
1993
+ "src/"
1994
+ ]
1995
+ },
1996
+ "notification-url": "https://packagist.org/downloads/",
1997
+ "license": [
1998
+ "BSD-3-Clause"
1999
+ ],
2000
+ "authors": [
2001
+ {
2002
+ "name": "Sebastian Bergmann",
2003
+ "email": "sebastian@phpunit.de"
2004
+ },
2005
+ {
2006
+ "name": "Jeff Welch",
2007
+ "email": "whatthejeff@gmail.com"
2008
+ },
2009
+ {
2010
+ "name": "Volker Dusch",
2011
+ "email": "github@wallbash.com"
2012
+ },
2013
+ {
2014
+ "name": "Bernhard Schussek",
2015
+ "email": "bschussek@2bepublished.at"
2016
+ }
2017
+ ],
2018
+ "description": "Provides the functionality to compare PHP values for equality",
2019
+ "homepage": "https://github.com/sebastianbergmann/comparator",
2020
+ "keywords": [
2021
+ "comparator",
2022
+ "compare",
2023
+ "equality"
2024
+ ],
2025
+ "support": {
2026
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
2027
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
2028
+ },
2029
+ "funding": [
2030
+ {
2031
+ "url": "https://github.com/sebastianbergmann",
2032
+ "type": "github"
2033
+ }
2034
+ ],
2035
+ "time": "2020-10-26T15:49:45+00:00"
2036
+ },
2037
+ {
2038
+ "name": "sebastian/complexity",
2039
+ "version": "2.0.2",
2040
+ "source": {
2041
+ "type": "git",
2042
+ "url": "https://github.com/sebastianbergmann/complexity.git",
2043
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
2044
+ },
2045
+ "dist": {
2046
+ "type": "zip",
2047
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
2048
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
2049
+ "shasum": ""
2050
+ },
2051
+ "require": {
2052
+ "nikic/php-parser": "^4.7",
2053
+ "php": ">=7.3"
2054
+ },
2055
+ "require-dev": {
2056
+ "phpunit/phpunit": "^9.3"
2057
+ },
2058
+ "type": "library",
2059
+ "extra": {
2060
+ "branch-alias": {
2061
+ "dev-master": "2.0-dev"
2062
+ }
2063
+ },
2064
+ "autoload": {
2065
+ "classmap": [
2066
+ "src/"
2067
+ ]
2068
+ },
2069
+ "notification-url": "https://packagist.org/downloads/",
2070
+ "license": [
2071
+ "BSD-3-Clause"
2072
+ ],
2073
+ "authors": [
2074
+ {
2075
+ "name": "Sebastian Bergmann",
2076
+ "email": "sebastian@phpunit.de",
2077
+ "role": "lead"
2078
+ }
2079
+ ],
2080
+ "description": "Library for calculating the complexity of PHP code units",
2081
+ "homepage": "https://github.com/sebastianbergmann/complexity",
2082
+ "support": {
2083
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
2084
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
2085
+ },
2086
+ "funding": [
2087
+ {
2088
+ "url": "https://github.com/sebastianbergmann",
2089
+ "type": "github"
2090
+ }
2091
+ ],
2092
+ "time": "2020-10-26T15:52:27+00:00"
2093
+ },
2094
+ {
2095
+ "name": "sebastian/diff",
2096
+ "version": "4.0.4",
2097
+ "source": {
2098
+ "type": "git",
2099
+ "url": "https://github.com/sebastianbergmann/diff.git",
2100
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
2101
+ },
2102
+ "dist": {
2103
+ "type": "zip",
2104
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
2105
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
2106
+ "shasum": ""
2107
+ },
2108
+ "require": {
2109
+ "php": ">=7.3"
2110
+ },
2111
+ "require-dev": {
2112
+ "phpunit/phpunit": "^9.3",
2113
+ "symfony/process": "^4.2 || ^5"
2114
+ },
2115
+ "type": "library",
2116
+ "extra": {
2117
+ "branch-alias": {
2118
+ "dev-master": "4.0-dev"
2119
+ }
2120
+ },
2121
+ "autoload": {
2122
+ "classmap": [
2123
+ "src/"
2124
+ ]
2125
+ },
2126
+ "notification-url": "https://packagist.org/downloads/",
2127
+ "license": [
2128
+ "BSD-3-Clause"
2129
+ ],
2130
+ "authors": [
2131
+ {
2132
+ "name": "Sebastian Bergmann",
2133
+ "email": "sebastian@phpunit.de"
2134
+ },
2135
+ {
2136
+ "name": "Kore Nordmann",
2137
+ "email": "mail@kore-nordmann.de"
2138
+ }
2139
+ ],
2140
+ "description": "Diff implementation",
2141
+ "homepage": "https://github.com/sebastianbergmann/diff",
2142
+ "keywords": [
2143
+ "diff",
2144
+ "udiff",
2145
+ "unidiff",
2146
+ "unified diff"
2147
+ ],
2148
+ "support": {
2149
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
2150
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
2151
+ },
2152
+ "funding": [
2153
+ {
2154
+ "url": "https://github.com/sebastianbergmann",
2155
+ "type": "github"
2156
+ }
2157
+ ],
2158
+ "time": "2020-10-26T13:10:38+00:00"
2159
+ },
2160
+ {
2161
+ "name": "sebastian/environment",
2162
+ "version": "5.1.3",
2163
+ "source": {
2164
+ "type": "git",
2165
+ "url": "https://github.com/sebastianbergmann/environment.git",
2166
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
2167
+ },
2168
+ "dist": {
2169
+ "type": "zip",
2170
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
2171
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
2172
+ "shasum": ""
2173
+ },
2174
+ "require": {
2175
+ "php": ">=7.3"
2176
+ },
2177
+ "require-dev": {
2178
+ "phpunit/phpunit": "^9.3"
2179
+ },
2180
+ "suggest": {
2181
+ "ext-posix": "*"
2182
+ },
2183
+ "type": "library",
2184
+ "extra": {
2185
+ "branch-alias": {
2186
+ "dev-master": "5.1-dev"
2187
+ }
2188
+ },
2189
+ "autoload": {
2190
+ "classmap": [
2191
+ "src/"
2192
+ ]
2193
+ },
2194
+ "notification-url": "https://packagist.org/downloads/",
2195
+ "license": [
2196
+ "BSD-3-Clause"
2197
+ ],
2198
+ "authors": [
2199
+ {
2200
+ "name": "Sebastian Bergmann",
2201
+ "email": "sebastian@phpunit.de"
2202
+ }
2203
+ ],
2204
+ "description": "Provides functionality to handle HHVM/PHP environments",
2205
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
2206
+ "keywords": [
2207
+ "Xdebug",
2208
+ "environment",
2209
+ "hhvm"
2210
+ ],
2211
+ "support": {
2212
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
2213
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
2214
+ },
2215
+ "funding": [
2216
+ {
2217
+ "url": "https://github.com/sebastianbergmann",
2218
+ "type": "github"
2219
+ }
2220
+ ],
2221
+ "time": "2020-09-28T05:52:38+00:00"
2222
+ },
2223
+ {
2224
+ "name": "sebastian/exporter",
2225
+ "version": "4.0.3",
2226
+ "source": {
2227
+ "type": "git",
2228
+ "url": "https://github.com/sebastianbergmann/exporter.git",
2229
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
2230
+ },
2231
+ "dist": {
2232
+ "type": "zip",
2233
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
2234
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
2235
+ "shasum": ""
2236
+ },
2237
+ "require": {
2238
+ "php": ">=7.3",
2239
+ "sebastian/recursion-context": "^4.0"
2240
+ },
2241
+ "require-dev": {
2242
+ "ext-mbstring": "*",
2243
+ "phpunit/phpunit": "^9.3"
2244
+ },
2245
+ "type": "library",
2246
+ "extra": {
2247
+ "branch-alias": {
2248
+ "dev-master": "4.0-dev"
2249
+ }
2250
+ },
2251
+ "autoload": {
2252
+ "classmap": [
2253
+ "src/"
2254
+ ]
2255
+ },
2256
+ "notification-url": "https://packagist.org/downloads/",
2257
+ "license": [
2258
+ "BSD-3-Clause"
2259
+ ],
2260
+ "authors": [
2261
+ {
2262
+ "name": "Sebastian Bergmann",
2263
+ "email": "sebastian@phpunit.de"
2264
+ },
2265
+ {
2266
+ "name": "Jeff Welch",
2267
+ "email": "whatthejeff@gmail.com"
2268
+ },
2269
+ {
2270
+ "name": "Volker Dusch",
2271
+ "email": "github@wallbash.com"
2272
+ },
2273
+ {
2274
+ "name": "Adam Harvey",
2275
+ "email": "aharvey@php.net"
2276
+ },
2277
+ {
2278
+ "name": "Bernhard Schussek",
2279
+ "email": "bschussek@gmail.com"
2280
+ }
2281
+ ],
2282
+ "description": "Provides the functionality to export PHP variables for visualization",
2283
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
2284
+ "keywords": [
2285
+ "export",
2286
+ "exporter"
2287
+ ],
2288
+ "support": {
2289
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
2290
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
2291
+ },
2292
+ "funding": [
2293
+ {
2294
+ "url": "https://github.com/sebastianbergmann",
2295
+ "type": "github"
2296
+ }
2297
+ ],
2298
+ "time": "2020-09-28T05:24:23+00:00"
2299
+ },
2300
+ {
2301
+ "name": "sebastian/global-state",
2302
+ "version": "5.0.2",
2303
+ "source": {
2304
+ "type": "git",
2305
+ "url": "https://github.com/sebastianbergmann/global-state.git",
2306
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
2307
+ },
2308
+ "dist": {
2309
+ "type": "zip",
2310
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
2311
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
2312
+ "shasum": ""
2313
+ },
2314
+ "require": {
2315
+ "php": ">=7.3",
2316
+ "sebastian/object-reflector": "^2.0",
2317
+ "sebastian/recursion-context": "^4.0"
2318
+ },
2319
+ "require-dev": {
2320
+ "ext-dom": "*",
2321
+ "phpunit/phpunit": "^9.3"
2322
+ },
2323
+ "suggest": {
2324
+ "ext-uopz": "*"
2325
+ },
2326
+ "type": "library",
2327
+ "extra": {
2328
+ "branch-alias": {
2329
+ "dev-master": "5.0-dev"
2330
+ }
2331
+ },
2332
+ "autoload": {
2333
+ "classmap": [
2334
+ "src/"
2335
+ ]
2336
+ },
2337
+ "notification-url": "https://packagist.org/downloads/",
2338
+ "license": [
2339
+ "BSD-3-Clause"
2340
+ ],
2341
+ "authors": [
2342
+ {
2343
+ "name": "Sebastian Bergmann",
2344
+ "email": "sebastian@phpunit.de"
2345
+ }
2346
+ ],
2347
+ "description": "Snapshotting of global state",
2348
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
2349
+ "keywords": [
2350
+ "global state"
2351
+ ],
2352
+ "support": {
2353
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
2354
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
2355
+ },
2356
+ "funding": [
2357
+ {
2358
+ "url": "https://github.com/sebastianbergmann",
2359
+ "type": "github"
2360
+ }
2361
+ ],
2362
+ "time": "2020-10-26T15:55:19+00:00"
2363
+ },
2364
+ {
2365
+ "name": "sebastian/lines-of-code",
2366
+ "version": "1.0.3",
2367
+ "source": {
2368
+ "type": "git",
2369
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
2370
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
2371
+ },
2372
+ "dist": {
2373
+ "type": "zip",
2374
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
2375
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
2376
+ "shasum": ""
2377
+ },
2378
+ "require": {
2379
+ "nikic/php-parser": "^4.6",
2380
+ "php": ">=7.3"
2381
+ },
2382
+ "require-dev": {
2383
+ "phpunit/phpunit": "^9.3"
2384
+ },
2385
+ "type": "library",
2386
+ "extra": {
2387
+ "branch-alias": {
2388
+ "dev-master": "1.0-dev"
2389
+ }
2390
+ },
2391
+ "autoload": {
2392
+ "classmap": [
2393
+ "src/"
2394
+ ]
2395
+ },
2396
+ "notification-url": "https://packagist.org/downloads/",
2397
+ "license": [
2398
+ "BSD-3-Clause"
2399
+ ],
2400
+ "authors": [
2401
+ {
2402
+ "name": "Sebastian Bergmann",
2403
+ "email": "sebastian@phpunit.de",
2404
+ "role": "lead"
2405
+ }
2406
+ ],
2407
+ "description": "Library for counting the lines of code in PHP source code",
2408
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
2409
+ "support": {
2410
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
2411
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
2412
+ },
2413
+ "funding": [
2414
+ {
2415
+ "url": "https://github.com/sebastianbergmann",
2416
+ "type": "github"
2417
+ }
2418
+ ],
2419
+ "time": "2020-11-28T06:42:11+00:00"
2420
+ },
2421
+ {
2422
+ "name": "sebastian/object-enumerator",
2423
+ "version": "4.0.4",
2424
+ "source": {
2425
+ "type": "git",
2426
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2427
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
2428
+ },
2429
+ "dist": {
2430
+ "type": "zip",
2431
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
2432
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
2433
+ "shasum": ""
2434
+ },
2435
+ "require": {
2436
+ "php": ">=7.3",
2437
+ "sebastian/object-reflector": "^2.0",
2438
+ "sebastian/recursion-context": "^4.0"
2439
+ },
2440
+ "require-dev": {
2441
+ "phpunit/phpunit": "^9.3"
2442
+ },
2443
+ "type": "library",
2444
+ "extra": {
2445
+ "branch-alias": {
2446
+ "dev-master": "4.0-dev"
2447
+ }
2448
+ },
2449
+ "autoload": {
2450
+ "classmap": [
2451
+ "src/"
2452
+ ]
2453
+ },
2454
+ "notification-url": "https://packagist.org/downloads/",
2455
+ "license": [
2456
+ "BSD-3-Clause"
2457
+ ],
2458
+ "authors": [
2459
+ {
2460
+ "name": "Sebastian Bergmann",
2461
+ "email": "sebastian@phpunit.de"
2462
+ }
2463
+ ],
2464
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2465
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2466
+ "support": {
2467
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2468
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
2469
+ },
2470
+ "funding": [
2471
+ {
2472
+ "url": "https://github.com/sebastianbergmann",
2473
+ "type": "github"
2474
+ }
2475
+ ],
2476
+ "time": "2020-10-26T13:12:34+00:00"
2477
+ },
2478
+ {
2479
+ "name": "sebastian/object-reflector",
2480
+ "version": "2.0.4",
2481
+ "source": {
2482
+ "type": "git",
2483
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
2484
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
2485
+ },
2486
+ "dist": {
2487
+ "type": "zip",
2488
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
2489
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
2490
+ "shasum": ""
2491
+ },
2492
+ "require": {
2493
+ "php": ">=7.3"
2494
+ },
2495
+ "require-dev": {
2496
+ "phpunit/phpunit": "^9.3"
2497
+ },
2498
+ "type": "library",
2499
+ "extra": {
2500
+ "branch-alias": {
2501
+ "dev-master": "2.0-dev"
2502
+ }
2503
+ },
2504
+ "autoload": {
2505
+ "classmap": [
2506
+ "src/"
2507
+ ]
2508
+ },
2509
+ "notification-url": "https://packagist.org/downloads/",
2510
+ "license": [
2511
+ "BSD-3-Clause"
2512
+ ],
2513
+ "authors": [
2514
+ {
2515
+ "name": "Sebastian Bergmann",
2516
+ "email": "sebastian@phpunit.de"
2517
+ }
2518
+ ],
2519
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
2520
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2521
+ "support": {
2522
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
2523
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
2524
+ },
2525
+ "funding": [
2526
+ {
2527
+ "url": "https://github.com/sebastianbergmann",
2528
+ "type": "github"
2529
+ }
2530
+ ],
2531
+ "time": "2020-10-26T13:14:26+00:00"
2532
+ },
2533
+ {
2534
+ "name": "sebastian/recursion-context",
2535
+ "version": "4.0.4",
2536
+ "source": {
2537
+ "type": "git",
2538
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
2539
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
2540
+ },
2541
+ "dist": {
2542
+ "type": "zip",
2543
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
2544
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
2545
+ "shasum": ""
2546
+ },
2547
+ "require": {
2548
+ "php": ">=7.3"
2549
+ },
2550
+ "require-dev": {
2551
+ "phpunit/phpunit": "^9.3"
2552
+ },
2553
+ "type": "library",
2554
+ "extra": {
2555
+ "branch-alias": {
2556
+ "dev-master": "4.0-dev"
2557
+ }
2558
+ },
2559
+ "autoload": {
2560
+ "classmap": [
2561
+ "src/"
2562
+ ]
2563
+ },
2564
+ "notification-url": "https://packagist.org/downloads/",
2565
+ "license": [
2566
+ "BSD-3-Clause"
2567
+ ],
2568
+ "authors": [
2569
+ {
2570
+ "name": "Sebastian Bergmann",
2571
+ "email": "sebastian@phpunit.de"
2572
+ },
2573
+ {
2574
+ "name": "Jeff Welch",
2575
+ "email": "whatthejeff@gmail.com"
2576
+ },
2577
+ {
2578
+ "name": "Adam Harvey",
2579
+ "email": "aharvey@php.net"
2580
+ }
2581
+ ],
2582
+ "description": "Provides functionality to recursively process PHP variables",
2583
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2584
+ "support": {
2585
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
2586
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
2587
+ },
2588
+ "funding": [
2589
+ {
2590
+ "url": "https://github.com/sebastianbergmann",
2591
+ "type": "github"
2592
+ }
2593
+ ],
2594
+ "time": "2020-10-26T13:17:30+00:00"
2595
+ },
2596
+ {
2597
+ "name": "sebastian/resource-operations",
2598
+ "version": "3.0.3",
2599
+ "source": {
2600
+ "type": "git",
2601
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
2602
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
2603
+ },
2604
+ "dist": {
2605
+ "type": "zip",
2606
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
2607
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
2608
+ "shasum": ""
2609
+ },
2610
+ "require": {
2611
+ "php": ">=7.3"
2612
+ },
2613
+ "require-dev": {
2614
+ "phpunit/phpunit": "^9.0"
2615
+ },
2616
+ "type": "library",
2617
+ "extra": {
2618
+ "branch-alias": {
2619
+ "dev-master": "3.0-dev"
2620
+ }
2621
+ },
2622
+ "autoload": {
2623
+ "classmap": [
2624
+ "src/"
2625
+ ]
2626
+ },
2627
+ "notification-url": "https://packagist.org/downloads/",
2628
+ "license": [
2629
+ "BSD-3-Clause"
2630
+ ],
2631
+ "authors": [
2632
+ {
2633
+ "name": "Sebastian Bergmann",
2634
+ "email": "sebastian@phpunit.de"
2635
+ }
2636
+ ],
2637
+ "description": "Provides a list of PHP built-in functions that operate on resources",
2638
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2639
+ "support": {
2640
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
2641
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
2642
+ },
2643
+ "funding": [
2644
+ {
2645
+ "url": "https://github.com/sebastianbergmann",
2646
+ "type": "github"
2647
+ }
2648
+ ],
2649
+ "time": "2020-09-28T06:45:17+00:00"
2650
+ },
2651
+ {
2652
+ "name": "sebastian/type",
2653
+ "version": "2.3.1",
2654
+ "source": {
2655
+ "type": "git",
2656
+ "url": "https://github.com/sebastianbergmann/type.git",
2657
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
2658
+ },
2659
+ "dist": {
2660
+ "type": "zip",
2661
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
2662
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
2663
+ "shasum": ""
2664
+ },
2665
+ "require": {
2666
+ "php": ">=7.3"
2667
+ },
2668
+ "require-dev": {
2669
+ "phpunit/phpunit": "^9.3"
2670
+ },
2671
+ "type": "library",
2672
+ "extra": {
2673
+ "branch-alias": {
2674
+ "dev-master": "2.3-dev"
2675
+ }
2676
+ },
2677
+ "autoload": {
2678
+ "classmap": [
2679
+ "src/"
2680
+ ]
2681
+ },
2682
+ "notification-url": "https://packagist.org/downloads/",
2683
+ "license": [
2684
+ "BSD-3-Clause"
2685
+ ],
2686
+ "authors": [
2687
+ {
2688
+ "name": "Sebastian Bergmann",
2689
+ "email": "sebastian@phpunit.de",
2690
+ "role": "lead"
2691
+ }
2692
+ ],
2693
+ "description": "Collection of value objects that represent the types of the PHP type system",
2694
+ "homepage": "https://github.com/sebastianbergmann/type",
2695
+ "support": {
2696
+ "issues": "https://github.com/sebastianbergmann/type/issues",
2697
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
2698
+ },
2699
+ "funding": [
2700
+ {
2701
+ "url": "https://github.com/sebastianbergmann",
2702
+ "type": "github"
2703
+ }
2704
+ ],
2705
+ "time": "2020-10-26T13:18:59+00:00"
2706
+ },
2707
+ {
2708
+ "name": "sebastian/version",
2709
+ "version": "3.0.2",
2710
+ "source": {
2711
+ "type": "git",
2712
+ "url": "https://github.com/sebastianbergmann/version.git",
2713
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
2714
+ },
2715
+ "dist": {
2716
+ "type": "zip",
2717
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
2718
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
2719
+ "shasum": ""
2720
+ },
2721
+ "require": {
2722
+ "php": ">=7.3"
2723
+ },
2724
+ "type": "library",
2725
+ "extra": {
2726
+ "branch-alias": {
2727
+ "dev-master": "3.0-dev"
2728
+ }
2729
+ },
2730
+ "autoload": {
2731
+ "classmap": [
2732
+ "src/"
2733
+ ]
2734
+ },
2735
+ "notification-url": "https://packagist.org/downloads/",
2736
+ "license": [
2737
+ "BSD-3-Clause"
2738
+ ],
2739
+ "authors": [
2740
+ {
2741
+ "name": "Sebastian Bergmann",
2742
+ "email": "sebastian@phpunit.de",
2743
+ "role": "lead"
2744
+ }
2745
+ ],
2746
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2747
+ "homepage": "https://github.com/sebastianbergmann/version",
2748
+ "support": {
2749
+ "issues": "https://github.com/sebastianbergmann/version/issues",
2750
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
2751
+ },
2752
+ "funding": [
2753
+ {
2754
+ "url": "https://github.com/sebastianbergmann",
2755
+ "type": "github"
2756
+ }
2757
+ ],
2758
+ "time": "2020-09-28T06:39:44+00:00"
2759
+ },
2760
+ {
2761
+ "name": "squizlabs/php_codesniffer",
2762
+ "version": "3.5.8",
2763
+ "source": {
2764
+ "type": "git",
2765
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
2766
+ "reference": "9d583721a7157ee997f235f327de038e7ea6dac4"
2767
+ },
2768
+ "dist": {
2769
+ "type": "zip",
2770
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4",
2771
+ "reference": "9d583721a7157ee997f235f327de038e7ea6dac4",
2772
+ "shasum": ""
2773
+ },
2774
+ "require": {
2775
+ "ext-simplexml": "*",
2776
+ "ext-tokenizer": "*",
2777
+ "ext-xmlwriter": "*",
2778
+ "php": ">=5.4.0"
2779
+ },
2780
+ "require-dev": {
2781
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
2782
+ },
2783
+ "bin": [
2784
+ "bin/phpcs",
2785
+ "bin/phpcbf"
2786
+ ],
2787
+ "type": "library",
2788
+ "extra": {
2789
+ "branch-alias": {
2790
+ "dev-master": "3.x-dev"
2791
+ }
2792
+ },
2793
+ "notification-url": "https://packagist.org/downloads/",
2794
+ "license": [
2795
+ "BSD-3-Clause"
2796
+ ],
2797
+ "authors": [
2798
+ {
2799
+ "name": "Greg Sherwood",
2800
+ "role": "lead"
2801
+ }
2802
+ ],
2803
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
2804
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
2805
+ "keywords": [
2806
+ "phpcs",
2807
+ "standards"
2808
+ ],
2809
+ "support": {
2810
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
2811
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
2812
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
2813
+ },
2814
+ "time": "2020-10-23T02:01:07+00:00"
2815
+ },
2816
+ {
2817
+ "name": "symfony/console",
2818
+ "version": "v5.2.0",
2819
+ "source": {
2820
+ "type": "git",
2821
+ "url": "https://github.com/symfony/console.git",
2822
+ "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b"
2823
+ },
2824
+ "dist": {
2825
+ "type": "zip",
2826
+ "url": "https://api.github.com/repos/symfony/console/zipball/3e0564fb08d44a98bd5f1960204c958e57bd586b",
2827
+ "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b",
2828
+ "shasum": ""
2829
+ },
2830
+ "require": {
2831
+ "php": ">=7.2.5",
2832
+ "symfony/polyfill-mbstring": "~1.0",
2833
+ "symfony/polyfill-php73": "^1.8",
2834
+ "symfony/polyfill-php80": "^1.15",
2835
+ "symfony/service-contracts": "^1.1|^2",
2836
+ "symfony/string": "^5.1"
2837
+ },
2838
+ "conflict": {
2839
+ "symfony/dependency-injection": "<4.4",
2840
+ "symfony/dotenv": "<5.1",
2841
+ "symfony/event-dispatcher": "<4.4",
2842
+ "symfony/lock": "<4.4",
2843
+ "symfony/process": "<4.4"
2844
+ },
2845
+ "provide": {
2846
+ "psr/log-implementation": "1.0"
2847
+ },
2848
+ "require-dev": {
2849
+ "psr/log": "~1.0",
2850
+ "symfony/config": "^4.4|^5.0",
2851
+ "symfony/dependency-injection": "^4.4|^5.0",
2852
+ "symfony/event-dispatcher": "^4.4|^5.0",
2853
+ "symfony/lock": "^4.4|^5.0",
2854
+ "symfony/process": "^4.4|^5.0",
2855
+ "symfony/var-dumper": "^4.4|^5.0"
2856
+ },
2857
+ "suggest": {
2858
+ "psr/log": "For using the console logger",
2859
+ "symfony/event-dispatcher": "",
2860
+ "symfony/lock": "",
2861
+ "symfony/process": ""
2862
+ },
2863
+ "type": "library",
2864
+ "autoload": {
2865
+ "psr-4": {
2866
+ "Symfony\\Component\\Console\\": ""
2867
+ },
2868
+ "exclude-from-classmap": [
2869
+ "/Tests/"
2870
+ ]
2871
+ },
2872
+ "notification-url": "https://packagist.org/downloads/",
2873
+ "license": [
2874
+ "MIT"
2875
+ ],
2876
+ "authors": [
2877
+ {
2878
+ "name": "Fabien Potencier",
2879
+ "email": "fabien@symfony.com"
2880
+ },
2881
+ {
2882
+ "name": "Symfony Community",
2883
+ "homepage": "https://symfony.com/contributors"
2884
+ }
2885
+ ],
2886
+ "description": "Symfony Console Component",
2887
+ "homepage": "https://symfony.com",
2888
+ "keywords": [
2889
+ "cli",
2890
+ "command line",
2891
+ "console",
2892
+ "terminal"
2893
+ ],
2894
+ "support": {
2895
+ "source": "https://github.com/symfony/console/tree/v5.2.0"
2896
+ },
2897
+ "funding": [
2898
+ {
2899
+ "url": "https://symfony.com/sponsor",
2900
+ "type": "custom"
2901
+ },
2902
+ {
2903
+ "url": "https://github.com/fabpot",
2904
+ "type": "github"
2905
+ },
2906
+ {
2907
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2908
+ "type": "tidelift"
2909
+ }
2910
+ ],
2911
+ "time": "2020-11-28T11:24:18+00:00"
2912
+ },
2913
+ {
2914
+ "name": "symfony/css-selector",
2915
+ "version": "v5.2.0",
2916
+ "source": {
2917
+ "type": "git",
2918
+ "url": "https://github.com/symfony/css-selector.git",
2919
+ "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256"
2920
+ },
2921
+ "dist": {
2922
+ "type": "zip",
2923
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256",
2924
+ "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256",
2925
+ "shasum": ""
2926
+ },
2927
+ "require": {
2928
+ "php": ">=7.2.5"
2929
+ },
2930
+ "type": "library",
2931
+ "autoload": {
2932
+ "psr-4": {
2933
+ "Symfony\\Component\\CssSelector\\": ""
2934
+ },
2935
+ "exclude-from-classmap": [
2936
+ "/Tests/"
2937
+ ]
2938
+ },
2939
+ "notification-url": "https://packagist.org/downloads/",
2940
+ "license": [
2941
+ "MIT"
2942
+ ],
2943
+ "authors": [
2944
+ {
2945
+ "name": "Fabien Potencier",
2946
+ "email": "fabien@symfony.com"
2947
+ },
2948
+ {
2949
+ "name": "Jean-François Simon",
2950
+ "email": "jeanfrancois.simon@sensiolabs.com"
2951
+ },
2952
+ {
2953
+ "name": "Symfony Community",
2954
+ "homepage": "https://symfony.com/contributors"
2955
+ }
2956
+ ],
2957
+ "description": "Symfony CssSelector Component",
2958
+ "homepage": "https://symfony.com",
2959
+ "support": {
2960
+ "source": "https://github.com/symfony/css-selector/tree/v5.2.0"
2961
+ },
2962
+ "funding": [
2963
+ {
2964
+ "url": "https://symfony.com/sponsor",
2965
+ "type": "custom"
2966
+ },
2967
+ {
2968
+ "url": "https://github.com/fabpot",
2969
+ "type": "github"
2970
+ },
2971
+ {
2972
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2973
+ "type": "tidelift"
2974
+ }
2975
+ ],
2976
+ "time": "2020-10-28T21:31:18+00:00"
2977
+ },
2978
+ {
2979
+ "name": "symfony/deprecation-contracts",
2980
+ "version": "v2.2.0",
2981
+ "source": {
2982
+ "type": "git",
2983
+ "url": "https://github.com/symfony/deprecation-contracts.git",
2984
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
2985
+ },
2986
+ "dist": {
2987
+ "type": "zip",
2988
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
2989
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
2990
+ "shasum": ""
2991
+ },
2992
+ "require": {
2993
+ "php": ">=7.1"
2994
+ },
2995
+ "type": "library",
2996
+ "extra": {
2997
+ "branch-alias": {
2998
+ "dev-master": "2.2-dev"
2999
+ },
3000
+ "thanks": {
3001
+ "name": "symfony/contracts",
3002
+ "url": "https://github.com/symfony/contracts"
3003
+ }
3004
+ },
3005
+ "autoload": {
3006
+ "files": [
3007
+ "function.php"
3008
+ ]
3009
+ },
3010
+ "notification-url": "https://packagist.org/downloads/",
3011
+ "license": [
3012
+ "MIT"
3013
+ ],
3014
+ "authors": [
3015
+ {
3016
+ "name": "Nicolas Grekas",
3017
+ "email": "p@tchwork.com"
3018
+ },
3019
+ {
3020
+ "name": "Symfony Community",
3021
+ "homepage": "https://symfony.com/contributors"
3022
+ }
3023
+ ],
3024
+ "description": "A generic function and convention to trigger deprecation notices",
3025
+ "homepage": "https://symfony.com",
3026
+ "support": {
3027
+ "source": "https://github.com/symfony/deprecation-contracts/tree/master"
3028
+ },
3029
+ "funding": [
3030
+ {
3031
+ "url": "https://symfony.com/sponsor",
3032
+ "type": "custom"
3033
+ },
3034
+ {
3035
+ "url": "https://github.com/fabpot",
3036
+ "type": "github"
3037
+ },
3038
+ {
3039
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3040
+ "type": "tidelift"
3041
+ }
3042
+ ],
3043
+ "time": "2020-09-07T11:33:47+00:00"
3044
+ },
3045
+ {
3046
+ "name": "symfony/event-dispatcher",
3047
+ "version": "v5.2.0",
3048
+ "source": {
3049
+ "type": "git",
3050
+ "url": "https://github.com/symfony/event-dispatcher.git",
3051
+ "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c"
3052
+ },
3053
+ "dist": {
3054
+ "type": "zip",
3055
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/aa13a09811e6d2ad43f8fb336bebdb7691d85d3c",
3056
+ "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c",
3057
+ "shasum": ""
3058
+ },
3059
+ "require": {
3060
+ "php": ">=7.2.5",
3061
+ "symfony/deprecation-contracts": "^2.1",
3062
+ "symfony/event-dispatcher-contracts": "^2",
3063
+ "symfony/polyfill-php80": "^1.15"
3064
+ },
3065
+ "conflict": {
3066
+ "symfony/dependency-injection": "<4.4"
3067
+ },
3068
+ "provide": {
3069
+ "psr/event-dispatcher-implementation": "1.0",
3070
+ "symfony/event-dispatcher-implementation": "2.0"
3071
+ },
3072
+ "require-dev": {
3073
+ "psr/log": "~1.0",
3074
+ "symfony/config": "^4.4|^5.0",
3075
+ "symfony/dependency-injection": "^4.4|^5.0",
3076
+ "symfony/error-handler": "^4.4|^5.0",
3077
+ "symfony/expression-language": "^4.4|^5.0",
3078
+ "symfony/http-foundation": "^4.4|^5.0",
3079
+ "symfony/service-contracts": "^1.1|^2",
3080
+ "symfony/stopwatch": "^4.4|^5.0"
3081
+ },
3082
+ "suggest": {
3083
+ "symfony/dependency-injection": "",
3084
+ "symfony/http-kernel": ""
3085
+ },
3086
+ "type": "library",
3087
+ "autoload": {
3088
+ "psr-4": {
3089
+ "Symfony\\Component\\EventDispatcher\\": ""
3090
+ },
3091
+ "exclude-from-classmap": [
3092
+ "/Tests/"
3093
+ ]
3094
+ },
3095
+ "notification-url": "https://packagist.org/downloads/",
3096
+ "license": [
3097
+ "MIT"
3098
+ ],
3099
+ "authors": [
3100
+ {
3101
+ "name": "Fabien Potencier",
3102
+ "email": "fabien@symfony.com"
3103
+ },
3104
+ {
3105
+ "name": "Symfony Community",
3106
+ "homepage": "https://symfony.com/contributors"
3107
+ }
3108
+ ],
3109
+ "description": "Symfony EventDispatcher Component",
3110
+ "homepage": "https://symfony.com",
3111
+ "support": {
3112
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.0"
3113
+ },
3114
+ "funding": [
3115
+ {
3116
+ "url": "https://symfony.com/sponsor",
3117
+ "type": "custom"
3118
+ },
3119
+ {
3120
+ "url": "https://github.com/fabpot",
3121
+ "type": "github"
3122
+ },
3123
+ {
3124
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3125
+ "type": "tidelift"
3126
+ }
3127
+ ],
3128
+ "time": "2020-11-01T16:14:45+00:00"
3129
+ },
3130
+ {
3131
+ "name": "symfony/event-dispatcher-contracts",
3132
+ "version": "v2.2.0",
3133
+ "source": {
3134
+ "type": "git",
3135
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
3136
+ "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2"
3137
+ },
3138
+ "dist": {
3139
+ "type": "zip",
3140
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2",
3141
+ "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2",
3142
+ "shasum": ""
3143
+ },
3144
+ "require": {
3145
+ "php": ">=7.2.5",
3146
+ "psr/event-dispatcher": "^1"
3147
+ },
3148
+ "suggest": {
3149
+ "symfony/event-dispatcher-implementation": ""
3150
+ },
3151
+ "type": "library",
3152
+ "extra": {
3153
+ "branch-alias": {
3154
+ "dev-master": "2.2-dev"
3155
+ },
3156
+ "thanks": {
3157
+ "name": "symfony/contracts",
3158
+ "url": "https://github.com/symfony/contracts"
3159
+ }
3160
+ },
3161
+ "autoload": {
3162
+ "psr-4": {
3163
+ "Symfony\\Contracts\\EventDispatcher\\": ""
3164
+ }
3165
+ },
3166
+ "notification-url": "https://packagist.org/downloads/",
3167
+ "license": [
3168
+ "MIT"
3169
+ ],
3170
+ "authors": [
3171
+ {
3172
+ "name": "Nicolas Grekas",
3173
+ "email": "p@tchwork.com"
3174
+ },
3175
+ {
3176
+ "name": "Symfony Community",
3177
+ "homepage": "https://symfony.com/contributors"
3178
+ }
3179
+ ],
3180
+ "description": "Generic abstractions related to dispatching event",
3181
+ "homepage": "https://symfony.com",
3182
+ "keywords": [
3183
+ "abstractions",
3184
+ "contracts",
3185
+ "decoupling",
3186
+ "interfaces",
3187
+ "interoperability",
3188
+ "standards"
3189
+ ],
3190
+ "support": {
3191
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0"
3192
+ },
3193
+ "funding": [
3194
+ {
3195
+ "url": "https://symfony.com/sponsor",
3196
+ "type": "custom"
3197
+ },
3198
+ {
3199
+ "url": "https://github.com/fabpot",
3200
+ "type": "github"
3201
+ },
3202
+ {
3203
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3204
+ "type": "tidelift"
3205
+ }
3206
+ ],
3207
+ "time": "2020-09-07T11:33:47+00:00"
3208
+ },
3209
+ {
3210
+ "name": "symfony/finder",
3211
+ "version": "v5.2.0",
3212
+ "source": {
3213
+ "type": "git",
3214
+ "url": "https://github.com/symfony/finder.git",
3215
+ "reference": "fd8305521692f27eae3263895d1ef1571c71a78d"
3216
+ },
3217
+ "dist": {
3218
+ "type": "zip",
3219
+ "url": "https://api.github.com/repos/symfony/finder/zipball/fd8305521692f27eae3263895d1ef1571c71a78d",
3220
+ "reference": "fd8305521692f27eae3263895d1ef1571c71a78d",
3221
+ "shasum": ""
3222
+ },
3223
+ "require": {
3224
+ "php": ">=7.2.5"
3225
+ },
3226
+ "type": "library",
3227
+ "autoload": {
3228
+ "psr-4": {
3229
+ "Symfony\\Component\\Finder\\": ""
3230
+ },
3231
+ "exclude-from-classmap": [
3232
+ "/Tests/"
3233
+ ]
3234
+ },
3235
+ "notification-url": "https://packagist.org/downloads/",
3236
+ "license": [
3237
+ "MIT"
3238
+ ],
3239
+ "authors": [
3240
+ {
3241
+ "name": "Fabien Potencier",
3242
+ "email": "fabien@symfony.com"
3243
+ },
3244
+ {
3245
+ "name": "Symfony Community",
3246
+ "homepage": "https://symfony.com/contributors"
3247
+ }
3248
+ ],
3249
+ "description": "Symfony Finder Component",
3250
+ "homepage": "https://symfony.com",
3251
+ "support": {
3252
+ "source": "https://github.com/symfony/finder/tree/v5.2.0"
3253
+ },
3254
+ "funding": [
3255
+ {
3256
+ "url": "https://symfony.com/sponsor",
3257
+ "type": "custom"
3258
+ },
3259
+ {
3260
+ "url": "https://github.com/fabpot",
3261
+ "type": "github"
3262
+ },
3263
+ {
3264
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3265
+ "type": "tidelift"
3266
+ }
3267
+ ],
3268
+ "time": "2020-11-18T09:42:36+00:00"
3269
+ },
3270
+ {
3271
+ "name": "symfony/polyfill-ctype",
3272
+ "version": "v1.20.0",
3273
+ "source": {
3274
+ "type": "git",
3275
+ "url": "https://github.com/symfony/polyfill-ctype.git",
3276
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
3277
+ },
3278
+ "dist": {
3279
+ "type": "zip",
3280
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
3281
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
3282
+ "shasum": ""
3283
+ },
3284
+ "require": {
3285
+ "php": ">=7.1"
3286
+ },
3287
+ "suggest": {
3288
+ "ext-ctype": "For best performance"
3289
+ },
3290
+ "type": "library",
3291
+ "extra": {
3292
+ "branch-alias": {
3293
+ "dev-main": "1.20-dev"
3294
+ },
3295
+ "thanks": {
3296
+ "name": "symfony/polyfill",
3297
+ "url": "https://github.com/symfony/polyfill"
3298
+ }
3299
+ },
3300
+ "autoload": {
3301
+ "psr-4": {
3302
+ "Symfony\\Polyfill\\Ctype\\": ""
3303
+ },
3304
+ "files": [
3305
+ "bootstrap.php"
3306
+ ]
3307
+ },
3308
+ "notification-url": "https://packagist.org/downloads/",
3309
+ "license": [
3310
+ "MIT"
3311
+ ],
3312
+ "authors": [
3313
+ {
3314
+ "name": "Gert de Pagter",
3315
+ "email": "BackEndTea@gmail.com"
3316
+ },
3317
+ {
3318
+ "name": "Symfony Community",
3319
+ "homepage": "https://symfony.com/contributors"
3320
+ }
3321
+ ],
3322
+ "description": "Symfony polyfill for ctype functions",
3323
+ "homepage": "https://symfony.com",
3324
+ "keywords": [
3325
+ "compatibility",
3326
+ "ctype",
3327
+ "polyfill",
3328
+ "portable"
3329
+ ],
3330
+ "support": {
3331
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0"
3332
+ },
3333
+ "funding": [
3334
+ {
3335
+ "url": "https://symfony.com/sponsor",
3336
+ "type": "custom"
3337
+ },
3338
+ {
3339
+ "url": "https://github.com/fabpot",
3340
+ "type": "github"
3341
+ },
3342
+ {
3343
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3344
+ "type": "tidelift"
3345
+ }
3346
+ ],
3347
+ "time": "2020-10-23T14:02:19+00:00"
3348
+ },
3349
+ {
3350
+ "name": "symfony/polyfill-intl-grapheme",
3351
+ "version": "v1.20.0",
3352
+ "source": {
3353
+ "type": "git",
3354
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
3355
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c"
3356
+ },
3357
+ "dist": {
3358
+ "type": "zip",
3359
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
3360
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
3361
+ "shasum": ""
3362
+ },
3363
+ "require": {
3364
+ "php": ">=7.1"
3365
+ },
3366
+ "suggest": {
3367
+ "ext-intl": "For best performance"
3368
+ },
3369
+ "type": "library",
3370
+ "extra": {
3371
+ "branch-alias": {
3372
+ "dev-main": "1.20-dev"
3373
+ },
3374
+ "thanks": {
3375
+ "name": "symfony/polyfill",
3376
+ "url": "https://github.com/symfony/polyfill"
3377
+ }
3378
+ },
3379
+ "autoload": {
3380
+ "psr-4": {
3381
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
3382
+ },
3383
+ "files": [
3384
+ "bootstrap.php"
3385
+ ]
3386
+ },
3387
+ "notification-url": "https://packagist.org/downloads/",
3388
+ "license": [
3389
+ "MIT"
3390
+ ],
3391
+ "authors": [
3392
+ {
3393
+ "name": "Nicolas Grekas",
3394
+ "email": "p@tchwork.com"
3395
+ },
3396
+ {
3397
+ "name": "Symfony Community",
3398
+ "homepage": "https://symfony.com/contributors"
3399
+ }
3400
+ ],
3401
+ "description": "Symfony polyfill for intl's grapheme_* functions",
3402
+ "homepage": "https://symfony.com",
3403
+ "keywords": [
3404
+ "compatibility",
3405
+ "grapheme",
3406
+ "intl",
3407
+ "polyfill",
3408
+ "portable",
3409
+ "shim"
3410
+ ],
3411
+ "support": {
3412
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0"
3413
+ },
3414
+ "funding": [
3415
+ {
3416
+ "url": "https://symfony.com/sponsor",
3417
+ "type": "custom"
3418
+ },
3419
+ {
3420
+ "url": "https://github.com/fabpot",
3421
+ "type": "github"
3422
+ },
3423
+ {
3424
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3425
+ "type": "tidelift"
3426
+ }
3427
+ ],
3428
+ "time": "2020-10-23T14:02:19+00:00"
3429
+ },
3430
+ {
3431
+ "name": "symfony/polyfill-intl-normalizer",
3432
+ "version": "v1.20.0",
3433
+ "source": {
3434
+ "type": "git",
3435
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
3436
+ "reference": "727d1096295d807c309fb01a851577302394c897"
3437
+ },
3438
+ "dist": {
3439
+ "type": "zip",
3440
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
3441
+ "reference": "727d1096295d807c309fb01a851577302394c897",
3442
+ "shasum": ""
3443
+ },
3444
+ "require": {
3445
+ "php": ">=7.1"
3446
+ },
3447
+ "suggest": {
3448
+ "ext-intl": "For best performance"
3449
+ },
3450
+ "type": "library",
3451
+ "extra": {
3452
+ "branch-alias": {
3453
+ "dev-main": "1.20-dev"
3454
+ },
3455
+ "thanks": {
3456
+ "name": "symfony/polyfill",
3457
+ "url": "https://github.com/symfony/polyfill"
3458
+ }
3459
+ },
3460
+ "autoload": {
3461
+ "psr-4": {
3462
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
3463
+ },
3464
+ "files": [
3465
+ "bootstrap.php"
3466
+ ],
3467
+ "classmap": [
3468
+ "Resources/stubs"
3469
+ ]
3470
+ },
3471
+ "notification-url": "https://packagist.org/downloads/",
3472
+ "license": [
3473
+ "MIT"
3474
+ ],
3475
+ "authors": [
3476
+ {
3477
+ "name": "Nicolas Grekas",
3478
+ "email": "p@tchwork.com"
3479
+ },
3480
+ {
3481
+ "name": "Symfony Community",
3482
+ "homepage": "https://symfony.com/contributors"
3483
+ }
3484
+ ],
3485
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
3486
+ "homepage": "https://symfony.com",
3487
+ "keywords": [
3488
+ "compatibility",
3489
+ "intl",
3490
+ "normalizer",
3491
+ "polyfill",
3492
+ "portable",
3493
+ "shim"
3494
+ ],
3495
+ "support": {
3496
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0"
3497
+ },
3498
+ "funding": [
3499
+ {
3500
+ "url": "https://symfony.com/sponsor",
3501
+ "type": "custom"
3502
+ },
3503
+ {
3504
+ "url": "https://github.com/fabpot",
3505
+ "type": "github"
3506
+ },
3507
+ {
3508
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3509
+ "type": "tidelift"
3510
+ }
3511
+ ],
3512
+ "time": "2020-10-23T14:02:19+00:00"
3513
+ },
3514
+ {
3515
+ "name": "symfony/polyfill-mbstring",
3516
+ "version": "v1.20.0",
3517
+ "source": {
3518
+ "type": "git",
3519
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
3520
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
3521
+ },
3522
+ "dist": {
3523
+ "type": "zip",
3524
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
3525
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
3526
+ "shasum": ""
3527
+ },
3528
+ "require": {
3529
+ "php": ">=7.1"
3530
+ },
3531
+ "suggest": {
3532
+ "ext-mbstring": "For best performance"
3533
+ },
3534
+ "type": "library",
3535
+ "extra": {
3536
+ "branch-alias": {
3537
+ "dev-main": "1.20-dev"
3538
+ },
3539
+ "thanks": {
3540
+ "name": "symfony/polyfill",
3541
+ "url": "https://github.com/symfony/polyfill"
3542
+ }
3543
+ },
3544
+ "autoload": {
3545
+ "psr-4": {
3546
+ "Symfony\\Polyfill\\Mbstring\\": ""
3547
+ },
3548
+ "files": [
3549
+ "bootstrap.php"
3550
+ ]
3551
+ },
3552
+ "notification-url": "https://packagist.org/downloads/",
3553
+ "license": [
3554
+ "MIT"
3555
+ ],
3556
+ "authors": [
3557
+ {
3558
+ "name": "Nicolas Grekas",
3559
+ "email": "p@tchwork.com"
3560
+ },
3561
+ {
3562
+ "name": "Symfony Community",
3563
+ "homepage": "https://symfony.com/contributors"
3564
+ }
3565
+ ],
3566
+ "description": "Symfony polyfill for the Mbstring extension",
3567
+ "homepage": "https://symfony.com",
3568
+ "keywords": [
3569
+ "compatibility",
3570
+ "mbstring",
3571
+ "polyfill",
3572
+ "portable",
3573
+ "shim"
3574
+ ],
3575
+ "support": {
3576
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
3577
+ },
3578
+ "funding": [
3579
+ {
3580
+ "url": "https://symfony.com/sponsor",
3581
+ "type": "custom"
3582
+ },
3583
+ {
3584
+ "url": "https://github.com/fabpot",
3585
+ "type": "github"
3586
+ },
3587
+ {
3588
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3589
+ "type": "tidelift"
3590
+ }
3591
+ ],
3592
+ "time": "2020-10-23T14:02:19+00:00"
3593
+ },
3594
+ {
3595
+ "name": "symfony/polyfill-php73",
3596
+ "version": "v1.20.0",
3597
+ "source": {
3598
+ "type": "git",
3599
+ "url": "https://github.com/symfony/polyfill-php73.git",
3600
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
3601
+ },
3602
+ "dist": {
3603
+ "type": "zip",
3604
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
3605
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
3606
+ "shasum": ""
3607
+ },
3608
+ "require": {
3609
+ "php": ">=7.1"
3610
+ },
3611
+ "type": "library",
3612
+ "extra": {
3613
+ "branch-alias": {
3614
+ "dev-main": "1.20-dev"
3615
+ },
3616
+ "thanks": {
3617
+ "name": "symfony/polyfill",
3618
+ "url": "https://github.com/symfony/polyfill"
3619
+ }
3620
+ },
3621
+ "autoload": {
3622
+ "psr-4": {
3623
+ "Symfony\\Polyfill\\Php73\\": ""
3624
+ },
3625
+ "files": [
3626
+ "bootstrap.php"
3627
+ ],
3628
+ "classmap": [
3629
+ "Resources/stubs"
3630
+ ]
3631
+ },
3632
+ "notification-url": "https://packagist.org/downloads/",
3633
+ "license": [
3634
+ "MIT"
3635
+ ],
3636
+ "authors": [
3637
+ {
3638
+ "name": "Nicolas Grekas",
3639
+ "email": "p@tchwork.com"
3640
+ },
3641
+ {
3642
+ "name": "Symfony Community",
3643
+ "homepage": "https://symfony.com/contributors"
3644
+ }
3645
+ ],
3646
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
3647
+ "homepage": "https://symfony.com",
3648
+ "keywords": [
3649
+ "compatibility",
3650
+ "polyfill",
3651
+ "portable",
3652
+ "shim"
3653
+ ],
3654
+ "support": {
3655
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0"
3656
+ },
3657
+ "funding": [
3658
+ {
3659
+ "url": "https://symfony.com/sponsor",
3660
+ "type": "custom"
3661
+ },
3662
+ {
3663
+ "url": "https://github.com/fabpot",
3664
+ "type": "github"
3665
+ },
3666
+ {
3667
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3668
+ "type": "tidelift"
3669
+ }
3670
+ ],
3671
+ "time": "2020-10-23T14:02:19+00:00"
3672
+ },
3673
+ {
3674
+ "name": "symfony/polyfill-php80",
3675
+ "version": "v1.20.0",
3676
+ "source": {
3677
+ "type": "git",
3678
+ "url": "https://github.com/symfony/polyfill-php80.git",
3679
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
3680
+ },
3681
+ "dist": {
3682
+ "type": "zip",
3683
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
3684
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
3685
+ "shasum": ""
3686
+ },
3687
+ "require": {
3688
+ "php": ">=7.1"
3689
+ },
3690
+ "type": "library",
3691
+ "extra": {
3692
+ "branch-alias": {
3693
+ "dev-main": "1.20-dev"
3694
+ },
3695
+ "thanks": {
3696
+ "name": "symfony/polyfill",
3697
+ "url": "https://github.com/symfony/polyfill"
3698
+ }
3699
+ },
3700
+ "autoload": {
3701
+ "psr-4": {
3702
+ "Symfony\\Polyfill\\Php80\\": ""
3703
+ },
3704
+ "files": [
3705
+ "bootstrap.php"
3706
+ ],
3707
+ "classmap": [
3708
+ "Resources/stubs"
3709
+ ]
3710
+ },
3711
+ "notification-url": "https://packagist.org/downloads/",
3712
+ "license": [
3713
+ "MIT"
3714
+ ],
3715
+ "authors": [
3716
+ {
3717
+ "name": "Ion Bazan",
3718
+ "email": "ion.bazan@gmail.com"
3719
+ },
3720
+ {
3721
+ "name": "Nicolas Grekas",
3722
+ "email": "p@tchwork.com"
3723
+ },
3724
+ {
3725
+ "name": "Symfony Community",
3726
+ "homepage": "https://symfony.com/contributors"
3727
+ }
3728
+ ],
3729
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
3730
+ "homepage": "https://symfony.com",
3731
+ "keywords": [
3732
+ "compatibility",
3733
+ "polyfill",
3734
+ "portable",
3735
+ "shim"
3736
+ ],
3737
+ "support": {
3738
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
3739
+ },
3740
+ "funding": [
3741
+ {
3742
+ "url": "https://symfony.com/sponsor",
3743
+ "type": "custom"
3744
+ },
3745
+ {
3746
+ "url": "https://github.com/fabpot",
3747
+ "type": "github"
3748
+ },
3749
+ {
3750
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3751
+ "type": "tidelift"
3752
+ }
3753
+ ],
3754
+ "time": "2020-10-23T14:02:19+00:00"
3755
+ },
3756
+ {
3757
+ "name": "symfony/service-contracts",
3758
+ "version": "v2.2.0",
3759
+ "source": {
3760
+ "type": "git",
3761
+ "url": "https://github.com/symfony/service-contracts.git",
3762
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
3763
+ },
3764
+ "dist": {
3765
+ "type": "zip",
3766
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
3767
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
3768
+ "shasum": ""
3769
+ },
3770
+ "require": {
3771
+ "php": ">=7.2.5",
3772
+ "psr/container": "^1.0"
3773
+ },
3774
+ "suggest": {
3775
+ "symfony/service-implementation": ""
3776
+ },
3777
+ "type": "library",
3778
+ "extra": {
3779
+ "branch-alias": {
3780
+ "dev-master": "2.2-dev"
3781
+ },
3782
+ "thanks": {
3783
+ "name": "symfony/contracts",
3784
+ "url": "https://github.com/symfony/contracts"
3785
+ }
3786
+ },
3787
+ "autoload": {
3788
+ "psr-4": {
3789
+ "Symfony\\Contracts\\Service\\": ""
3790
+ }
3791
+ },
3792
+ "notification-url": "https://packagist.org/downloads/",
3793
+ "license": [
3794
+ "MIT"
3795
+ ],
3796
+ "authors": [
3797
+ {
3798
+ "name": "Nicolas Grekas",
3799
+ "email": "p@tchwork.com"
3800
+ },
3801
+ {
3802
+ "name": "Symfony Community",
3803
+ "homepage": "https://symfony.com/contributors"
3804
+ }
3805
+ ],
3806
+ "description": "Generic abstractions related to writing services",
3807
+ "homepage": "https://symfony.com",
3808
+ "keywords": [
3809
+ "abstractions",
3810
+ "contracts",
3811
+ "decoupling",
3812
+ "interfaces",
3813
+ "interoperability",
3814
+ "standards"
3815
+ ],
3816
+ "support": {
3817
+ "source": "https://github.com/symfony/service-contracts/tree/master"
3818
+ },
3819
+ "funding": [
3820
+ {
3821
+ "url": "https://symfony.com/sponsor",
3822
+ "type": "custom"
3823
+ },
3824
+ {
3825
+ "url": "https://github.com/fabpot",
3826
+ "type": "github"
3827
+ },
3828
+ {
3829
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3830
+ "type": "tidelift"
3831
+ }
3832
+ ],
3833
+ "time": "2020-09-07T11:33:47+00:00"
3834
+ },
3835
+ {
3836
+ "name": "symfony/string",
3837
+ "version": "v5.2.0",
3838
+ "source": {
3839
+ "type": "git",
3840
+ "url": "https://github.com/symfony/string.git",
3841
+ "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242"
3842
+ },
3843
+ "dist": {
3844
+ "type": "zip",
3845
+ "url": "https://api.github.com/repos/symfony/string/zipball/40e975edadd4e32cd16f3753b3bad65d9ac48242",
3846
+ "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242",
3847
+ "shasum": ""
3848
+ },
3849
+ "require": {
3850
+ "php": ">=7.2.5",
3851
+ "symfony/polyfill-ctype": "~1.8",
3852
+ "symfony/polyfill-intl-grapheme": "~1.0",
3853
+ "symfony/polyfill-intl-normalizer": "~1.0",
3854
+ "symfony/polyfill-mbstring": "~1.0",
3855
+ "symfony/polyfill-php80": "~1.15"
3856
+ },
3857
+ "require-dev": {
3858
+ "symfony/error-handler": "^4.4|^5.0",
3859
+ "symfony/http-client": "^4.4|^5.0",
3860
+ "symfony/translation-contracts": "^1.1|^2",
3861
+ "symfony/var-exporter": "^4.4|^5.0"
3862
+ },
3863
+ "type": "library",
3864
+ "autoload": {
3865
+ "psr-4": {
3866
+ "Symfony\\Component\\String\\": ""
3867
+ },
3868
+ "files": [
3869
+ "Resources/functions.php"
3870
+ ],
3871
+ "exclude-from-classmap": [
3872
+ "/Tests/"
3873
+ ]
3874
+ },
3875
+ "notification-url": "https://packagist.org/downloads/",
3876
+ "license": [
3877
+ "MIT"
3878
+ ],
3879
+ "authors": [
3880
+ {
3881
+ "name": "Nicolas Grekas",
3882
+ "email": "p@tchwork.com"
3883
+ },
3884
+ {
3885
+ "name": "Symfony Community",
3886
+ "homepage": "https://symfony.com/contributors"
3887
+ }
3888
+ ],
3889
+ "description": "Symfony String component",
3890
+ "homepage": "https://symfony.com",
3891
+ "keywords": [
3892
+ "grapheme",
3893
+ "i18n",
3894
+ "string",
3895
+ "unicode",
3896
+ "utf-8",
3897
+ "utf8"
3898
+ ],
3899
+ "support": {
3900
+ "source": "https://github.com/symfony/string/tree/v5.2.0"
3901
+ },
3902
+ "funding": [
3903
+ {
3904
+ "url": "https://symfony.com/sponsor",
3905
+ "type": "custom"
3906
+ },
3907
+ {
3908
+ "url": "https://github.com/fabpot",
3909
+ "type": "github"
3910
+ },
3911
+ {
3912
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3913
+ "type": "tidelift"
3914
+ }
3915
+ ],
3916
+ "time": "2020-10-24T12:08:07+00:00"
3917
+ },
3918
+ {
3919
+ "name": "symfony/yaml",
3920
+ "version": "v5.2.0",
3921
+ "source": {
3922
+ "type": "git",
3923
+ "url": "https://github.com/symfony/yaml.git",
3924
+ "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598"
3925
+ },
3926
+ "dist": {
3927
+ "type": "zip",
3928
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598",
3929
+ "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598",
3930
+ "shasum": ""
3931
+ },
3932
+ "require": {
3933
+ "php": ">=7.2.5",
3934
+ "symfony/deprecation-contracts": "^2.1",
3935
+ "symfony/polyfill-ctype": "~1.8"
3936
+ },
3937
+ "conflict": {
3938
+ "symfony/console": "<4.4"
3939
+ },
3940
+ "require-dev": {
3941
+ "symfony/console": "^4.4|^5.0"
3942
+ },
3943
+ "suggest": {
3944
+ "symfony/console": "For validating YAML files using the lint command"
3945
+ },
3946
+ "bin": [
3947
+ "Resources/bin/yaml-lint"
3948
+ ],
3949
+ "type": "library",
3950
+ "autoload": {
3951
+ "psr-4": {
3952
+ "Symfony\\Component\\Yaml\\": ""
3953
+ },
3954
+ "exclude-from-classmap": [
3955
+ "/Tests/"
3956
+ ]
3957
+ },
3958
+ "notification-url": "https://packagist.org/downloads/",
3959
+ "license": [
3960
+ "MIT"
3961
+ ],
3962
+ "authors": [
3963
+ {
3964
+ "name": "Fabien Potencier",
3965
+ "email": "fabien@symfony.com"
3966
+ },
3967
+ {
3968
+ "name": "Symfony Community",
3969
+ "homepage": "https://symfony.com/contributors"
3970
+ }
3971
+ ],
3972
+ "description": "Symfony Yaml Component",
3973
+ "homepage": "https://symfony.com",
3974
+ "support": {
3975
+ "source": "https://github.com/symfony/yaml/tree/v5.2.0"
3976
+ },
3977
+ "funding": [
3978
+ {
3979
+ "url": "https://symfony.com/sponsor",
3980
+ "type": "custom"
3981
+ },
3982
+ {
3983
+ "url": "https://github.com/fabpot",
3984
+ "type": "github"
3985
+ },
3986
+ {
3987
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3988
+ "type": "tidelift"
3989
+ }
3990
+ ],
3991
+ "time": "2020-11-28T10:57:20+00:00"
3992
+ },
3993
+ {
3994
+ "name": "theseer/tokenizer",
3995
+ "version": "1.2.0",
3996
+ "source": {
3997
+ "type": "git",
3998
+ "url": "https://github.com/theseer/tokenizer.git",
3999
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
4000
+ },
4001
+ "dist": {
4002
+ "type": "zip",
4003
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
4004
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
4005
+ "shasum": ""
4006
+ },
4007
+ "require": {
4008
+ "ext-dom": "*",
4009
+ "ext-tokenizer": "*",
4010
+ "ext-xmlwriter": "*",
4011
+ "php": "^7.2 || ^8.0"
4012
+ },
4013
+ "type": "library",
4014
+ "autoload": {
4015
+ "classmap": [
4016
+ "src/"
4017
+ ]
4018
+ },
4019
+ "notification-url": "https://packagist.org/downloads/",
4020
+ "license": [
4021
+ "BSD-3-Clause"
4022
+ ],
4023
+ "authors": [
4024
+ {
4025
+ "name": "Arne Blankerts",
4026
+ "email": "arne@blankerts.de",
4027
+ "role": "Developer"
4028
+ }
4029
+ ],
4030
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4031
+ "support": {
4032
+ "issues": "https://github.com/theseer/tokenizer/issues",
4033
+ "source": "https://github.com/theseer/tokenizer/tree/master"
4034
+ },
4035
+ "funding": [
4036
+ {
4037
+ "url": "https://github.com/theseer",
4038
+ "type": "github"
4039
+ }
4040
+ ],
4041
+ "time": "2020-07-12T23:59:07+00:00"
4042
+ },
4043
+ {
4044
+ "name": "webmozart/assert",
4045
+ "version": "1.9.1",
4046
+ "source": {
4047
+ "type": "git",
4048
+ "url": "https://github.com/webmozart/assert.git",
4049
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
4050
+ },
4051
+ "dist": {
4052
+ "type": "zip",
4053
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
4054
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
4055
+ "shasum": ""
4056
+ },
4057
+ "require": {
4058
+ "php": "^5.3.3 || ^7.0 || ^8.0",
4059
+ "symfony/polyfill-ctype": "^1.8"
4060
+ },
4061
+ "conflict": {
4062
+ "phpstan/phpstan": "<0.12.20",
4063
+ "vimeo/psalm": "<3.9.1"
4064
+ },
4065
+ "require-dev": {
4066
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
4067
+ },
4068
+ "type": "library",
4069
+ "autoload": {
4070
+ "psr-4": {
4071
+ "Webmozart\\Assert\\": "src/"
4072
+ }
4073
+ },
4074
+ "notification-url": "https://packagist.org/downloads/",
4075
+ "license": [
4076
+ "MIT"
4077
+ ],
4078
+ "authors": [
4079
+ {
4080
+ "name": "Bernhard Schussek",
4081
+ "email": "bschussek@gmail.com"
4082
+ }
4083
+ ],
4084
+ "description": "Assertions to validate method input/output with nice error messages.",
4085
+ "keywords": [
4086
+ "assert",
4087
+ "check",
4088
+ "validate"
4089
+ ],
4090
+ "support": {
4091
+ "issues": "https://github.com/webmozart/assert/issues",
4092
+ "source": "https://github.com/webmozart/assert/tree/master"
4093
+ },
4094
+ "time": "2020-07-08T17:02:28+00:00"
4095
+ }
4096
+ ],
4097
+ "aliases": [],
4098
+ "minimum-stability": "stable",
4099
+ "stability-flags": [],
4100
+ "prefer-stable": false,
4101
+ "prefer-lowest": false,
4102
+ "platform": {
4103
+ "php": "^7.3 || ^8.0",
4104
+ "ext-json": "*"
4105
+ },
4106
+ "platform-dev": [],
4107
+ "plugin-api-version": "2.0.0"
4108
+ }
vendor/typisttech/imposter/src/ArrayUtil.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class ArrayUtil
8
+ {
9
+ public static function flattenMap(callable $callable, array $array): array
10
+ {
11
+ $map = array_map($callable, $array);
12
+
13
+ return static::flatten($map);
14
+ }
15
+
16
+ /**
17
+ * Flatten array by one level.
18
+ *
19
+ * @param array $array
20
+ *
21
+ * @return array
22
+ */
23
+ public static function flatten(array $array): array
24
+ {
25
+ $result = [];
26
+ foreach ($array as $item) {
27
+ if (is_array($item)) {
28
+ $result = array_merge($result, array_values($item));
29
+ } else {
30
+ $result[] = $item;
31
+ }
32
+ }
33
+ return $result;
34
+ }
35
+ }
vendor/typisttech/imposter/src/Config.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class Config implements ConfigInterface
8
+ {
9
+ /**
10
+ * @var string
11
+ */
12
+ protected $packageDir;
13
+
14
+ /**
15
+ * @var array
16
+ */
17
+ private $config;
18
+
19
+ public function __construct(string $packageDir, array $config)
20
+ {
21
+ $this->packageDir = StringUtil::addTrailingSlash($packageDir);
22
+ $this->config = $config;
23
+ }
24
+
25
+ /**
26
+ * @return string[]
27
+ */
28
+ public function getAutoloads(): array
29
+ {
30
+ return array_map(function (string $autoload): string {
31
+ return $this->packageDir . $autoload;
32
+ }, array_unique($this->getAutoloadPaths()));
33
+ }
34
+
35
+ /**
36
+ * @return string[]
37
+ */
38
+ private function getAutoloadPaths(): array
39
+ {
40
+ $autoloads = $this->get('autoload');
41
+ unset($autoloads['exclude-from-classmap']);
42
+
43
+ return ArrayUtil::flattenMap(function ($autoloadConfig): array {
44
+ return $this->normalizeAutoload($autoloadConfig);
45
+ }, $autoloads);
46
+ }
47
+
48
+ protected function get(string $key): array
49
+ {
50
+ return $this->config[$key] ?? [];
51
+ }
52
+
53
+ /**
54
+ * @param $autoloadConfigs
55
+ *
56
+ * @return string[]
57
+ */
58
+ private function normalizeAutoload($autoloadConfigs): array
59
+ {
60
+ if (! is_array($autoloadConfigs)) {
61
+ return [$autoloadConfigs];
62
+ }
63
+
64
+ return ArrayUtil::flattenMap(function ($autoloadConfig): array {
65
+ return $this->normalizeAutoload($autoloadConfig);
66
+ }, $autoloadConfigs);
67
+ }
68
+
69
+ public function getPackageDir(): string
70
+ {
71
+ return $this->packageDir;
72
+ }
73
+
74
+ /**
75
+ * @return string[]
76
+ */
77
+ public function getRequires(): array
78
+ {
79
+ return array_keys($this->get('require'));
80
+ }
81
+ }
vendor/typisttech/imposter/src/ConfigCollection.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class ConfigCollection implements ConfigCollectionInterface
8
+ {
9
+ /**
10
+ * @var ConfigInterface[]
11
+ */
12
+ private $configs = [];
13
+
14
+ /**
15
+ * @param ConfigInterface $config
16
+ *
17
+ * @return void
18
+ */
19
+ public function add(ConfigInterface $config)
20
+ {
21
+ $this->configs[$config->getPackageDir()] = $config;
22
+ }
23
+
24
+ /**
25
+ * @return string[]
26
+ */
27
+ public function getAutoloads(): array
28
+ {
29
+ $autoloads = ArrayUtil::flattenMap(function (ConfigInterface $config) {
30
+ return $config->getAutoloads();
31
+ }, $this->all());
32
+
33
+ return array_unique($autoloads);
34
+ }
35
+
36
+ /**
37
+ * @return ConfigInterface[]
38
+ */
39
+ public function all(): array
40
+ {
41
+ return $this->configs;
42
+ }
43
+ }
vendor/typisttech/imposter/src/ConfigCollectionFactory.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class ConfigCollectionFactory
8
+ {
9
+ public static function forProject(
10
+ ProjectConfigInterface $projectConfig,
11
+ Filesystem $filesystem
12
+ ): ConfigCollectionInterface {
13
+ return static::addRequiredPackageConfigsRecursively(
14
+ new ConfigCollection(),
15
+ $projectConfig,
16
+ $projectConfig,
17
+ $filesystem
18
+ );
19
+ }
20
+
21
+ private static function addRequiredPackageConfigsRecursively(
22
+ ConfigCollectionInterface $configCollection,
23
+ ProjectConfigInterface $projectConfig,
24
+ ConfigInterface $config,
25
+ Filesystem $filesystem
26
+ ): ConfigCollectionInterface {
27
+ $filteredRequires = static::getFilteredPackages($projectConfig, $config);
28
+
29
+ foreach ($filteredRequires as $package) {
30
+ $packageConfig = ConfigFactory::build(
31
+ $projectConfig->getVendorDir() . $package . '/composer.json',
32
+ $filesystem
33
+ );
34
+
35
+ $configCollection->add($packageConfig);
36
+
37
+ static::addRequiredPackageConfigsRecursively(
38
+ $configCollection,
39
+ $projectConfig,
40
+ $packageConfig,
41
+ $filesystem
42
+ );
43
+ }
44
+
45
+ return $configCollection;
46
+ }
47
+
48
+ /**
49
+ * @param ProjectConfigInterface $projectConfig
50
+ * @param ConfigInterface $config
51
+ *
52
+ * @return string[]
53
+ */
54
+ private static function getFilteredPackages(ProjectConfigInterface $projectConfig, ConfigInterface $config): array
55
+ {
56
+ $requiredPackages = array_filter($config->getRequires(), function (string $package) {
57
+ return (false !== strpos($package, '/'));
58
+ });
59
+
60
+ $nonComposerPackages = array_filter($requiredPackages, function (string $package) {
61
+ return (false === strpos($package, 'composer/'));
62
+ });
63
+
64
+ return array_filter($nonComposerPackages, function (string $package) use ($projectConfig) {
65
+ return ! in_array($package, $projectConfig->getExcludes(), true);
66
+ });
67
+ }
68
+ }
vendor/typisttech/imposter/src/ConfigCollectionInterface.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ interface ConfigCollectionInterface
8
+ {
9
+ /**
10
+ * @param ConfigInterface $config
11
+ *
12
+ * @return void
13
+ */
14
+ public function add(ConfigInterface $config);
15
+
16
+ /**
17
+ * @return ConfigInterface[]
18
+ */
19
+ public function all(): array;
20
+
21
+ /**
22
+ * @return string[]
23
+ */
24
+ public function getAutoloads(): array;
25
+ }
vendor/typisttech/imposter/src/ConfigFactory.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class ConfigFactory
8
+ {
9
+ public static function build(string $path, Filesystem $filesystem): Config
10
+ {
11
+ return new Config(
12
+ $filesystem->dirname($path),
13
+ json_decode(
14
+ $filesystem->get($path),
15
+ true
16
+ )
17
+ );
18
+ }
19
+
20
+ public static function buildProjectConfig(string $path, Filesystem $filesystem): ProjectConfig
21
+ {
22
+ return new ProjectConfig(
23
+ $filesystem->dirname($path),
24
+ json_decode(
25
+ $filesystem->get($path),
26
+ true
27
+ )
28
+ );
29
+ }
30
+ }
vendor/typisttech/imposter/src/ConfigInterface.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ interface ConfigInterface
8
+ {
9
+ /**
10
+ * @return string[]
11
+ */
12
+ public function getAutoloads(): array;
13
+
14
+ public function getPackageDir(): string;
15
+
16
+ /**
17
+ * @return string[]
18
+ */
19
+ public function getRequires(): array;
20
+ }
vendor/typisttech/imposter/src/Filesystem.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ use FilesystemIterator;
8
+ use RecursiveDirectoryIterator;
9
+ use RecursiveIteratorIterator;
10
+ use RuntimeException;
11
+
12
+ class Filesystem implements FilesystemInterface
13
+ {
14
+ /**
15
+ * @param string $path
16
+ *
17
+ * @return \SplFileInfo[]
18
+ * @throws \UnexpectedValueException
19
+ */
20
+ public function allFiles(string $path): array
21
+ {
22
+ $iterator = new RecursiveIteratorIterator(
23
+ new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)
24
+ );
25
+
26
+ return iterator_to_array($iterator);
27
+ }
28
+
29
+ /**
30
+ * Extract the parent directory from a file path.
31
+ *
32
+ * @param string $path
33
+ *
34
+ * @return string
35
+ */
36
+ public function dirname(string $path): string
37
+ {
38
+ return pathinfo($path, PATHINFO_DIRNAME);
39
+ }
40
+
41
+ /**
42
+ * Get the contents of a file.
43
+ *
44
+ * @param string $path
45
+ *
46
+ * @return string
47
+ * @throws \RuntimeException
48
+ */
49
+ public function get(string $path): string
50
+ {
51
+ if (! $this->isFile($path)) {
52
+ throw new RuntimeException('File does not exist at path ' . $path);
53
+ }
54
+
55
+ return file_get_contents($path);
56
+ }
57
+
58
+ /**
59
+ * Determine if the given path is a file.
60
+ *
61
+ * @param string $path
62
+ *
63
+ * @return bool
64
+ */
65
+ public function isFile(string $path): bool
66
+ {
67
+ return is_file($path);
68
+ }
69
+
70
+ /**
71
+ * Determine if the given path is a directory.
72
+ *
73
+ * @param string $path
74
+ *
75
+ * @return bool
76
+ */
77
+ public function isDir(string $path): bool
78
+ {
79
+ return is_dir($path);
80
+ }
81
+
82
+ /**
83
+ * Write the contents of a file.
84
+ *
85
+ * @param string $path
86
+ * @param string $contents
87
+ *
88
+ * @return int|false
89
+ */
90
+ public function put(string $path, string $contents)
91
+ {
92
+ return file_put_contents($path, $contents);
93
+ }
94
+ }
vendor/typisttech/imposter/src/FilesystemInterface.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ interface FilesystemInterface
8
+ {
9
+ /**
10
+ * @param string $path
11
+ *
12
+ * @return \SplFileInfo[]
13
+ */
14
+ public function allFiles(string $path): array;
15
+
16
+ /**
17
+ * Extract the parent directory from a file path.
18
+ *
19
+ * @param string $path
20
+ *
21
+ * @return string
22
+ */
23
+ public function dirname(string $path): string;
24
+
25
+ /**
26
+ * Get the contents of a file.
27
+ *
28
+ * @param string $path
29
+ *
30
+ * @return string
31
+ */
32
+ public function get(string $path): string;
33
+
34
+ /**
35
+ * Determine if the given path is a file.
36
+ *
37
+ * @param string $path
38
+ *
39
+ * @return bool
40
+ */
41
+ public function isFile(string $path): bool;
42
+
43
+ /**
44
+ * Determine if the given path is a directory.
45
+ *
46
+ * @param string $path
47
+ *
48
+ * @return bool
49
+ */
50
+ public function isDir(string $path);
51
+
52
+ /**
53
+ * Write the contents of a file.
54
+ *
55
+ * @param string $path
56
+ * @param string $contents
57
+ *
58
+ * @return mixed
59
+ */
60
+ public function put(string $path, string $contents);
61
+ }
vendor/typisttech/imposter/src/Imposter.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class Imposter implements ImposterInterface
8
+ {
9
+ /**
10
+ * @var string[]
11
+ */
12
+ private $autoloads;
13
+
14
+ /**
15
+ * @var string[]
16
+ */
17
+ private $invalidAutoloads;
18
+
19
+ /**
20
+ * @var ConfigCollectionInterface
21
+ */
22
+ private $configCollection;
23
+
24
+ /**
25
+ * @var TransformerInterface
26
+ */
27
+ private $transformer;
28
+
29
+ /**
30
+ * @var FilesystemInterface
31
+ */
32
+ private $filesystem;
33
+
34
+ /**
35
+ * Imposter constructor.
36
+ *
37
+ * @param ConfigCollectionInterface $configCollection
38
+ * @param TransformerInterface $transformer
39
+ * @param FilesystemInterface $filesystem
40
+ */
41
+ public function __construct(
42
+ ConfigCollectionInterface $configCollection,
43
+ TransformerInterface $transformer,
44
+ FilesystemInterface $filesystem
45
+ ) {
46
+ $this->configCollection = $configCollection;
47
+ $this->transformer = $transformer;
48
+ $this->filesystem = $filesystem;
49
+ }
50
+
51
+ /**
52
+ * @return ConfigCollectionInterface
53
+ */
54
+ public function getConfigCollection(): ConfigCollectionInterface
55
+ {
56
+ return $this->configCollection;
57
+ }
58
+
59
+ /**
60
+ * @return TransformerInterface
61
+ */
62
+ public function getTransformer(): TransformerInterface
63
+ {
64
+ return $this->transformer;
65
+ }
66
+
67
+ /**
68
+ * Transform all autoload files.
69
+ *
70
+ * @return void
71
+ */
72
+ public function run()
73
+ {
74
+ $autoloads = $this->getAutoloads();
75
+ array_walk($autoloads, [$this, 'transform']);
76
+ }
77
+
78
+ /**
79
+ * Get all valid (exist) autoload paths.
80
+ *
81
+ * @return string[]
82
+ */
83
+ public function getAutoloads(): array
84
+ {
85
+ if ($this->autoloads === null) {
86
+ $this->setAutoloads();
87
+ }
88
+
89
+ return $this->autoloads;
90
+ }
91
+
92
+ /**
93
+ * Get all autoload paths which defined in composer.json but not exist.
94
+ *
95
+ * @return string[]
96
+ */
97
+ public function getInvalidAutoloads(): array
98
+ {
99
+ if ($this->invalidAutoloads === null) {
100
+ $this->setAutoloads();
101
+ }
102
+
103
+ return $this->invalidAutoloads;
104
+ }
105
+
106
+ protected function setAutoloads(): void
107
+ {
108
+ $this->autoloads = [];
109
+ $this->invalidAutoloads = [];
110
+
111
+ $autoloads = $this->configCollection->getAutoloads();
112
+
113
+ foreach ($autoloads as $autoload) {
114
+ $isValid = $this->filesystem->isFile($autoload) || $this->filesystem->isDir($autoload);
115
+
116
+ if ($isValid) {
117
+ $this->autoloads[] = $autoload;
118
+ } else {
119
+ $this->invalidAutoloads[] = $autoload;
120
+ }
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Transform a file or directory recursively.
126
+ *
127
+ * @param string $target Path to the target file or directory.
128
+ *
129
+ * @return void
130
+ */
131
+ public function transform(string $target)
132
+ {
133
+ $this->transformer->transform($target);
134
+ }
135
+ }
vendor/typisttech/imposter/src/ImposterFactory.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class ImposterFactory
8
+ {
9
+ /**
10
+ * @param string $projectPath
11
+ * @param string[] $extraExcludes
12
+ *
13
+ * @return Imposter
14
+ */
15
+ public static function forProject(string $projectPath, array $extraExcludes = []): Imposter
16
+ {
17
+ $filesystem = new Filesystem();
18
+
19
+ $projectConfig = ConfigFactory::buildProjectConfig($projectPath . '/composer.json', $filesystem);
20
+ $projectConfig->setExtraExcludes($extraExcludes);
21
+
22
+ $transformer = new Transformer($projectConfig->getImposterNamespace(), $filesystem);
23
+ $configCollection = ConfigCollectionFactory::forProject(
24
+ $projectConfig,
25
+ $filesystem
26
+ );
27
+
28
+ return new Imposter($configCollection, $transformer, $filesystem);
29
+ }
30
+ }
vendor/typisttech/imposter/src/ImposterInterface.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ interface ImposterInterface
8
+ {
9
+ /**
10
+ * Get all valid (exist) autoload paths.
11
+ *
12
+ * @return string[]
13
+ */
14
+ public function getAutoloads(): array;
15
+
16
+ /**
17
+ * Get all invalid (not exist) autoload paths.
18
+ *
19
+ * @return string[]
20
+ */
21
+ public function getInvalidAutoloads(): array;
22
+
23
+ /**
24
+ * Transform all autoload files.
25
+ *
26
+ * @return void
27
+ */
28
+ public function run();
29
+
30
+ /**
31
+ * Transform a file or directory recursively.
32
+ *
33
+ * @param string $target Path to the target file or directory.
34
+ *
35
+ * @return void
36
+ */
37
+ public function transform(string $target);
38
+ }
vendor/typisttech/imposter/src/ProjectConfig.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ use UnexpectedValueException;
8
+
9
+ class ProjectConfig extends Config implements ProjectConfigInterface
10
+ {
11
+ /**
12
+ * @var string[]
13
+ */
14
+ protected const DEFAULT_EXCLUDES = ['typisttech/imposter'];
15
+
16
+ /**
17
+ * @var string[]
18
+ */
19
+ private $extraExcludes = [];
20
+
21
+ /**
22
+ * @return string[]
23
+ */
24
+ public function getExcludes(): array
25
+ {
26
+ $extra = $this->get('extra');
27
+ $excludes = $extra['imposter']['excludes'] ?? [];
28
+
29
+ return array_merge(static::DEFAULT_EXCLUDES, $excludes, $this->extraExcludes);
30
+ }
31
+
32
+ public function getImposterNamespace(): string
33
+ {
34
+ $extra = $this->get('extra');
35
+
36
+ if (empty($extra['imposter']['namespace'])) {
37
+ throw new UnexpectedValueException('Imposter namespace is empty');
38
+ }
39
+
40
+ return $extra['imposter']['namespace'];
41
+ }
42
+
43
+ public function getVendorDir(): string
44
+ {
45
+ $config = $this->get('config');
46
+ $vendorDir = $config['vendor-dir'] ?? 'vendor';
47
+
48
+ return StringUtil::addTrailingSlash($this->packageDir . $vendorDir);
49
+ }
50
+
51
+ /**
52
+ * @param string[] $extraExcludes
53
+ *
54
+ * @return void
55
+ */
56
+
57
+ public function setExtraExcludes(array $extraExcludes)
58
+ {
59
+ $this->extraExcludes = $extraExcludes;
60
+ }
61
+ }
vendor/typisttech/imposter/src/ProjectConfigInterface.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ interface ProjectConfigInterface extends ConfigInterface
8
+ {
9
+ /**
10
+ * @return string[]
11
+ */
12
+ public function getExcludes(): array;
13
+
14
+ public function getImposterNamespace(): string;
15
+
16
+ public function getVendorDir(): string;
17
+
18
+ /**
19
+ * @param string[] $extraExcludes
20
+ *
21
+ * @return void
22
+ */
23
+ public function setExtraExcludes(array $extraExcludes);
24
+ }
vendor/typisttech/imposter/src/StringUtil.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ class StringUtil
8
+ {
9
+ public static function addTrailingSlash(string $string): string
10
+ {
11
+ return rtrim($string, '/\\') . '/';
12
+ }
13
+
14
+ public static function ensureDoubleBackwardSlash(string $string): string
15
+ {
16
+ $parts = explode('\\', $string);
17
+ $nonEmptyParts = array_filter($parts, function ($part) {
18
+ return ! empty($part);
19
+ });
20
+
21
+ return implode('\\\\', $nonEmptyParts) . '\\\\';
22
+ }
23
+ }
vendor/typisttech/imposter/src/Transformer.php ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ use SplFileInfo;
8
+
9
+ class Transformer implements TransformerInterface
10
+ {
11
+ /**
12
+ * @var FilesystemInterface
13
+ */
14
+ private $filesystem;
15
+
16
+ /**
17
+ * @var string
18
+ */
19
+ private $namespacePrefix;
20
+
21
+ /**
22
+ * Transformer constructor.
23
+ *
24
+ * @param string $namespacePrefix
25
+ * @param FilesystemInterface $filesystem
26
+ */
27
+ public function __construct(string $namespacePrefix, FilesystemInterface $filesystem)
28
+ {
29
+ $this->namespacePrefix = StringUtil::ensureDoubleBackwardSlash($namespacePrefix);
30
+ $this->filesystem = $filesystem;
31
+ }
32
+
33
+ /**
34
+ * Transform a file or directory recursively.
35
+ *
36
+ * @todo Skip non-php files.
37
+ *
38
+ * @param string $target Path to the target file or directory.
39
+ *
40
+ * @return void
41
+ */
42
+ public function transform(string $target)
43
+ {
44
+ if ($this->filesystem->isFile($target)) {
45
+ $this->doTransform($target);
46
+
47
+ return;
48
+ }
49
+
50
+ $files = $this->filesystem->allFiles($target);
51
+
52
+ array_walk($files, function (SplFileInfo $file) {
53
+ $this->doTransform($file->getRealPath());
54
+ });
55
+ }
56
+
57
+ /**
58
+ * @param string $targetFile
59
+ *
60
+ * @return void
61
+ */
62
+ private function doTransform(string $targetFile)
63
+ {
64
+ $this->prefixNamespace($targetFile);
65
+ $this->prefixUseConst($targetFile);
66
+ $this->prefixUseFunction($targetFile);
67
+ $this->prefixUse($targetFile);
68
+ }
69
+
70
+ /**
71
+ * Prefix namespace at the given path.
72
+ *
73
+ * @param string $targetFile
74
+ *
75
+ * @return void
76
+ */
77
+ private function prefixNamespace(string $targetFile)
78
+ {
79
+ $pattern = sprintf(
80
+ '/(\s+)%1$s\\s+(?!(%2$s)|(Composer(\\\\|;)))/',
81
+ 'namespace',
82
+ $this->namespacePrefix
83
+ );
84
+ $replacement = sprintf('%1$s %2$s', '${1}namespace', $this->namespacePrefix);
85
+
86
+ $this->replace($pattern, $replacement, $targetFile);
87
+ }
88
+
89
+ /**
90
+ * Replace string in the given file.
91
+ *
92
+ * @param string $pattern
93
+ * @param string $replacement
94
+ * @param string $targetFile
95
+ *
96
+ * @return void
97
+ */
98
+ private function replace(string $pattern, string $replacement, string $targetFile)
99
+ {
100
+ $this->filesystem->put(
101
+ $targetFile,
102
+ preg_replace(
103
+ $pattern,
104
+ $replacement,
105
+ $this->filesystem->get($targetFile)
106
+ )
107
+ );
108
+ }
109
+
110
+ /**
111
+ * Prefix `use const` keywords at the given path.
112
+ *
113
+ * @param string $targetFile
114
+ *
115
+ * @return void
116
+ */
117
+ private function prefixUseConst(string $targetFile)
118
+ {
119
+ $pattern = sprintf(
120
+ '/%1$s\\s+(?!(%2$s)|(\\\\(?!.*\\\\.*))|(Composer(\\\\|;)|(?!.*\\\\.*)))/',
121
+ 'use const',
122
+ $this->namespacePrefix
123
+ );
124
+ $replacement = sprintf('%1$s %2$s', 'use const', $this->namespacePrefix);
125
+
126
+ $this->replace($pattern, $replacement, $targetFile);
127
+ }
128
+
129
+ /**
130
+ * Prefix `use function` keywords at the given path.
131
+ *
132
+ * @param string $targetFile
133
+ *
134
+ * @return void
135
+ */
136
+ private function prefixUseFunction(string $targetFile)
137
+ {
138
+ $pattern = sprintf(
139
+ '/%1$s\\s+(?!(%2$s)|(\\\\(?!.*\\\\.*))|(Composer(\\\\|;)|(?!.*\\\\.*)))/',
140
+ 'use function',
141
+ $this->namespacePrefix
142
+ );
143
+ $replacement = sprintf('%1$s %2$s', 'use function', $this->namespacePrefix);
144
+
145
+ $this->replace($pattern, $replacement, $targetFile);
146
+ }
147
+
148
+ /**
149
+ * Prefix `use` keywords at the given path.
150
+ *
151
+ * @param string $targetFile
152
+ *
153
+ * @return void
154
+ */
155
+ private function prefixUse(string $targetFile)
156
+ {
157
+ $pattern = sprintf(
158
+ '/%1$s\\s+(?!(const)|(function)|(%2$s)|(\\\\(?!.*\\\\.*))|(Composer(\\\\|;)|(?!.*\\\\.*)))/',
159
+ 'use',
160
+ $this->namespacePrefix
161
+ );
162
+ $replacement = sprintf('%1$s %2$s', 'use', $this->namespacePrefix);
163
+
164
+ $this->replace($pattern, $replacement, $targetFile);
165
+ }
166
+ }
vendor/typisttech/imposter/src/TransformerInterface.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace TypistTech\Imposter;
6
+
7
+ interface TransformerInterface
8
+ {
9
+ /**
10
+ * Transform a file or directory recursively.
11
+ *
12
+ * @param string $target Path to the target file or directory.
13
+ *
14
+ * @return void
15
+ */
16
+ public function transform(string $target);
17
+ }