├── .gitignore
├── tests
├── unit
│ └── bootstrap.php
└── phpstan
│ └── bootstrap.php
├── tools
├── compress_php_file
├── update_version.sh
├── build_release.sh
└── phpcs.xml
├── phpunit.xml
├── .github
└── FUNDING.yml
├── uninstall.php
├── CHANGELOG.md
├── README.md
├── phpstan.neon
├── wp2static-addon-netlify.php
├── LICENSE.txt
├── views
└── netlify-page.php
├── composer.json
├── src
├── CLI.php
├── Deployer.php
└── Controller.php
└── composer.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor/
2 | /vendor_prefixed/
3 | coverage/
4 |
5 |
--------------------------------------------------------------------------------
/tests/unit/bootstrap.php:
--------------------------------------------------------------------------------
1 | $1BAK
5 | mv $1BAK $1
6 |
7 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/tools/update_version.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | OLD_VERSION="$1"
4 | NEW_VERSION="$2"
5 |
6 | git grep -l "$OLD_VERSION" | xargs sed -i "s/$OLD_VERSION/$NEW_VERSION/g"
7 |
8 | echo "Updated from $OLD_VERSION to $NEW_VERSION"
9 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: leonstafford
4 | custom: ['https://paypal.me/ljsdotdev', 'https://ljs.dev', 'https://donorbox.org/leonstafford']
5 | patreon: leonstafford
6 | ko_fi: leonstafford
7 |
8 |
--------------------------------------------------------------------------------
/tests/phpstan/bootstrap.php:
--------------------------------------------------------------------------------
1 | prefix . 'wp2static_addon_netlify_options';
11 |
12 | $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
13 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## WP2Static Netlify Add-on 1.0.1
2 |
3 | - fix CLI command registration in PHP 8
4 |
5 | ## WP2Static Netlify Add-on 1.0
6 |
7 | - don't attempt to deploy if addon not enabled in core
8 |
9 |
10 | ## WP2Static Netlify Add-on 1.0-alpha-007
11 |
12 | - Get add-on registered with WP2Static core
13 |
14 | ## WP2Static Netlify Add-on < 1.0-alpha-007
15 |
16 | - didn't maintain Changelog or use tags, please review version control if curious
17 |
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WP2Static Netlify Deployment Add-on
2 |
3 | Adds Netlify as a deployment option for WP2Static.
4 |
5 | Take advantage of the Netlify to host your WordPress powered static website.
6 |
7 | ## Installation ==
8 |
9 | Upload the ZIP to your WordPress plugins page within your dashboard.
10 |
11 | Activate the plugin, then navigate to your WP2Static main plugin page to see
12 | the new deployment option available.
13 |
14 | ## Changelog ==
15 |
16 | ### 1.1
17 |
18 | - First release
19 |
--------------------------------------------------------------------------------
/phpstan.neon:
--------------------------------------------------------------------------------
1 | includes:
2 | - vendor/phpstan/phpstan/conf/bleedingEdge.neon
3 | - vendor/thecodingmachine/phpstan-strict-rules/phpstan-strict-rules.neon
4 | - vendor/szepeviktor/phpstan-wordpress/extension.neon
5 | parameters:
6 | level: max
7 | phpVersion: 80000
8 | inferPrivatePropertyTypeFromConstructor: true
9 | paths:
10 | - %currentWorkingDirectory%/src/
11 | - %currentWorkingDirectory%/views/
12 | - %currentWorkingDirectory%/wp2static-addon-netlify.php
13 | scanFiles:
14 | - %currentWorkingDirectory%/tests/phpstan/bootstrap.php
15 | - %currentWorkingDirectory%/tests/phpstan/wp-cli-stubs-2.2.0.php
16 | ignoreErrors:
17 | - '#[a-zA-Z0-9\\_]+superglobal[a-zA-Z0-9\\_]+#'
18 | - '#Call to static method l\(\) on an unknown class WP2Static\\WsLog.#'
19 | - '#Call to static method getUrl\(\) on an unknown class WP2Static\\SiteInfo.#'
20 | - '#Call to static method getPath\(\) on an unknown class WP2Static\\SiteInfo.#'
21 | - '#Call to static method encrypt_decrypt\(\) on an unknown class WP2Static\\CoreOptions.#'
22 |
--------------------------------------------------------------------------------
/wp2static-addon-netlify.php:
--------------------------------------------------------------------------------
1 | run();
29 | }
30 |
31 | register_activation_hook(
32 | __FILE__,
33 | [ 'WP2StaticNetlify\Controller', 'activate' ]
34 | );
35 |
36 | register_deactivation_hook(
37 | __FILE__,
38 | [ 'WP2StaticNetlify\Controller', 'deactivate' ]
39 | );
40 |
41 | run_wp2static_addon_netlify();
42 |
43 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | This is free and unencumbered software released into the public domain.
2 |
3 | Anyone is free to copy, modify, publish, use, compile, sell, or
4 | distribute this software, either in source code form or as a compiled
5 | binary, for any purpose, commercial or non-commercial, and by any
6 | means.
7 |
8 | In jurisdictions that recognize copyright laws, the author or authors
9 | of this software dedicate any and all copyright interest in the
10 | software to the public domain. We make this dedication for the benefit
11 | of the public at large and to the detriment of our heirs and
12 | successors. We intend this dedication to be an overt act of
13 | relinquishment in perpetuity of all present and future rights to this
14 | software under copyright law.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
24 | For more information, please refer to
25 |
--------------------------------------------------------------------------------
/tools/build_release.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ############################################
4 | ##
5 | ## Build WP2Static Netlify Deployment Addon
6 | ##
7 | ## script archive_name dont_minify
8 | ##
9 | ## places archive in $HOME/Downloads
10 | ##
11 | ############################################
12 |
13 | # run script from project root
14 | EXEC_DIR=$(pwd)
15 |
16 | TMP_DIR=$HOME/plugintmp
17 | rm -Rf $TMP_DIR
18 | mkdir -p $TMP_DIR
19 |
20 | rm -Rf $TMP_DIR/wp2static-addon-netlify
21 | mkdir $TMP_DIR/wp2static-addon-netlify
22 |
23 | # clear dev dependencies
24 | rm -Rf $EXEC_DIR/vendor/*
25 | # load prod deps and optimize loader
26 | composer install --quiet --no-dev --optimize-autoloader
27 |
28 | # cp all required sources to build dir
29 | cp -r $EXEC_DIR/wp2static-addon-netlify.php $TMP_DIR/wp2static-addon-netlify/
30 | cp -r $EXEC_DIR/src $TMP_DIR/wp2static-addon-netlify/
31 | cp -r $EXEC_DIR/vendor $TMP_DIR/wp2static-addon-netlify/
32 | cp -r $EXEC_DIR/views $TMP_DIR/wp2static-addon-netlify/
33 |
34 | cd $TMP_DIR
35 |
36 | # tidy permissions
37 | find . -type d -exec chmod 755 {} \;
38 | find . -type f -exec chmod 644 {} \;
39 |
40 | zip --quiet -r -9 ./$1.zip ./wp2static-addon-netlify
41 |
42 | cd -
43 |
44 | mkdir -p $HOME/Downloads/
45 |
46 | cp $TMP_DIR/$1.zip $HOME/Downloads/
47 |
48 | # reset dev dependencies
49 | cd $EXEC_DIR
50 | # clear dev dependencies
51 | rm -Rf $EXEC_DIR/vendor/*
52 | # load prod deps
53 | composer install --quiet
54 |
--------------------------------------------------------------------------------
/views/netlify-page.php:
--------------------------------------------------------------------------------
1 |
9 |
10 | Netlify Deployment Options
11 |
12 | Netlify
13 |
14 |
66 |
67 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wp2static/wp2static-addon-netlify",
3 | "description": "Netlify deployment Add-on for WP2Static.",
4 | "homepage": "https://wp2static.com",
5 | "license": "UNLICENSE",
6 | "authors": [
7 | {
8 | "name": "Leon Stafford",
9 | "email": "me@ljs.dev",
10 | "homepage": "https://ljs.dev"
11 | }
12 | ],
13 | "type": "wordpress-plugin",
14 | "support": {
15 | "issues": "https://github.com/WP2Static/wp2static-addon-netlify/issues",
16 | "forum": "https://wp2static.com/community",
17 | "docs": "https://wp2static.com/documentation",
18 | "source": "https://github.com/WP2Static/wp2static-addon-netlify"
19 | },
20 | "require": {
21 | "php": ">=7.2",
22 | "guzzlehttp/guzzle": "*"
23 | },
24 | "require-dev": {
25 | "phpstan/phpstan": "*",
26 | "thecodingmachine/phpstan-strict-rules": "*",
27 | "szepeviktor/phpstan-wordpress": "*",
28 | "squizlabs/php_codesniffer": "*",
29 | "phpunit/phpunit": "*",
30 | "dealerdirect/phpcodesniffer-composer-installer": "*",
31 | "wp-coding-standards/wpcs": "*",
32 | "phpcompatibility/php-compatibility": "*",
33 | "php-parallel-lint/php-parallel-lint": "*",
34 | "wa72/url": "^0.7.1"
35 | },
36 | "autoload": {
37 | "psr-4": {
38 | "WP2StaticNetlify\\": "src/"
39 | }
40 | },
41 | "autoload-dev": {
42 | "psr-4": {
43 | "PHPStan\\WordPress\\": "tests/phpstan/",
44 | "WP2StaticNetlify\\": "src/"
45 | }
46 | },
47 | "config": {
48 | "preferred-install": {
49 | "*": "dist"
50 | },
51 | "classmap-authoritative": true
52 | },
53 | "scripts": {
54 | "phpstan": "php -d memory_limit=-1 ./vendor/bin/phpstan analyse",
55 | "phpcs": "vendor/bin/phpcs --standard=./tools/phpcs.xml --ignore='*/tests/*,*/vendor/*' .",
56 | "phpcbf": "vendor/bin/phpcbf --standard=./tools/phpcs.xml --ignore='*/tests/*,*/vendor/*' .",
57 | "php73": "vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 7.3 --ignore='/tests/*,/vendor/*' ./",
58 | "php74": "vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion 7.4 --ignore='/tests/*,/vendor/*' ./",
59 | "lint": "vendor/bin/parallel-lint --exclude vendor .",
60 | "test": [
61 | "@lint",
62 | "@phpcs",
63 | "@php73",
64 | "@php74",
65 | "@phpstan"
66 | ],
67 | "build": "/bin/sh tools/build_release.sh"
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/CLI.php:
--------------------------------------------------------------------------------
1 | ' );
31 | }
32 |
33 | if ( $action === 'options' ) {
34 | if ( empty( $arg ) ) {
35 | WP_CLI::error( 'Missing required argument: ' );
36 | }
37 |
38 | $option_name = isset( $args[2] ) ? $args[2] : null;
39 |
40 | if ( $arg === 'get' ) {
41 | if ( empty( $option_name ) ) {
42 | WP_CLI::error( 'Missing required argument: ' );
43 | return;
44 | }
45 |
46 | // decrypt accessToken
47 | if ( $option_name === 'accessToken' ) {
48 | $option_value = \WP2Static\CoreOptions::encrypt_decrypt(
49 | 'decrypt',
50 | Controller::getValue( $option_name )
51 | );
52 | } else {
53 | $option_value = Controller::getValue( $option_name );
54 | }
55 |
56 | WP_CLI::line( $option_value );
57 | }
58 |
59 | if ( $arg === 'set' ) {
60 | if ( empty( $option_name ) ) {
61 | WP_CLI::error( 'Missing required argument: ' );
62 | return;
63 | }
64 |
65 | $option_value = isset( $args[3] ) ? $args[3] : null;
66 |
67 | if ( empty( $option_value ) ) {
68 | $option_value = '';
69 | }
70 |
71 | // decrypt accessToken
72 | if ( $option_name === 'accessToken' ) {
73 | $option_value = \WP2Static\CoreOptions::encrypt_decrypt(
74 | 'encrypt',
75 | $option_value
76 | );
77 | }
78 |
79 | Controller::saveOption( $option_name, $option_value );
80 | }
81 |
82 | if ( $arg === 'list' ) {
83 | $options = Controller::getOptions();
84 |
85 | // decrypt accessToken
86 | $options['accessToken']->value = \WP2Static\CoreOptions::encrypt_decrypt(
87 | 'decrypt',
88 | $options['accessToken']->value
89 | );
90 |
91 | WP_CLI\Utils\format_items(
92 | 'table',
93 | $options,
94 | [ 'name', 'value' ]
95 | );
96 | }
97 | }
98 | }
99 | }
100 |
101 |
--------------------------------------------------------------------------------
/src/Deployer.php:
--------------------------------------------------------------------------------
1 | $file_object ) {
35 | $base_name = basename( $filename );
36 |
37 | if ( $base_name != '.' && $base_name != '..' ) {
38 | $real_filepath = realpath( $filename );
39 |
40 | if ( ! $real_filepath ) {
41 | $err = 'Trying to deploy unknown file: ' . $filename;
42 | \WP2Static\WsLog::l( $err );
43 | continue;
44 | }
45 |
46 | // Standardise all paths to use / (Windows support)
47 | $filename = str_replace( '\\', '/', $filename );
48 |
49 | if ( ! is_string( $filename ) ) {
50 | continue;
51 | }
52 |
53 | $remote_path = str_replace( $processed_site_path, '', $filename );
54 | $hash = sha1_file( $filename );
55 | $file_hashes[ $remote_path ] = $hash;
56 | $filename_path_hashes[ $hash ] = [ $filename, $remote_path ];
57 | }
58 | }
59 |
60 | // Send digest to Netlify to confirm which files have changed
61 | $site_id = Controller::getValue( 'siteID' );
62 | $access_token = \WP2Static\CoreOptions::encrypt_decrypt(
63 | 'decrypt',
64 | Controller::getValue( 'accessToken' )
65 | );
66 |
67 | $payload = [ 'files' => $file_hashes ];
68 |
69 | $client = new Client( [ 'base_uri' => 'https://api.netlify.com/' ] );
70 |
71 | $headers = [
72 | 'Authorization' => 'Bearer ' . $access_token,
73 | 'Accept' => 'application/json',
74 | ];
75 |
76 | $res = $client->request(
77 | 'POST',
78 | "/api/v1/sites/$site_id/deploys",
79 | [
80 | 'headers' => $headers,
81 | 'json' => $payload,
82 | ]
83 | );
84 |
85 | $response = json_decode( $res->getBody() );
86 | $deploy_id = $response->id;
87 | $state = $response->state;
88 | $required_hashes = $response->required;
89 |
90 | // TODO: rm duplicate hashes - Netlify only wants one if identical
91 | // TODO: easy optimizations by filtering lists
92 | foreach ( $filename_path_hashes as $hash => $file_info ) {
93 | $filename = $file_info[0];
94 | $remote_path = $file_info[1];
95 |
96 | // if hash is in required_hashes
97 | if ( in_array( $hash, $required_hashes ) ) {
98 | $headers = [
99 | 'Authorization' => 'Bearer ' . $access_token,
100 | 'Accept' => 'application/json',
101 | 'Content-Type' => 'application/octet-stream',
102 | ];
103 |
104 | $remote_path = urlencode( $remote_path );
105 |
106 | $res = $client->request(
107 | 'PUT',
108 | "/api/v1/deploys/$deploy_id/files/$remote_path",
109 | [
110 | 'headers' => $headers,
111 | // 'body' => file_get_contents($filename),
112 | 'body' => fopen( $filename, 'r' ),
113 | ]
114 | );
115 |
116 | $deployed++;
117 | } else {
118 | $cache_skipped++;
119 | }
120 | }
121 |
122 | \WP2Static\WsLog::l(
123 | "Netlify deploy complete. $deployed deployed, $cache_skipped unchanged."
124 | );
125 | }
126 | }
127 |
128 |
--------------------------------------------------------------------------------
/tools/phpcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | WP2Static Project Coding Standard
4 |
5 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/src/Controller.php:
--------------------------------------------------------------------------------
1 | prefix . 'wp2static_addon_netlify_options';
60 |
61 | $rows = $wpdb->get_results( "SELECT * FROM $table_name" );
62 |
63 | foreach ( $rows as $row ) {
64 | $options[ $row->name ] = $row;
65 | }
66 |
67 | return $options;
68 | }
69 |
70 | /**
71 | * Seed options
72 | */
73 | public static function seedOptions() : void {
74 | global $wpdb;
75 |
76 | $table_name = $wpdb->prefix . 'wp2static_addon_netlify_options';
77 |
78 | $query_string =
79 | "INSERT INTO $table_name (name, value, label, description)
80 | VALUES (%s, %s, %s, %s);";
81 |
82 | $query = $wpdb->prepare(
83 | $query_string,
84 | 'accessToken',
85 | '',
86 | 'Personal Access Token',
87 | ''
88 | );
89 |
90 | $wpdb->query( $query );
91 |
92 | $query = $wpdb->prepare(
93 | $query_string,
94 | 'siteID',
95 | '',
96 | 'Site ID',
97 | ''
98 | );
99 |
100 | $wpdb->query( $query );
101 | }
102 |
103 | /**
104 | * Save options
105 | *
106 | * @param mixed $value value to save
107 | */
108 | public static function saveOption( string $name, $value ) : void {
109 | global $wpdb;
110 |
111 | $table_name = $wpdb->prefix . 'wp2static_addon_netlify_options';
112 |
113 | $query_string = "INSERT INTO $table_name (name, value) VALUES (%s, %s);";
114 | $query = $wpdb->prepare( $query_string, $name, $value );
115 |
116 | $wpdb->query( $query );
117 | }
118 |
119 | public static function renderNetlifyPage() : void {
120 | $view = [];
121 | $view['nonce_action'] = 'wp2static-netlify-options';
122 | $view['uploads_path'] = \WP2Static\SiteInfo::getPath( 'uploads' );
123 | $netlify_path =
124 | \WP2Static\SiteInfo::getPath( 'uploads' ) . 'wp2static-processed-site.netlify';
125 |
126 | $view['options'] = self::getOptions();
127 |
128 | $view['netlify_url'] =
129 | is_file( $netlify_path ) ?
130 | \WP2Static\SiteInfo::getUrl( 'uploads' ) . 'wp2static-processed-site.netlify' : '#';
131 |
132 | require_once __DIR__ . '/../views/netlify-page.php';
133 | }
134 |
135 | public function deploy( string $processed_site_path, string $enabled_deployer ) : void {
136 | if ( $enabled_deployer !== 'wp2static-addon-netlify' ) {
137 | return;
138 | }
139 |
140 | \WP2Static\WsLog::l( 'Starting Netlify deployment.' );
141 |
142 | $netlify_deployer = new Deployer();
143 | $netlify_deployer->upload_files( $processed_site_path );
144 | }
145 |
146 | public static function activate_for_single_site() : void {
147 | // initialize options DB
148 | global $wpdb;
149 |
150 | $table_name = $wpdb->prefix . 'wp2static_addon_netlify_options';
151 |
152 | $charset_collate = $wpdb->get_charset_collate();
153 |
154 | $sql = "CREATE TABLE $table_name (
155 | id mediumint(9) NOT NULL AUTO_INCREMENT,
156 | name VARCHAR(255) NOT NULL,
157 | value VARCHAR(255) NOT NULL,
158 | label VARCHAR(255) NULL,
159 | description VARCHAR(255) NULL,
160 | PRIMARY KEY (id)
161 | ) $charset_collate;";
162 |
163 | require_once ABSPATH . 'wp-admin/includes/upgrade.php';
164 | dbDelta( $sql );
165 |
166 | // check for seed data
167 | // if deployment_url option doesn't exist, create:
168 | $options = self::getOptions();
169 |
170 | if ( ! isset( $options['siteID'] ) ) {
171 | self::seedOptions();
172 | }
173 | }
174 |
175 | public static function deactivate_for_single_site() : void {
176 | }
177 |
178 | public static function deactivate( bool $network_wide = null ) : void {
179 | if ( $network_wide ) {
180 | global $wpdb;
181 |
182 | $query = 'SELECT blog_id FROM %s WHERE site_id = %d;';
183 |
184 | $site_ids = $wpdb->get_col(
185 | sprintf(
186 | $query,
187 | $wpdb->blogs,
188 | $wpdb->siteid
189 | )
190 | );
191 |
192 | foreach ( $site_ids as $site_id ) {
193 | switch_to_blog( $site_id );
194 | self::deactivate_for_single_site();
195 | }
196 |
197 | restore_current_blog();
198 | } else {
199 | self::deactivate_for_single_site();
200 | }
201 | }
202 |
203 | public static function activate( bool $network_wide = null ) : void {
204 | if ( $network_wide ) {
205 | global $wpdb;
206 |
207 | $query = 'SELECT blog_id FROM %s WHERE site_id = %d;';
208 |
209 | $site_ids = $wpdb->get_col(
210 | sprintf(
211 | $query,
212 | $wpdb->blogs,
213 | $wpdb->siteid
214 | )
215 | );
216 |
217 | foreach ( $site_ids as $site_id ) {
218 | switch_to_blog( $site_id );
219 | self::activate_for_single_site();
220 | }
221 |
222 | restore_current_blog();
223 | } else {
224 | self::activate_for_single_site();
225 | }
226 | }
227 |
228 | /**
229 | * Add submenu to WP2Static sidebar menu
230 | *
231 | * @param mixed[] $submenu_pages list of menu items
232 | * @return mixed[] list of menu items
233 | */
234 | public static function addSubmenuPage( array $submenu_pages ) : array {
235 | $submenu_pages['netlify'] = [ 'WP2StaticNetlify\Controller', 'renderNetlifyPage' ];
236 |
237 | return $submenu_pages;
238 | }
239 |
240 | public static function saveOptionsFromUI() : void {
241 | check_admin_referer( 'wp2static-netlify-options' );
242 |
243 | global $wpdb;
244 |
245 | $table_name = $wpdb->prefix . 'wp2static_addon_netlify_options';
246 |
247 | $personal_access_token =
248 | $_POST['accessToken'] ?
249 | \WP2Static\CoreOptions::encrypt_decrypt(
250 | 'encrypt',
251 | sanitize_text_field( $_POST['accessToken'] )
252 | ) : '';
253 |
254 | $wpdb->update(
255 | $table_name,
256 | [ 'value' => $personal_access_token ],
257 | [ 'name' => 'accessToken' ]
258 | );
259 |
260 | $wpdb->update(
261 | $table_name,
262 | [ 'value' => sanitize_text_field( $_POST['siteID'] ) ],
263 | [ 'name' => 'siteID' ]
264 | );
265 |
266 | wp_safe_redirect(
267 | admin_url( 'admin.php?page=wp2static-addon-netlify' )
268 | );
269 |
270 | exit;
271 | }
272 |
273 | /**
274 | * Get option value
275 | *
276 | * @return string option value
277 | */
278 | public static function getValue( string $name ) : string {
279 | global $wpdb;
280 |
281 | $table_name = $wpdb->prefix . 'wp2static_addon_netlify_options';
282 |
283 | $sql = $wpdb->prepare(
284 | "SELECT value FROM $table_name WHERE" . ' name = %s LIMIT 1',
285 | $name
286 | );
287 |
288 | $option_value = $wpdb->get_var( $sql );
289 |
290 | if ( ! is_string( $option_value ) ) {
291 | return '';
292 | }
293 |
294 | return $option_value;
295 | }
296 |
297 | public function addOptionsPage() : void {
298 | add_submenu_page(
299 | '',
300 | 'Netlify Deployment Options',
301 | 'Netlify Deployment Options',
302 | 'manage_options',
303 | 'wp2static-addon-netlify',
304 | [ $this, 'renderNetlifyPage' ]
305 | );
306 | }
307 | }
308 |
309 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
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": "7cdc3c00bf2261581f7e533257320f28",
8 | "packages": [
9 | {
10 | "name": "guzzlehttp/guzzle",
11 | "version": "7.4.3",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/guzzle/guzzle.git",
15 | "reference": "74a8602c6faec9ef74b7a9391ac82c5e65b1cdab"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/74a8602c6faec9ef74b7a9391ac82c5e65b1cdab",
20 | "reference": "74a8602c6faec9ef74b7a9391ac82c5e65b1cdab",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "ext-json": "*",
25 | "guzzlehttp/promises": "^1.5",
26 | "guzzlehttp/psr7": "^1.8.3 || ^2.1",
27 | "php": "^7.2.5 || ^8.0",
28 | "psr/http-client": "^1.0",
29 | "symfony/deprecation-contracts": "^2.2 || ^3.0"
30 | },
31 | "provide": {
32 | "psr/http-client-implementation": "1.0"
33 | },
34 | "require-dev": {
35 | "bamarni/composer-bin-plugin": "^1.4.1",
36 | "ext-curl": "*",
37 | "php-http/client-integration-tests": "^3.0",
38 | "phpunit/phpunit": "^8.5.5 || ^9.3.5",
39 | "psr/log": "^1.1 || ^2.0 || ^3.0"
40 | },
41 | "suggest": {
42 | "ext-curl": "Required for CURL handler support",
43 | "ext-intl": "Required for Internationalized Domain Name (IDN) support",
44 | "psr/log": "Required for using the Log middleware"
45 | },
46 | "type": "library",
47 | "extra": {
48 | "branch-alias": {
49 | "dev-master": "7.4-dev"
50 | }
51 | },
52 | "autoload": {
53 | "files": [
54 | "src/functions_include.php"
55 | ],
56 | "psr-4": {
57 | "GuzzleHttp\\": "src/"
58 | }
59 | },
60 | "notification-url": "https://packagist.org/downloads/",
61 | "license": [
62 | "MIT"
63 | ],
64 | "authors": [
65 | {
66 | "name": "Graham Campbell",
67 | "email": "hello@gjcampbell.co.uk",
68 | "homepage": "https://github.com/GrahamCampbell"
69 | },
70 | {
71 | "name": "Michael Dowling",
72 | "email": "mtdowling@gmail.com",
73 | "homepage": "https://github.com/mtdowling"
74 | },
75 | {
76 | "name": "Jeremy Lindblom",
77 | "email": "jeremeamia@gmail.com",
78 | "homepage": "https://github.com/jeremeamia"
79 | },
80 | {
81 | "name": "George Mponos",
82 | "email": "gmponos@gmail.com",
83 | "homepage": "https://github.com/gmponos"
84 | },
85 | {
86 | "name": "Tobias Nyholm",
87 | "email": "tobias.nyholm@gmail.com",
88 | "homepage": "https://github.com/Nyholm"
89 | },
90 | {
91 | "name": "Márk Sági-Kazár",
92 | "email": "mark.sagikazar@gmail.com",
93 | "homepage": "https://github.com/sagikazarmark"
94 | },
95 | {
96 | "name": "Tobias Schultze",
97 | "email": "webmaster@tubo-world.de",
98 | "homepage": "https://github.com/Tobion"
99 | }
100 | ],
101 | "description": "Guzzle is a PHP HTTP client library",
102 | "keywords": [
103 | "client",
104 | "curl",
105 | "framework",
106 | "http",
107 | "http client",
108 | "psr-18",
109 | "psr-7",
110 | "rest",
111 | "web service"
112 | ],
113 | "support": {
114 | "issues": "https://github.com/guzzle/guzzle/issues",
115 | "source": "https://github.com/guzzle/guzzle/tree/7.4.3"
116 | },
117 | "funding": [
118 | {
119 | "url": "https://github.com/GrahamCampbell",
120 | "type": "github"
121 | },
122 | {
123 | "url": "https://github.com/Nyholm",
124 | "type": "github"
125 | },
126 | {
127 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
128 | "type": "tidelift"
129 | }
130 | ],
131 | "time": "2022-05-25T13:24:33+00:00"
132 | },
133 | {
134 | "name": "guzzlehttp/promises",
135 | "version": "1.5.1",
136 | "source": {
137 | "type": "git",
138 | "url": "https://github.com/guzzle/promises.git",
139 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
140 | },
141 | "dist": {
142 | "type": "zip",
143 | "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
144 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
145 | "shasum": ""
146 | },
147 | "require": {
148 | "php": ">=5.5"
149 | },
150 | "require-dev": {
151 | "symfony/phpunit-bridge": "^4.4 || ^5.1"
152 | },
153 | "type": "library",
154 | "extra": {
155 | "branch-alias": {
156 | "dev-master": "1.5-dev"
157 | }
158 | },
159 | "autoload": {
160 | "files": [
161 | "src/functions_include.php"
162 | ],
163 | "psr-4": {
164 | "GuzzleHttp\\Promise\\": "src/"
165 | }
166 | },
167 | "notification-url": "https://packagist.org/downloads/",
168 | "license": [
169 | "MIT"
170 | ],
171 | "authors": [
172 | {
173 | "name": "Graham Campbell",
174 | "email": "hello@gjcampbell.co.uk",
175 | "homepage": "https://github.com/GrahamCampbell"
176 | },
177 | {
178 | "name": "Michael Dowling",
179 | "email": "mtdowling@gmail.com",
180 | "homepage": "https://github.com/mtdowling"
181 | },
182 | {
183 | "name": "Tobias Nyholm",
184 | "email": "tobias.nyholm@gmail.com",
185 | "homepage": "https://github.com/Nyholm"
186 | },
187 | {
188 | "name": "Tobias Schultze",
189 | "email": "webmaster@tubo-world.de",
190 | "homepage": "https://github.com/Tobion"
191 | }
192 | ],
193 | "description": "Guzzle promises library",
194 | "keywords": [
195 | "promise"
196 | ],
197 | "support": {
198 | "issues": "https://github.com/guzzle/promises/issues",
199 | "source": "https://github.com/guzzle/promises/tree/1.5.1"
200 | },
201 | "funding": [
202 | {
203 | "url": "https://github.com/GrahamCampbell",
204 | "type": "github"
205 | },
206 | {
207 | "url": "https://github.com/Nyholm",
208 | "type": "github"
209 | },
210 | {
211 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
212 | "type": "tidelift"
213 | }
214 | ],
215 | "time": "2021-10-22T20:56:57+00:00"
216 | },
217 | {
218 | "name": "guzzlehttp/psr7",
219 | "version": "2.2.1",
220 | "source": {
221 | "type": "git",
222 | "url": "https://github.com/guzzle/psr7.git",
223 | "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2"
224 | },
225 | "dist": {
226 | "type": "zip",
227 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2",
228 | "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2",
229 | "shasum": ""
230 | },
231 | "require": {
232 | "php": "^7.2.5 || ^8.0",
233 | "psr/http-factory": "^1.0",
234 | "psr/http-message": "^1.0",
235 | "ralouphie/getallheaders": "^3.0"
236 | },
237 | "provide": {
238 | "psr/http-factory-implementation": "1.0",
239 | "psr/http-message-implementation": "1.0"
240 | },
241 | "require-dev": {
242 | "bamarni/composer-bin-plugin": "^1.4.1",
243 | "http-interop/http-factory-tests": "^0.9",
244 | "phpunit/phpunit": "^8.5.8 || ^9.3.10"
245 | },
246 | "suggest": {
247 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
248 | },
249 | "type": "library",
250 | "extra": {
251 | "branch-alias": {
252 | "dev-master": "2.2-dev"
253 | }
254 | },
255 | "autoload": {
256 | "psr-4": {
257 | "GuzzleHttp\\Psr7\\": "src/"
258 | }
259 | },
260 | "notification-url": "https://packagist.org/downloads/",
261 | "license": [
262 | "MIT"
263 | ],
264 | "authors": [
265 | {
266 | "name": "Graham Campbell",
267 | "email": "hello@gjcampbell.co.uk",
268 | "homepage": "https://github.com/GrahamCampbell"
269 | },
270 | {
271 | "name": "Michael Dowling",
272 | "email": "mtdowling@gmail.com",
273 | "homepage": "https://github.com/mtdowling"
274 | },
275 | {
276 | "name": "George Mponos",
277 | "email": "gmponos@gmail.com",
278 | "homepage": "https://github.com/gmponos"
279 | },
280 | {
281 | "name": "Tobias Nyholm",
282 | "email": "tobias.nyholm@gmail.com",
283 | "homepage": "https://github.com/Nyholm"
284 | },
285 | {
286 | "name": "Márk Sági-Kazár",
287 | "email": "mark.sagikazar@gmail.com",
288 | "homepage": "https://github.com/sagikazarmark"
289 | },
290 | {
291 | "name": "Tobias Schultze",
292 | "email": "webmaster@tubo-world.de",
293 | "homepage": "https://github.com/Tobion"
294 | },
295 | {
296 | "name": "Márk Sági-Kazár",
297 | "email": "mark.sagikazar@gmail.com",
298 | "homepage": "https://sagikazarmark.hu"
299 | }
300 | ],
301 | "description": "PSR-7 message implementation that also provides common utility methods",
302 | "keywords": [
303 | "http",
304 | "message",
305 | "psr-7",
306 | "request",
307 | "response",
308 | "stream",
309 | "uri",
310 | "url"
311 | ],
312 | "support": {
313 | "issues": "https://github.com/guzzle/psr7/issues",
314 | "source": "https://github.com/guzzle/psr7/tree/2.2.1"
315 | },
316 | "funding": [
317 | {
318 | "url": "https://github.com/GrahamCampbell",
319 | "type": "github"
320 | },
321 | {
322 | "url": "https://github.com/Nyholm",
323 | "type": "github"
324 | },
325 | {
326 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
327 | "type": "tidelift"
328 | }
329 | ],
330 | "time": "2022-03-20T21:55:58+00:00"
331 | },
332 | {
333 | "name": "psr/http-client",
334 | "version": "1.0.1",
335 | "source": {
336 | "type": "git",
337 | "url": "https://github.com/php-fig/http-client.git",
338 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
339 | },
340 | "dist": {
341 | "type": "zip",
342 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
343 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
344 | "shasum": ""
345 | },
346 | "require": {
347 | "php": "^7.0 || ^8.0",
348 | "psr/http-message": "^1.0"
349 | },
350 | "type": "library",
351 | "extra": {
352 | "branch-alias": {
353 | "dev-master": "1.0.x-dev"
354 | }
355 | },
356 | "autoload": {
357 | "psr-4": {
358 | "Psr\\Http\\Client\\": "src/"
359 | }
360 | },
361 | "notification-url": "https://packagist.org/downloads/",
362 | "license": [
363 | "MIT"
364 | ],
365 | "authors": [
366 | {
367 | "name": "PHP-FIG",
368 | "homepage": "http://www.php-fig.org/"
369 | }
370 | ],
371 | "description": "Common interface for HTTP clients",
372 | "homepage": "https://github.com/php-fig/http-client",
373 | "keywords": [
374 | "http",
375 | "http-client",
376 | "psr",
377 | "psr-18"
378 | ],
379 | "support": {
380 | "source": "https://github.com/php-fig/http-client/tree/master"
381 | },
382 | "time": "2020-06-29T06:28:15+00:00"
383 | },
384 | {
385 | "name": "psr/http-factory",
386 | "version": "1.0.1",
387 | "source": {
388 | "type": "git",
389 | "url": "https://github.com/php-fig/http-factory.git",
390 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
391 | },
392 | "dist": {
393 | "type": "zip",
394 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
395 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
396 | "shasum": ""
397 | },
398 | "require": {
399 | "php": ">=7.0.0",
400 | "psr/http-message": "^1.0"
401 | },
402 | "type": "library",
403 | "extra": {
404 | "branch-alias": {
405 | "dev-master": "1.0.x-dev"
406 | }
407 | },
408 | "autoload": {
409 | "psr-4": {
410 | "Psr\\Http\\Message\\": "src/"
411 | }
412 | },
413 | "notification-url": "https://packagist.org/downloads/",
414 | "license": [
415 | "MIT"
416 | ],
417 | "authors": [
418 | {
419 | "name": "PHP-FIG",
420 | "homepage": "http://www.php-fig.org/"
421 | }
422 | ],
423 | "description": "Common interfaces for PSR-7 HTTP message factories",
424 | "keywords": [
425 | "factory",
426 | "http",
427 | "message",
428 | "psr",
429 | "psr-17",
430 | "psr-7",
431 | "request",
432 | "response"
433 | ],
434 | "support": {
435 | "source": "https://github.com/php-fig/http-factory/tree/master"
436 | },
437 | "time": "2019-04-30T12:38:16+00:00"
438 | },
439 | {
440 | "name": "psr/http-message",
441 | "version": "1.0.1",
442 | "source": {
443 | "type": "git",
444 | "url": "https://github.com/php-fig/http-message.git",
445 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
446 | },
447 | "dist": {
448 | "type": "zip",
449 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
450 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
451 | "shasum": ""
452 | },
453 | "require": {
454 | "php": ">=5.3.0"
455 | },
456 | "type": "library",
457 | "extra": {
458 | "branch-alias": {
459 | "dev-master": "1.0.x-dev"
460 | }
461 | },
462 | "autoload": {
463 | "psr-4": {
464 | "Psr\\Http\\Message\\": "src/"
465 | }
466 | },
467 | "notification-url": "https://packagist.org/downloads/",
468 | "license": [
469 | "MIT"
470 | ],
471 | "authors": [
472 | {
473 | "name": "PHP-FIG",
474 | "homepage": "http://www.php-fig.org/"
475 | }
476 | ],
477 | "description": "Common interface for HTTP messages",
478 | "homepage": "https://github.com/php-fig/http-message",
479 | "keywords": [
480 | "http",
481 | "http-message",
482 | "psr",
483 | "psr-7",
484 | "request",
485 | "response"
486 | ],
487 | "support": {
488 | "source": "https://github.com/php-fig/http-message/tree/master"
489 | },
490 | "time": "2016-08-06T14:39:51+00:00"
491 | },
492 | {
493 | "name": "ralouphie/getallheaders",
494 | "version": "3.0.3",
495 | "source": {
496 | "type": "git",
497 | "url": "https://github.com/ralouphie/getallheaders.git",
498 | "reference": "120b605dfeb996808c31b6477290a714d356e822"
499 | },
500 | "dist": {
501 | "type": "zip",
502 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
503 | "reference": "120b605dfeb996808c31b6477290a714d356e822",
504 | "shasum": ""
505 | },
506 | "require": {
507 | "php": ">=5.6"
508 | },
509 | "require-dev": {
510 | "php-coveralls/php-coveralls": "^2.1",
511 | "phpunit/phpunit": "^5 || ^6.5"
512 | },
513 | "type": "library",
514 | "autoload": {
515 | "files": [
516 | "src/getallheaders.php"
517 | ]
518 | },
519 | "notification-url": "https://packagist.org/downloads/",
520 | "license": [
521 | "MIT"
522 | ],
523 | "authors": [
524 | {
525 | "name": "Ralph Khattar",
526 | "email": "ralph.khattar@gmail.com"
527 | }
528 | ],
529 | "description": "A polyfill for getallheaders.",
530 | "support": {
531 | "issues": "https://github.com/ralouphie/getallheaders/issues",
532 | "source": "https://github.com/ralouphie/getallheaders/tree/develop"
533 | },
534 | "time": "2019-03-08T08:55:37+00:00"
535 | },
536 | {
537 | "name": "symfony/deprecation-contracts",
538 | "version": "v2.5.1",
539 | "source": {
540 | "type": "git",
541 | "url": "https://github.com/symfony/deprecation-contracts.git",
542 | "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
543 | },
544 | "dist": {
545 | "type": "zip",
546 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
547 | "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
548 | "shasum": ""
549 | },
550 | "require": {
551 | "php": ">=7.1"
552 | },
553 | "type": "library",
554 | "extra": {
555 | "branch-alias": {
556 | "dev-main": "2.5-dev"
557 | },
558 | "thanks": {
559 | "name": "symfony/contracts",
560 | "url": "https://github.com/symfony/contracts"
561 | }
562 | },
563 | "autoload": {
564 | "files": [
565 | "function.php"
566 | ]
567 | },
568 | "notification-url": "https://packagist.org/downloads/",
569 | "license": [
570 | "MIT"
571 | ],
572 | "authors": [
573 | {
574 | "name": "Nicolas Grekas",
575 | "email": "p@tchwork.com"
576 | },
577 | {
578 | "name": "Symfony Community",
579 | "homepage": "https://symfony.com/contributors"
580 | }
581 | ],
582 | "description": "A generic function and convention to trigger deprecation notices",
583 | "homepage": "https://symfony.com",
584 | "support": {
585 | "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1"
586 | },
587 | "funding": [
588 | {
589 | "url": "https://symfony.com/sponsor",
590 | "type": "custom"
591 | },
592 | {
593 | "url": "https://github.com/fabpot",
594 | "type": "github"
595 | },
596 | {
597 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
598 | "type": "tidelift"
599 | }
600 | ],
601 | "time": "2022-01-02T09:53:40+00:00"
602 | }
603 | ],
604 | "packages-dev": [
605 | {
606 | "name": "dealerdirect/phpcodesniffer-composer-installer",
607 | "version": "v0.7.1",
608 | "source": {
609 | "type": "git",
610 | "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
611 | "reference": "fe390591e0241955f22eb9ba327d137e501c771c"
612 | },
613 | "dist": {
614 | "type": "zip",
615 | "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
616 | "reference": "fe390591e0241955f22eb9ba327d137e501c771c",
617 | "shasum": ""
618 | },
619 | "require": {
620 | "composer-plugin-api": "^1.0 || ^2.0",
621 | "php": ">=5.3",
622 | "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
623 | },
624 | "require-dev": {
625 | "composer/composer": "*",
626 | "phpcompatibility/php-compatibility": "^9.0",
627 | "sensiolabs/security-checker": "^4.1.0"
628 | },
629 | "type": "composer-plugin",
630 | "extra": {
631 | "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
632 | },
633 | "autoload": {
634 | "psr-4": {
635 | "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
636 | }
637 | },
638 | "notification-url": "https://packagist.org/downloads/",
639 | "license": [
640 | "MIT"
641 | ],
642 | "authors": [
643 | {
644 | "name": "Franck Nijhof",
645 | "email": "franck.nijhof@dealerdirect.com",
646 | "homepage": "http://www.frenck.nl",
647 | "role": "Developer / IT Manager"
648 | }
649 | ],
650 | "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
651 | "homepage": "http://www.dealerdirect.com",
652 | "keywords": [
653 | "PHPCodeSniffer",
654 | "PHP_CodeSniffer",
655 | "code quality",
656 | "codesniffer",
657 | "composer",
658 | "installer",
659 | "phpcs",
660 | "plugin",
661 | "qa",
662 | "quality",
663 | "standard",
664 | "standards",
665 | "style guide",
666 | "stylecheck",
667 | "tests"
668 | ],
669 | "support": {
670 | "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
671 | "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
672 | },
673 | "time": "2020-12-07T18:04:37+00:00"
674 | },
675 | {
676 | "name": "doctrine/instantiator",
677 | "version": "1.4.0",
678 | "source": {
679 | "type": "git",
680 | "url": "https://github.com/doctrine/instantiator.git",
681 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
682 | },
683 | "dist": {
684 | "type": "zip",
685 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
686 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
687 | "shasum": ""
688 | },
689 | "require": {
690 | "php": "^7.1 || ^8.0"
691 | },
692 | "require-dev": {
693 | "doctrine/coding-standard": "^8.0",
694 | "ext-pdo": "*",
695 | "ext-phar": "*",
696 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
697 | "phpstan/phpstan": "^0.12",
698 | "phpstan/phpstan-phpunit": "^0.12",
699 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
700 | },
701 | "type": "library",
702 | "autoload": {
703 | "psr-4": {
704 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
705 | }
706 | },
707 | "notification-url": "https://packagist.org/downloads/",
708 | "license": [
709 | "MIT"
710 | ],
711 | "authors": [
712 | {
713 | "name": "Marco Pivetta",
714 | "email": "ocramius@gmail.com",
715 | "homepage": "https://ocramius.github.io/"
716 | }
717 | ],
718 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
719 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
720 | "keywords": [
721 | "constructor",
722 | "instantiate"
723 | ],
724 | "support": {
725 | "issues": "https://github.com/doctrine/instantiator/issues",
726 | "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
727 | },
728 | "funding": [
729 | {
730 | "url": "https://www.doctrine-project.org/sponsorship.html",
731 | "type": "custom"
732 | },
733 | {
734 | "url": "https://www.patreon.com/phpdoctrine",
735 | "type": "patreon"
736 | },
737 | {
738 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
739 | "type": "tidelift"
740 | }
741 | ],
742 | "time": "2020-11-10T18:47:58+00:00"
743 | },
744 | {
745 | "name": "myclabs/deep-copy",
746 | "version": "1.10.2",
747 | "source": {
748 | "type": "git",
749 | "url": "https://github.com/myclabs/DeepCopy.git",
750 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
751 | },
752 | "dist": {
753 | "type": "zip",
754 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
755 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
756 | "shasum": ""
757 | },
758 | "require": {
759 | "php": "^7.1 || ^8.0"
760 | },
761 | "replace": {
762 | "myclabs/deep-copy": "self.version"
763 | },
764 | "require-dev": {
765 | "doctrine/collections": "^1.0",
766 | "doctrine/common": "^2.6",
767 | "phpunit/phpunit": "^7.1"
768 | },
769 | "type": "library",
770 | "autoload": {
771 | "psr-4": {
772 | "DeepCopy\\": "src/DeepCopy/"
773 | },
774 | "files": [
775 | "src/DeepCopy/deep_copy.php"
776 | ]
777 | },
778 | "notification-url": "https://packagist.org/downloads/",
779 | "license": [
780 | "MIT"
781 | ],
782 | "description": "Create deep copies (clones) of your objects",
783 | "keywords": [
784 | "clone",
785 | "copy",
786 | "duplicate",
787 | "object",
788 | "object graph"
789 | ],
790 | "support": {
791 | "issues": "https://github.com/myclabs/DeepCopy/issues",
792 | "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
793 | },
794 | "funding": [
795 | {
796 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
797 | "type": "tidelift"
798 | }
799 | ],
800 | "time": "2020-11-13T09:40:50+00:00"
801 | },
802 | {
803 | "name": "nikic/php-parser",
804 | "version": "v4.10.4",
805 | "source": {
806 | "type": "git",
807 | "url": "https://github.com/nikic/PHP-Parser.git",
808 | "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
809 | },
810 | "dist": {
811 | "type": "zip",
812 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
813 | "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
814 | "shasum": ""
815 | },
816 | "require": {
817 | "ext-tokenizer": "*",
818 | "php": ">=7.0"
819 | },
820 | "require-dev": {
821 | "ircmaxell/php-yacc": "^0.0.7",
822 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
823 | },
824 | "bin": [
825 | "bin/php-parse"
826 | ],
827 | "type": "library",
828 | "extra": {
829 | "branch-alias": {
830 | "dev-master": "4.9-dev"
831 | }
832 | },
833 | "autoload": {
834 | "psr-4": {
835 | "PhpParser\\": "lib/PhpParser"
836 | }
837 | },
838 | "notification-url": "https://packagist.org/downloads/",
839 | "license": [
840 | "BSD-3-Clause"
841 | ],
842 | "authors": [
843 | {
844 | "name": "Nikita Popov"
845 | }
846 | ],
847 | "description": "A PHP parser written in PHP",
848 | "keywords": [
849 | "parser",
850 | "php"
851 | ],
852 | "support": {
853 | "issues": "https://github.com/nikic/PHP-Parser/issues",
854 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4"
855 | },
856 | "time": "2020-12-20T10:01:03+00:00"
857 | },
858 | {
859 | "name": "phar-io/manifest",
860 | "version": "2.0.1",
861 | "source": {
862 | "type": "git",
863 | "url": "https://github.com/phar-io/manifest.git",
864 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
865 | },
866 | "dist": {
867 | "type": "zip",
868 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
869 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
870 | "shasum": ""
871 | },
872 | "require": {
873 | "ext-dom": "*",
874 | "ext-phar": "*",
875 | "ext-xmlwriter": "*",
876 | "phar-io/version": "^3.0.1",
877 | "php": "^7.2 || ^8.0"
878 | },
879 | "type": "library",
880 | "extra": {
881 | "branch-alias": {
882 | "dev-master": "2.0.x-dev"
883 | }
884 | },
885 | "autoload": {
886 | "classmap": [
887 | "src/"
888 | ]
889 | },
890 | "notification-url": "https://packagist.org/downloads/",
891 | "license": [
892 | "BSD-3-Clause"
893 | ],
894 | "authors": [
895 | {
896 | "name": "Arne Blankerts",
897 | "email": "arne@blankerts.de",
898 | "role": "Developer"
899 | },
900 | {
901 | "name": "Sebastian Heuer",
902 | "email": "sebastian@phpeople.de",
903 | "role": "Developer"
904 | },
905 | {
906 | "name": "Sebastian Bergmann",
907 | "email": "sebastian@phpunit.de",
908 | "role": "Developer"
909 | }
910 | ],
911 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
912 | "support": {
913 | "issues": "https://github.com/phar-io/manifest/issues",
914 | "source": "https://github.com/phar-io/manifest/tree/master"
915 | },
916 | "time": "2020-06-27T14:33:11+00:00"
917 | },
918 | {
919 | "name": "phar-io/version",
920 | "version": "3.0.4",
921 | "source": {
922 | "type": "git",
923 | "url": "https://github.com/phar-io/version.git",
924 | "reference": "e4782611070e50613683d2b9a57730e9a3ba5451"
925 | },
926 | "dist": {
927 | "type": "zip",
928 | "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451",
929 | "reference": "e4782611070e50613683d2b9a57730e9a3ba5451",
930 | "shasum": ""
931 | },
932 | "require": {
933 | "php": "^7.2 || ^8.0"
934 | },
935 | "type": "library",
936 | "autoload": {
937 | "classmap": [
938 | "src/"
939 | ]
940 | },
941 | "notification-url": "https://packagist.org/downloads/",
942 | "license": [
943 | "BSD-3-Clause"
944 | ],
945 | "authors": [
946 | {
947 | "name": "Arne Blankerts",
948 | "email": "arne@blankerts.de",
949 | "role": "Developer"
950 | },
951 | {
952 | "name": "Sebastian Heuer",
953 | "email": "sebastian@phpeople.de",
954 | "role": "Developer"
955 | },
956 | {
957 | "name": "Sebastian Bergmann",
958 | "email": "sebastian@phpunit.de",
959 | "role": "Developer"
960 | }
961 | ],
962 | "description": "Library for handling version information and constraints",
963 | "support": {
964 | "issues": "https://github.com/phar-io/version/issues",
965 | "source": "https://github.com/phar-io/version/tree/3.0.4"
966 | },
967 | "time": "2020-12-13T23:18:30+00:00"
968 | },
969 | {
970 | "name": "php-parallel-lint/php-parallel-lint",
971 | "version": "v1.2.0",
972 | "source": {
973 | "type": "git",
974 | "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git",
975 | "reference": "474f18bc6cc6aca61ca40bfab55139de614e51ca"
976 | },
977 | "dist": {
978 | "type": "zip",
979 | "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/474f18bc6cc6aca61ca40bfab55139de614e51ca",
980 | "reference": "474f18bc6cc6aca61ca40bfab55139de614e51ca",
981 | "shasum": ""
982 | },
983 | "require": {
984 | "ext-json": "*",
985 | "php": ">=5.4.0"
986 | },
987 | "replace": {
988 | "grogy/php-parallel-lint": "*",
989 | "jakub-onderka/php-parallel-lint": "*"
990 | },
991 | "require-dev": {
992 | "nette/tester": "^1.3 || ^2.0",
993 | "php-parallel-lint/php-console-highlighter": "~0.3",
994 | "squizlabs/php_codesniffer": "~3.0"
995 | },
996 | "suggest": {
997 | "php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet"
998 | },
999 | "bin": [
1000 | "parallel-lint"
1001 | ],
1002 | "type": "library",
1003 | "autoload": {
1004 | "classmap": [
1005 | "./"
1006 | ]
1007 | },
1008 | "notification-url": "https://packagist.org/downloads/",
1009 | "license": [
1010 | "BSD-2-Clause"
1011 | ],
1012 | "authors": [
1013 | {
1014 | "name": "Jakub Onderka",
1015 | "email": "ahoj@jakubonderka.cz"
1016 | }
1017 | ],
1018 | "description": "This tool check syntax of PHP files about 20x faster than serial check.",
1019 | "homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint",
1020 | "support": {
1021 | "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues",
1022 | "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/master"
1023 | },
1024 | "time": "2020-04-04T12:18:32+00:00"
1025 | },
1026 | {
1027 | "name": "php-stubs/wordpress-stubs",
1028 | "version": "v5.6.0",
1029 | "source": {
1030 | "type": "git",
1031 | "url": "https://github.com/php-stubs/wordpress-stubs.git",
1032 | "reference": "ed446cce304cd49f13900274b3ed60d1b526297e"
1033 | },
1034 | "dist": {
1035 | "type": "zip",
1036 | "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/ed446cce304cd49f13900274b3ed60d1b526297e",
1037 | "reference": "ed446cce304cd49f13900274b3ed60d1b526297e",
1038 | "shasum": ""
1039 | },
1040 | "replace": {
1041 | "giacocorsiglia/wordpress-stubs": "*"
1042 | },
1043 | "require-dev": {
1044 | "giacocorsiglia/stubs-generator": "^0.5.0",
1045 | "php": "~7.1"
1046 | },
1047 | "suggest": {
1048 | "paragonie/sodium_compat": "Pure PHP implementation of libsodium",
1049 | "symfony/polyfill-php73": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
1050 | "szepeviktor/phpstan-wordpress": "WordPress extensions for PHPStan"
1051 | },
1052 | "type": "library",
1053 | "notification-url": "https://packagist.org/downloads/",
1054 | "license": [
1055 | "MIT"
1056 | ],
1057 | "description": "WordPress function and class declaration stubs for static analysis.",
1058 | "homepage": "https://github.com/php-stubs/wordpress-stubs",
1059 | "keywords": [
1060 | "PHPStan",
1061 | "static analysis",
1062 | "wordpress"
1063 | ],
1064 | "support": {
1065 | "issues": "https://github.com/php-stubs/wordpress-stubs/issues",
1066 | "source": "https://github.com/php-stubs/wordpress-stubs/tree/v5.6.0"
1067 | },
1068 | "time": "2020-12-09T00:38:16+00:00"
1069 | },
1070 | {
1071 | "name": "phpcompatibility/php-compatibility",
1072 | "version": "9.3.5",
1073 | "source": {
1074 | "type": "git",
1075 | "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
1076 | "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
1077 | },
1078 | "dist": {
1079 | "type": "zip",
1080 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
1081 | "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
1082 | "shasum": ""
1083 | },
1084 | "require": {
1085 | "php": ">=5.3",
1086 | "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
1087 | },
1088 | "conflict": {
1089 | "squizlabs/php_codesniffer": "2.6.2"
1090 | },
1091 | "require-dev": {
1092 | "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
1093 | },
1094 | "suggest": {
1095 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
1096 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
1097 | },
1098 | "type": "phpcodesniffer-standard",
1099 | "notification-url": "https://packagist.org/downloads/",
1100 | "license": [
1101 | "LGPL-3.0-or-later"
1102 | ],
1103 | "authors": [
1104 | {
1105 | "name": "Wim Godden",
1106 | "homepage": "https://github.com/wimg",
1107 | "role": "lead"
1108 | },
1109 | {
1110 | "name": "Juliette Reinders Folmer",
1111 | "homepage": "https://github.com/jrfnl",
1112 | "role": "lead"
1113 | },
1114 | {
1115 | "name": "Contributors",
1116 | "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
1117 | }
1118 | ],
1119 | "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
1120 | "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
1121 | "keywords": [
1122 | "compatibility",
1123 | "phpcs",
1124 | "standards"
1125 | ],
1126 | "support": {
1127 | "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
1128 | "source": "https://github.com/PHPCompatibility/PHPCompatibility"
1129 | },
1130 | "time": "2019-12-27T09:44:58+00:00"
1131 | },
1132 | {
1133 | "name": "phpdocumentor/reflection-common",
1134 | "version": "2.2.0",
1135 | "source": {
1136 | "type": "git",
1137 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1138 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
1139 | },
1140 | "dist": {
1141 | "type": "zip",
1142 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1143 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1144 | "shasum": ""
1145 | },
1146 | "require": {
1147 | "php": "^7.2 || ^8.0"
1148 | },
1149 | "type": "library",
1150 | "extra": {
1151 | "branch-alias": {
1152 | "dev-2.x": "2.x-dev"
1153 | }
1154 | },
1155 | "autoload": {
1156 | "psr-4": {
1157 | "phpDocumentor\\Reflection\\": "src/"
1158 | }
1159 | },
1160 | "notification-url": "https://packagist.org/downloads/",
1161 | "license": [
1162 | "MIT"
1163 | ],
1164 | "authors": [
1165 | {
1166 | "name": "Jaap van Otterdijk",
1167 | "email": "opensource@ijaap.nl"
1168 | }
1169 | ],
1170 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1171 | "homepage": "http://www.phpdoc.org",
1172 | "keywords": [
1173 | "FQSEN",
1174 | "phpDocumentor",
1175 | "phpdoc",
1176 | "reflection",
1177 | "static analysis"
1178 | ],
1179 | "support": {
1180 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
1181 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
1182 | },
1183 | "time": "2020-06-27T09:03:43+00:00"
1184 | },
1185 | {
1186 | "name": "phpdocumentor/reflection-docblock",
1187 | "version": "5.2.2",
1188 | "source": {
1189 | "type": "git",
1190 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1191 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
1192 | },
1193 | "dist": {
1194 | "type": "zip",
1195 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
1196 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
1197 | "shasum": ""
1198 | },
1199 | "require": {
1200 | "ext-filter": "*",
1201 | "php": "^7.2 || ^8.0",
1202 | "phpdocumentor/reflection-common": "^2.2",
1203 | "phpdocumentor/type-resolver": "^1.3",
1204 | "webmozart/assert": "^1.9.1"
1205 | },
1206 | "require-dev": {
1207 | "mockery/mockery": "~1.3.2"
1208 | },
1209 | "type": "library",
1210 | "extra": {
1211 | "branch-alias": {
1212 | "dev-master": "5.x-dev"
1213 | }
1214 | },
1215 | "autoload": {
1216 | "psr-4": {
1217 | "phpDocumentor\\Reflection\\": "src"
1218 | }
1219 | },
1220 | "notification-url": "https://packagist.org/downloads/",
1221 | "license": [
1222 | "MIT"
1223 | ],
1224 | "authors": [
1225 | {
1226 | "name": "Mike van Riel",
1227 | "email": "me@mikevanriel.com"
1228 | },
1229 | {
1230 | "name": "Jaap van Otterdijk",
1231 | "email": "account@ijaap.nl"
1232 | }
1233 | ],
1234 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1235 | "support": {
1236 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1237 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
1238 | },
1239 | "time": "2020-09-03T19:13:55+00:00"
1240 | },
1241 | {
1242 | "name": "phpdocumentor/type-resolver",
1243 | "version": "1.4.0",
1244 | "source": {
1245 | "type": "git",
1246 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
1247 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
1248 | },
1249 | "dist": {
1250 | "type": "zip",
1251 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1252 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1253 | "shasum": ""
1254 | },
1255 | "require": {
1256 | "php": "^7.2 || ^8.0",
1257 | "phpdocumentor/reflection-common": "^2.0"
1258 | },
1259 | "require-dev": {
1260 | "ext-tokenizer": "*"
1261 | },
1262 | "type": "library",
1263 | "extra": {
1264 | "branch-alias": {
1265 | "dev-1.x": "1.x-dev"
1266 | }
1267 | },
1268 | "autoload": {
1269 | "psr-4": {
1270 | "phpDocumentor\\Reflection\\": "src"
1271 | }
1272 | },
1273 | "notification-url": "https://packagist.org/downloads/",
1274 | "license": [
1275 | "MIT"
1276 | ],
1277 | "authors": [
1278 | {
1279 | "name": "Mike van Riel",
1280 | "email": "me@mikevanriel.com"
1281 | }
1282 | ],
1283 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
1284 | "support": {
1285 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1286 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
1287 | },
1288 | "time": "2020-09-17T18:55:26+00:00"
1289 | },
1290 | {
1291 | "name": "phpspec/prophecy",
1292 | "version": "1.12.2",
1293 | "source": {
1294 | "type": "git",
1295 | "url": "https://github.com/phpspec/prophecy.git",
1296 | "reference": "245710e971a030f42e08f4912863805570f23d39"
1297 | },
1298 | "dist": {
1299 | "type": "zip",
1300 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39",
1301 | "reference": "245710e971a030f42e08f4912863805570f23d39",
1302 | "shasum": ""
1303 | },
1304 | "require": {
1305 | "doctrine/instantiator": "^1.2",
1306 | "php": "^7.2 || ~8.0, <8.1",
1307 | "phpdocumentor/reflection-docblock": "^5.2",
1308 | "sebastian/comparator": "^3.0 || ^4.0",
1309 | "sebastian/recursion-context": "^3.0 || ^4.0"
1310 | },
1311 | "require-dev": {
1312 | "phpspec/phpspec": "^6.0",
1313 | "phpunit/phpunit": "^8.0 || ^9.0"
1314 | },
1315 | "type": "library",
1316 | "extra": {
1317 | "branch-alias": {
1318 | "dev-master": "1.11.x-dev"
1319 | }
1320 | },
1321 | "autoload": {
1322 | "psr-4": {
1323 | "Prophecy\\": "src/Prophecy"
1324 | }
1325 | },
1326 | "notification-url": "https://packagist.org/downloads/",
1327 | "license": [
1328 | "MIT"
1329 | ],
1330 | "authors": [
1331 | {
1332 | "name": "Konstantin Kudryashov",
1333 | "email": "ever.zet@gmail.com",
1334 | "homepage": "http://everzet.com"
1335 | },
1336 | {
1337 | "name": "Marcello Duarte",
1338 | "email": "marcello.duarte@gmail.com"
1339 | }
1340 | ],
1341 | "description": "Highly opinionated mocking framework for PHP 5.3+",
1342 | "homepage": "https://github.com/phpspec/prophecy",
1343 | "keywords": [
1344 | "Double",
1345 | "Dummy",
1346 | "fake",
1347 | "mock",
1348 | "spy",
1349 | "stub"
1350 | ],
1351 | "support": {
1352 | "issues": "https://github.com/phpspec/prophecy/issues",
1353 | "source": "https://github.com/phpspec/prophecy/tree/1.12.2"
1354 | },
1355 | "time": "2020-12-19T10:15:11+00:00"
1356 | },
1357 | {
1358 | "name": "phpstan/phpstan",
1359 | "version": "0.12.68",
1360 | "source": {
1361 | "type": "git",
1362 | "url": "https://github.com/phpstan/phpstan.git",
1363 | "reference": "ddbe01af0706ee094c3f1ce9730b35aebb508d3d"
1364 | },
1365 | "dist": {
1366 | "type": "zip",
1367 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ddbe01af0706ee094c3f1ce9730b35aebb508d3d",
1368 | "reference": "ddbe01af0706ee094c3f1ce9730b35aebb508d3d",
1369 | "shasum": ""
1370 | },
1371 | "require": {
1372 | "php": "^7.1|^8.0"
1373 | },
1374 | "conflict": {
1375 | "phpstan/phpstan-shim": "*"
1376 | },
1377 | "bin": [
1378 | "phpstan",
1379 | "phpstan.phar"
1380 | ],
1381 | "type": "library",
1382 | "extra": {
1383 | "branch-alias": {
1384 | "dev-master": "0.12-dev"
1385 | }
1386 | },
1387 | "autoload": {
1388 | "files": [
1389 | "bootstrap.php"
1390 | ]
1391 | },
1392 | "notification-url": "https://packagist.org/downloads/",
1393 | "license": [
1394 | "MIT"
1395 | ],
1396 | "description": "PHPStan - PHP Static Analysis Tool",
1397 | "support": {
1398 | "issues": "https://github.com/phpstan/phpstan/issues",
1399 | "source": "https://github.com/phpstan/phpstan/tree/0.12.68"
1400 | },
1401 | "funding": [
1402 | {
1403 | "url": "https://github.com/ondrejmirtes",
1404 | "type": "github"
1405 | },
1406 | {
1407 | "url": "https://www.patreon.com/phpstan",
1408 | "type": "patreon"
1409 | },
1410 | {
1411 | "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
1412 | "type": "tidelift"
1413 | }
1414 | ],
1415 | "time": "2021-01-18T12:29:17+00:00"
1416 | },
1417 | {
1418 | "name": "phpunit/php-code-coverage",
1419 | "version": "9.2.5",
1420 | "source": {
1421 | "type": "git",
1422 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1423 | "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
1424 | },
1425 | "dist": {
1426 | "type": "zip",
1427 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
1428 | "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
1429 | "shasum": ""
1430 | },
1431 | "require": {
1432 | "ext-dom": "*",
1433 | "ext-libxml": "*",
1434 | "ext-xmlwriter": "*",
1435 | "nikic/php-parser": "^4.10.2",
1436 | "php": ">=7.3",
1437 | "phpunit/php-file-iterator": "^3.0.3",
1438 | "phpunit/php-text-template": "^2.0.2",
1439 | "sebastian/code-unit-reverse-lookup": "^2.0.2",
1440 | "sebastian/complexity": "^2.0",
1441 | "sebastian/environment": "^5.1.2",
1442 | "sebastian/lines-of-code": "^1.0.3",
1443 | "sebastian/version": "^3.0.1",
1444 | "theseer/tokenizer": "^1.2.0"
1445 | },
1446 | "require-dev": {
1447 | "phpunit/phpunit": "^9.3"
1448 | },
1449 | "suggest": {
1450 | "ext-pcov": "*",
1451 | "ext-xdebug": "*"
1452 | },
1453 | "type": "library",
1454 | "extra": {
1455 | "branch-alias": {
1456 | "dev-master": "9.2-dev"
1457 | }
1458 | },
1459 | "autoload": {
1460 | "classmap": [
1461 | "src/"
1462 | ]
1463 | },
1464 | "notification-url": "https://packagist.org/downloads/",
1465 | "license": [
1466 | "BSD-3-Clause"
1467 | ],
1468 | "authors": [
1469 | {
1470 | "name": "Sebastian Bergmann",
1471 | "email": "sebastian@phpunit.de",
1472 | "role": "lead"
1473 | }
1474 | ],
1475 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1476 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1477 | "keywords": [
1478 | "coverage",
1479 | "testing",
1480 | "xunit"
1481 | ],
1482 | "support": {
1483 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1484 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
1485 | },
1486 | "funding": [
1487 | {
1488 | "url": "https://github.com/sebastianbergmann",
1489 | "type": "github"
1490 | }
1491 | ],
1492 | "time": "2020-11-28T06:44:49+00:00"
1493 | },
1494 | {
1495 | "name": "phpunit/php-file-iterator",
1496 | "version": "3.0.5",
1497 | "source": {
1498 | "type": "git",
1499 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1500 | "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
1501 | },
1502 | "dist": {
1503 | "type": "zip",
1504 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
1505 | "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
1506 | "shasum": ""
1507 | },
1508 | "require": {
1509 | "php": ">=7.3"
1510 | },
1511 | "require-dev": {
1512 | "phpunit/phpunit": "^9.3"
1513 | },
1514 | "type": "library",
1515 | "extra": {
1516 | "branch-alias": {
1517 | "dev-master": "3.0-dev"
1518 | }
1519 | },
1520 | "autoload": {
1521 | "classmap": [
1522 | "src/"
1523 | ]
1524 | },
1525 | "notification-url": "https://packagist.org/downloads/",
1526 | "license": [
1527 | "BSD-3-Clause"
1528 | ],
1529 | "authors": [
1530 | {
1531 | "name": "Sebastian Bergmann",
1532 | "email": "sebastian@phpunit.de",
1533 | "role": "lead"
1534 | }
1535 | ],
1536 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1537 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1538 | "keywords": [
1539 | "filesystem",
1540 | "iterator"
1541 | ],
1542 | "support": {
1543 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1544 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
1545 | },
1546 | "funding": [
1547 | {
1548 | "url": "https://github.com/sebastianbergmann",
1549 | "type": "github"
1550 | }
1551 | ],
1552 | "time": "2020-09-28T05:57:25+00:00"
1553 | },
1554 | {
1555 | "name": "phpunit/php-invoker",
1556 | "version": "3.1.1",
1557 | "source": {
1558 | "type": "git",
1559 | "url": "https://github.com/sebastianbergmann/php-invoker.git",
1560 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
1561 | },
1562 | "dist": {
1563 | "type": "zip",
1564 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
1565 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
1566 | "shasum": ""
1567 | },
1568 | "require": {
1569 | "php": ">=7.3"
1570 | },
1571 | "require-dev": {
1572 | "ext-pcntl": "*",
1573 | "phpunit/phpunit": "^9.3"
1574 | },
1575 | "suggest": {
1576 | "ext-pcntl": "*"
1577 | },
1578 | "type": "library",
1579 | "extra": {
1580 | "branch-alias": {
1581 | "dev-master": "3.1-dev"
1582 | }
1583 | },
1584 | "autoload": {
1585 | "classmap": [
1586 | "src/"
1587 | ]
1588 | },
1589 | "notification-url": "https://packagist.org/downloads/",
1590 | "license": [
1591 | "BSD-3-Clause"
1592 | ],
1593 | "authors": [
1594 | {
1595 | "name": "Sebastian Bergmann",
1596 | "email": "sebastian@phpunit.de",
1597 | "role": "lead"
1598 | }
1599 | ],
1600 | "description": "Invoke callables with a timeout",
1601 | "homepage": "https://github.com/sebastianbergmann/php-invoker/",
1602 | "keywords": [
1603 | "process"
1604 | ],
1605 | "support": {
1606 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
1607 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
1608 | },
1609 | "funding": [
1610 | {
1611 | "url": "https://github.com/sebastianbergmann",
1612 | "type": "github"
1613 | }
1614 | ],
1615 | "time": "2020-09-28T05:58:55+00:00"
1616 | },
1617 | {
1618 | "name": "phpunit/php-text-template",
1619 | "version": "2.0.4",
1620 | "source": {
1621 | "type": "git",
1622 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
1623 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
1624 | },
1625 | "dist": {
1626 | "type": "zip",
1627 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
1628 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
1629 | "shasum": ""
1630 | },
1631 | "require": {
1632 | "php": ">=7.3"
1633 | },
1634 | "require-dev": {
1635 | "phpunit/phpunit": "^9.3"
1636 | },
1637 | "type": "library",
1638 | "extra": {
1639 | "branch-alias": {
1640 | "dev-master": "2.0-dev"
1641 | }
1642 | },
1643 | "autoload": {
1644 | "classmap": [
1645 | "src/"
1646 | ]
1647 | },
1648 | "notification-url": "https://packagist.org/downloads/",
1649 | "license": [
1650 | "BSD-3-Clause"
1651 | ],
1652 | "authors": [
1653 | {
1654 | "name": "Sebastian Bergmann",
1655 | "email": "sebastian@phpunit.de",
1656 | "role": "lead"
1657 | }
1658 | ],
1659 | "description": "Simple template engine.",
1660 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1661 | "keywords": [
1662 | "template"
1663 | ],
1664 | "support": {
1665 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1666 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
1667 | },
1668 | "funding": [
1669 | {
1670 | "url": "https://github.com/sebastianbergmann",
1671 | "type": "github"
1672 | }
1673 | ],
1674 | "time": "2020-10-26T05:33:50+00:00"
1675 | },
1676 | {
1677 | "name": "phpunit/php-timer",
1678 | "version": "5.0.3",
1679 | "source": {
1680 | "type": "git",
1681 | "url": "https://github.com/sebastianbergmann/php-timer.git",
1682 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
1683 | },
1684 | "dist": {
1685 | "type": "zip",
1686 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
1687 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
1688 | "shasum": ""
1689 | },
1690 | "require": {
1691 | "php": ">=7.3"
1692 | },
1693 | "require-dev": {
1694 | "phpunit/phpunit": "^9.3"
1695 | },
1696 | "type": "library",
1697 | "extra": {
1698 | "branch-alias": {
1699 | "dev-master": "5.0-dev"
1700 | }
1701 | },
1702 | "autoload": {
1703 | "classmap": [
1704 | "src/"
1705 | ]
1706 | },
1707 | "notification-url": "https://packagist.org/downloads/",
1708 | "license": [
1709 | "BSD-3-Clause"
1710 | ],
1711 | "authors": [
1712 | {
1713 | "name": "Sebastian Bergmann",
1714 | "email": "sebastian@phpunit.de",
1715 | "role": "lead"
1716 | }
1717 | ],
1718 | "description": "Utility class for timing",
1719 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
1720 | "keywords": [
1721 | "timer"
1722 | ],
1723 | "support": {
1724 | "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1725 | "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
1726 | },
1727 | "funding": [
1728 | {
1729 | "url": "https://github.com/sebastianbergmann",
1730 | "type": "github"
1731 | }
1732 | ],
1733 | "time": "2020-10-26T13:16:10+00:00"
1734 | },
1735 | {
1736 | "name": "phpunit/phpunit",
1737 | "version": "9.5.1",
1738 | "source": {
1739 | "type": "git",
1740 | "url": "https://github.com/sebastianbergmann/phpunit.git",
1741 | "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360"
1742 | },
1743 | "dist": {
1744 | "type": "zip",
1745 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7bdf4085de85a825f4424eae52c99a1cec2f360",
1746 | "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360",
1747 | "shasum": ""
1748 | },
1749 | "require": {
1750 | "doctrine/instantiator": "^1.3.1",
1751 | "ext-dom": "*",
1752 | "ext-json": "*",
1753 | "ext-libxml": "*",
1754 | "ext-mbstring": "*",
1755 | "ext-xml": "*",
1756 | "ext-xmlwriter": "*",
1757 | "myclabs/deep-copy": "^1.10.1",
1758 | "phar-io/manifest": "^2.0.1",
1759 | "phar-io/version": "^3.0.2",
1760 | "php": ">=7.3",
1761 | "phpspec/prophecy": "^1.12.1",
1762 | "phpunit/php-code-coverage": "^9.2.3",
1763 | "phpunit/php-file-iterator": "^3.0.5",
1764 | "phpunit/php-invoker": "^3.1.1",
1765 | "phpunit/php-text-template": "^2.0.3",
1766 | "phpunit/php-timer": "^5.0.2",
1767 | "sebastian/cli-parser": "^1.0.1",
1768 | "sebastian/code-unit": "^1.0.6",
1769 | "sebastian/comparator": "^4.0.5",
1770 | "sebastian/diff": "^4.0.3",
1771 | "sebastian/environment": "^5.1.3",
1772 | "sebastian/exporter": "^4.0.3",
1773 | "sebastian/global-state": "^5.0.1",
1774 | "sebastian/object-enumerator": "^4.0.3",
1775 | "sebastian/resource-operations": "^3.0.3",
1776 | "sebastian/type": "^2.3",
1777 | "sebastian/version": "^3.0.2"
1778 | },
1779 | "require-dev": {
1780 | "ext-pdo": "*",
1781 | "phpspec/prophecy-phpunit": "^2.0.1"
1782 | },
1783 | "suggest": {
1784 | "ext-soap": "*",
1785 | "ext-xdebug": "*"
1786 | },
1787 | "bin": [
1788 | "phpunit"
1789 | ],
1790 | "type": "library",
1791 | "extra": {
1792 | "branch-alias": {
1793 | "dev-master": "9.5-dev"
1794 | }
1795 | },
1796 | "autoload": {
1797 | "classmap": [
1798 | "src/"
1799 | ],
1800 | "files": [
1801 | "src/Framework/Assert/Functions.php"
1802 | ]
1803 | },
1804 | "notification-url": "https://packagist.org/downloads/",
1805 | "license": [
1806 | "BSD-3-Clause"
1807 | ],
1808 | "authors": [
1809 | {
1810 | "name": "Sebastian Bergmann",
1811 | "email": "sebastian@phpunit.de",
1812 | "role": "lead"
1813 | }
1814 | ],
1815 | "description": "The PHP Unit Testing framework.",
1816 | "homepage": "https://phpunit.de/",
1817 | "keywords": [
1818 | "phpunit",
1819 | "testing",
1820 | "xunit"
1821 | ],
1822 | "support": {
1823 | "issues": "https://github.com/sebastianbergmann/phpunit/issues",
1824 | "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.1"
1825 | },
1826 | "funding": [
1827 | {
1828 | "url": "https://phpunit.de/donate.html",
1829 | "type": "custom"
1830 | },
1831 | {
1832 | "url": "https://github.com/sebastianbergmann",
1833 | "type": "github"
1834 | }
1835 | ],
1836 | "time": "2021-01-17T07:42:25+00:00"
1837 | },
1838 | {
1839 | "name": "sebastian/cli-parser",
1840 | "version": "1.0.1",
1841 | "source": {
1842 | "type": "git",
1843 | "url": "https://github.com/sebastianbergmann/cli-parser.git",
1844 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
1845 | },
1846 | "dist": {
1847 | "type": "zip",
1848 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
1849 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
1850 | "shasum": ""
1851 | },
1852 | "require": {
1853 | "php": ">=7.3"
1854 | },
1855 | "require-dev": {
1856 | "phpunit/phpunit": "^9.3"
1857 | },
1858 | "type": "library",
1859 | "extra": {
1860 | "branch-alias": {
1861 | "dev-master": "1.0-dev"
1862 | }
1863 | },
1864 | "autoload": {
1865 | "classmap": [
1866 | "src/"
1867 | ]
1868 | },
1869 | "notification-url": "https://packagist.org/downloads/",
1870 | "license": [
1871 | "BSD-3-Clause"
1872 | ],
1873 | "authors": [
1874 | {
1875 | "name": "Sebastian Bergmann",
1876 | "email": "sebastian@phpunit.de",
1877 | "role": "lead"
1878 | }
1879 | ],
1880 | "description": "Library for parsing CLI options",
1881 | "homepage": "https://github.com/sebastianbergmann/cli-parser",
1882 | "support": {
1883 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
1884 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
1885 | },
1886 | "funding": [
1887 | {
1888 | "url": "https://github.com/sebastianbergmann",
1889 | "type": "github"
1890 | }
1891 | ],
1892 | "time": "2020-09-28T06:08:49+00:00"
1893 | },
1894 | {
1895 | "name": "sebastian/code-unit",
1896 | "version": "1.0.8",
1897 | "source": {
1898 | "type": "git",
1899 | "url": "https://github.com/sebastianbergmann/code-unit.git",
1900 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
1901 | },
1902 | "dist": {
1903 | "type": "zip",
1904 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
1905 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
1906 | "shasum": ""
1907 | },
1908 | "require": {
1909 | "php": ">=7.3"
1910 | },
1911 | "require-dev": {
1912 | "phpunit/phpunit": "^9.3"
1913 | },
1914 | "type": "library",
1915 | "extra": {
1916 | "branch-alias": {
1917 | "dev-master": "1.0-dev"
1918 | }
1919 | },
1920 | "autoload": {
1921 | "classmap": [
1922 | "src/"
1923 | ]
1924 | },
1925 | "notification-url": "https://packagist.org/downloads/",
1926 | "license": [
1927 | "BSD-3-Clause"
1928 | ],
1929 | "authors": [
1930 | {
1931 | "name": "Sebastian Bergmann",
1932 | "email": "sebastian@phpunit.de",
1933 | "role": "lead"
1934 | }
1935 | ],
1936 | "description": "Collection of value objects that represent the PHP code units",
1937 | "homepage": "https://github.com/sebastianbergmann/code-unit",
1938 | "support": {
1939 | "issues": "https://github.com/sebastianbergmann/code-unit/issues",
1940 | "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
1941 | },
1942 | "funding": [
1943 | {
1944 | "url": "https://github.com/sebastianbergmann",
1945 | "type": "github"
1946 | }
1947 | ],
1948 | "time": "2020-10-26T13:08:54+00:00"
1949 | },
1950 | {
1951 | "name": "sebastian/code-unit-reverse-lookup",
1952 | "version": "2.0.3",
1953 | "source": {
1954 | "type": "git",
1955 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1956 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
1957 | },
1958 | "dist": {
1959 | "type": "zip",
1960 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
1961 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
1962 | "shasum": ""
1963 | },
1964 | "require": {
1965 | "php": ">=7.3"
1966 | },
1967 | "require-dev": {
1968 | "phpunit/phpunit": "^9.3"
1969 | },
1970 | "type": "library",
1971 | "extra": {
1972 | "branch-alias": {
1973 | "dev-master": "2.0-dev"
1974 | }
1975 | },
1976 | "autoload": {
1977 | "classmap": [
1978 | "src/"
1979 | ]
1980 | },
1981 | "notification-url": "https://packagist.org/downloads/",
1982 | "license": [
1983 | "BSD-3-Clause"
1984 | ],
1985 | "authors": [
1986 | {
1987 | "name": "Sebastian Bergmann",
1988 | "email": "sebastian@phpunit.de"
1989 | }
1990 | ],
1991 | "description": "Looks up which function or method a line of code belongs to",
1992 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1993 | "support": {
1994 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
1995 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
1996 | },
1997 | "funding": [
1998 | {
1999 | "url": "https://github.com/sebastianbergmann",
2000 | "type": "github"
2001 | }
2002 | ],
2003 | "time": "2020-09-28T05:30:19+00:00"
2004 | },
2005 | {
2006 | "name": "sebastian/comparator",
2007 | "version": "4.0.6",
2008 | "source": {
2009 | "type": "git",
2010 | "url": "https://github.com/sebastianbergmann/comparator.git",
2011 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
2012 | },
2013 | "dist": {
2014 | "type": "zip",
2015 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
2016 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
2017 | "shasum": ""
2018 | },
2019 | "require": {
2020 | "php": ">=7.3",
2021 | "sebastian/diff": "^4.0",
2022 | "sebastian/exporter": "^4.0"
2023 | },
2024 | "require-dev": {
2025 | "phpunit/phpunit": "^9.3"
2026 | },
2027 | "type": "library",
2028 | "extra": {
2029 | "branch-alias": {
2030 | "dev-master": "4.0-dev"
2031 | }
2032 | },
2033 | "autoload": {
2034 | "classmap": [
2035 | "src/"
2036 | ]
2037 | },
2038 | "notification-url": "https://packagist.org/downloads/",
2039 | "license": [
2040 | "BSD-3-Clause"
2041 | ],
2042 | "authors": [
2043 | {
2044 | "name": "Sebastian Bergmann",
2045 | "email": "sebastian@phpunit.de"
2046 | },
2047 | {
2048 | "name": "Jeff Welch",
2049 | "email": "whatthejeff@gmail.com"
2050 | },
2051 | {
2052 | "name": "Volker Dusch",
2053 | "email": "github@wallbash.com"
2054 | },
2055 | {
2056 | "name": "Bernhard Schussek",
2057 | "email": "bschussek@2bepublished.at"
2058 | }
2059 | ],
2060 | "description": "Provides the functionality to compare PHP values for equality",
2061 | "homepage": "https://github.com/sebastianbergmann/comparator",
2062 | "keywords": [
2063 | "comparator",
2064 | "compare",
2065 | "equality"
2066 | ],
2067 | "support": {
2068 | "issues": "https://github.com/sebastianbergmann/comparator/issues",
2069 | "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
2070 | },
2071 | "funding": [
2072 | {
2073 | "url": "https://github.com/sebastianbergmann",
2074 | "type": "github"
2075 | }
2076 | ],
2077 | "time": "2020-10-26T15:49:45+00:00"
2078 | },
2079 | {
2080 | "name": "sebastian/complexity",
2081 | "version": "2.0.2",
2082 | "source": {
2083 | "type": "git",
2084 | "url": "https://github.com/sebastianbergmann/complexity.git",
2085 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
2086 | },
2087 | "dist": {
2088 | "type": "zip",
2089 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
2090 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
2091 | "shasum": ""
2092 | },
2093 | "require": {
2094 | "nikic/php-parser": "^4.7",
2095 | "php": ">=7.3"
2096 | },
2097 | "require-dev": {
2098 | "phpunit/phpunit": "^9.3"
2099 | },
2100 | "type": "library",
2101 | "extra": {
2102 | "branch-alias": {
2103 | "dev-master": "2.0-dev"
2104 | }
2105 | },
2106 | "autoload": {
2107 | "classmap": [
2108 | "src/"
2109 | ]
2110 | },
2111 | "notification-url": "https://packagist.org/downloads/",
2112 | "license": [
2113 | "BSD-3-Clause"
2114 | ],
2115 | "authors": [
2116 | {
2117 | "name": "Sebastian Bergmann",
2118 | "email": "sebastian@phpunit.de",
2119 | "role": "lead"
2120 | }
2121 | ],
2122 | "description": "Library for calculating the complexity of PHP code units",
2123 | "homepage": "https://github.com/sebastianbergmann/complexity",
2124 | "support": {
2125 | "issues": "https://github.com/sebastianbergmann/complexity/issues",
2126 | "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
2127 | },
2128 | "funding": [
2129 | {
2130 | "url": "https://github.com/sebastianbergmann",
2131 | "type": "github"
2132 | }
2133 | ],
2134 | "time": "2020-10-26T15:52:27+00:00"
2135 | },
2136 | {
2137 | "name": "sebastian/diff",
2138 | "version": "4.0.4",
2139 | "source": {
2140 | "type": "git",
2141 | "url": "https://github.com/sebastianbergmann/diff.git",
2142 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
2143 | },
2144 | "dist": {
2145 | "type": "zip",
2146 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
2147 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
2148 | "shasum": ""
2149 | },
2150 | "require": {
2151 | "php": ">=7.3"
2152 | },
2153 | "require-dev": {
2154 | "phpunit/phpunit": "^9.3",
2155 | "symfony/process": "^4.2 || ^5"
2156 | },
2157 | "type": "library",
2158 | "extra": {
2159 | "branch-alias": {
2160 | "dev-master": "4.0-dev"
2161 | }
2162 | },
2163 | "autoload": {
2164 | "classmap": [
2165 | "src/"
2166 | ]
2167 | },
2168 | "notification-url": "https://packagist.org/downloads/",
2169 | "license": [
2170 | "BSD-3-Clause"
2171 | ],
2172 | "authors": [
2173 | {
2174 | "name": "Sebastian Bergmann",
2175 | "email": "sebastian@phpunit.de"
2176 | },
2177 | {
2178 | "name": "Kore Nordmann",
2179 | "email": "mail@kore-nordmann.de"
2180 | }
2181 | ],
2182 | "description": "Diff implementation",
2183 | "homepage": "https://github.com/sebastianbergmann/diff",
2184 | "keywords": [
2185 | "diff",
2186 | "udiff",
2187 | "unidiff",
2188 | "unified diff"
2189 | ],
2190 | "support": {
2191 | "issues": "https://github.com/sebastianbergmann/diff/issues",
2192 | "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
2193 | },
2194 | "funding": [
2195 | {
2196 | "url": "https://github.com/sebastianbergmann",
2197 | "type": "github"
2198 | }
2199 | ],
2200 | "time": "2020-10-26T13:10:38+00:00"
2201 | },
2202 | {
2203 | "name": "sebastian/environment",
2204 | "version": "5.1.3",
2205 | "source": {
2206 | "type": "git",
2207 | "url": "https://github.com/sebastianbergmann/environment.git",
2208 | "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
2209 | },
2210 | "dist": {
2211 | "type": "zip",
2212 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
2213 | "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
2214 | "shasum": ""
2215 | },
2216 | "require": {
2217 | "php": ">=7.3"
2218 | },
2219 | "require-dev": {
2220 | "phpunit/phpunit": "^9.3"
2221 | },
2222 | "suggest": {
2223 | "ext-posix": "*"
2224 | },
2225 | "type": "library",
2226 | "extra": {
2227 | "branch-alias": {
2228 | "dev-master": "5.1-dev"
2229 | }
2230 | },
2231 | "autoload": {
2232 | "classmap": [
2233 | "src/"
2234 | ]
2235 | },
2236 | "notification-url": "https://packagist.org/downloads/",
2237 | "license": [
2238 | "BSD-3-Clause"
2239 | ],
2240 | "authors": [
2241 | {
2242 | "name": "Sebastian Bergmann",
2243 | "email": "sebastian@phpunit.de"
2244 | }
2245 | ],
2246 | "description": "Provides functionality to handle HHVM/PHP environments",
2247 | "homepage": "http://www.github.com/sebastianbergmann/environment",
2248 | "keywords": [
2249 | "Xdebug",
2250 | "environment",
2251 | "hhvm"
2252 | ],
2253 | "support": {
2254 | "issues": "https://github.com/sebastianbergmann/environment/issues",
2255 | "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
2256 | },
2257 | "funding": [
2258 | {
2259 | "url": "https://github.com/sebastianbergmann",
2260 | "type": "github"
2261 | }
2262 | ],
2263 | "time": "2020-09-28T05:52:38+00:00"
2264 | },
2265 | {
2266 | "name": "sebastian/exporter",
2267 | "version": "4.0.3",
2268 | "source": {
2269 | "type": "git",
2270 | "url": "https://github.com/sebastianbergmann/exporter.git",
2271 | "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
2272 | },
2273 | "dist": {
2274 | "type": "zip",
2275 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
2276 | "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
2277 | "shasum": ""
2278 | },
2279 | "require": {
2280 | "php": ">=7.3",
2281 | "sebastian/recursion-context": "^4.0"
2282 | },
2283 | "require-dev": {
2284 | "ext-mbstring": "*",
2285 | "phpunit/phpunit": "^9.3"
2286 | },
2287 | "type": "library",
2288 | "extra": {
2289 | "branch-alias": {
2290 | "dev-master": "4.0-dev"
2291 | }
2292 | },
2293 | "autoload": {
2294 | "classmap": [
2295 | "src/"
2296 | ]
2297 | },
2298 | "notification-url": "https://packagist.org/downloads/",
2299 | "license": [
2300 | "BSD-3-Clause"
2301 | ],
2302 | "authors": [
2303 | {
2304 | "name": "Sebastian Bergmann",
2305 | "email": "sebastian@phpunit.de"
2306 | },
2307 | {
2308 | "name": "Jeff Welch",
2309 | "email": "whatthejeff@gmail.com"
2310 | },
2311 | {
2312 | "name": "Volker Dusch",
2313 | "email": "github@wallbash.com"
2314 | },
2315 | {
2316 | "name": "Adam Harvey",
2317 | "email": "aharvey@php.net"
2318 | },
2319 | {
2320 | "name": "Bernhard Schussek",
2321 | "email": "bschussek@gmail.com"
2322 | }
2323 | ],
2324 | "description": "Provides the functionality to export PHP variables for visualization",
2325 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
2326 | "keywords": [
2327 | "export",
2328 | "exporter"
2329 | ],
2330 | "support": {
2331 | "issues": "https://github.com/sebastianbergmann/exporter/issues",
2332 | "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
2333 | },
2334 | "funding": [
2335 | {
2336 | "url": "https://github.com/sebastianbergmann",
2337 | "type": "github"
2338 | }
2339 | ],
2340 | "time": "2020-09-28T05:24:23+00:00"
2341 | },
2342 | {
2343 | "name": "sebastian/global-state",
2344 | "version": "5.0.2",
2345 | "source": {
2346 | "type": "git",
2347 | "url": "https://github.com/sebastianbergmann/global-state.git",
2348 | "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
2349 | },
2350 | "dist": {
2351 | "type": "zip",
2352 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
2353 | "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
2354 | "shasum": ""
2355 | },
2356 | "require": {
2357 | "php": ">=7.3",
2358 | "sebastian/object-reflector": "^2.0",
2359 | "sebastian/recursion-context": "^4.0"
2360 | },
2361 | "require-dev": {
2362 | "ext-dom": "*",
2363 | "phpunit/phpunit": "^9.3"
2364 | },
2365 | "suggest": {
2366 | "ext-uopz": "*"
2367 | },
2368 | "type": "library",
2369 | "extra": {
2370 | "branch-alias": {
2371 | "dev-master": "5.0-dev"
2372 | }
2373 | },
2374 | "autoload": {
2375 | "classmap": [
2376 | "src/"
2377 | ]
2378 | },
2379 | "notification-url": "https://packagist.org/downloads/",
2380 | "license": [
2381 | "BSD-3-Clause"
2382 | ],
2383 | "authors": [
2384 | {
2385 | "name": "Sebastian Bergmann",
2386 | "email": "sebastian@phpunit.de"
2387 | }
2388 | ],
2389 | "description": "Snapshotting of global state",
2390 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
2391 | "keywords": [
2392 | "global state"
2393 | ],
2394 | "support": {
2395 | "issues": "https://github.com/sebastianbergmann/global-state/issues",
2396 | "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
2397 | },
2398 | "funding": [
2399 | {
2400 | "url": "https://github.com/sebastianbergmann",
2401 | "type": "github"
2402 | }
2403 | ],
2404 | "time": "2020-10-26T15:55:19+00:00"
2405 | },
2406 | {
2407 | "name": "sebastian/lines-of-code",
2408 | "version": "1.0.3",
2409 | "source": {
2410 | "type": "git",
2411 | "url": "https://github.com/sebastianbergmann/lines-of-code.git",
2412 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
2413 | },
2414 | "dist": {
2415 | "type": "zip",
2416 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
2417 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
2418 | "shasum": ""
2419 | },
2420 | "require": {
2421 | "nikic/php-parser": "^4.6",
2422 | "php": ">=7.3"
2423 | },
2424 | "require-dev": {
2425 | "phpunit/phpunit": "^9.3"
2426 | },
2427 | "type": "library",
2428 | "extra": {
2429 | "branch-alias": {
2430 | "dev-master": "1.0-dev"
2431 | }
2432 | },
2433 | "autoload": {
2434 | "classmap": [
2435 | "src/"
2436 | ]
2437 | },
2438 | "notification-url": "https://packagist.org/downloads/",
2439 | "license": [
2440 | "BSD-3-Clause"
2441 | ],
2442 | "authors": [
2443 | {
2444 | "name": "Sebastian Bergmann",
2445 | "email": "sebastian@phpunit.de",
2446 | "role": "lead"
2447 | }
2448 | ],
2449 | "description": "Library for counting the lines of code in PHP source code",
2450 | "homepage": "https://github.com/sebastianbergmann/lines-of-code",
2451 | "support": {
2452 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
2453 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
2454 | },
2455 | "funding": [
2456 | {
2457 | "url": "https://github.com/sebastianbergmann",
2458 | "type": "github"
2459 | }
2460 | ],
2461 | "time": "2020-11-28T06:42:11+00:00"
2462 | },
2463 | {
2464 | "name": "sebastian/object-enumerator",
2465 | "version": "4.0.4",
2466 | "source": {
2467 | "type": "git",
2468 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2469 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
2470 | },
2471 | "dist": {
2472 | "type": "zip",
2473 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
2474 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
2475 | "shasum": ""
2476 | },
2477 | "require": {
2478 | "php": ">=7.3",
2479 | "sebastian/object-reflector": "^2.0",
2480 | "sebastian/recursion-context": "^4.0"
2481 | },
2482 | "require-dev": {
2483 | "phpunit/phpunit": "^9.3"
2484 | },
2485 | "type": "library",
2486 | "extra": {
2487 | "branch-alias": {
2488 | "dev-master": "4.0-dev"
2489 | }
2490 | },
2491 | "autoload": {
2492 | "classmap": [
2493 | "src/"
2494 | ]
2495 | },
2496 | "notification-url": "https://packagist.org/downloads/",
2497 | "license": [
2498 | "BSD-3-Clause"
2499 | ],
2500 | "authors": [
2501 | {
2502 | "name": "Sebastian Bergmann",
2503 | "email": "sebastian@phpunit.de"
2504 | }
2505 | ],
2506 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2507 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2508 | "support": {
2509 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2510 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
2511 | },
2512 | "funding": [
2513 | {
2514 | "url": "https://github.com/sebastianbergmann",
2515 | "type": "github"
2516 | }
2517 | ],
2518 | "time": "2020-10-26T13:12:34+00:00"
2519 | },
2520 | {
2521 | "name": "sebastian/object-reflector",
2522 | "version": "2.0.4",
2523 | "source": {
2524 | "type": "git",
2525 | "url": "https://github.com/sebastianbergmann/object-reflector.git",
2526 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
2527 | },
2528 | "dist": {
2529 | "type": "zip",
2530 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
2531 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
2532 | "shasum": ""
2533 | },
2534 | "require": {
2535 | "php": ">=7.3"
2536 | },
2537 | "require-dev": {
2538 | "phpunit/phpunit": "^9.3"
2539 | },
2540 | "type": "library",
2541 | "extra": {
2542 | "branch-alias": {
2543 | "dev-master": "2.0-dev"
2544 | }
2545 | },
2546 | "autoload": {
2547 | "classmap": [
2548 | "src/"
2549 | ]
2550 | },
2551 | "notification-url": "https://packagist.org/downloads/",
2552 | "license": [
2553 | "BSD-3-Clause"
2554 | ],
2555 | "authors": [
2556 | {
2557 | "name": "Sebastian Bergmann",
2558 | "email": "sebastian@phpunit.de"
2559 | }
2560 | ],
2561 | "description": "Allows reflection of object attributes, including inherited and non-public ones",
2562 | "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2563 | "support": {
2564 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
2565 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
2566 | },
2567 | "funding": [
2568 | {
2569 | "url": "https://github.com/sebastianbergmann",
2570 | "type": "github"
2571 | }
2572 | ],
2573 | "time": "2020-10-26T13:14:26+00:00"
2574 | },
2575 | {
2576 | "name": "sebastian/recursion-context",
2577 | "version": "4.0.4",
2578 | "source": {
2579 | "type": "git",
2580 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
2581 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
2582 | },
2583 | "dist": {
2584 | "type": "zip",
2585 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
2586 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
2587 | "shasum": ""
2588 | },
2589 | "require": {
2590 | "php": ">=7.3"
2591 | },
2592 | "require-dev": {
2593 | "phpunit/phpunit": "^9.3"
2594 | },
2595 | "type": "library",
2596 | "extra": {
2597 | "branch-alias": {
2598 | "dev-master": "4.0-dev"
2599 | }
2600 | },
2601 | "autoload": {
2602 | "classmap": [
2603 | "src/"
2604 | ]
2605 | },
2606 | "notification-url": "https://packagist.org/downloads/",
2607 | "license": [
2608 | "BSD-3-Clause"
2609 | ],
2610 | "authors": [
2611 | {
2612 | "name": "Sebastian Bergmann",
2613 | "email": "sebastian@phpunit.de"
2614 | },
2615 | {
2616 | "name": "Jeff Welch",
2617 | "email": "whatthejeff@gmail.com"
2618 | },
2619 | {
2620 | "name": "Adam Harvey",
2621 | "email": "aharvey@php.net"
2622 | }
2623 | ],
2624 | "description": "Provides functionality to recursively process PHP variables",
2625 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2626 | "support": {
2627 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
2628 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
2629 | },
2630 | "funding": [
2631 | {
2632 | "url": "https://github.com/sebastianbergmann",
2633 | "type": "github"
2634 | }
2635 | ],
2636 | "time": "2020-10-26T13:17:30+00:00"
2637 | },
2638 | {
2639 | "name": "sebastian/resource-operations",
2640 | "version": "3.0.3",
2641 | "source": {
2642 | "type": "git",
2643 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
2644 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
2645 | },
2646 | "dist": {
2647 | "type": "zip",
2648 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
2649 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
2650 | "shasum": ""
2651 | },
2652 | "require": {
2653 | "php": ">=7.3"
2654 | },
2655 | "require-dev": {
2656 | "phpunit/phpunit": "^9.0"
2657 | },
2658 | "type": "library",
2659 | "extra": {
2660 | "branch-alias": {
2661 | "dev-master": "3.0-dev"
2662 | }
2663 | },
2664 | "autoload": {
2665 | "classmap": [
2666 | "src/"
2667 | ]
2668 | },
2669 | "notification-url": "https://packagist.org/downloads/",
2670 | "license": [
2671 | "BSD-3-Clause"
2672 | ],
2673 | "authors": [
2674 | {
2675 | "name": "Sebastian Bergmann",
2676 | "email": "sebastian@phpunit.de"
2677 | }
2678 | ],
2679 | "description": "Provides a list of PHP built-in functions that operate on resources",
2680 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2681 | "support": {
2682 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
2683 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
2684 | },
2685 | "funding": [
2686 | {
2687 | "url": "https://github.com/sebastianbergmann",
2688 | "type": "github"
2689 | }
2690 | ],
2691 | "time": "2020-09-28T06:45:17+00:00"
2692 | },
2693 | {
2694 | "name": "sebastian/type",
2695 | "version": "2.3.1",
2696 | "source": {
2697 | "type": "git",
2698 | "url": "https://github.com/sebastianbergmann/type.git",
2699 | "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
2700 | },
2701 | "dist": {
2702 | "type": "zip",
2703 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
2704 | "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
2705 | "shasum": ""
2706 | },
2707 | "require": {
2708 | "php": ">=7.3"
2709 | },
2710 | "require-dev": {
2711 | "phpunit/phpunit": "^9.3"
2712 | },
2713 | "type": "library",
2714 | "extra": {
2715 | "branch-alias": {
2716 | "dev-master": "2.3-dev"
2717 | }
2718 | },
2719 | "autoload": {
2720 | "classmap": [
2721 | "src/"
2722 | ]
2723 | },
2724 | "notification-url": "https://packagist.org/downloads/",
2725 | "license": [
2726 | "BSD-3-Clause"
2727 | ],
2728 | "authors": [
2729 | {
2730 | "name": "Sebastian Bergmann",
2731 | "email": "sebastian@phpunit.de",
2732 | "role": "lead"
2733 | }
2734 | ],
2735 | "description": "Collection of value objects that represent the types of the PHP type system",
2736 | "homepage": "https://github.com/sebastianbergmann/type",
2737 | "support": {
2738 | "issues": "https://github.com/sebastianbergmann/type/issues",
2739 | "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
2740 | },
2741 | "funding": [
2742 | {
2743 | "url": "https://github.com/sebastianbergmann",
2744 | "type": "github"
2745 | }
2746 | ],
2747 | "time": "2020-10-26T13:18:59+00:00"
2748 | },
2749 | {
2750 | "name": "sebastian/version",
2751 | "version": "3.0.2",
2752 | "source": {
2753 | "type": "git",
2754 | "url": "https://github.com/sebastianbergmann/version.git",
2755 | "reference": "c6c1022351a901512170118436c764e473f6de8c"
2756 | },
2757 | "dist": {
2758 | "type": "zip",
2759 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
2760 | "reference": "c6c1022351a901512170118436c764e473f6de8c",
2761 | "shasum": ""
2762 | },
2763 | "require": {
2764 | "php": ">=7.3"
2765 | },
2766 | "type": "library",
2767 | "extra": {
2768 | "branch-alias": {
2769 | "dev-master": "3.0-dev"
2770 | }
2771 | },
2772 | "autoload": {
2773 | "classmap": [
2774 | "src/"
2775 | ]
2776 | },
2777 | "notification-url": "https://packagist.org/downloads/",
2778 | "license": [
2779 | "BSD-3-Clause"
2780 | ],
2781 | "authors": [
2782 | {
2783 | "name": "Sebastian Bergmann",
2784 | "email": "sebastian@phpunit.de",
2785 | "role": "lead"
2786 | }
2787 | ],
2788 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2789 | "homepage": "https://github.com/sebastianbergmann/version",
2790 | "support": {
2791 | "issues": "https://github.com/sebastianbergmann/version/issues",
2792 | "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
2793 | },
2794 | "funding": [
2795 | {
2796 | "url": "https://github.com/sebastianbergmann",
2797 | "type": "github"
2798 | }
2799 | ],
2800 | "time": "2020-09-28T06:39:44+00:00"
2801 | },
2802 | {
2803 | "name": "squizlabs/php_codesniffer",
2804 | "version": "3.5.8",
2805 | "source": {
2806 | "type": "git",
2807 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
2808 | "reference": "9d583721a7157ee997f235f327de038e7ea6dac4"
2809 | },
2810 | "dist": {
2811 | "type": "zip",
2812 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4",
2813 | "reference": "9d583721a7157ee997f235f327de038e7ea6dac4",
2814 | "shasum": ""
2815 | },
2816 | "require": {
2817 | "ext-simplexml": "*",
2818 | "ext-tokenizer": "*",
2819 | "ext-xmlwriter": "*",
2820 | "php": ">=5.4.0"
2821 | },
2822 | "require-dev": {
2823 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
2824 | },
2825 | "bin": [
2826 | "bin/phpcs",
2827 | "bin/phpcbf"
2828 | ],
2829 | "type": "library",
2830 | "extra": {
2831 | "branch-alias": {
2832 | "dev-master": "3.x-dev"
2833 | }
2834 | },
2835 | "notification-url": "https://packagist.org/downloads/",
2836 | "license": [
2837 | "BSD-3-Clause"
2838 | ],
2839 | "authors": [
2840 | {
2841 | "name": "Greg Sherwood",
2842 | "role": "lead"
2843 | }
2844 | ],
2845 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
2846 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
2847 | "keywords": [
2848 | "phpcs",
2849 | "standards"
2850 | ],
2851 | "support": {
2852 | "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
2853 | "source": "https://github.com/squizlabs/PHP_CodeSniffer",
2854 | "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
2855 | },
2856 | "time": "2020-10-23T02:01:07+00:00"
2857 | },
2858 | {
2859 | "name": "symfony/polyfill-ctype",
2860 | "version": "v1.22.0",
2861 | "source": {
2862 | "type": "git",
2863 | "url": "https://github.com/symfony/polyfill-ctype.git",
2864 | "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
2865 | },
2866 | "dist": {
2867 | "type": "zip",
2868 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
2869 | "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
2870 | "shasum": ""
2871 | },
2872 | "require": {
2873 | "php": ">=7.1"
2874 | },
2875 | "suggest": {
2876 | "ext-ctype": "For best performance"
2877 | },
2878 | "type": "library",
2879 | "extra": {
2880 | "branch-alias": {
2881 | "dev-main": "1.22-dev"
2882 | },
2883 | "thanks": {
2884 | "name": "symfony/polyfill",
2885 | "url": "https://github.com/symfony/polyfill"
2886 | }
2887 | },
2888 | "autoload": {
2889 | "psr-4": {
2890 | "Symfony\\Polyfill\\Ctype\\": ""
2891 | },
2892 | "files": [
2893 | "bootstrap.php"
2894 | ]
2895 | },
2896 | "notification-url": "https://packagist.org/downloads/",
2897 | "license": [
2898 | "MIT"
2899 | ],
2900 | "authors": [
2901 | {
2902 | "name": "Gert de Pagter",
2903 | "email": "BackEndTea@gmail.com"
2904 | },
2905 | {
2906 | "name": "Symfony Community",
2907 | "homepage": "https://symfony.com/contributors"
2908 | }
2909 | ],
2910 | "description": "Symfony polyfill for ctype functions",
2911 | "homepage": "https://symfony.com",
2912 | "keywords": [
2913 | "compatibility",
2914 | "ctype",
2915 | "polyfill",
2916 | "portable"
2917 | ],
2918 | "support": {
2919 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0"
2920 | },
2921 | "funding": [
2922 | {
2923 | "url": "https://symfony.com/sponsor",
2924 | "type": "custom"
2925 | },
2926 | {
2927 | "url": "https://github.com/fabpot",
2928 | "type": "github"
2929 | },
2930 | {
2931 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2932 | "type": "tidelift"
2933 | }
2934 | ],
2935 | "time": "2021-01-07T16:49:33+00:00"
2936 | },
2937 | {
2938 | "name": "symfony/polyfill-php73",
2939 | "version": "v1.22.0",
2940 | "source": {
2941 | "type": "git",
2942 | "url": "https://github.com/symfony/polyfill-php73.git",
2943 | "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
2944 | },
2945 | "dist": {
2946 | "type": "zip",
2947 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
2948 | "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
2949 | "shasum": ""
2950 | },
2951 | "require": {
2952 | "php": ">=7.1"
2953 | },
2954 | "type": "library",
2955 | "extra": {
2956 | "branch-alias": {
2957 | "dev-main": "1.22-dev"
2958 | },
2959 | "thanks": {
2960 | "name": "symfony/polyfill",
2961 | "url": "https://github.com/symfony/polyfill"
2962 | }
2963 | },
2964 | "autoload": {
2965 | "psr-4": {
2966 | "Symfony\\Polyfill\\Php73\\": ""
2967 | },
2968 | "files": [
2969 | "bootstrap.php"
2970 | ],
2971 | "classmap": [
2972 | "Resources/stubs"
2973 | ]
2974 | },
2975 | "notification-url": "https://packagist.org/downloads/",
2976 | "license": [
2977 | "MIT"
2978 | ],
2979 | "authors": [
2980 | {
2981 | "name": "Nicolas Grekas",
2982 | "email": "p@tchwork.com"
2983 | },
2984 | {
2985 | "name": "Symfony Community",
2986 | "homepage": "https://symfony.com/contributors"
2987 | }
2988 | ],
2989 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
2990 | "homepage": "https://symfony.com",
2991 | "keywords": [
2992 | "compatibility",
2993 | "polyfill",
2994 | "portable",
2995 | "shim"
2996 | ],
2997 | "support": {
2998 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.0"
2999 | },
3000 | "funding": [
3001 | {
3002 | "url": "https://symfony.com/sponsor",
3003 | "type": "custom"
3004 | },
3005 | {
3006 | "url": "https://github.com/fabpot",
3007 | "type": "github"
3008 | },
3009 | {
3010 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3011 | "type": "tidelift"
3012 | }
3013 | ],
3014 | "time": "2021-01-07T16:49:33+00:00"
3015 | },
3016 | {
3017 | "name": "szepeviktor/phpstan-wordpress",
3018 | "version": "v0.7.2",
3019 | "source": {
3020 | "type": "git",
3021 | "url": "https://github.com/szepeviktor/phpstan-wordpress.git",
3022 | "reference": "191eafa7283497645de920d262133cf17de5353f"
3023 | },
3024 | "dist": {
3025 | "type": "zip",
3026 | "url": "https://api.github.com/repos/szepeviktor/phpstan-wordpress/zipball/191eafa7283497645de920d262133cf17de5353f",
3027 | "reference": "191eafa7283497645de920d262133cf17de5353f",
3028 | "shasum": ""
3029 | },
3030 | "require": {
3031 | "php": "^7.1 || ^8.0",
3032 | "php-stubs/wordpress-stubs": "^4.7 || ^5.0",
3033 | "phpstan/phpstan": "^0.12.26",
3034 | "symfony/polyfill-php73": "^1.12.0"
3035 | },
3036 | "require-dev": {
3037 | "composer/composer": "^1.8.6",
3038 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
3039 | "php-parallel-lint/php-parallel-lint": "^1.1",
3040 | "phpstan/phpstan-strict-rules": "^0.12",
3041 | "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^0.4.3"
3042 | },
3043 | "type": "phpstan-extension",
3044 | "extra": {
3045 | "phpstan": {
3046 | "includes": [
3047 | "extension.neon"
3048 | ]
3049 | }
3050 | },
3051 | "autoload": {
3052 | "psr-4": {
3053 | "PHPStan\\WordPress\\": "src/"
3054 | }
3055 | },
3056 | "notification-url": "https://packagist.org/downloads/",
3057 | "license": [
3058 | "MIT"
3059 | ],
3060 | "description": "WordPress extensions for PHPStan",
3061 | "keywords": [
3062 | "PHPStan",
3063 | "code analyse",
3064 | "code analysis",
3065 | "static analysis",
3066 | "wordpress"
3067 | ],
3068 | "support": {
3069 | "issues": "https://github.com/szepeviktor/phpstan-wordpress/issues",
3070 | "source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v0.7.2"
3071 | },
3072 | "funding": [
3073 | {
3074 | "url": "https://www.paypal.me/szepeviktor",
3075 | "type": "custom"
3076 | }
3077 | ],
3078 | "time": "2021-01-03T13:45:42+00:00"
3079 | },
3080 | {
3081 | "name": "thecodingmachine/phpstan-strict-rules",
3082 | "version": "v0.12.1",
3083 | "source": {
3084 | "type": "git",
3085 | "url": "https://github.com/thecodingmachine/phpstan-strict-rules.git",
3086 | "reference": "4bb334f6f637ebfba83cfdc7392d549a8a3fbba7"
3087 | },
3088 | "dist": {
3089 | "type": "zip",
3090 | "url": "https://api.github.com/repos/thecodingmachine/phpstan-strict-rules/zipball/4bb334f6f637ebfba83cfdc7392d549a8a3fbba7",
3091 | "reference": "4bb334f6f637ebfba83cfdc7392d549a8a3fbba7",
3092 | "shasum": ""
3093 | },
3094 | "require": {
3095 | "php": "^7.1|^8.0",
3096 | "phpstan/phpstan": "^0.12"
3097 | },
3098 | "require-dev": {
3099 | "php-coveralls/php-coveralls": "^2.1",
3100 | "phpunit/phpunit": "^7.1"
3101 | },
3102 | "type": "phpstan-extension",
3103 | "extra": {
3104 | "branch-alias": {
3105 | "dev-master": "0.12-dev"
3106 | },
3107 | "phpstan": {
3108 | "includes": [
3109 | "phpstan-strict-rules.neon"
3110 | ]
3111 | }
3112 | },
3113 | "autoload": {
3114 | "psr-4": {
3115 | "TheCodingMachine\\PHPStan\\": "src/"
3116 | }
3117 | },
3118 | "notification-url": "https://packagist.org/downloads/",
3119 | "license": [
3120 | "MIT"
3121 | ],
3122 | "authors": [
3123 | {
3124 | "name": "David Négrier",
3125 | "email": "d.negrier@thecodingmachine.com"
3126 | }
3127 | ],
3128 | "description": "A set of additional rules for PHPStan based on best practices followed at TheCodingMachine",
3129 | "support": {
3130 | "issues": "https://github.com/thecodingmachine/phpstan-strict-rules/issues",
3131 | "source": "https://github.com/thecodingmachine/phpstan-strict-rules/tree/master"
3132 | },
3133 | "time": "2020-09-08T09:14:10+00:00"
3134 | },
3135 | {
3136 | "name": "theseer/tokenizer",
3137 | "version": "1.2.0",
3138 | "source": {
3139 | "type": "git",
3140 | "url": "https://github.com/theseer/tokenizer.git",
3141 | "reference": "75a63c33a8577608444246075ea0af0d052e452a"
3142 | },
3143 | "dist": {
3144 | "type": "zip",
3145 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
3146 | "reference": "75a63c33a8577608444246075ea0af0d052e452a",
3147 | "shasum": ""
3148 | },
3149 | "require": {
3150 | "ext-dom": "*",
3151 | "ext-tokenizer": "*",
3152 | "ext-xmlwriter": "*",
3153 | "php": "^7.2 || ^8.0"
3154 | },
3155 | "type": "library",
3156 | "autoload": {
3157 | "classmap": [
3158 | "src/"
3159 | ]
3160 | },
3161 | "notification-url": "https://packagist.org/downloads/",
3162 | "license": [
3163 | "BSD-3-Clause"
3164 | ],
3165 | "authors": [
3166 | {
3167 | "name": "Arne Blankerts",
3168 | "email": "arne@blankerts.de",
3169 | "role": "Developer"
3170 | }
3171 | ],
3172 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
3173 | "support": {
3174 | "issues": "https://github.com/theseer/tokenizer/issues",
3175 | "source": "https://github.com/theseer/tokenizer/tree/master"
3176 | },
3177 | "funding": [
3178 | {
3179 | "url": "https://github.com/theseer",
3180 | "type": "github"
3181 | }
3182 | ],
3183 | "time": "2020-07-12T23:59:07+00:00"
3184 | },
3185 | {
3186 | "name": "wa72/url",
3187 | "version": "v0.7.1",
3188 | "source": {
3189 | "type": "git",
3190 | "url": "https://github.com/wasinger/url.git",
3191 | "reference": "9ae182a0e3408ca8956186eafbbc497144d27d44"
3192 | },
3193 | "dist": {
3194 | "type": "zip",
3195 | "url": "https://api.github.com/repos/wasinger/url/zipball/9ae182a0e3408ca8956186eafbbc497144d27d44",
3196 | "reference": "9ae182a0e3408ca8956186eafbbc497144d27d44",
3197 | "shasum": ""
3198 | },
3199 | "require": {
3200 | "php": ">=5.6"
3201 | },
3202 | "require-dev": {
3203 | "phpunit/phpunit": "^4|^5|^6|^7",
3204 | "psr/http-message": "^1.0"
3205 | },
3206 | "suggest": {
3207 | "psr/http-message": "For using the Psr7Uri class implementing Psr\\Http\\Message\\UriInterface"
3208 | },
3209 | "type": "library",
3210 | "autoload": {
3211 | "psr-4": {
3212 | "Wa72\\Url\\": "src/Wa72/Url"
3213 | }
3214 | },
3215 | "notification-url": "https://packagist.org/downloads/",
3216 | "license": [
3217 | "MIT"
3218 | ],
3219 | "authors": [
3220 | {
3221 | "name": "Christoph Singer",
3222 | "email": "singer@webagentur72.de",
3223 | "homepage": "http://www.webagentur72.de"
3224 | }
3225 | ],
3226 | "description": "Class for handling and manipulating URLs",
3227 | "homepage": "http://github.com/wasinger/url",
3228 | "support": {
3229 | "issues": "https://github.com/wasinger/url/issues",
3230 | "source": "https://github.com/wasinger/url/tree/master"
3231 | },
3232 | "time": "2018-07-25T15:54:06+00:00"
3233 | },
3234 | {
3235 | "name": "webmozart/assert",
3236 | "version": "1.9.1",
3237 | "source": {
3238 | "type": "git",
3239 | "url": "https://github.com/webmozart/assert.git",
3240 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
3241 | },
3242 | "dist": {
3243 | "type": "zip",
3244 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
3245 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
3246 | "shasum": ""
3247 | },
3248 | "require": {
3249 | "php": "^5.3.3 || ^7.0 || ^8.0",
3250 | "symfony/polyfill-ctype": "^1.8"
3251 | },
3252 | "conflict": {
3253 | "phpstan/phpstan": "<0.12.20",
3254 | "vimeo/psalm": "<3.9.1"
3255 | },
3256 | "require-dev": {
3257 | "phpunit/phpunit": "^4.8.36 || ^7.5.13"
3258 | },
3259 | "type": "library",
3260 | "autoload": {
3261 | "psr-4": {
3262 | "Webmozart\\Assert\\": "src/"
3263 | }
3264 | },
3265 | "notification-url": "https://packagist.org/downloads/",
3266 | "license": [
3267 | "MIT"
3268 | ],
3269 | "authors": [
3270 | {
3271 | "name": "Bernhard Schussek",
3272 | "email": "bschussek@gmail.com"
3273 | }
3274 | ],
3275 | "description": "Assertions to validate method input/output with nice error messages.",
3276 | "keywords": [
3277 | "assert",
3278 | "check",
3279 | "validate"
3280 | ],
3281 | "support": {
3282 | "issues": "https://github.com/webmozart/assert/issues",
3283 | "source": "https://github.com/webmozart/assert/tree/master"
3284 | },
3285 | "time": "2020-07-08T17:02:28+00:00"
3286 | },
3287 | {
3288 | "name": "wp-coding-standards/wpcs",
3289 | "version": "2.3.0",
3290 | "source": {
3291 | "type": "git",
3292 | "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
3293 | "reference": "7da1894633f168fe244afc6de00d141f27517b62"
3294 | },
3295 | "dist": {
3296 | "type": "zip",
3297 | "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
3298 | "reference": "7da1894633f168fe244afc6de00d141f27517b62",
3299 | "shasum": ""
3300 | },
3301 | "require": {
3302 | "php": ">=5.4",
3303 | "squizlabs/php_codesniffer": "^3.3.1"
3304 | },
3305 | "require-dev": {
3306 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
3307 | "phpcompatibility/php-compatibility": "^9.0",
3308 | "phpcsstandards/phpcsdevtools": "^1.0",
3309 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
3310 | },
3311 | "suggest": {
3312 | "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
3313 | },
3314 | "type": "phpcodesniffer-standard",
3315 | "notification-url": "https://packagist.org/downloads/",
3316 | "license": [
3317 | "MIT"
3318 | ],
3319 | "authors": [
3320 | {
3321 | "name": "Contributors",
3322 | "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
3323 | }
3324 | ],
3325 | "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
3326 | "keywords": [
3327 | "phpcs",
3328 | "standards",
3329 | "wordpress"
3330 | ],
3331 | "support": {
3332 | "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues",
3333 | "source": "https://github.com/WordPress/WordPress-Coding-Standards",
3334 | "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki"
3335 | },
3336 | "time": "2020-05-13T23:57:56+00:00"
3337 | }
3338 | ],
3339 | "aliases": [],
3340 | "minimum-stability": "stable",
3341 | "stability-flags": [],
3342 | "prefer-stable": false,
3343 | "prefer-lowest": false,
3344 | "platform": {
3345 | "php": ">=7.2"
3346 | },
3347 | "platform-dev": [],
3348 | "plugin-api-version": "2.3.0"
3349 | }
3350 |
--------------------------------------------------------------------------------