├── .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 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 39 | 40 | 41 | 42 | 47 | 57 | 58 | 59 | 60 |
27 | 30 | 32 | 38 |
43 | 46 | 48 | 56 |
61 | 62 |
63 | 64 | 65 |
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 | --------------------------------------------------------------------------------