Changeset 3081041
- Timestamp:
- 05/03/2024 03:28:31 PM (2 years ago)
- Location:
- sms-gateway-press
- Files:
-
- 12 edited
- 1 copied
-
tags/1.0.3 (copied) (copied from sms-gateway-press/trunk)
-
tags/1.0.3/plugin.php (modified) (1 diff)
-
tags/1.0.3/private/class-rest-api.php (modified) (3 diffs)
-
tags/1.0.3/private/custom-post-type/class-device.php (modified) (1 diff)
-
tags/1.0.3/private/custom-post-type/class-sms.php (modified) (6 diffs)
-
tags/1.0.3/readme.txt (modified) (1 diff)
-
trunk/composer.json (modified) (1 diff)
-
trunk/composer.lock (modified) (9 diffs)
-
trunk/plugin.php (modified) (1 diff)
-
trunk/private/class-rest-api.php (modified) (3 diffs)
-
trunk/private/custom-post-type/class-device.php (modified) (1 diff)
-
trunk/private/custom-post-type/class-sms.php (modified) (6 diffs)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
sms-gateway-press/tags/1.0.3/plugin.php
r3037249 r3081041 4 4 * Plugin URI: https://www.sms-gateway-press.com 5 5 * Description: Self-hosted SMS Gateway. Send SMS with your own Android devices across your WordPress site. 6 * Version: 1.0. 26 * Version: 1.0.3 7 7 * Requires PHP: 7.3 8 8 * Author: Andy Daniel Navarro Taño -
sms-gateway-press/tags/1.0.3/private/class-rest-api.php
r3036929 r3081041 142 142 public static function get_device_actions( WP_REST_Request $request ): void { 143 143 $request_time = sanitize_text_field( $_SERVER['REQUEST_TIME'] ); 144 $max_execution_time = ini_get( 'max_execution_time' );144 $max_execution_time = 30; 145 145 $request_time_limit = $request_time + $max_execution_time; 146 146 $polling_time_limit = $request_time_limit - 2; 147 147 $device_id = $request->get_header( 'X-Device-Id' ); 148 149 wp_suspend_cache_addition(); 148 $now = time(); 149 $polling_expires_at = get_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, true ); 150 151 if ( is_numeric( $polling_expires_at ) && $now < $polling_expires_at ) { 152 wp_send_json_error( null, 403 ); 153 wp_die(); 154 } 155 156 update_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, $polling_time_limit ); 157 158 register_shutdown_function( 159 function () use ( $device_id ) { 160 delete_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT ); 161 } 162 ); 163 164 wp_suspend_cache_addition( true ); 165 wp_cache_flush(); 150 166 151 167 // start the long polling. 152 168 while ( time() <= $polling_time_limit ) { 153 if ( connection_aborted() ) { 154 exit; 169 $now = time(); 170 171 update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now ); 172 173 $sms_sending_in_device_posts = get_posts( 174 array( 175 'post_type' => Sms::POST_TYPE, 176 'numberposts' => -1, 177 'meta_query' => array( 178 'relation' => 'AND', 179 array( 180 'key' => Sms::META_KEY_SEND_AT, 181 'compare' => '<=', 182 'value' => $now, 183 'type' => 'NUMERIC', 184 ), 185 array( 186 'key' => Sms::META_KEY_EXPIRES_AT, 187 'compare' => '>', 188 'value' => $now, 189 'type' => 'NUMERIC', 190 ), 191 array( 192 'key' => Sms::META_KEY_SENT_AT, 193 'compare' => 'NOT EXISTS', 194 ), 195 array( 196 'key' => Sms::META_KEY_SENDING_IN_DEVICE, 197 'value' => $device_id, 198 'type' => 'NUMERIC', 199 ), 200 array( 201 'key' => Sms::META_KEY_INACTIVE_AT, 202 'compare' => '>', 203 'value' => $now, 204 'type' => 'NUMERIC', 205 ), 206 ), 207 ) 208 ); 209 210 if ( count( $sms_sending_in_device_posts ) >= 20 ) { 211 continue; 155 212 } 156 157 $now = time();158 159 update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now );160 213 161 214 $sms_posts = get_posts( … … 163 216 'post_type' => Sms::POST_TYPE, 164 217 'numberposts' => 1, 218 'order' => 'ASC', 165 219 'meta_query' => array( 166 220 'relation' => 'AND', … … 201 255 ), 202 256 array( 203 'key' => Sms::META_KEY_ INACTIVE_AT,257 'key' => Sms::META_KEY_SENDING_IN_DEVICE, 204 258 'compare' => 'NOT EQUAL', 205 259 'value' => $device_id, -
sms-gateway-press/tags/1.0.3/private/custom-post-type/class-device.php
r3036929 r3081041 11 11 public const NONCE_ACTION_METABOX = 'nonce_metabox'; 12 12 13 public const META_KEY_TOKEN = '_token'; 14 public const META_KEY_PHONE_NUMBER = '_phone_number'; 15 public const META_KEY_LAST_ACTIVITY_AT = '_last_activity_at'; 16 public const META_KEY_CURRENT_SMS_ID = '_current_sms_id'; 13 public const META_KEY_TOKEN = '_token'; 14 public const META_KEY_PHONE_NUMBER = '_phone_number'; 15 public const META_KEY_LAST_ACTIVITY_AT = '_last_activity_at'; 16 public const META_KEY_CURRENT_SMS_ID = '_current_sms_id'; 17 public const META_KEY_POLLING_EXPIRES_AT = '_polling_expires_at'; 17 18 18 19 public static function register(): void { -
sms-gateway-press/tags/1.0.3/private/custom-post-type/class-sms.php
r3037249 r3081041 9 9 10 10 public const POST_TYPE = 'smsgp_sms'; 11 public const DEFAULT_INACTIVITY = 30; // seconds11 public const DEFAULT_INACTIVITY = 180; // seconds 12 12 public const COLUMN_STATUS = 'status'; 13 13 public const NONCE_ACTION_METABOX = 'nonce_metabox'; 14 public const DATETIME_FORMAT = 'Y-m-d H:i:s'; 14 15 15 16 public const META_BOX_OPTIONS = 'options'; … … 131 132 132 133 public static function manage_posts_custom_column( string $column, int $post_id ): void { 133 $format = 'Y-m-d H:i:s';134 135 134 switch ( $column ) { 136 135 case self::META_KEY_PHONE_NUMBER: … … 154 153 $dt->setTimestamp( $send_at ); 155 154 156 echo esc_html( $dt->format( $format) );155 echo esc_html( $dt->format( self::DATETIME_FORMAT ) ); 157 156 } 158 157 break; … … 165 164 $dt->setTimestamp( $expires_at ); 166 165 167 echo esc_html( $dt->format( $format) );166 echo esc_html( $dt->format( self::DATETIME_FORMAT ) ); 168 167 } 169 168 break; … … 192 191 $sent_at = get_post_meta( $post_id, self::META_KEY_SENT_AT, true ); 193 192 194 if ( $sent_at ) { 195 return Utils::format_elapsed_time( $sent_at ); 193 if ( $sent_at && is_numeric( $sent_at ) ) { 194 $datetime = new DateTime(); 195 $datetime->setTimestamp( $sent_at ); 196 197 return $datetime->format( self::DATETIME_FORMAT ); 196 198 } 197 199 } … … 405 407 } elseif ( is_array( $log ) && isset( $log['time'] ) && isset( $log['text'] ) ) { 406 408 $time = ( new DateTime() )->setTimestamp( $log['time'] ); 407 echo '<p><strong>' . esc_html( $time->format( 'Y-m-d H:i:s' ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>';409 echo '<p><strong>' . esc_html( $time->format( self::DATETIME_FORMAT ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>'; 408 410 } 409 411 } -
sms-gateway-press/tags/1.0.3/readme.txt
r3037249 r3081041 4 4 Tags: sms, smsgateway, gateway 5 5 Requires at least: 6.0 6 Tested up to: 6. 47 Stable tag: 1.0. 26 Tested up to: 6.5 7 Stable tag: 1.0.3 8 8 Requires PHP: 7.3 9 9 License: GPLv2 or later -
sms-gateway-press/trunk/composer.json
r3036929 r3081041 2 2 "require-dev": { 3 3 "wp-coding-standards/wpcs": "^3.0", 4 "phpcompatibility/php-compatibility": "*" 4 "phpcompatibility/php-compatibility": "*", 5 "thenlabs/pyramidal-tests": "2.0.x-dev", 6 "brain/monkey": "^2.6" 5 7 }, 6 8 "config": { -
sms-gateway-press/trunk/composer.lock
r3036929 r3081041 5 5 "This file is @generated automatically" 6 6 ], 7 "content-hash": " cdc6b6fa5994f422384790c2314bfb89",7 "content-hash": "a031cc761b342e7cd2635e4e3b6a4e5b", 8 8 "packages": [], 9 9 "packages-dev": [ 10 { 11 "name": "antecedent/patchwork", 12 "version": "2.1.28", 13 "source": { 14 "type": "git", 15 "url": "https://github.com/antecedent/patchwork.git", 16 "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d" 17 }, 18 "dist": { 19 "type": "zip", 20 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6b30aff81ebadf0f2feb9268d3e08385cebcc08d", 21 "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d", 22 "shasum": "" 23 }, 24 "require": { 25 "php": ">=5.4.0" 26 }, 27 "require-dev": { 28 "phpunit/phpunit": ">=4" 29 }, 30 "type": "library", 31 "notification-url": "https://packagist.org/downloads/", 32 "license": [ 33 "MIT" 34 ], 35 "authors": [ 36 { 37 "name": "Ignas Rudaitis", 38 "email": "ignas.rudaitis@gmail.com" 39 } 40 ], 41 "description": "Method redefinition (monkey-patching) functionality for PHP.", 42 "homepage": "https://antecedent.github.io/patchwork/", 43 "keywords": [ 44 "aop", 45 "aspect", 46 "interception", 47 "monkeypatching", 48 "redefinition", 49 "runkit", 50 "testing" 51 ], 52 "support": { 53 "issues": "https://github.com/antecedent/patchwork/issues", 54 "source": "https://github.com/antecedent/patchwork/tree/2.1.28" 55 }, 56 "time": "2024-02-06T09:26:11+00:00" 57 }, 58 { 59 "name": "brain/monkey", 60 "version": "2.6.1", 61 "source": { 62 "type": "git", 63 "url": "https://github.com/Brain-WP/BrainMonkey.git", 64 "reference": "a31c84515bb0d49be9310f52ef1733980ea8ffbb" 65 }, 66 "dist": { 67 "type": "zip", 68 "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/a31c84515bb0d49be9310f52ef1733980ea8ffbb", 69 "reference": "a31c84515bb0d49be9310f52ef1733980ea8ffbb", 70 "shasum": "" 71 }, 72 "require": { 73 "antecedent/patchwork": "^2.1.17", 74 "mockery/mockery": "^1.3.5 || ^1.4.4", 75 "php": ">=5.6.0" 76 }, 77 "require-dev": { 78 "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", 79 "phpcompatibility/php-compatibility": "^9.3.0", 80 "phpunit/phpunit": "^5.7.26 || ^6.0 || ^7.0 || >=8.0 <8.5.12 || ^8.5.14 || ^9.0" 81 }, 82 "type": "library", 83 "extra": { 84 "branch-alias": { 85 "dev-version/1": "1.x-dev", 86 "dev-master": "2.0.x-dev" 87 } 88 }, 89 "autoload": { 90 "files": [ 91 "inc/api.php" 92 ], 93 "psr-4": { 94 "Brain\\Monkey\\": "src/" 95 } 96 }, 97 "notification-url": "https://packagist.org/downloads/", 98 "license": [ 99 "MIT" 100 ], 101 "authors": [ 102 { 103 "name": "Giuseppe Mazzapica", 104 "email": "giuseppe.mazzapica@gmail.com", 105 "homepage": "https://gmazzap.me", 106 "role": "Developer" 107 } 108 ], 109 "description": "Mocking utility for PHP functions and WordPress plugin API", 110 "keywords": [ 111 "Monkey Patching", 112 "interception", 113 "mock", 114 "mock functions", 115 "mockery", 116 "patchwork", 117 "redefinition", 118 "runkit", 119 "test", 120 "testing" 121 ], 122 "support": { 123 "issues": "https://github.com/Brain-WP/BrainMonkey/issues", 124 "source": "https://github.com/Brain-WP/BrainMonkey" 125 }, 126 "time": "2021-11-11T15:53:55+00:00" 127 }, 128 { 129 "name": "brick/varexporter", 130 "version": "0.3.8", 131 "source": { 132 "type": "git", 133 "url": "https://github.com/brick/varexporter.git", 134 "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed" 135 }, 136 "dist": { 137 "type": "zip", 138 "url": "https://api.github.com/repos/brick/varexporter/zipball/b5853edea6204ff8fa10633c3a4cccc4058410ed", 139 "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed", 140 "shasum": "" 141 }, 142 "require": { 143 "nikic/php-parser": "^4.0", 144 "php": "^7.2 || ^8.0" 145 }, 146 "require-dev": { 147 "php-coveralls/php-coveralls": "^2.2", 148 "phpunit/phpunit": "^8.5 || ^9.0", 149 "vimeo/psalm": "4.23.0" 150 }, 151 "type": "library", 152 "autoload": { 153 "psr-4": { 154 "Brick\\VarExporter\\": "src/" 155 } 156 }, 157 "notification-url": "https://packagist.org/downloads/", 158 "license": [ 159 "MIT" 160 ], 161 "description": "A powerful alternative to var_export(), which can export closures and objects without __set_state()", 162 "keywords": [ 163 "var_export" 164 ], 165 "support": { 166 "issues": "https://github.com/brick/varexporter/issues", 167 "source": "https://github.com/brick/varexporter/tree/0.3.8" 168 }, 169 "funding": [ 170 { 171 "url": "https://github.com/BenMorel", 172 "type": "github" 173 } 174 ], 175 "time": "2023-01-21T23:05:38+00:00" 176 }, 177 { 178 "name": "composer/semver", 179 "version": "3.4.0", 180 "source": { 181 "type": "git", 182 "url": "https://github.com/composer/semver.git", 183 "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" 184 }, 185 "dist": { 186 "type": "zip", 187 "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", 188 "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", 189 "shasum": "" 190 }, 191 "require": { 192 "php": "^5.3.2 || ^7.0 || ^8.0" 193 }, 194 "require-dev": { 195 "phpstan/phpstan": "^1.4", 196 "symfony/phpunit-bridge": "^4.2 || ^5" 197 }, 198 "type": "library", 199 "extra": { 200 "branch-alias": { 201 "dev-main": "3.x-dev" 202 } 203 }, 204 "autoload": { 205 "psr-4": { 206 "Composer\\Semver\\": "src" 207 } 208 }, 209 "notification-url": "https://packagist.org/downloads/", 210 "license": [ 211 "MIT" 212 ], 213 "authors": [ 214 { 215 "name": "Nils Adermann", 216 "email": "naderman@naderman.de", 217 "homepage": "http://www.naderman.de" 218 }, 219 { 220 "name": "Jordi Boggiano", 221 "email": "j.boggiano@seld.be", 222 "homepage": "http://seld.be" 223 }, 224 { 225 "name": "Rob Bast", 226 "email": "rob.bast@gmail.com", 227 "homepage": "http://robbast.nl" 228 } 229 ], 230 "description": "Semver library that offers utilities, version constraint parsing and validation.", 231 "keywords": [ 232 "semantic", 233 "semver", 234 "validation", 235 "versioning" 236 ], 237 "support": { 238 "irc": "ircs://irc.libera.chat:6697/composer", 239 "issues": "https://github.com/composer/semver/issues", 240 "source": "https://github.com/composer/semver/tree/3.4.0" 241 }, 242 "funding": [ 243 { 244 "url": "https://packagist.com", 245 "type": "custom" 246 }, 247 { 248 "url": "https://github.com/composer", 249 "type": "github" 250 }, 251 { 252 "url": "https://tidelift.com/funding/github/packagist/composer/composer", 253 "type": "tidelift" 254 } 255 ], 256 "time": "2023-08-31T09:50:34+00:00" 257 }, 10 258 { 11 259 "name": "dealerdirect/phpcodesniffer-composer-installer", … … 87 335 }, 88 336 { 337 "name": "doctrine/annotations", 338 "version": "1.14.3", 339 "source": { 340 "type": "git", 341 "url": "https://github.com/doctrine/annotations.git", 342 "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" 343 }, 344 "dist": { 345 "type": "zip", 346 "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", 347 "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", 348 "shasum": "" 349 }, 350 "require": { 351 "doctrine/lexer": "^1 || ^2", 352 "ext-tokenizer": "*", 353 "php": "^7.1 || ^8.0", 354 "psr/cache": "^1 || ^2 || ^3" 355 }, 356 "require-dev": { 357 "doctrine/cache": "^1.11 || ^2.0", 358 "doctrine/coding-standard": "^9 || ^10", 359 "phpstan/phpstan": "~1.4.10 || ^1.8.0", 360 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 361 "symfony/cache": "^4.4 || ^5.4 || ^6", 362 "vimeo/psalm": "^4.10" 363 }, 364 "suggest": { 365 "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" 366 }, 367 "type": "library", 368 "autoload": { 369 "psr-4": { 370 "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 371 } 372 }, 373 "notification-url": "https://packagist.org/downloads/", 374 "license": [ 375 "MIT" 376 ], 377 "authors": [ 378 { 379 "name": "Guilherme Blanco", 380 "email": "guilhermeblanco@gmail.com" 381 }, 382 { 383 "name": "Roman Borschel", 384 "email": "roman@code-factory.org" 385 }, 386 { 387 "name": "Benjamin Eberlei", 388 "email": "kontakt@beberlei.de" 389 }, 390 { 391 "name": "Jonathan Wage", 392 "email": "jonwage@gmail.com" 393 }, 394 { 395 "name": "Johannes Schmitt", 396 "email": "schmittjoh@gmail.com" 397 } 398 ], 399 "description": "Docblock Annotations Parser", 400 "homepage": "https://www.doctrine-project.org/projects/annotations.html", 401 "keywords": [ 402 "annotations", 403 "docblock", 404 "parser" 405 ], 406 "support": { 407 "issues": "https://github.com/doctrine/annotations/issues", 408 "source": "https://github.com/doctrine/annotations/tree/1.14.3" 409 }, 410 "time": "2023-02-01T09:20:38+00:00" 411 }, 412 { 413 "name": "doctrine/deprecations", 414 "version": "1.1.3", 415 "source": { 416 "type": "git", 417 "url": "https://github.com/doctrine/deprecations.git", 418 "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" 419 }, 420 "dist": { 421 "type": "zip", 422 "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", 423 "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", 424 "shasum": "" 425 }, 426 "require": { 427 "php": "^7.1 || ^8.0" 428 }, 429 "require-dev": { 430 "doctrine/coding-standard": "^9", 431 "phpstan/phpstan": "1.4.10 || 1.10.15", 432 "phpstan/phpstan-phpunit": "^1.0", 433 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 434 "psalm/plugin-phpunit": "0.18.4", 435 "psr/log": "^1 || ^2 || ^3", 436 "vimeo/psalm": "4.30.0 || 5.12.0" 437 }, 438 "suggest": { 439 "psr/log": "Allows logging deprecations via PSR-3 logger implementation" 440 }, 441 "type": "library", 442 "autoload": { 443 "psr-4": { 444 "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" 445 } 446 }, 447 "notification-url": "https://packagist.org/downloads/", 448 "license": [ 449 "MIT" 450 ], 451 "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", 452 "homepage": "https://www.doctrine-project.org/", 453 "support": { 454 "issues": "https://github.com/doctrine/deprecations/issues", 455 "source": "https://github.com/doctrine/deprecations/tree/1.1.3" 456 }, 457 "time": "2024-01-30T19:34:25+00:00" 458 }, 459 { 460 "name": "doctrine/instantiator", 461 "version": "2.0.0", 462 "source": { 463 "type": "git", 464 "url": "https://github.com/doctrine/instantiator.git", 465 "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" 466 }, 467 "dist": { 468 "type": "zip", 469 "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", 470 "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", 471 "shasum": "" 472 }, 473 "require": { 474 "php": "^8.1" 475 }, 476 "require-dev": { 477 "doctrine/coding-standard": "^11", 478 "ext-pdo": "*", 479 "ext-phar": "*", 480 "phpbench/phpbench": "^1.2", 481 "phpstan/phpstan": "^1.9.4", 482 "phpstan/phpstan-phpunit": "^1.3", 483 "phpunit/phpunit": "^9.5.27", 484 "vimeo/psalm": "^5.4" 485 }, 486 "type": "library", 487 "autoload": { 488 "psr-4": { 489 "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 490 } 491 }, 492 "notification-url": "https://packagist.org/downloads/", 493 "license": [ 494 "MIT" 495 ], 496 "authors": [ 497 { 498 "name": "Marco Pivetta", 499 "email": "ocramius@gmail.com", 500 "homepage": "https://ocramius.github.io/" 501 } 502 ], 503 "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 504 "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 505 "keywords": [ 506 "constructor", 507 "instantiate" 508 ], 509 "support": { 510 "issues": "https://github.com/doctrine/instantiator/issues", 511 "source": "https://github.com/doctrine/instantiator/tree/2.0.0" 512 }, 513 "funding": [ 514 { 515 "url": "https://www.doctrine-project.org/sponsorship.html", 516 "type": "custom" 517 }, 518 { 519 "url": "https://www.patreon.com/phpdoctrine", 520 "type": "patreon" 521 }, 522 { 523 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 524 "type": "tidelift" 525 } 526 ], 527 "time": "2022-12-30T00:23:10+00:00" 528 }, 529 { 530 "name": "doctrine/lexer", 531 "version": "2.1.1", 532 "source": { 533 "type": "git", 534 "url": "https://github.com/doctrine/lexer.git", 535 "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" 536 }, 537 "dist": { 538 "type": "zip", 539 "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", 540 "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", 541 "shasum": "" 542 }, 543 "require": { 544 "doctrine/deprecations": "^1.0", 545 "php": "^7.1 || ^8.0" 546 }, 547 "require-dev": { 548 "doctrine/coding-standard": "^9 || ^12", 549 "phpstan/phpstan": "^1.3", 550 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", 551 "psalm/plugin-phpunit": "^0.18.3", 552 "vimeo/psalm": "^4.11 || ^5.21" 553 }, 554 "type": "library", 555 "autoload": { 556 "psr-4": { 557 "Doctrine\\Common\\Lexer\\": "src" 558 } 559 }, 560 "notification-url": "https://packagist.org/downloads/", 561 "license": [ 562 "MIT" 563 ], 564 "authors": [ 565 { 566 "name": "Guilherme Blanco", 567 "email": "guilhermeblanco@gmail.com" 568 }, 569 { 570 "name": "Roman Borschel", 571 "email": "roman@code-factory.org" 572 }, 573 { 574 "name": "Johannes Schmitt", 575 "email": "schmittjoh@gmail.com" 576 } 577 ], 578 "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 579 "homepage": "https://www.doctrine-project.org/projects/lexer.html", 580 "keywords": [ 581 "annotations", 582 "docblock", 583 "lexer", 584 "parser", 585 "php" 586 ], 587 "support": { 588 "issues": "https://github.com/doctrine/lexer/issues", 589 "source": "https://github.com/doctrine/lexer/tree/2.1.1" 590 }, 591 "funding": [ 592 { 593 "url": "https://www.doctrine-project.org/sponsorship.html", 594 "type": "custom" 595 }, 596 { 597 "url": "https://www.patreon.com/phpdoctrine", 598 "type": "patreon" 599 }, 600 { 601 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 602 "type": "tidelift" 603 } 604 ], 605 "time": "2024-02-05T11:35:39+00:00" 606 }, 607 { 608 "name": "hamcrest/hamcrest-php", 609 "version": "v2.0.1", 610 "source": { 611 "type": "git", 612 "url": "https://github.com/hamcrest/hamcrest-php.git", 613 "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" 614 }, 615 "dist": { 616 "type": "zip", 617 "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", 618 "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", 619 "shasum": "" 620 }, 621 "require": { 622 "php": "^5.3|^7.0|^8.0" 623 }, 624 "replace": { 625 "cordoval/hamcrest-php": "*", 626 "davedevelopment/hamcrest-php": "*", 627 "kodova/hamcrest-php": "*" 628 }, 629 "require-dev": { 630 "phpunit/php-file-iterator": "^1.4 || ^2.0", 631 "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" 632 }, 633 "type": "library", 634 "extra": { 635 "branch-alias": { 636 "dev-master": "2.1-dev" 637 } 638 }, 639 "autoload": { 640 "classmap": [ 641 "hamcrest" 642 ] 643 }, 644 "notification-url": "https://packagist.org/downloads/", 645 "license": [ 646 "BSD-3-Clause" 647 ], 648 "description": "This is the PHP port of Hamcrest Matchers", 649 "keywords": [ 650 "test" 651 ], 652 "support": { 653 "issues": "https://github.com/hamcrest/hamcrest-php/issues", 654 "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" 655 }, 656 "time": "2020-07-09T08:09:16+00:00" 657 }, 658 { 659 "name": "mockery/mockery", 660 "version": "1.6.11", 661 "source": { 662 "type": "git", 663 "url": "https://github.com/mockery/mockery.git", 664 "reference": "81a161d0b135df89951abd52296adf97deb0723d" 665 }, 666 "dist": { 667 "type": "zip", 668 "url": "https://api.github.com/repos/mockery/mockery/zipball/81a161d0b135df89951abd52296adf97deb0723d", 669 "reference": "81a161d0b135df89951abd52296adf97deb0723d", 670 "shasum": "" 671 }, 672 "require": { 673 "hamcrest/hamcrest-php": "^2.0.1", 674 "lib-pcre": ">=7.0", 675 "php": ">=7.3" 676 }, 677 "conflict": { 678 "phpunit/phpunit": "<8.0" 679 }, 680 "require-dev": { 681 "phpunit/phpunit": "^8.5 || ^9.6.17", 682 "symplify/easy-coding-standard": "^12.1.14" 683 }, 684 "type": "library", 685 "autoload": { 686 "files": [ 687 "library/helpers.php", 688 "library/Mockery.php" 689 ], 690 "psr-4": { 691 "Mockery\\": "library/Mockery" 692 } 693 }, 694 "notification-url": "https://packagist.org/downloads/", 695 "license": [ 696 "BSD-3-Clause" 697 ], 698 "authors": [ 699 { 700 "name": "Pádraic Brady", 701 "email": "padraic.brady@gmail.com", 702 "homepage": "https://github.com/padraic", 703 "role": "Author" 704 }, 705 { 706 "name": "Dave Marshall", 707 "email": "dave.marshall@atstsolutions.co.uk", 708 "homepage": "https://davedevelopment.co.uk", 709 "role": "Developer" 710 }, 711 { 712 "name": "Nathanael Esayeas", 713 "email": "nathanael.esayeas@protonmail.com", 714 "homepage": "https://github.com/ghostwriter", 715 "role": "Lead Developer" 716 } 717 ], 718 "description": "Mockery is a simple yet flexible PHP mock object framework", 719 "homepage": "https://github.com/mockery/mockery", 720 "keywords": [ 721 "BDD", 722 "TDD", 723 "library", 724 "mock", 725 "mock objects", 726 "mockery", 727 "stub", 728 "test", 729 "test double", 730 "testing" 731 ], 732 "support": { 733 "docs": "https://docs.mockery.io/", 734 "issues": "https://github.com/mockery/mockery/issues", 735 "rss": "https://github.com/mockery/mockery/releases.atom", 736 "security": "https://github.com/mockery/mockery/security/advisories", 737 "source": "https://github.com/mockery/mockery" 738 }, 739 "time": "2024-03-21T18:34:15+00:00" 740 }, 741 { 742 "name": "myclabs/deep-copy", 743 "version": "1.11.1", 744 "source": { 745 "type": "git", 746 "url": "https://github.com/myclabs/DeepCopy.git", 747 "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" 748 }, 749 "dist": { 750 "type": "zip", 751 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", 752 "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", 753 "shasum": "" 754 }, 755 "require": { 756 "php": "^7.1 || ^8.0" 757 }, 758 "conflict": { 759 "doctrine/collections": "<1.6.8", 760 "doctrine/common": "<2.13.3 || >=3,<3.2.2" 761 }, 762 "require-dev": { 763 "doctrine/collections": "^1.6.8", 764 "doctrine/common": "^2.13.3 || ^3.2.2", 765 "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 766 }, 767 "type": "library", 768 "autoload": { 769 "files": [ 770 "src/DeepCopy/deep_copy.php" 771 ], 772 "psr-4": { 773 "DeepCopy\\": "src/DeepCopy/" 774 } 775 }, 776 "notification-url": "https://packagist.org/downloads/", 777 "license": [ 778 "MIT" 779 ], 780 "description": "Create deep copies (clones) of your objects", 781 "keywords": [ 782 "clone", 783 "copy", 784 "duplicate", 785 "object", 786 "object graph" 787 ], 788 "support": { 789 "issues": "https://github.com/myclabs/DeepCopy/issues", 790 "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" 791 }, 792 "funding": [ 793 { 794 "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 795 "type": "tidelift" 796 } 797 ], 798 "time": "2023-03-08T13:26:56+00:00" 799 }, 800 { 801 "name": "nikic/php-parser", 802 "version": "v4.19.1", 803 "source": { 804 "type": "git", 805 "url": "https://github.com/nikic/PHP-Parser.git", 806 "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" 807 }, 808 "dist": { 809 "type": "zip", 810 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", 811 "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", 812 "shasum": "" 813 }, 814 "require": { 815 "ext-tokenizer": "*", 816 "php": ">=7.1" 817 }, 818 "require-dev": { 819 "ircmaxell/php-yacc": "^0.0.7", 820 "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 821 }, 822 "bin": [ 823 "bin/php-parse" 824 ], 825 "type": "library", 826 "extra": { 827 "branch-alias": { 828 "dev-master": "4.9-dev" 829 } 830 }, 831 "autoload": { 832 "psr-4": { 833 "PhpParser\\": "lib/PhpParser" 834 } 835 }, 836 "notification-url": "https://packagist.org/downloads/", 837 "license": [ 838 "BSD-3-Clause" 839 ], 840 "authors": [ 841 { 842 "name": "Nikita Popov" 843 } 844 ], 845 "description": "A PHP parser written in PHP", 846 "keywords": [ 847 "parser", 848 "php" 849 ], 850 "support": { 851 "issues": "https://github.com/nikic/PHP-Parser/issues", 852 "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" 853 }, 854 "time": "2024-03-17T08:10:35+00:00" 855 }, 856 { 857 "name": "phar-io/manifest", 858 "version": "2.0.4", 859 "source": { 860 "type": "git", 861 "url": "https://github.com/phar-io/manifest.git", 862 "reference": "54750ef60c58e43759730615a392c31c80e23176" 863 }, 864 "dist": { 865 "type": "zip", 866 "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", 867 "reference": "54750ef60c58e43759730615a392c31c80e23176", 868 "shasum": "" 869 }, 870 "require": { 871 "ext-dom": "*", 872 "ext-libxml": "*", 873 "ext-phar": "*", 874 "ext-xmlwriter": "*", 875 "phar-io/version": "^3.0.1", 876 "php": "^7.2 || ^8.0" 877 }, 878 "type": "library", 879 "extra": { 880 "branch-alias": { 881 "dev-master": "2.0.x-dev" 882 } 883 }, 884 "autoload": { 885 "classmap": [ 886 "src/" 887 ] 888 }, 889 "notification-url": "https://packagist.org/downloads/", 890 "license": [ 891 "BSD-3-Clause" 892 ], 893 "authors": [ 894 { 895 "name": "Arne Blankerts", 896 "email": "arne@blankerts.de", 897 "role": "Developer" 898 }, 899 { 900 "name": "Sebastian Heuer", 901 "email": "sebastian@phpeople.de", 902 "role": "Developer" 903 }, 904 { 905 "name": "Sebastian Bergmann", 906 "email": "sebastian@phpunit.de", 907 "role": "Developer" 908 } 909 ], 910 "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 911 "support": { 912 "issues": "https://github.com/phar-io/manifest/issues", 913 "source": "https://github.com/phar-io/manifest/tree/2.0.4" 914 }, 915 "funding": [ 916 { 917 "url": "https://github.com/theseer", 918 "type": "github" 919 } 920 ], 921 "time": "2024-03-03T12:33:53+00:00" 922 }, 923 { 924 "name": "phar-io/version", 925 "version": "3.2.1", 926 "source": { 927 "type": "git", 928 "url": "https://github.com/phar-io/version.git", 929 "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 930 }, 931 "dist": { 932 "type": "zip", 933 "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 934 "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 935 "shasum": "" 936 }, 937 "require": { 938 "php": "^7.2 || ^8.0" 939 }, 940 "type": "library", 941 "autoload": { 942 "classmap": [ 943 "src/" 944 ] 945 }, 946 "notification-url": "https://packagist.org/downloads/", 947 "license": [ 948 "BSD-3-Clause" 949 ], 950 "authors": [ 951 { 952 "name": "Arne Blankerts", 953 "email": "arne@blankerts.de", 954 "role": "Developer" 955 }, 956 { 957 "name": "Sebastian Heuer", 958 "email": "sebastian@phpeople.de", 959 "role": "Developer" 960 }, 961 { 962 "name": "Sebastian Bergmann", 963 "email": "sebastian@phpunit.de", 964 "role": "Developer" 965 } 966 ], 967 "description": "Library for handling version information and constraints", 968 "support": { 969 "issues": "https://github.com/phar-io/version/issues", 970 "source": "https://github.com/phar-io/version/tree/3.2.1" 971 }, 972 "time": "2022-02-21T01:04:05+00:00" 973 }, 974 { 89 975 "name": "phpcompatibility/php-compatibility", 90 976 "version": "9.3.5", … … 228 1114 { 229 1115 "name": "phpcsstandards/phpcsutils", 230 "version": "1.0. 9",1116 "version": "1.0.11", 231 1117 "source": { 232 1118 "type": "git", 233 1119 "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", 234 "reference": " 908247bc65010c7b7541a9551e002db12e9dae70"235 }, 236 "dist": { 237 "type": "zip", 238 "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/ 908247bc65010c7b7541a9551e002db12e9dae70",239 "reference": " 908247bc65010c7b7541a9551e002db12e9dae70",1120 "reference": "c457da9dabb60eb7106dd5e3c05132b1a6539c6a" 1121 }, 1122 "dist": { 1123 "type": "zip", 1124 "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c457da9dabb60eb7106dd5e3c05132b1a6539c6a", 1125 "reference": "c457da9dabb60eb7106dd5e3c05132b1a6539c6a", 240 1126 "shasum": "" 241 1127 }, … … 243 1129 "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", 244 1130 "php": ">=5.4", 245 "squizlabs/php_codesniffer": "^3. 8.0 || 4.0.x-dev@dev"1131 "squizlabs/php_codesniffer": "^3.9.0 || 4.0.x-dev@dev" 246 1132 }, 247 1133 "require-dev": { … … 312 1198 } 313 1199 ], 314 "time": "2023-12-08T14:50:00+00:00" 1200 "time": "2024-04-24T11:47:18+00:00" 1201 }, 1202 { 1203 "name": "phpunit/php-code-coverage", 1204 "version": "9.2.31", 1205 "source": { 1206 "type": "git", 1207 "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1208 "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" 1209 }, 1210 "dist": { 1211 "type": "zip", 1212 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", 1213 "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", 1214 "shasum": "" 1215 }, 1216 "require": { 1217 "ext-dom": "*", 1218 "ext-libxml": "*", 1219 "ext-xmlwriter": "*", 1220 "nikic/php-parser": "^4.18 || ^5.0", 1221 "php": ">=7.3", 1222 "phpunit/php-file-iterator": "^3.0.3", 1223 "phpunit/php-text-template": "^2.0.2", 1224 "sebastian/code-unit-reverse-lookup": "^2.0.2", 1225 "sebastian/complexity": "^2.0", 1226 "sebastian/environment": "^5.1.2", 1227 "sebastian/lines-of-code": "^1.0.3", 1228 "sebastian/version": "^3.0.1", 1229 "theseer/tokenizer": "^1.2.0" 1230 }, 1231 "require-dev": { 1232 "phpunit/phpunit": "^9.3" 1233 }, 1234 "suggest": { 1235 "ext-pcov": "PHP extension that provides line coverage", 1236 "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1237 }, 1238 "type": "library", 1239 "extra": { 1240 "branch-alias": { 1241 "dev-master": "9.2-dev" 1242 } 1243 }, 1244 "autoload": { 1245 "classmap": [ 1246 "src/" 1247 ] 1248 }, 1249 "notification-url": "https://packagist.org/downloads/", 1250 "license": [ 1251 "BSD-3-Clause" 1252 ], 1253 "authors": [ 1254 { 1255 "name": "Sebastian Bergmann", 1256 "email": "sebastian@phpunit.de", 1257 "role": "lead" 1258 } 1259 ], 1260 "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1261 "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1262 "keywords": [ 1263 "coverage", 1264 "testing", 1265 "xunit" 1266 ], 1267 "support": { 1268 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1269 "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", 1270 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" 1271 }, 1272 "funding": [ 1273 { 1274 "url": "https://github.com/sebastianbergmann", 1275 "type": "github" 1276 } 1277 ], 1278 "time": "2024-03-02T06:37:42+00:00" 1279 }, 1280 { 1281 "name": "phpunit/php-file-iterator", 1282 "version": "3.0.6", 1283 "source": { 1284 "type": "git", 1285 "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1286 "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" 1287 }, 1288 "dist": { 1289 "type": "zip", 1290 "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 1291 "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 1292 "shasum": "" 1293 }, 1294 "require": { 1295 "php": ">=7.3" 1296 }, 1297 "require-dev": { 1298 "phpunit/phpunit": "^9.3" 1299 }, 1300 "type": "library", 1301 "extra": { 1302 "branch-alias": { 1303 "dev-master": "3.0-dev" 1304 } 1305 }, 1306 "autoload": { 1307 "classmap": [ 1308 "src/" 1309 ] 1310 }, 1311 "notification-url": "https://packagist.org/downloads/", 1312 "license": [ 1313 "BSD-3-Clause" 1314 ], 1315 "authors": [ 1316 { 1317 "name": "Sebastian Bergmann", 1318 "email": "sebastian@phpunit.de", 1319 "role": "lead" 1320 } 1321 ], 1322 "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1323 "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1324 "keywords": [ 1325 "filesystem", 1326 "iterator" 1327 ], 1328 "support": { 1329 "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1330 "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" 1331 }, 1332 "funding": [ 1333 { 1334 "url": "https://github.com/sebastianbergmann", 1335 "type": "github" 1336 } 1337 ], 1338 "time": "2021-12-02T12:48:52+00:00" 1339 }, 1340 { 1341 "name": "phpunit/php-invoker", 1342 "version": "3.1.1", 1343 "source": { 1344 "type": "git", 1345 "url": "https://github.com/sebastianbergmann/php-invoker.git", 1346 "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" 1347 }, 1348 "dist": { 1349 "type": "zip", 1350 "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1351 "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1352 "shasum": "" 1353 }, 1354 "require": { 1355 "php": ">=7.3" 1356 }, 1357 "require-dev": { 1358 "ext-pcntl": "*", 1359 "phpunit/phpunit": "^9.3" 1360 }, 1361 "suggest": { 1362 "ext-pcntl": "*" 1363 }, 1364 "type": "library", 1365 "extra": { 1366 "branch-alias": { 1367 "dev-master": "3.1-dev" 1368 } 1369 }, 1370 "autoload": { 1371 "classmap": [ 1372 "src/" 1373 ] 1374 }, 1375 "notification-url": "https://packagist.org/downloads/", 1376 "license": [ 1377 "BSD-3-Clause" 1378 ], 1379 "authors": [ 1380 { 1381 "name": "Sebastian Bergmann", 1382 "email": "sebastian@phpunit.de", 1383 "role": "lead" 1384 } 1385 ], 1386 "description": "Invoke callables with a timeout", 1387 "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1388 "keywords": [ 1389 "process" 1390 ], 1391 "support": { 1392 "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1393 "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" 1394 }, 1395 "funding": [ 1396 { 1397 "url": "https://github.com/sebastianbergmann", 1398 "type": "github" 1399 } 1400 ], 1401 "time": "2020-09-28T05:58:55+00:00" 1402 }, 1403 { 1404 "name": "phpunit/php-text-template", 1405 "version": "2.0.4", 1406 "source": { 1407 "type": "git", 1408 "url": "https://github.com/sebastianbergmann/php-text-template.git", 1409 "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" 1410 }, 1411 "dist": { 1412 "type": "zip", 1413 "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1414 "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1415 "shasum": "" 1416 }, 1417 "require": { 1418 "php": ">=7.3" 1419 }, 1420 "require-dev": { 1421 "phpunit/phpunit": "^9.3" 1422 }, 1423 "type": "library", 1424 "extra": { 1425 "branch-alias": { 1426 "dev-master": "2.0-dev" 1427 } 1428 }, 1429 "autoload": { 1430 "classmap": [ 1431 "src/" 1432 ] 1433 }, 1434 "notification-url": "https://packagist.org/downloads/", 1435 "license": [ 1436 "BSD-3-Clause" 1437 ], 1438 "authors": [ 1439 { 1440 "name": "Sebastian Bergmann", 1441 "email": "sebastian@phpunit.de", 1442 "role": "lead" 1443 } 1444 ], 1445 "description": "Simple template engine.", 1446 "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1447 "keywords": [ 1448 "template" 1449 ], 1450 "support": { 1451 "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1452 "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" 1453 }, 1454 "funding": [ 1455 { 1456 "url": "https://github.com/sebastianbergmann", 1457 "type": "github" 1458 } 1459 ], 1460 "time": "2020-10-26T05:33:50+00:00" 1461 }, 1462 { 1463 "name": "phpunit/php-timer", 1464 "version": "5.0.3", 1465 "source": { 1466 "type": "git", 1467 "url": "https://github.com/sebastianbergmann/php-timer.git", 1468 "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" 1469 }, 1470 "dist": { 1471 "type": "zip", 1472 "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1473 "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1474 "shasum": "" 1475 }, 1476 "require": { 1477 "php": ">=7.3" 1478 }, 1479 "require-dev": { 1480 "phpunit/phpunit": "^9.3" 1481 }, 1482 "type": "library", 1483 "extra": { 1484 "branch-alias": { 1485 "dev-master": "5.0-dev" 1486 } 1487 }, 1488 "autoload": { 1489 "classmap": [ 1490 "src/" 1491 ] 1492 }, 1493 "notification-url": "https://packagist.org/downloads/", 1494 "license": [ 1495 "BSD-3-Clause" 1496 ], 1497 "authors": [ 1498 { 1499 "name": "Sebastian Bergmann", 1500 "email": "sebastian@phpunit.de", 1501 "role": "lead" 1502 } 1503 ], 1504 "description": "Utility class for timing", 1505 "homepage": "https://github.com/sebastianbergmann/php-timer/", 1506 "keywords": [ 1507 "timer" 1508 ], 1509 "support": { 1510 "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1511 "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" 1512 }, 1513 "funding": [ 1514 { 1515 "url": "https://github.com/sebastianbergmann", 1516 "type": "github" 1517 } 1518 ], 1519 "time": "2020-10-26T13:16:10+00:00" 1520 }, 1521 { 1522 "name": "phpunit/phpunit", 1523 "version": "9.6.19", 1524 "source": { 1525 "type": "git", 1526 "url": "https://github.com/sebastianbergmann/phpunit.git", 1527 "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" 1528 }, 1529 "dist": { 1530 "type": "zip", 1531 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", 1532 "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", 1533 "shasum": "" 1534 }, 1535 "require": { 1536 "doctrine/instantiator": "^1.3.1 || ^2", 1537 "ext-dom": "*", 1538 "ext-json": "*", 1539 "ext-libxml": "*", 1540 "ext-mbstring": "*", 1541 "ext-xml": "*", 1542 "ext-xmlwriter": "*", 1543 "myclabs/deep-copy": "^1.10.1", 1544 "phar-io/manifest": "^2.0.3", 1545 "phar-io/version": "^3.0.2", 1546 "php": ">=7.3", 1547 "phpunit/php-code-coverage": "^9.2.28", 1548 "phpunit/php-file-iterator": "^3.0.5", 1549 "phpunit/php-invoker": "^3.1.1", 1550 "phpunit/php-text-template": "^2.0.3", 1551 "phpunit/php-timer": "^5.0.2", 1552 "sebastian/cli-parser": "^1.0.1", 1553 "sebastian/code-unit": "^1.0.6", 1554 "sebastian/comparator": "^4.0.8", 1555 "sebastian/diff": "^4.0.3", 1556 "sebastian/environment": "^5.1.3", 1557 "sebastian/exporter": "^4.0.5", 1558 "sebastian/global-state": "^5.0.1", 1559 "sebastian/object-enumerator": "^4.0.3", 1560 "sebastian/resource-operations": "^3.0.3", 1561 "sebastian/type": "^3.2", 1562 "sebastian/version": "^3.0.2" 1563 }, 1564 "suggest": { 1565 "ext-soap": "To be able to generate mocks based on WSDL files", 1566 "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1567 }, 1568 "bin": [ 1569 "phpunit" 1570 ], 1571 "type": "library", 1572 "extra": { 1573 "branch-alias": { 1574 "dev-master": "9.6-dev" 1575 } 1576 }, 1577 "autoload": { 1578 "files": [ 1579 "src/Framework/Assert/Functions.php" 1580 ], 1581 "classmap": [ 1582 "src/" 1583 ] 1584 }, 1585 "notification-url": "https://packagist.org/downloads/", 1586 "license": [ 1587 "BSD-3-Clause" 1588 ], 1589 "authors": [ 1590 { 1591 "name": "Sebastian Bergmann", 1592 "email": "sebastian@phpunit.de", 1593 "role": "lead" 1594 } 1595 ], 1596 "description": "The PHP Unit Testing framework.", 1597 "homepage": "https://phpunit.de/", 1598 "keywords": [ 1599 "phpunit", 1600 "testing", 1601 "xunit" 1602 ], 1603 "support": { 1604 "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1605 "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 1606 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" 1607 }, 1608 "funding": [ 1609 { 1610 "url": "https://phpunit.de/sponsors.html", 1611 "type": "custom" 1612 }, 1613 { 1614 "url": "https://github.com/sebastianbergmann", 1615 "type": "github" 1616 }, 1617 { 1618 "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", 1619 "type": "tidelift" 1620 } 1621 ], 1622 "time": "2024-04-05T04:35:58+00:00" 1623 }, 1624 { 1625 "name": "psr/cache", 1626 "version": "3.0.0", 1627 "source": { 1628 "type": "git", 1629 "url": "https://github.com/php-fig/cache.git", 1630 "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" 1631 }, 1632 "dist": { 1633 "type": "zip", 1634 "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 1635 "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 1636 "shasum": "" 1637 }, 1638 "require": { 1639 "php": ">=8.0.0" 1640 }, 1641 "type": "library", 1642 "extra": { 1643 "branch-alias": { 1644 "dev-master": "1.0.x-dev" 1645 } 1646 }, 1647 "autoload": { 1648 "psr-4": { 1649 "Psr\\Cache\\": "src/" 1650 } 1651 }, 1652 "notification-url": "https://packagist.org/downloads/", 1653 "license": [ 1654 "MIT" 1655 ], 1656 "authors": [ 1657 { 1658 "name": "PHP-FIG", 1659 "homepage": "https://www.php-fig.org/" 1660 } 1661 ], 1662 "description": "Common interface for caching libraries", 1663 "keywords": [ 1664 "cache", 1665 "psr", 1666 "psr-6" 1667 ], 1668 "support": { 1669 "source": "https://github.com/php-fig/cache/tree/3.0.0" 1670 }, 1671 "time": "2021-02-03T23:26:27+00:00" 1672 }, 1673 { 1674 "name": "psr/event-dispatcher", 1675 "version": "1.0.0", 1676 "source": { 1677 "type": "git", 1678 "url": "https://github.com/php-fig/event-dispatcher.git", 1679 "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1680 }, 1681 "dist": { 1682 "type": "zip", 1683 "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1684 "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1685 "shasum": "" 1686 }, 1687 "require": { 1688 "php": ">=7.2.0" 1689 }, 1690 "type": "library", 1691 "extra": { 1692 "branch-alias": { 1693 "dev-master": "1.0.x-dev" 1694 } 1695 }, 1696 "autoload": { 1697 "psr-4": { 1698 "Psr\\EventDispatcher\\": "src/" 1699 } 1700 }, 1701 "notification-url": "https://packagist.org/downloads/", 1702 "license": [ 1703 "MIT" 1704 ], 1705 "authors": [ 1706 { 1707 "name": "PHP-FIG", 1708 "homepage": "http://www.php-fig.org/" 1709 } 1710 ], 1711 "description": "Standard interfaces for event handling.", 1712 "keywords": [ 1713 "events", 1714 "psr", 1715 "psr-14" 1716 ], 1717 "support": { 1718 "issues": "https://github.com/php-fig/event-dispatcher/issues", 1719 "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1720 }, 1721 "time": "2019-01-08T18:20:26+00:00" 1722 }, 1723 { 1724 "name": "sebastian/cli-parser", 1725 "version": "1.0.2", 1726 "source": { 1727 "type": "git", 1728 "url": "https://github.com/sebastianbergmann/cli-parser.git", 1729 "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" 1730 }, 1731 "dist": { 1732 "type": "zip", 1733 "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", 1734 "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", 1735 "shasum": "" 1736 }, 1737 "require": { 1738 "php": ">=7.3" 1739 }, 1740 "require-dev": { 1741 "phpunit/phpunit": "^9.3" 1742 }, 1743 "type": "library", 1744 "extra": { 1745 "branch-alias": { 1746 "dev-master": "1.0-dev" 1747 } 1748 }, 1749 "autoload": { 1750 "classmap": [ 1751 "src/" 1752 ] 1753 }, 1754 "notification-url": "https://packagist.org/downloads/", 1755 "license": [ 1756 "BSD-3-Clause" 1757 ], 1758 "authors": [ 1759 { 1760 "name": "Sebastian Bergmann", 1761 "email": "sebastian@phpunit.de", 1762 "role": "lead" 1763 } 1764 ], 1765 "description": "Library for parsing CLI options", 1766 "homepage": "https://github.com/sebastianbergmann/cli-parser", 1767 "support": { 1768 "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1769 "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" 1770 }, 1771 "funding": [ 1772 { 1773 "url": "https://github.com/sebastianbergmann", 1774 "type": "github" 1775 } 1776 ], 1777 "time": "2024-03-02T06:27:43+00:00" 1778 }, 1779 { 1780 "name": "sebastian/code-unit", 1781 "version": "1.0.8", 1782 "source": { 1783 "type": "git", 1784 "url": "https://github.com/sebastianbergmann/code-unit.git", 1785 "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" 1786 }, 1787 "dist": { 1788 "type": "zip", 1789 "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", 1790 "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", 1791 "shasum": "" 1792 }, 1793 "require": { 1794 "php": ">=7.3" 1795 }, 1796 "require-dev": { 1797 "phpunit/phpunit": "^9.3" 1798 }, 1799 "type": "library", 1800 "extra": { 1801 "branch-alias": { 1802 "dev-master": "1.0-dev" 1803 } 1804 }, 1805 "autoload": { 1806 "classmap": [ 1807 "src/" 1808 ] 1809 }, 1810 "notification-url": "https://packagist.org/downloads/", 1811 "license": [ 1812 "BSD-3-Clause" 1813 ], 1814 "authors": [ 1815 { 1816 "name": "Sebastian Bergmann", 1817 "email": "sebastian@phpunit.de", 1818 "role": "lead" 1819 } 1820 ], 1821 "description": "Collection of value objects that represent the PHP code units", 1822 "homepage": "https://github.com/sebastianbergmann/code-unit", 1823 "support": { 1824 "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1825 "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" 1826 }, 1827 "funding": [ 1828 { 1829 "url": "https://github.com/sebastianbergmann", 1830 "type": "github" 1831 } 1832 ], 1833 "time": "2020-10-26T13:08:54+00:00" 1834 }, 1835 { 1836 "name": "sebastian/code-unit-reverse-lookup", 1837 "version": "2.0.3", 1838 "source": { 1839 "type": "git", 1840 "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1841 "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" 1842 }, 1843 "dist": { 1844 "type": "zip", 1845 "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 1846 "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 1847 "shasum": "" 1848 }, 1849 "require": { 1850 "php": ">=7.3" 1851 }, 1852 "require-dev": { 1853 "phpunit/phpunit": "^9.3" 1854 }, 1855 "type": "library", 1856 "extra": { 1857 "branch-alias": { 1858 "dev-master": "2.0-dev" 1859 } 1860 }, 1861 "autoload": { 1862 "classmap": [ 1863 "src/" 1864 ] 1865 }, 1866 "notification-url": "https://packagist.org/downloads/", 1867 "license": [ 1868 "BSD-3-Clause" 1869 ], 1870 "authors": [ 1871 { 1872 "name": "Sebastian Bergmann", 1873 "email": "sebastian@phpunit.de" 1874 } 1875 ], 1876 "description": "Looks up which function or method a line of code belongs to", 1877 "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1878 "support": { 1879 "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1880 "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" 1881 }, 1882 "funding": [ 1883 { 1884 "url": "https://github.com/sebastianbergmann", 1885 "type": "github" 1886 } 1887 ], 1888 "time": "2020-09-28T05:30:19+00:00" 1889 }, 1890 { 1891 "name": "sebastian/comparator", 1892 "version": "4.0.8", 1893 "source": { 1894 "type": "git", 1895 "url": "https://github.com/sebastianbergmann/comparator.git", 1896 "reference": "fa0f136dd2334583309d32b62544682ee972b51a" 1897 }, 1898 "dist": { 1899 "type": "zip", 1900 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", 1901 "reference": "fa0f136dd2334583309d32b62544682ee972b51a", 1902 "shasum": "" 1903 }, 1904 "require": { 1905 "php": ">=7.3", 1906 "sebastian/diff": "^4.0", 1907 "sebastian/exporter": "^4.0" 1908 }, 1909 "require-dev": { 1910 "phpunit/phpunit": "^9.3" 1911 }, 1912 "type": "library", 1913 "extra": { 1914 "branch-alias": { 1915 "dev-master": "4.0-dev" 1916 } 1917 }, 1918 "autoload": { 1919 "classmap": [ 1920 "src/" 1921 ] 1922 }, 1923 "notification-url": "https://packagist.org/downloads/", 1924 "license": [ 1925 "BSD-3-Clause" 1926 ], 1927 "authors": [ 1928 { 1929 "name": "Sebastian Bergmann", 1930 "email": "sebastian@phpunit.de" 1931 }, 1932 { 1933 "name": "Jeff Welch", 1934 "email": "whatthejeff@gmail.com" 1935 }, 1936 { 1937 "name": "Volker Dusch", 1938 "email": "github@wallbash.com" 1939 }, 1940 { 1941 "name": "Bernhard Schussek", 1942 "email": "bschussek@2bepublished.at" 1943 } 1944 ], 1945 "description": "Provides the functionality to compare PHP values for equality", 1946 "homepage": "https://github.com/sebastianbergmann/comparator", 1947 "keywords": [ 1948 "comparator", 1949 "compare", 1950 "equality" 1951 ], 1952 "support": { 1953 "issues": "https://github.com/sebastianbergmann/comparator/issues", 1954 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" 1955 }, 1956 "funding": [ 1957 { 1958 "url": "https://github.com/sebastianbergmann", 1959 "type": "github" 1960 } 1961 ], 1962 "time": "2022-09-14T12:41:17+00:00" 1963 }, 1964 { 1965 "name": "sebastian/complexity", 1966 "version": "2.0.3", 1967 "source": { 1968 "type": "git", 1969 "url": "https://github.com/sebastianbergmann/complexity.git", 1970 "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" 1971 }, 1972 "dist": { 1973 "type": "zip", 1974 "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", 1975 "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", 1976 "shasum": "" 1977 }, 1978 "require": { 1979 "nikic/php-parser": "^4.18 || ^5.0", 1980 "php": ">=7.3" 1981 }, 1982 "require-dev": { 1983 "phpunit/phpunit": "^9.3" 1984 }, 1985 "type": "library", 1986 "extra": { 1987 "branch-alias": { 1988 "dev-master": "2.0-dev" 1989 } 1990 }, 1991 "autoload": { 1992 "classmap": [ 1993 "src/" 1994 ] 1995 }, 1996 "notification-url": "https://packagist.org/downloads/", 1997 "license": [ 1998 "BSD-3-Clause" 1999 ], 2000 "authors": [ 2001 { 2002 "name": "Sebastian Bergmann", 2003 "email": "sebastian@phpunit.de", 2004 "role": "lead" 2005 } 2006 ], 2007 "description": "Library for calculating the complexity of PHP code units", 2008 "homepage": "https://github.com/sebastianbergmann/complexity", 2009 "support": { 2010 "issues": "https://github.com/sebastianbergmann/complexity/issues", 2011 "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" 2012 }, 2013 "funding": [ 2014 { 2015 "url": "https://github.com/sebastianbergmann", 2016 "type": "github" 2017 } 2018 ], 2019 "time": "2023-12-22T06:19:30+00:00" 2020 }, 2021 { 2022 "name": "sebastian/diff", 2023 "version": "4.0.6", 2024 "source": { 2025 "type": "git", 2026 "url": "https://github.com/sebastianbergmann/diff.git", 2027 "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" 2028 }, 2029 "dist": { 2030 "type": "zip", 2031 "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", 2032 "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", 2033 "shasum": "" 2034 }, 2035 "require": { 2036 "php": ">=7.3" 2037 }, 2038 "require-dev": { 2039 "phpunit/phpunit": "^9.3", 2040 "symfony/process": "^4.2 || ^5" 2041 }, 2042 "type": "library", 2043 "extra": { 2044 "branch-alias": { 2045 "dev-master": "4.0-dev" 2046 } 2047 }, 2048 "autoload": { 2049 "classmap": [ 2050 "src/" 2051 ] 2052 }, 2053 "notification-url": "https://packagist.org/downloads/", 2054 "license": [ 2055 "BSD-3-Clause" 2056 ], 2057 "authors": [ 2058 { 2059 "name": "Sebastian Bergmann", 2060 "email": "sebastian@phpunit.de" 2061 }, 2062 { 2063 "name": "Kore Nordmann", 2064 "email": "mail@kore-nordmann.de" 2065 } 2066 ], 2067 "description": "Diff implementation", 2068 "homepage": "https://github.com/sebastianbergmann/diff", 2069 "keywords": [ 2070 "diff", 2071 "udiff", 2072 "unidiff", 2073 "unified diff" 2074 ], 2075 "support": { 2076 "issues": "https://github.com/sebastianbergmann/diff/issues", 2077 "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" 2078 }, 2079 "funding": [ 2080 { 2081 "url": "https://github.com/sebastianbergmann", 2082 "type": "github" 2083 } 2084 ], 2085 "time": "2024-03-02T06:30:58+00:00" 2086 }, 2087 { 2088 "name": "sebastian/environment", 2089 "version": "5.1.5", 2090 "source": { 2091 "type": "git", 2092 "url": "https://github.com/sebastianbergmann/environment.git", 2093 "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" 2094 }, 2095 "dist": { 2096 "type": "zip", 2097 "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", 2098 "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", 2099 "shasum": "" 2100 }, 2101 "require": { 2102 "php": ">=7.3" 2103 }, 2104 "require-dev": { 2105 "phpunit/phpunit": "^9.3" 2106 }, 2107 "suggest": { 2108 "ext-posix": "*" 2109 }, 2110 "type": "library", 2111 "extra": { 2112 "branch-alias": { 2113 "dev-master": "5.1-dev" 2114 } 2115 }, 2116 "autoload": { 2117 "classmap": [ 2118 "src/" 2119 ] 2120 }, 2121 "notification-url": "https://packagist.org/downloads/", 2122 "license": [ 2123 "BSD-3-Clause" 2124 ], 2125 "authors": [ 2126 { 2127 "name": "Sebastian Bergmann", 2128 "email": "sebastian@phpunit.de" 2129 } 2130 ], 2131 "description": "Provides functionality to handle HHVM/PHP environments", 2132 "homepage": "http://www.github.com/sebastianbergmann/environment", 2133 "keywords": [ 2134 "Xdebug", 2135 "environment", 2136 "hhvm" 2137 ], 2138 "support": { 2139 "issues": "https://github.com/sebastianbergmann/environment/issues", 2140 "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" 2141 }, 2142 "funding": [ 2143 { 2144 "url": "https://github.com/sebastianbergmann", 2145 "type": "github" 2146 } 2147 ], 2148 "time": "2023-02-03T06:03:51+00:00" 2149 }, 2150 { 2151 "name": "sebastian/exporter", 2152 "version": "4.0.6", 2153 "source": { 2154 "type": "git", 2155 "url": "https://github.com/sebastianbergmann/exporter.git", 2156 "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" 2157 }, 2158 "dist": { 2159 "type": "zip", 2160 "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", 2161 "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", 2162 "shasum": "" 2163 }, 2164 "require": { 2165 "php": ">=7.3", 2166 "sebastian/recursion-context": "^4.0" 2167 }, 2168 "require-dev": { 2169 "ext-mbstring": "*", 2170 "phpunit/phpunit": "^9.3" 2171 }, 2172 "type": "library", 2173 "extra": { 2174 "branch-alias": { 2175 "dev-master": "4.0-dev" 2176 } 2177 }, 2178 "autoload": { 2179 "classmap": [ 2180 "src/" 2181 ] 2182 }, 2183 "notification-url": "https://packagist.org/downloads/", 2184 "license": [ 2185 "BSD-3-Clause" 2186 ], 2187 "authors": [ 2188 { 2189 "name": "Sebastian Bergmann", 2190 "email": "sebastian@phpunit.de" 2191 }, 2192 { 2193 "name": "Jeff Welch", 2194 "email": "whatthejeff@gmail.com" 2195 }, 2196 { 2197 "name": "Volker Dusch", 2198 "email": "github@wallbash.com" 2199 }, 2200 { 2201 "name": "Adam Harvey", 2202 "email": "aharvey@php.net" 2203 }, 2204 { 2205 "name": "Bernhard Schussek", 2206 "email": "bschussek@gmail.com" 2207 } 2208 ], 2209 "description": "Provides the functionality to export PHP variables for visualization", 2210 "homepage": "https://www.github.com/sebastianbergmann/exporter", 2211 "keywords": [ 2212 "export", 2213 "exporter" 2214 ], 2215 "support": { 2216 "issues": "https://github.com/sebastianbergmann/exporter/issues", 2217 "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" 2218 }, 2219 "funding": [ 2220 { 2221 "url": "https://github.com/sebastianbergmann", 2222 "type": "github" 2223 } 2224 ], 2225 "time": "2024-03-02T06:33:00+00:00" 2226 }, 2227 { 2228 "name": "sebastian/global-state", 2229 "version": "5.0.7", 2230 "source": { 2231 "type": "git", 2232 "url": "https://github.com/sebastianbergmann/global-state.git", 2233 "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" 2234 }, 2235 "dist": { 2236 "type": "zip", 2237 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", 2238 "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", 2239 "shasum": "" 2240 }, 2241 "require": { 2242 "php": ">=7.3", 2243 "sebastian/object-reflector": "^2.0", 2244 "sebastian/recursion-context": "^4.0" 2245 }, 2246 "require-dev": { 2247 "ext-dom": "*", 2248 "phpunit/phpunit": "^9.3" 2249 }, 2250 "suggest": { 2251 "ext-uopz": "*" 2252 }, 2253 "type": "library", 2254 "extra": { 2255 "branch-alias": { 2256 "dev-master": "5.0-dev" 2257 } 2258 }, 2259 "autoload": { 2260 "classmap": [ 2261 "src/" 2262 ] 2263 }, 2264 "notification-url": "https://packagist.org/downloads/", 2265 "license": [ 2266 "BSD-3-Clause" 2267 ], 2268 "authors": [ 2269 { 2270 "name": "Sebastian Bergmann", 2271 "email": "sebastian@phpunit.de" 2272 } 2273 ], 2274 "description": "Snapshotting of global state", 2275 "homepage": "http://www.github.com/sebastianbergmann/global-state", 2276 "keywords": [ 2277 "global state" 2278 ], 2279 "support": { 2280 "issues": "https://github.com/sebastianbergmann/global-state/issues", 2281 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" 2282 }, 2283 "funding": [ 2284 { 2285 "url": "https://github.com/sebastianbergmann", 2286 "type": "github" 2287 } 2288 ], 2289 "time": "2024-03-02T06:35:11+00:00" 2290 }, 2291 { 2292 "name": "sebastian/lines-of-code", 2293 "version": "1.0.4", 2294 "source": { 2295 "type": "git", 2296 "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2297 "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" 2298 }, 2299 "dist": { 2300 "type": "zip", 2301 "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", 2302 "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", 2303 "shasum": "" 2304 }, 2305 "require": { 2306 "nikic/php-parser": "^4.18 || ^5.0", 2307 "php": ">=7.3" 2308 }, 2309 "require-dev": { 2310 "phpunit/phpunit": "^9.3" 2311 }, 2312 "type": "library", 2313 "extra": { 2314 "branch-alias": { 2315 "dev-master": "1.0-dev" 2316 } 2317 }, 2318 "autoload": { 2319 "classmap": [ 2320 "src/" 2321 ] 2322 }, 2323 "notification-url": "https://packagist.org/downloads/", 2324 "license": [ 2325 "BSD-3-Clause" 2326 ], 2327 "authors": [ 2328 { 2329 "name": "Sebastian Bergmann", 2330 "email": "sebastian@phpunit.de", 2331 "role": "lead" 2332 } 2333 ], 2334 "description": "Library for counting the lines of code in PHP source code", 2335 "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2336 "support": { 2337 "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2338 "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" 2339 }, 2340 "funding": [ 2341 { 2342 "url": "https://github.com/sebastianbergmann", 2343 "type": "github" 2344 } 2345 ], 2346 "time": "2023-12-22T06:20:34+00:00" 2347 }, 2348 { 2349 "name": "sebastian/object-enumerator", 2350 "version": "4.0.4", 2351 "source": { 2352 "type": "git", 2353 "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2354 "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" 2355 }, 2356 "dist": { 2357 "type": "zip", 2358 "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", 2359 "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", 2360 "shasum": "" 2361 }, 2362 "require": { 2363 "php": ">=7.3", 2364 "sebastian/object-reflector": "^2.0", 2365 "sebastian/recursion-context": "^4.0" 2366 }, 2367 "require-dev": { 2368 "phpunit/phpunit": "^9.3" 2369 }, 2370 "type": "library", 2371 "extra": { 2372 "branch-alias": { 2373 "dev-master": "4.0-dev" 2374 } 2375 }, 2376 "autoload": { 2377 "classmap": [ 2378 "src/" 2379 ] 2380 }, 2381 "notification-url": "https://packagist.org/downloads/", 2382 "license": [ 2383 "BSD-3-Clause" 2384 ], 2385 "authors": [ 2386 { 2387 "name": "Sebastian Bergmann", 2388 "email": "sebastian@phpunit.de" 2389 } 2390 ], 2391 "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2392 "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2393 "support": { 2394 "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2395 "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" 2396 }, 2397 "funding": [ 2398 { 2399 "url": "https://github.com/sebastianbergmann", 2400 "type": "github" 2401 } 2402 ], 2403 "time": "2020-10-26T13:12:34+00:00" 2404 }, 2405 { 2406 "name": "sebastian/object-reflector", 2407 "version": "2.0.4", 2408 "source": { 2409 "type": "git", 2410 "url": "https://github.com/sebastianbergmann/object-reflector.git", 2411 "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" 2412 }, 2413 "dist": { 2414 "type": "zip", 2415 "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2416 "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2417 "shasum": "" 2418 }, 2419 "require": { 2420 "php": ">=7.3" 2421 }, 2422 "require-dev": { 2423 "phpunit/phpunit": "^9.3" 2424 }, 2425 "type": "library", 2426 "extra": { 2427 "branch-alias": { 2428 "dev-master": "2.0-dev" 2429 } 2430 }, 2431 "autoload": { 2432 "classmap": [ 2433 "src/" 2434 ] 2435 }, 2436 "notification-url": "https://packagist.org/downloads/", 2437 "license": [ 2438 "BSD-3-Clause" 2439 ], 2440 "authors": [ 2441 { 2442 "name": "Sebastian Bergmann", 2443 "email": "sebastian@phpunit.de" 2444 } 2445 ], 2446 "description": "Allows reflection of object attributes, including inherited and non-public ones", 2447 "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2448 "support": { 2449 "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2450 "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" 2451 }, 2452 "funding": [ 2453 { 2454 "url": "https://github.com/sebastianbergmann", 2455 "type": "github" 2456 } 2457 ], 2458 "time": "2020-10-26T13:14:26+00:00" 2459 }, 2460 { 2461 "name": "sebastian/recursion-context", 2462 "version": "4.0.5", 2463 "source": { 2464 "type": "git", 2465 "url": "https://github.com/sebastianbergmann/recursion-context.git", 2466 "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" 2467 }, 2468 "dist": { 2469 "type": "zip", 2470 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", 2471 "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", 2472 "shasum": "" 2473 }, 2474 "require": { 2475 "php": ">=7.3" 2476 }, 2477 "require-dev": { 2478 "phpunit/phpunit": "^9.3" 2479 }, 2480 "type": "library", 2481 "extra": { 2482 "branch-alias": { 2483 "dev-master": "4.0-dev" 2484 } 2485 }, 2486 "autoload": { 2487 "classmap": [ 2488 "src/" 2489 ] 2490 }, 2491 "notification-url": "https://packagist.org/downloads/", 2492 "license": [ 2493 "BSD-3-Clause" 2494 ], 2495 "authors": [ 2496 { 2497 "name": "Sebastian Bergmann", 2498 "email": "sebastian@phpunit.de" 2499 }, 2500 { 2501 "name": "Jeff Welch", 2502 "email": "whatthejeff@gmail.com" 2503 }, 2504 { 2505 "name": "Adam Harvey", 2506 "email": "aharvey@php.net" 2507 } 2508 ], 2509 "description": "Provides functionality to recursively process PHP variables", 2510 "homepage": "https://github.com/sebastianbergmann/recursion-context", 2511 "support": { 2512 "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2513 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" 2514 }, 2515 "funding": [ 2516 { 2517 "url": "https://github.com/sebastianbergmann", 2518 "type": "github" 2519 } 2520 ], 2521 "time": "2023-02-03T06:07:39+00:00" 2522 }, 2523 { 2524 "name": "sebastian/resource-operations", 2525 "version": "3.0.4", 2526 "source": { 2527 "type": "git", 2528 "url": "https://github.com/sebastianbergmann/resource-operations.git", 2529 "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" 2530 }, 2531 "dist": { 2532 "type": "zip", 2533 "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", 2534 "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", 2535 "shasum": "" 2536 }, 2537 "require": { 2538 "php": ">=7.3" 2539 }, 2540 "require-dev": { 2541 "phpunit/phpunit": "^9.0" 2542 }, 2543 "type": "library", 2544 "extra": { 2545 "branch-alias": { 2546 "dev-main": "3.0-dev" 2547 } 2548 }, 2549 "autoload": { 2550 "classmap": [ 2551 "src/" 2552 ] 2553 }, 2554 "notification-url": "https://packagist.org/downloads/", 2555 "license": [ 2556 "BSD-3-Clause" 2557 ], 2558 "authors": [ 2559 { 2560 "name": "Sebastian Bergmann", 2561 "email": "sebastian@phpunit.de" 2562 } 2563 ], 2564 "description": "Provides a list of PHP built-in functions that operate on resources", 2565 "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2566 "support": { 2567 "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" 2568 }, 2569 "funding": [ 2570 { 2571 "url": "https://github.com/sebastianbergmann", 2572 "type": "github" 2573 } 2574 ], 2575 "time": "2024-03-14T16:00:52+00:00" 2576 }, 2577 { 2578 "name": "sebastian/type", 2579 "version": "3.2.1", 2580 "source": { 2581 "type": "git", 2582 "url": "https://github.com/sebastianbergmann/type.git", 2583 "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" 2584 }, 2585 "dist": { 2586 "type": "zip", 2587 "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", 2588 "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", 2589 "shasum": "" 2590 }, 2591 "require": { 2592 "php": ">=7.3" 2593 }, 2594 "require-dev": { 2595 "phpunit/phpunit": "^9.5" 2596 }, 2597 "type": "library", 2598 "extra": { 2599 "branch-alias": { 2600 "dev-master": "3.2-dev" 2601 } 2602 }, 2603 "autoload": { 2604 "classmap": [ 2605 "src/" 2606 ] 2607 }, 2608 "notification-url": "https://packagist.org/downloads/", 2609 "license": [ 2610 "BSD-3-Clause" 2611 ], 2612 "authors": [ 2613 { 2614 "name": "Sebastian Bergmann", 2615 "email": "sebastian@phpunit.de", 2616 "role": "lead" 2617 } 2618 ], 2619 "description": "Collection of value objects that represent the types of the PHP type system", 2620 "homepage": "https://github.com/sebastianbergmann/type", 2621 "support": { 2622 "issues": "https://github.com/sebastianbergmann/type/issues", 2623 "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" 2624 }, 2625 "funding": [ 2626 { 2627 "url": "https://github.com/sebastianbergmann", 2628 "type": "github" 2629 } 2630 ], 2631 "time": "2023-02-03T06:13:03+00:00" 2632 }, 2633 { 2634 "name": "sebastian/version", 2635 "version": "3.0.2", 2636 "source": { 2637 "type": "git", 2638 "url": "https://github.com/sebastianbergmann/version.git", 2639 "reference": "c6c1022351a901512170118436c764e473f6de8c" 2640 }, 2641 "dist": { 2642 "type": "zip", 2643 "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", 2644 "reference": "c6c1022351a901512170118436c764e473f6de8c", 2645 "shasum": "" 2646 }, 2647 "require": { 2648 "php": ">=7.3" 2649 }, 2650 "type": "library", 2651 "extra": { 2652 "branch-alias": { 2653 "dev-master": "3.0-dev" 2654 } 2655 }, 2656 "autoload": { 2657 "classmap": [ 2658 "src/" 2659 ] 2660 }, 2661 "notification-url": "https://packagist.org/downloads/", 2662 "license": [ 2663 "BSD-3-Clause" 2664 ], 2665 "authors": [ 2666 { 2667 "name": "Sebastian Bergmann", 2668 "email": "sebastian@phpunit.de", 2669 "role": "lead" 2670 } 2671 ], 2672 "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2673 "homepage": "https://github.com/sebastianbergmann/version", 2674 "support": { 2675 "issues": "https://github.com/sebastianbergmann/version/issues", 2676 "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" 2677 }, 2678 "funding": [ 2679 { 2680 "url": "https://github.com/sebastianbergmann", 2681 "type": "github" 2682 } 2683 ], 2684 "time": "2020-09-28T06:39:44+00:00" 315 2685 }, 316 2686 { 317 2687 "name": "squizlabs/php_codesniffer", 318 "version": "3. 8.1",2688 "version": "3.9.2", 319 2689 "source": { 320 2690 "type": "git", 321 2691 "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", 322 "reference": " 14f5fff1e64118595db5408e946f3a22c75807f7"323 }, 324 "dist": { 325 "type": "zip", 326 "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ 14f5fff1e64118595db5408e946f3a22c75807f7",327 "reference": " 14f5fff1e64118595db5408e946f3a22c75807f7",2692 "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480" 2693 }, 2694 "dist": { 2695 "type": "zip", 2696 "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/aac1f6f347a5c5ac6bc98ad395007df00990f480", 2697 "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480", 328 2698 "shasum": "" 329 2699 }, … … 392 2762 } 393 2763 ], 394 "time": "2024-01-11T20:47:48+00:00" 2764 "time": "2024-04-23T20:25:34+00:00" 2765 }, 2766 { 2767 "name": "symfony/event-dispatcher", 2768 "version": "v7.0.7", 2769 "source": { 2770 "type": "git", 2771 "url": "https://github.com/symfony/event-dispatcher.git", 2772 "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" 2773 }, 2774 "dist": { 2775 "type": "zip", 2776 "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9", 2777 "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", 2778 "shasum": "" 2779 }, 2780 "require": { 2781 "php": ">=8.2", 2782 "symfony/event-dispatcher-contracts": "^2.5|^3" 2783 }, 2784 "conflict": { 2785 "symfony/dependency-injection": "<6.4", 2786 "symfony/service-contracts": "<2.5" 2787 }, 2788 "provide": { 2789 "psr/event-dispatcher-implementation": "1.0", 2790 "symfony/event-dispatcher-implementation": "2.0|3.0" 2791 }, 2792 "require-dev": { 2793 "psr/log": "^1|^2|^3", 2794 "symfony/config": "^6.4|^7.0", 2795 "symfony/dependency-injection": "^6.4|^7.0", 2796 "symfony/error-handler": "^6.4|^7.0", 2797 "symfony/expression-language": "^6.4|^7.0", 2798 "symfony/http-foundation": "^6.4|^7.0", 2799 "symfony/service-contracts": "^2.5|^3", 2800 "symfony/stopwatch": "^6.4|^7.0" 2801 }, 2802 "type": "library", 2803 "autoload": { 2804 "psr-4": { 2805 "Symfony\\Component\\EventDispatcher\\": "" 2806 }, 2807 "exclude-from-classmap": [ 2808 "/Tests/" 2809 ] 2810 }, 2811 "notification-url": "https://packagist.org/downloads/", 2812 "license": [ 2813 "MIT" 2814 ], 2815 "authors": [ 2816 { 2817 "name": "Fabien Potencier", 2818 "email": "fabien@symfony.com" 2819 }, 2820 { 2821 "name": "Symfony Community", 2822 "homepage": "https://symfony.com/contributors" 2823 } 2824 ], 2825 "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 2826 "homepage": "https://symfony.com", 2827 "support": { 2828 "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7" 2829 }, 2830 "funding": [ 2831 { 2832 "url": "https://symfony.com/sponsor", 2833 "type": "custom" 2834 }, 2835 { 2836 "url": "https://github.com/fabpot", 2837 "type": "github" 2838 }, 2839 { 2840 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2841 "type": "tidelift" 2842 } 2843 ], 2844 "time": "2024-04-18T09:29:19+00:00" 2845 }, 2846 { 2847 "name": "symfony/event-dispatcher-contracts", 2848 "version": "v3.4.2", 2849 "source": { 2850 "type": "git", 2851 "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2852 "reference": "4e64b49bf370ade88e567de29465762e316e4224" 2853 }, 2854 "dist": { 2855 "type": "zip", 2856 "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", 2857 "reference": "4e64b49bf370ade88e567de29465762e316e4224", 2858 "shasum": "" 2859 }, 2860 "require": { 2861 "php": ">=8.1", 2862 "psr/event-dispatcher": "^1" 2863 }, 2864 "type": "library", 2865 "extra": { 2866 "branch-alias": { 2867 "dev-main": "3.4-dev" 2868 }, 2869 "thanks": { 2870 "name": "symfony/contracts", 2871 "url": "https://github.com/symfony/contracts" 2872 } 2873 }, 2874 "autoload": { 2875 "psr-4": { 2876 "Symfony\\Contracts\\EventDispatcher\\": "" 2877 } 2878 }, 2879 "notification-url": "https://packagist.org/downloads/", 2880 "license": [ 2881 "MIT" 2882 ], 2883 "authors": [ 2884 { 2885 "name": "Nicolas Grekas", 2886 "email": "p@tchwork.com" 2887 }, 2888 { 2889 "name": "Symfony Community", 2890 "homepage": "https://symfony.com/contributors" 2891 } 2892 ], 2893 "description": "Generic abstractions related to dispatching event", 2894 "homepage": "https://symfony.com", 2895 "keywords": [ 2896 "abstractions", 2897 "contracts", 2898 "decoupling", 2899 "interfaces", 2900 "interoperability", 2901 "standards" 2902 ], 2903 "support": { 2904 "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" 2905 }, 2906 "funding": [ 2907 { 2908 "url": "https://symfony.com/sponsor", 2909 "type": "custom" 2910 }, 2911 { 2912 "url": "https://github.com/fabpot", 2913 "type": "github" 2914 }, 2915 { 2916 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2917 "type": "tidelift" 2918 } 2919 ], 2920 "time": "2024-01-23T14:51:35+00:00" 2921 }, 2922 { 2923 "name": "symfony/polyfill-ctype", 2924 "version": "v1.29.0", 2925 "source": { 2926 "type": "git", 2927 "url": "https://github.com/symfony/polyfill-ctype.git", 2928 "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" 2929 }, 2930 "dist": { 2931 "type": "zip", 2932 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", 2933 "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", 2934 "shasum": "" 2935 }, 2936 "require": { 2937 "php": ">=7.1" 2938 }, 2939 "provide": { 2940 "ext-ctype": "*" 2941 }, 2942 "suggest": { 2943 "ext-ctype": "For best performance" 2944 }, 2945 "type": "library", 2946 "extra": { 2947 "thanks": { 2948 "name": "symfony/polyfill", 2949 "url": "https://github.com/symfony/polyfill" 2950 } 2951 }, 2952 "autoload": { 2953 "files": [ 2954 "bootstrap.php" 2955 ], 2956 "psr-4": { 2957 "Symfony\\Polyfill\\Ctype\\": "" 2958 } 2959 }, 2960 "notification-url": "https://packagist.org/downloads/", 2961 "license": [ 2962 "MIT" 2963 ], 2964 "authors": [ 2965 { 2966 "name": "Gert de Pagter", 2967 "email": "BackEndTea@gmail.com" 2968 }, 2969 { 2970 "name": "Symfony Community", 2971 "homepage": "https://symfony.com/contributors" 2972 } 2973 ], 2974 "description": "Symfony polyfill for ctype functions", 2975 "homepage": "https://symfony.com", 2976 "keywords": [ 2977 "compatibility", 2978 "ctype", 2979 "polyfill", 2980 "portable" 2981 ], 2982 "support": { 2983 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" 2984 }, 2985 "funding": [ 2986 { 2987 "url": "https://symfony.com/sponsor", 2988 "type": "custom" 2989 }, 2990 { 2991 "url": "https://github.com/fabpot", 2992 "type": "github" 2993 }, 2994 { 2995 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2996 "type": "tidelift" 2997 } 2998 ], 2999 "time": "2024-01-29T20:11:03+00:00" 3000 }, 3001 { 3002 "name": "symfony/yaml", 3003 "version": "v7.0.7", 3004 "source": { 3005 "type": "git", 3006 "url": "https://github.com/symfony/yaml.git", 3007 "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" 3008 }, 3009 "dist": { 3010 "type": "zip", 3011 "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", 3012 "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", 3013 "shasum": "" 3014 }, 3015 "require": { 3016 "php": ">=8.2", 3017 "symfony/polyfill-ctype": "^1.8" 3018 }, 3019 "conflict": { 3020 "symfony/console": "<6.4" 3021 }, 3022 "require-dev": { 3023 "symfony/console": "^6.4|^7.0" 3024 }, 3025 "bin": [ 3026 "Resources/bin/yaml-lint" 3027 ], 3028 "type": "library", 3029 "autoload": { 3030 "psr-4": { 3031 "Symfony\\Component\\Yaml\\": "" 3032 }, 3033 "exclude-from-classmap": [ 3034 "/Tests/" 3035 ] 3036 }, 3037 "notification-url": "https://packagist.org/downloads/", 3038 "license": [ 3039 "MIT" 3040 ], 3041 "authors": [ 3042 { 3043 "name": "Fabien Potencier", 3044 "email": "fabien@symfony.com" 3045 }, 3046 { 3047 "name": "Symfony Community", 3048 "homepage": "https://symfony.com/contributors" 3049 } 3050 ], 3051 "description": "Loads and dumps YAML files", 3052 "homepage": "https://symfony.com", 3053 "support": { 3054 "source": "https://github.com/symfony/yaml/tree/v7.0.7" 3055 }, 3056 "funding": [ 3057 { 3058 "url": "https://symfony.com/sponsor", 3059 "type": "custom" 3060 }, 3061 { 3062 "url": "https://github.com/fabpot", 3063 "type": "github" 3064 }, 3065 { 3066 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3067 "type": "tidelift" 3068 } 3069 ], 3070 "time": "2024-04-28T11:44:19+00:00" 3071 }, 3072 { 3073 "name": "thenlabs/class-builder", 3074 "version": "v1.0.10", 3075 "source": { 3076 "type": "git", 3077 "url": "https://github.com/thenlabs/class-builder.git", 3078 "reference": "5c97bb3afaa952fd3e9cc78d01bb75770aeb5bbe" 3079 }, 3080 "dist": { 3081 "type": "zip", 3082 "url": "https://api.github.com/repos/thenlabs/class-builder/zipball/5c97bb3afaa952fd3e9cc78d01bb75770aeb5bbe", 3083 "reference": "5c97bb3afaa952fd3e9cc78d01bb75770aeb5bbe", 3084 "shasum": "" 3085 }, 3086 "require": { 3087 "php": ">=7.2" 3088 }, 3089 "require-dev": { 3090 "doctrine/annotations": "^1.8", 3091 "friendsofphp/php-cs-fixer": "^3.2", 3092 "thenlabs/pyramidal-tests": "2.0.x-dev" 3093 }, 3094 "type": "library", 3095 "autoload": { 3096 "psr-4": { 3097 "ThenLabs\\ClassBuilder\\": "src/" 3098 } 3099 }, 3100 "notification-url": "https://packagist.org/downloads/", 3101 "license": [ 3102 "MIT" 3103 ], 3104 "authors": [ 3105 { 3106 "name": "Andy Daniel Navarro Taño", 3107 "email": "andaniel05@gmail.com" 3108 } 3109 ], 3110 "description": "Dynamic management of classes, traits and interfaces in PHP.", 3111 "keywords": [ 3112 "builder", 3113 "builder-pattern", 3114 "php-builder", 3115 "php-class", 3116 "php-classes" 3117 ], 3118 "support": { 3119 "issues": "https://github.com/thenlabs/class-builder/issues", 3120 "source": "https://github.com/thenlabs/class-builder/tree/v1.0.10" 3121 }, 3122 "time": "2022-05-13T22:27:32+00:00" 3123 }, 3124 { 3125 "name": "thenlabs/components", 3126 "version": "v1.1.3", 3127 "source": { 3128 "type": "git", 3129 "url": "https://github.com/thenlabs/components.git", 3130 "reference": "8550a7470078bbf525f2befc6a457abd2568b197" 3131 }, 3132 "dist": { 3133 "type": "zip", 3134 "url": "https://api.github.com/repos/thenlabs/components/zipball/8550a7470078bbf525f2befc6a457abd2568b197", 3135 "reference": "8550a7470078bbf525f2befc6a457abd2568b197", 3136 "shasum": "" 3137 }, 3138 "require": { 3139 "composer/semver": ">=1.5", 3140 "doctrine/annotations": "^1.6", 3141 "php": ">=7.2", 3142 "symfony/event-dispatcher": ">=4.4" 3143 }, 3144 "require-dev": { 3145 "friendsofphp/php-cs-fixer": "^3.2", 3146 "thenlabs/pyramidal-tests": "2.0.x-dev" 3147 }, 3148 "type": "library", 3149 "autoload": { 3150 "psr-4": { 3151 "ThenLabs\\Components\\": "src/" 3152 } 3153 }, 3154 "notification-url": "https://packagist.org/downloads/", 3155 "license": [ 3156 "MIT" 3157 ], 3158 "authors": [ 3159 { 3160 "name": "Andy Daniel Navarro Taño", 3161 "email": "andaniel05@gmail.com" 3162 } 3163 ], 3164 "description": "A custom implementation of the Composite pattern in PHP for create component types with useful functionalities.", 3165 "keywords": [ 3166 "component-architecture", 3167 "component-based", 3168 "composite", 3169 "composite-pattern" 3170 ], 3171 "support": { 3172 "issues": "https://github.com/thenlabs/components/issues", 3173 "source": "https://github.com/thenlabs/components/tree/v1.1.3" 3174 }, 3175 "time": "2021-12-17T19:13:15+00:00" 3176 }, 3177 { 3178 "name": "thenlabs/pyramidal-tests", 3179 "version": "2.0.x-dev", 3180 "source": { 3181 "type": "git", 3182 "url": "https://github.com/thenlabs/pyramidal-tests.git", 3183 "reference": "c53547d623ed49974d50723dfe02ef8625aaaa74" 3184 }, 3185 "dist": { 3186 "type": "zip", 3187 "url": "https://api.github.com/repos/thenlabs/pyramidal-tests/zipball/c53547d623ed49974d50723dfe02ef8625aaaa74", 3188 "reference": "c53547d623ed49974d50723dfe02ef8625aaaa74", 3189 "shasum": "" 3190 }, 3191 "require": { 3192 "brick/varexporter": "^0.3.2", 3193 "doctrine/annotations": "^1.13", 3194 "phpunit/phpunit": "9.*", 3195 "symfony/yaml": ">=4.4", 3196 "thenlabs/class-builder": "^1.0.8", 3197 "thenlabs/components": "^1.1" 3198 }, 3199 "require-dev": { 3200 "friendsofphp/php-cs-fixer": "^3.2" 3201 }, 3202 "default-branch": true, 3203 "bin": [ 3204 "bin/pyramidal" 3205 ], 3206 "type": "library", 3207 "autoload": { 3208 "psr-4": { 3209 "ThenLabs\\PyramidalTests\\": "src/" 3210 } 3211 }, 3212 "notification-url": "https://packagist.org/downloads/", 3213 "license": [ 3214 "MIT" 3215 ], 3216 "authors": [ 3217 { 3218 "name": "Andy Daniel Navarro Taño", 3219 "email": "andaniel05@gmail.com" 3220 } 3221 ], 3222 "support": { 3223 "issues": "https://github.com/thenlabs/pyramidal-tests/issues", 3224 "source": "https://github.com/thenlabs/pyramidal-tests/tree/2.0" 3225 }, 3226 "time": "2023-03-31T19:43:20+00:00" 3227 }, 3228 { 3229 "name": "theseer/tokenizer", 3230 "version": "1.2.3", 3231 "source": { 3232 "type": "git", 3233 "url": "https://github.com/theseer/tokenizer.git", 3234 "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" 3235 }, 3236 "dist": { 3237 "type": "zip", 3238 "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", 3239 "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", 3240 "shasum": "" 3241 }, 3242 "require": { 3243 "ext-dom": "*", 3244 "ext-tokenizer": "*", 3245 "ext-xmlwriter": "*", 3246 "php": "^7.2 || ^8.0" 3247 }, 3248 "type": "library", 3249 "autoload": { 3250 "classmap": [ 3251 "src/" 3252 ] 3253 }, 3254 "notification-url": "https://packagist.org/downloads/", 3255 "license": [ 3256 "BSD-3-Clause" 3257 ], 3258 "authors": [ 3259 { 3260 "name": "Arne Blankerts", 3261 "email": "arne@blankerts.de", 3262 "role": "Developer" 3263 } 3264 ], 3265 "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3266 "support": { 3267 "issues": "https://github.com/theseer/tokenizer/issues", 3268 "source": "https://github.com/theseer/tokenizer/tree/1.2.3" 3269 }, 3270 "funding": [ 3271 { 3272 "url": "https://github.com/theseer", 3273 "type": "github" 3274 } 3275 ], 3276 "time": "2024-03-03T12:36:25+00:00" 395 3277 }, 396 3278 { 397 3279 "name": "wp-coding-standards/wpcs", 398 "version": "3. 0.1",3280 "version": "3.1.0", 399 3281 "source": { 400 3282 "type": "git", 401 3283 "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", 402 "reference": " b4caf9689f1a0e4a4c632679a44e638c1c67aff1"403 }, 404 "dist": { 405 "type": "zip", 406 "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/ b4caf9689f1a0e4a4c632679a44e638c1c67aff1",407 "reference": " b4caf9689f1a0e4a4c632679a44e638c1c67aff1",3284 "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7" 3285 }, 3286 "dist": { 3287 "type": "zip", 3288 "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7", 3289 "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7", 408 3290 "shasum": "" 409 3291 }, … … 414 3296 "ext-xmlreader": "*", 415 3297 "php": ">=5.4", 416 "phpcsstandards/phpcsextra": "^1. 1.0",417 "phpcsstandards/phpcsutils": "^1.0. 8",418 "squizlabs/php_codesniffer": "^3. 7.2"3298 "phpcsstandards/phpcsextra": "^1.2.1", 3299 "phpcsstandards/phpcsutils": "^1.0.10", 3300 "squizlabs/php_codesniffer": "^3.9.0" 419 3301 }, 420 3302 "require-dev": { … … 423 3305 "phpcompatibility/php-compatibility": "^9.0", 424 3306 "phpcsstandards/phpcsdevtools": "^1.2.0", 425 "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 "3307 "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" 426 3308 }, 427 3309 "suggest": { … … 454 3336 "funding": [ 455 3337 { 456 "url": "https://opencollective.com/ thewpcc/contribute/wp-php-63406",3338 "url": "https://opencollective.com/php_codesniffer", 457 3339 "type": "custom" 458 3340 } 459 3341 ], 460 "time": "202 3-09-14T07:06:09+00:00"3342 "time": "2024-03-25T16:39:00+00:00" 461 3343 } 462 3344 ], 463 3345 "aliases": [], 464 3346 "minimum-stability": "stable", 465 "stability-flags": [], 3347 "stability-flags": { 3348 "thenlabs/pyramidal-tests": 20 3349 }, 466 3350 "prefer-stable": false, 467 3351 "prefer-lowest": false, -
sms-gateway-press/trunk/plugin.php
r3037249 r3081041 4 4 * Plugin URI: https://www.sms-gateway-press.com 5 5 * Description: Self-hosted SMS Gateway. Send SMS with your own Android devices across your WordPress site. 6 * Version: 1.0. 26 * Version: 1.0.3 7 7 * Requires PHP: 7.3 8 8 * Author: Andy Daniel Navarro Taño -
sms-gateway-press/trunk/private/class-rest-api.php
r3036929 r3081041 142 142 public static function get_device_actions( WP_REST_Request $request ): void { 143 143 $request_time = sanitize_text_field( $_SERVER['REQUEST_TIME'] ); 144 $max_execution_time = ini_get( 'max_execution_time' );144 $max_execution_time = 30; 145 145 $request_time_limit = $request_time + $max_execution_time; 146 146 $polling_time_limit = $request_time_limit - 2; 147 147 $device_id = $request->get_header( 'X-Device-Id' ); 148 149 wp_suspend_cache_addition(); 148 $now = time(); 149 $polling_expires_at = get_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, true ); 150 151 if ( is_numeric( $polling_expires_at ) && $now < $polling_expires_at ) { 152 wp_send_json_error( null, 403 ); 153 wp_die(); 154 } 155 156 update_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT, $polling_time_limit ); 157 158 register_shutdown_function( 159 function () use ( $device_id ) { 160 delete_post_meta( $device_id, Device::META_KEY_POLLING_EXPIRES_AT ); 161 } 162 ); 163 164 wp_suspend_cache_addition( true ); 165 wp_cache_flush(); 150 166 151 167 // start the long polling. 152 168 while ( time() <= $polling_time_limit ) { 153 if ( connection_aborted() ) { 154 exit; 169 $now = time(); 170 171 update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now ); 172 173 $sms_sending_in_device_posts = get_posts( 174 array( 175 'post_type' => Sms::POST_TYPE, 176 'numberposts' => -1, 177 'meta_query' => array( 178 'relation' => 'AND', 179 array( 180 'key' => Sms::META_KEY_SEND_AT, 181 'compare' => '<=', 182 'value' => $now, 183 'type' => 'NUMERIC', 184 ), 185 array( 186 'key' => Sms::META_KEY_EXPIRES_AT, 187 'compare' => '>', 188 'value' => $now, 189 'type' => 'NUMERIC', 190 ), 191 array( 192 'key' => Sms::META_KEY_SENT_AT, 193 'compare' => 'NOT EXISTS', 194 ), 195 array( 196 'key' => Sms::META_KEY_SENDING_IN_DEVICE, 197 'value' => $device_id, 198 'type' => 'NUMERIC', 199 ), 200 array( 201 'key' => Sms::META_KEY_INACTIVE_AT, 202 'compare' => '>', 203 'value' => $now, 204 'type' => 'NUMERIC', 205 ), 206 ), 207 ) 208 ); 209 210 if ( count( $sms_sending_in_device_posts ) >= 20 ) { 211 continue; 155 212 } 156 157 $now = time();158 159 update_post_meta( $device_id, Device::META_KEY_LAST_ACTIVITY_AT, $now );160 213 161 214 $sms_posts = get_posts( … … 163 216 'post_type' => Sms::POST_TYPE, 164 217 'numberposts' => 1, 218 'order' => 'ASC', 165 219 'meta_query' => array( 166 220 'relation' => 'AND', … … 201 255 ), 202 256 array( 203 'key' => Sms::META_KEY_ INACTIVE_AT,257 'key' => Sms::META_KEY_SENDING_IN_DEVICE, 204 258 'compare' => 'NOT EQUAL', 205 259 'value' => $device_id, -
sms-gateway-press/trunk/private/custom-post-type/class-device.php
r3036929 r3081041 11 11 public const NONCE_ACTION_METABOX = 'nonce_metabox'; 12 12 13 public const META_KEY_TOKEN = '_token'; 14 public const META_KEY_PHONE_NUMBER = '_phone_number'; 15 public const META_KEY_LAST_ACTIVITY_AT = '_last_activity_at'; 16 public const META_KEY_CURRENT_SMS_ID = '_current_sms_id'; 13 public const META_KEY_TOKEN = '_token'; 14 public const META_KEY_PHONE_NUMBER = '_phone_number'; 15 public const META_KEY_LAST_ACTIVITY_AT = '_last_activity_at'; 16 public const META_KEY_CURRENT_SMS_ID = '_current_sms_id'; 17 public const META_KEY_POLLING_EXPIRES_AT = '_polling_expires_at'; 17 18 18 19 public static function register(): void { -
sms-gateway-press/trunk/private/custom-post-type/class-sms.php
r3037249 r3081041 9 9 10 10 public const POST_TYPE = 'smsgp_sms'; 11 public const DEFAULT_INACTIVITY = 30; // seconds11 public const DEFAULT_INACTIVITY = 180; // seconds 12 12 public const COLUMN_STATUS = 'status'; 13 13 public const NONCE_ACTION_METABOX = 'nonce_metabox'; 14 public const DATETIME_FORMAT = 'Y-m-d H:i:s'; 14 15 15 16 public const META_BOX_OPTIONS = 'options'; … … 131 132 132 133 public static function manage_posts_custom_column( string $column, int $post_id ): void { 133 $format = 'Y-m-d H:i:s';134 135 134 switch ( $column ) { 136 135 case self::META_KEY_PHONE_NUMBER: … … 154 153 $dt->setTimestamp( $send_at ); 155 154 156 echo esc_html( $dt->format( $format) );155 echo esc_html( $dt->format( self::DATETIME_FORMAT ) ); 157 156 } 158 157 break; … … 165 164 $dt->setTimestamp( $expires_at ); 166 165 167 echo esc_html( $dt->format( $format) );166 echo esc_html( $dt->format( self::DATETIME_FORMAT ) ); 168 167 } 169 168 break; … … 192 191 $sent_at = get_post_meta( $post_id, self::META_KEY_SENT_AT, true ); 193 192 194 if ( $sent_at ) { 195 return Utils::format_elapsed_time( $sent_at ); 193 if ( $sent_at && is_numeric( $sent_at ) ) { 194 $datetime = new DateTime(); 195 $datetime->setTimestamp( $sent_at ); 196 197 return $datetime->format( self::DATETIME_FORMAT ); 196 198 } 197 199 } … … 405 407 } elseif ( is_array( $log ) && isset( $log['time'] ) && isset( $log['text'] ) ) { 406 408 $time = ( new DateTime() )->setTimestamp( $log['time'] ); 407 echo '<p><strong>' . esc_html( $time->format( 'Y-m-d H:i:s' ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>';409 echo '<p><strong>' . esc_html( $time->format( self::DATETIME_FORMAT ) ) . ':</strong>' . esc_html( $log['text'] ) . '</p>'; 408 410 } 409 411 } -
sms-gateway-press/trunk/readme.txt
r3037249 r3081041 4 4 Tags: sms, smsgateway, gateway 5 5 Requires at least: 6.0 6 Tested up to: 6. 47 Stable tag: 1.0. 26 Tested up to: 6.5 7 Stable tag: 1.0.3 8 8 Requires PHP: 7.3 9 9 License: GPLv2 or later
Note: See TracChangeset
for help on using the changeset viewer.