├── .gitignore ├── .env.example ├── phpunit.xml ├── tests ├── client │ ├── ShopeeClientTest.php │ └── SignGeneratorTest.php └── node │ ├── shop │ └── ShopWithoutBodyRequestTest.php │ └── general │ └── GeneralWithBodyRequestTest.php ├── src ├── client │ ├── SignGenerator.php │ └── ShopeeApiConfig.php ├── request │ ├── shop │ │ └── ShopApiClient.php │ └── general │ │ └── GeneralApiClient.php └── node │ ├── general │ ├── GeneralWithBodyRequest.php │ └── GeneralWithoutBodyRequest.php │ └── shop │ ├── ShopWithoutBodyRequest.php │ └── ShopWithBodyRequest.php ├── composer.json ├── README.MD └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | .idea/ 3 | .vscode/ 4 | .env -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | SHOPEE_PARTNER_ID= 2 | SHOPEE_SHOP_ID= 3 | SHOPEE_ACCESS_TOKEN= 4 | SHOPEE_REFRESH_TOKEN= 5 | SHOPEE_SECRET_KEY= 6 | SHOPEE_CODE= -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tests 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/client/ShopeeClientTest.php: -------------------------------------------------------------------------------- 1 | setPartnerId(001); 13 | 14 | $this->assertEquals($client->getPartnerId(), 001); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/client/SignGenerator.php: -------------------------------------------------------------------------------- 1 | base on this https://open.shopee.com/developer-guide/20 */ 14 | return hash_hmac('sha256', $baseString, $key); 15 | } 16 | } -------------------------------------------------------------------------------- /tests/client/SignGeneratorTest.php: -------------------------------------------------------------------------------- 1 | assertEquals(SignGenerator::generateSign("ABC", "123"), $signedKey); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "haistar/shopee-php-sdk", 3 | "description": "PHP SDK for Shopee Open API", 4 | "type": "library", 5 | "license": "MIT", 6 | "autoload": { 7 | "psr-4": { 8 | "Haistar\\ShopeePhpSdk\\": "src/" 9 | } 10 | }, 11 | "authors": [ 12 | { 13 | "name": "raviMukti", 14 | "email": "shinjiravi@gmail.com" 15 | } 16 | ], 17 | "require": { 18 | "guzzlehttp/guzzle": "^6.5 || ^7.0" 19 | }, 20 | "require-dev": { 21 | "phpunit/phpunit": "^7", 22 | "vlucas/phpdotenv": "^5.3" 23 | }, 24 | "autoload-dev": { 25 | "psr-4": { 26 | "Test\\": "tests/" 27 | } 28 | }, 29 | "scripts": { 30 | "test" : "phpunit" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/request/shop/ShopApiClient.php: -------------------------------------------------------------------------------- 1 | setPartnerId((int) $_ENV["SHOPEE_PARTNER_ID"]); 13 | $apiConfig->setShopId((int) $_ENV["SHOPEE_SHOP_ID"]); 14 | $apiConfig->setAccessToken($_ENV["SHOPEE_ACCESS_TOKEN"]); 15 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 16 | 17 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 18 | $apiPath = "/api/v2/product/get_item_list"; 19 | 20 | $params = array(); 21 | 22 | $productList = $shopeeClient->httpCallGet($baseUrl, $apiPath, $params, $apiConfig); 23 | 24 | ``` 25 | 26 | ## Running Test 27 | 28 | `composer test` 29 | 30 | For running all tests 31 | 32 | 33 | 34 | ## For laravel 8 35 | 36 | Run `composer require haistar/shopee-php-sdk` 37 | 38 | Then `composer update` 39 | 40 | Add this to .Env 41 | 42 | `SHOPEE_PARTNER_ID={partner_id}` 43 | `SHOPEE_SHOP_ID= {shop_id}` 44 | `SHOPEE_ACCESS_TOKEN={access_token}` 45 | `SHOPEE_SECRET_KEY={partner_key}` 46 | 47 | 48 | 49 | Add ontop of Controller 50 | 51 | `use Haistar\ShopeePhpSdk\request\shop\ShopApiClient;` 52 | `use Haistar\ShopeePhpSdk\client\ShopeeApiConfig;` 53 | 54 | 55 | Try 56 | 57 | ``` 58 | public function index() 59 | { 60 | 61 | $shopeeClient = new ShopApiClient(); 62 | $apiConfig = new ShopeeApiConfig(); 63 | $apiConfig->setPartnerId((int) $_ENV["SHOPEE_PARTNER_ID"]); 64 | $apiConfig->setShopId((int) $_ENV["SHOPEE_SHOP_ID"]); 65 | $apiConfig->setAccessToken($_ENV["SHOPEE_ACCESS_TOKEN"]); 66 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 67 | 68 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 69 | $apiPath = "/api/v2/product/get_item_list"; 70 | 71 | $params = ["offset"=>0,"item_status"=>"NORMAL","page_size" => 10,]; 72 | 73 | $productList = $shopeeClient->httpCallGet($baseUrl, $apiPath, $params, $apiConfig); 74 | 75 | return response()->json($productList); 76 | 77 | 78 | } 79 | ``` -------------------------------------------------------------------------------- /src/node/general/GeneralWithBodyRequest.php: -------------------------------------------------------------------------------- 1 | getPartnerId() == "") throw new Exception("Input of [partner_id] is empty"); 26 | if ($apiConfig->getSecretKey() == "") throw new Exception("Input of [secret_key] is empty"); 27 | 28 | //Timestamp 29 | $timeStamp = time(); 30 | // Concatenate Base String 31 | $baseString = $apiConfig->getPartnerId()."".$apiPath."".$timeStamp; 32 | $signedKey = SignGenerator::generateSign($baseString, $apiConfig->getSecretKey()); 33 | 34 | $apiPath .= "?"; 35 | 36 | if ($params != null){ 37 | foreach ($params as $key => $value){ 38 | $apiPath .= "&". $key . "=" . urlencode($value); 39 | } 40 | } 41 | 42 | $requestUrl = $baseUrl.$apiPath."&"."partner_id=".urlencode($apiConfig->getPartnerId())."&"."timestamp=".urlencode($timeStamp)."&"."sign=".urlencode($signedKey); 43 | 44 | $guzzleClient = new Client([ 45 | 'base_uri' => $baseUrl, 46 | 'timeout' => 30.0 47 | ]); 48 | 49 | $response = null; 50 | 51 | try 52 | { 53 | $response = json_decode($guzzleClient->request($httpMethod, $requestUrl, ['json' => $body])->getBody()->getContents()); 54 | } catch (ClientException $e) 55 | { 56 | $response = json_decode($e->getResponse()->getBody()->getContents()); 57 | } catch(Exception $e) 58 | { 59 | $response = (object) array("error" => "GUZZLE_ERROR", "message" => $e->getMessage()); 60 | } 61 | 62 | return $response; 63 | } 64 | } -------------------------------------------------------------------------------- /src/node/general/GeneralWithoutBodyRequest.php: -------------------------------------------------------------------------------- 1 | getPartnerId() == "") throw new Exception("Input of [partner_id] is empty"); 25 | if ($shopeeApiConfig->getSecretKey() == "") throw new Exception("Input of [secret_key] is empty"); 26 | 27 | //Timestamp 28 | $timeStamp = time(); 29 | // Concatenate Base String 30 | $baseString = $shopeeApiConfig->getPartnerId()."".$apiPath."".$timeStamp; 31 | $signedKey = SignGenerator::generateSign($baseString, $shopeeApiConfig->getSecretKey()); 32 | 33 | // Set Header 34 | $header = array( 35 | "Content-type : application/json" 36 | ); 37 | 38 | $apiPath .= "?"; 39 | 40 | if ($params != null){ 41 | foreach ($params as $key => $value){ 42 | $apiPath .= "&". $key . "=" . urlencode($value); 43 | } 44 | } 45 | 46 | $requestUrl = $baseUrl.$apiPath."&"."partner_id=".urlencode($shopeeApiConfig->getPartnerId())."&"."timestamp=".urlencode($timeStamp)."&"."sign=".urlencode($signedKey); 47 | 48 | $guzzleClient = new Client([ 49 | 'base_uri' => $baseUrl, 50 | 'timeout' => 30.0 51 | ]); 52 | 53 | $response = null; 54 | 55 | try 56 | { 57 | $response = json_decode($guzzleClient->request($httpMethod, $requestUrl)->getBody()->getContents()); 58 | } catch (ClientException $e) 59 | { 60 | $response = json_decode($e->getResponse()->getBody()->getContents()); 61 | } catch(Exception $e) 62 | { 63 | $response = (object) array("error" => "GUZZLE_ERROR", "message" => $e->getMessage()); 64 | } 65 | 66 | return $response; 67 | } 68 | } -------------------------------------------------------------------------------- /src/node/shop/ShopWithoutBodyRequest.php: -------------------------------------------------------------------------------- 1 | getPartnerId() == "") throw new Exception("Input of [partner_id] is empty"); 26 | if ($apiConfig->getAccessToken() == "") throw new Exception("Input of [access_token] is empty"); 27 | if ($apiConfig->getShopId() == "") throw new Exception("Input of [shop_id] is empty"); 28 | if ($apiConfig->getSecretKey() == "") throw new Exception("Input of [secret_key] is empty"); 29 | 30 | //Timestamp 31 | $timeStamp = time(); 32 | // Concatenate Base String 33 | $baseString = $apiConfig->getPartnerId()."".$apiPath."".$timeStamp."".$apiConfig->getAccessToken()."".$apiConfig->getShopId(); 34 | $signedKey = SignGenerator::generateSign($baseString, $apiConfig->getSecretKey()); 35 | 36 | $apiPath .= "?"; 37 | 38 | if ($params != null){ 39 | foreach ($params as $key => $value){ 40 | $apiPath .= "&". $key . "=" . urlencode($value); 41 | } 42 | } 43 | 44 | $requestUrl = $baseUrl.$apiPath."&"."partner_id=".urlencode($apiConfig->getPartnerId())."&"."shop_id=".urlencode($apiConfig->getShopId())."&"."access_token=".urlencode($apiConfig->getAccessToken())."&"."timestamp=".urlencode($timeStamp)."&"."sign=".urlencode($signedKey); 45 | 46 | $guzzleClient = new Client([ 47 | 'base_uri' => $baseUrl, 48 | 'timeout' => 30.0 49 | ]); 50 | 51 | $response = null; 52 | 53 | try 54 | { 55 | $response = json_decode($guzzleClient->request($httpMethod, $requestUrl)->getBody()->getContents()); 56 | } catch (ClientException $e) 57 | { 58 | $response = json_decode($e->getResponse()->getBody()->getContents()); 59 | } catch(Exception $e) 60 | { 61 | $response = (object) array("error" => "GUZZLE_ERROR", "message" => $e->getMessage()); 62 | } 63 | 64 | return $response; 65 | } 66 | 67 | } // End Of Class -------------------------------------------------------------------------------- /src/client/ShopeeApiConfig.php: -------------------------------------------------------------------------------- 1 | partnerId = $partnerId; 31 | $this->accessToken = $accessToken; 32 | $this->refreshToken = $refreshToken; 33 | $this->shopId = $shopId; 34 | $this->secretKey = $secretKey; 35 | } 36 | 37 | /** 38 | * @return mixed 39 | */ 40 | public function getPartnerId() 41 | { 42 | return $this->partnerId; 43 | } 44 | 45 | /** 46 | * @param mixed $partnerId 47 | */ 48 | public function setPartnerId($partnerId) 49 | { 50 | $this->partnerId = $partnerId; 51 | } 52 | 53 | /** 54 | * @return mixed 55 | */ 56 | public function getAccessToken() 57 | { 58 | return $this->accessToken; 59 | } 60 | 61 | /** 62 | * @param mixed $accessToken 63 | */ 64 | public function setAccessToken($accessToken) 65 | { 66 | $this->accessToken = $accessToken; 67 | } 68 | 69 | /** 70 | * @return mixed|string 71 | */ 72 | public function getRefreshToken() 73 | { 74 | return $this->refreshToken; 75 | } 76 | 77 | /** 78 | * @param mixed|string $refreshToken 79 | */ 80 | public function setRefreshToken($refreshToken) 81 | { 82 | $this->refreshToken = $refreshToken; 83 | } 84 | 85 | 86 | /** 87 | * @return mixed 88 | */ 89 | public function getShopId() 90 | { 91 | return $this->shopId; 92 | } 93 | 94 | /** 95 | * @param mixed $shopId 96 | */ 97 | public function setShopId($shopId) 98 | { 99 | $this->shopId = $shopId; 100 | } 101 | 102 | /** 103 | * @return string 104 | */ 105 | public function getSecretKey() 106 | { 107 | return $this->secretKey; 108 | } 109 | 110 | /** 111 | * @param string $secretKey 112 | */ 113 | public function setSecretKey($secretKey) 114 | { 115 | $this->secretKey = $secretKey; 116 | } 117 | 118 | } -------------------------------------------------------------------------------- /tests/node/shop/ShopWithoutBodyRequestTest.php: -------------------------------------------------------------------------------- 1 | safeLoad(); 12 | 13 | class ShopWithoutBodyRequestTest extends TestCase 14 | { 15 | public function testGetCategoryAndReturnSuccess(){ 16 | 17 | $shopeeClient = new ShopApiClient(); 18 | $apiConfig = new ShopeeApiConfig(); 19 | $apiConfig->setPartnerId((int) $_ENV["SHOPEE_PARTNER_ID"]); 20 | $apiConfig->setAccessToken($_ENV["SHOPEE_ACCESS_TOKEN"]); 21 | $apiConfig->setShopId((int) $_ENV["SHOPEE_SHOP_ID"]); 22 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 23 | 24 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 25 | $apiPath = "/api/v2/product/get_category"; 26 | 27 | $params = array(); // Even it is no param, still must be created with null array value 28 | 29 | $categoryList = $shopeeClient->httpCallGet($baseUrl, $apiPath, $params, $apiConfig); 30 | 31 | $this->assertEquals($categoryList->response->category_list[0]->category_id, 100001); 32 | } 33 | 34 | public function testGetItemListWithOnceCommonParameter(){ 35 | $shopeeClient = new ShopApiClient(); 36 | $apiConfig = new ShopeeApiConfig(); 37 | $apiConfig->setPartnerId((int) $_ENV["SHOPEE_PARTNER_ID"]); 38 | $apiConfig->setShopId((int) $_ENV["SHOPEE_SHOP_ID"]); 39 | $apiConfig->setAccessToken($_ENV["SHOPEE_ACCESS_TOKEN"]); 40 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 41 | 42 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 43 | $apiPath = "/api/v2/product/get_item_list"; 44 | 45 | $params = array( 46 | 'offset' => 0, 47 | 'page_size' => 100, 48 | 'item_status' => 'NORMAL' 49 | ); 50 | 51 | $productList = $shopeeClient->httpCallGet($baseUrl, $apiPath, $params, $apiConfig); 52 | 53 | $this->assertEquals($productList->response->item[0]->item_id, 268800); 54 | } 55 | 56 | public function testGetListItemWithoutParameterAndReturnFalse(){ 57 | $shopeeClient = new ShopApiClient(); 58 | $apiConfig = new ShopeeApiConfig(); 59 | $apiConfig->setPartnerId((int) $_ENV["SHOPEE_PARTNER_ID"]); 60 | $apiConfig->setShopId((int) $_ENV["SHOPEE_SHOP_ID"]); 61 | $apiConfig->setAccessToken($_ENV["SHOPEE_ACCESS_TOKEN"]); 62 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 63 | 64 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 65 | $apiPath = "/api/v2/product/get_item_list"; 66 | 67 | $params = array(); 68 | 69 | $productList = $shopeeClient->httpCallGet($baseUrl, $apiPath, $params, $apiConfig); 70 | 71 | $this->assertEquals($productList->message, 'invalid field Offset: value must Not Null'); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /tests/node/general/GeneralWithBodyRequestTest.php: -------------------------------------------------------------------------------- 1 | safeLoad(); 12 | 13 | class GeneralWithBodyRequestTest extends TestCase 14 | { 15 | 16 | public function testGetAccessTokenAndReturnSuccess(){ 17 | $shopeeClient = new GeneralApiClient(); 18 | $apiConfig = new ShopeeApiConfig(); 19 | $apiConfig->setPartnerId($_ENV["SHOPEE_PARTNER_ID"]); 20 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 21 | 22 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 23 | $apiPath = "/api/v2/auth/token/get"; 24 | 25 | $params = array(); 26 | 27 | $body = array( 28 | "partner_id" => (int) $_ENV["SHOPEE_PARTNER_ID"], 29 | "code" => $_ENV["SHOPEE_CODE"], 30 | "shop_id" => (int) $_ENV["SHOPEE_SHOP_ID"] 31 | ); 32 | 33 | $accessToken = $shopeeClient->httpCallPost($baseUrl, $apiPath, $params, $body, $apiConfig); 34 | 35 | $this->assertIsString($accessToken->access_token, "CREATE ACCESS TOKEN"); 36 | } 37 | 38 | 39 | public function testRefreshTokenAndReturnSuccess(){ 40 | $shopeeClient = new GeneralApiClient(); 41 | $apiConfig = new ShopeeApiConfig(); 42 | $apiConfig->setPartnerId($_ENV["SHOPEE_PARTNER_ID"]); 43 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 44 | 45 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 46 | $apiPath = "/api/v2/auth/access_token/get"; 47 | 48 | $params = array(); 49 | 50 | $body = array( 51 | "refresh_token" => $_ENV["SHOPEE_REFRESH_TOKEN"], 52 | "partner_id" => (int) $_ENV["SHOPEE_PARTNER_ID"], 53 | "shop_id" => (int) $_ENV["SHOPEE_SHOP_ID"] 54 | ); 55 | 56 | $refreshToken = $shopeeClient->httpCallPost($baseUrl, $apiPath, $params, $body, $apiConfig); 57 | 58 | $this->assertIsString($refreshToken->access_token, "NEW REFRESH TOKEN"); 59 | } 60 | 61 | public function testRefreshTokenAndReturnTimeout(){ 62 | $shopeeClient = new GeneralApiClient(); 63 | $apiConfig = new ShopeeApiConfig(); 64 | $apiConfig->setPartnerId($_ENV["SHOPEE_PARTNER_ID"]); 65 | $apiConfig->setSecretKey($_ENV["SHOPEE_SECRET_KEY"]); 66 | 67 | $baseUrl = "https://partner.test-stable.shopeemobile.com"; 68 | $apiPath = "/api/v2/auth/access_token/get"; 69 | 70 | $params = array(); 71 | 72 | $body = array( 73 | "refresh_token" => $_ENV["SHOPEE_REFRESH_TOKEN"], 74 | "partner_id" => (int) $_ENV["SHOPEE_PARTNER_ID"], 75 | "shop_id" => (int) $_ENV["SHOPEE_SHOP_ID"] 76 | ); 77 | 78 | $refreshToken = $shopeeClient->httpCallPost($baseUrl, $apiPath, $params, $body, $apiConfig); 79 | 80 | $this->assertIsString($refreshToken->error, "GUZZLE_ERROR"); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/node/shop/ShopWithBodyRequest.php: -------------------------------------------------------------------------------- 1 | getPartnerId() == "") throw new Exception("Input of [partner_id] is empty"); 31 | if ($apiConfig->getAccessToken() == "") throw new Exception("Input of [access_token] is empty"); 32 | if ($apiConfig->getShopId() == "") throw new Exception("Input of [shop_id] is empty"); 33 | if ($apiConfig->getSecretKey() == "") throw new Exception("Input of [secret_key] is empty"); 34 | 35 | //Timestamp 36 | $timeStamp = time(); 37 | // Concatenate Base String 38 | $baseString = $apiConfig->getPartnerId()."".$apiPath."".$timeStamp."".$apiConfig->getAccessToken()."".$apiConfig->getShopId(); 39 | $signedKey = SignGenerator::generateSign($baseString, $apiConfig->getSecretKey()); 40 | 41 | // Set Header 42 | $header = array( 43 | "Content-type : application/json" 44 | ); 45 | 46 | $apiPath .= "?"; 47 | 48 | if ($params != null){ 49 | foreach ($params as $key => $value){ 50 | $apiPath .= "&". $key . "=" . urlencode($value); 51 | } 52 | } 53 | 54 | $requestUrl = $baseUrl.$apiPath."&"."partner_id=".urlencode($apiConfig->getPartnerId())."&"."shop_id=".urlencode($apiConfig->getShopId())."&"."access_token=".urlencode($apiConfig->getAccessToken())."&"."timestamp=".urlencode($timeStamp)."&"."sign=".urlencode($signedKey); 55 | 56 | $curl = curl_init(); 57 | curl_setopt_array($curl, array( 58 | CURLOPT_URL => $requestUrl, 59 | CURLOPT_RETURNTRANSFER => true, 60 | CURLOPT_ENCODING => "", 61 | CURLOPT_MAXREDIRS => 10, 62 | CURLOPT_POSTFIELDS => json_encode($body), 63 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 64 | CURLOPT_CUSTOMREQUEST => $httpMethod, 65 | CURLOPT_HTTPHEADER => $header 66 | )); 67 | 68 | $response = curl_exec($curl); 69 | $err = curl_error($curl); 70 | 71 | curl_close($curl); 72 | 73 | $data = json_decode(utf8_encode($response)); 74 | 75 | if ($err) { 76 | return $err; 77 | } else { 78 | return $data; 79 | } 80 | } 81 | 82 | /** 83 | * @param $baseUrl 84 | * @param $apiPath 85 | * @param $params 86 | * @param $body 87 | * @param ShopeeApiConfig $apiConfig 88 | * @return object|array|mixed 89 | */ 90 | public static function postMethod($baseUrl, $apiPath, $params, $body, ShopeeApiConfig $apiConfig) 91 | { 92 | // Validate Input 93 | if ($apiConfig->getPartnerId() == "") throw new Exception("Input of [partner_id] is empty"); 94 | if ($apiConfig->getAccessToken() == "") throw new Exception("Input of [access_token] is empty"); 95 | if ($apiConfig->getShopId() == "") throw new Exception("Input of [shop_id] is empty"); 96 | if ($apiConfig->getSecretKey() == "") throw new Exception("Input of [secret_key] is empty"); 97 | 98 | //Timestamp 99 | $timeStamp = time(); 100 | // Concatenate Base String 101 | $baseString = $apiConfig->getPartnerId()."".$apiPath."".$timeStamp."".$apiConfig->getAccessToken()."".$apiConfig->getShopId(); 102 | $signedKey = SignGenerator::generateSign($baseString, $apiConfig->getSecretKey()); 103 | 104 | $apiPath .= "?"; 105 | 106 | if ($params != null){ 107 | foreach ($params as $key => $value){ 108 | $apiPath .= "&". $key . "=" . urlencode($value); 109 | } 110 | } 111 | 112 | $requestUrl = $baseUrl.$apiPath."&"."partner_id=".urlencode($apiConfig->getPartnerId())."&"."shop_id=".urlencode($apiConfig->getShopId())."&"."access_token=".urlencode($apiConfig->getAccessToken())."&"."timestamp=".urlencode($timeStamp)."&"."sign=".urlencode($signedKey); 113 | 114 | $guzzleClient = new Client([ 115 | 'base_uri' => $baseUrl, 116 | 'timeout' => 30.0 117 | ]); 118 | 119 | $response = null; 120 | 121 | try 122 | { 123 | $response = json_decode($guzzleClient->request('POST', $requestUrl, ['json' => $body])->getBody()->getContents()); 124 | } catch (ClientException $e) 125 | { 126 | $response = json_decode($e->getResponse()->getBody()->getContents()); 127 | } catch(Exception $e) 128 | { 129 | $response = (object) array("error" => "GUZZLE_ERROR", "message" => $e->getMessage()); 130 | } 131 | 132 | return $response; 133 | } 134 | 135 | } // End of Class -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "a90715800ff7cd7a806d076b60958d3b", 8 | "packages": [ 9 | { 10 | "name": "guzzlehttp/guzzle", 11 | "version": "7.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/guzzle/guzzle.git", 15 | "reference": "7008573787b430c1c1f650e3722d9bba59967628" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", 20 | "reference": "7008573787b430c1c1f650e3722d9bba59967628", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "ext-json": "*", 25 | "guzzlehttp/promises": "^1.4", 26 | "guzzlehttp/psr7": "^1.7 || ^2.0", 27 | "php": "^7.2.5 || ^8.0", 28 | "psr/http-client": "^1.0" 29 | }, 30 | "provide": { 31 | "psr/http-client-implementation": "1.0" 32 | }, 33 | "require-dev": { 34 | "bamarni/composer-bin-plugin": "^1.4.1", 35 | "ext-curl": "*", 36 | "php-http/client-integration-tests": "^3.0", 37 | "phpunit/phpunit": "^8.5.5 || ^9.3.5", 38 | "psr/log": "^1.1" 39 | }, 40 | "suggest": { 41 | "ext-curl": "Required for CURL handler support", 42 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 43 | "psr/log": "Required for using the Log middleware" 44 | }, 45 | "type": "library", 46 | "extra": { 47 | "branch-alias": { 48 | "dev-master": "7.3-dev" 49 | } 50 | }, 51 | "autoload": { 52 | "psr-4": { 53 | "GuzzleHttp\\": "src/" 54 | }, 55 | "files": [ 56 | "src/functions_include.php" 57 | ] 58 | }, 59 | "notification-url": "https://packagist.org/downloads/", 60 | "license": [ 61 | "MIT" 62 | ], 63 | "authors": [ 64 | { 65 | "name": "Michael Dowling", 66 | "email": "mtdowling@gmail.com", 67 | "homepage": "https://github.com/mtdowling" 68 | }, 69 | { 70 | "name": "Márk Sági-Kazár", 71 | "email": "mark.sagikazar@gmail.com", 72 | "homepage": "https://sagikazarmark.hu" 73 | } 74 | ], 75 | "description": "Guzzle is a PHP HTTP client library", 76 | "homepage": "http://guzzlephp.org/", 77 | "keywords": [ 78 | "client", 79 | "curl", 80 | "framework", 81 | "http", 82 | "http client", 83 | "psr-18", 84 | "psr-7", 85 | "rest", 86 | "web service" 87 | ], 88 | "support": { 89 | "issues": "https://github.com/guzzle/guzzle/issues", 90 | "source": "https://github.com/guzzle/guzzle/tree/7.3.0" 91 | }, 92 | "funding": [ 93 | { 94 | "url": "https://github.com/GrahamCampbell", 95 | "type": "github" 96 | }, 97 | { 98 | "url": "https://github.com/Nyholm", 99 | "type": "github" 100 | }, 101 | { 102 | "url": "https://github.com/alexeyshockov", 103 | "type": "github" 104 | }, 105 | { 106 | "url": "https://github.com/gmponos", 107 | "type": "github" 108 | } 109 | ], 110 | "time": "2021-03-23T11:33:13+00:00" 111 | }, 112 | { 113 | "name": "guzzlehttp/promises", 114 | "version": "1.4.1", 115 | "source": { 116 | "type": "git", 117 | "url": "https://github.com/guzzle/promises.git", 118 | "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" 119 | }, 120 | "dist": { 121 | "type": "zip", 122 | "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", 123 | "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", 124 | "shasum": "" 125 | }, 126 | "require": { 127 | "php": ">=5.5" 128 | }, 129 | "require-dev": { 130 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 131 | }, 132 | "type": "library", 133 | "extra": { 134 | "branch-alias": { 135 | "dev-master": "1.4-dev" 136 | } 137 | }, 138 | "autoload": { 139 | "psr-4": { 140 | "GuzzleHttp\\Promise\\": "src/" 141 | }, 142 | "files": [ 143 | "src/functions_include.php" 144 | ] 145 | }, 146 | "notification-url": "https://packagist.org/downloads/", 147 | "license": [ 148 | "MIT" 149 | ], 150 | "authors": [ 151 | { 152 | "name": "Michael Dowling", 153 | "email": "mtdowling@gmail.com", 154 | "homepage": "https://github.com/mtdowling" 155 | } 156 | ], 157 | "description": "Guzzle promises library", 158 | "keywords": [ 159 | "promise" 160 | ], 161 | "support": { 162 | "issues": "https://github.com/guzzle/promises/issues", 163 | "source": "https://github.com/guzzle/promises/tree/1.4.1" 164 | }, 165 | "time": "2021-03-07T09:25:29+00:00" 166 | }, 167 | { 168 | "name": "guzzlehttp/psr7", 169 | "version": "2.0.0", 170 | "source": { 171 | "type": "git", 172 | "url": "https://github.com/guzzle/psr7.git", 173 | "reference": "1dc8d9cba3897165e16d12bb13d813afb1eb3fe7" 174 | }, 175 | "dist": { 176 | "type": "zip", 177 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/1dc8d9cba3897165e16d12bb13d813afb1eb3fe7", 178 | "reference": "1dc8d9cba3897165e16d12bb13d813afb1eb3fe7", 179 | "shasum": "" 180 | }, 181 | "require": { 182 | "php": "^7.2.5 || ^8.0", 183 | "psr/http-factory": "^1.0", 184 | "psr/http-message": "^1.0", 185 | "ralouphie/getallheaders": "^3.0" 186 | }, 187 | "provide": { 188 | "psr/http-factory-implementation": "1.0", 189 | "psr/http-message-implementation": "1.0" 190 | }, 191 | "require-dev": { 192 | "bamarni/composer-bin-plugin": "^1.4.1", 193 | "http-interop/http-factory-tests": "^0.9", 194 | "phpunit/phpunit": "^8.5.8 || ^9.3.10" 195 | }, 196 | "suggest": { 197 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 198 | }, 199 | "type": "library", 200 | "extra": { 201 | "branch-alias": { 202 | "dev-master": "2.0-dev" 203 | } 204 | }, 205 | "autoload": { 206 | "psr-4": { 207 | "GuzzleHttp\\Psr7\\": "src/" 208 | } 209 | }, 210 | "notification-url": "https://packagist.org/downloads/", 211 | "license": [ 212 | "MIT" 213 | ], 214 | "authors": [ 215 | { 216 | "name": "Michael Dowling", 217 | "email": "mtdowling@gmail.com", 218 | "homepage": "https://github.com/mtdowling" 219 | }, 220 | { 221 | "name": "Tobias Schultze", 222 | "homepage": "https://github.com/Tobion" 223 | }, 224 | { 225 | "name": "Márk Sági-Kazár", 226 | "email": "mark.sagikazar@gmail.com", 227 | "homepage": "https://sagikazarmark.hu" 228 | } 229 | ], 230 | "description": "PSR-7 message implementation that also provides common utility methods", 231 | "keywords": [ 232 | "http", 233 | "message", 234 | "psr-7", 235 | "request", 236 | "response", 237 | "stream", 238 | "uri", 239 | "url" 240 | ], 241 | "support": { 242 | "issues": "https://github.com/guzzle/psr7/issues", 243 | "source": "https://github.com/guzzle/psr7/tree/2.0.0" 244 | }, 245 | "time": "2021-06-30T20:03:07+00:00" 246 | }, 247 | { 248 | "name": "psr/http-client", 249 | "version": "1.0.1", 250 | "source": { 251 | "type": "git", 252 | "url": "https://github.com/php-fig/http-client.git", 253 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 254 | }, 255 | "dist": { 256 | "type": "zip", 257 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 258 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 259 | "shasum": "" 260 | }, 261 | "require": { 262 | "php": "^7.0 || ^8.0", 263 | "psr/http-message": "^1.0" 264 | }, 265 | "type": "library", 266 | "extra": { 267 | "branch-alias": { 268 | "dev-master": "1.0.x-dev" 269 | } 270 | }, 271 | "autoload": { 272 | "psr-4": { 273 | "Psr\\Http\\Client\\": "src/" 274 | } 275 | }, 276 | "notification-url": "https://packagist.org/downloads/", 277 | "license": [ 278 | "MIT" 279 | ], 280 | "authors": [ 281 | { 282 | "name": "PHP-FIG", 283 | "homepage": "http://www.php-fig.org/" 284 | } 285 | ], 286 | "description": "Common interface for HTTP clients", 287 | "homepage": "https://github.com/php-fig/http-client", 288 | "keywords": [ 289 | "http", 290 | "http-client", 291 | "psr", 292 | "psr-18" 293 | ], 294 | "support": { 295 | "source": "https://github.com/php-fig/http-client/tree/master" 296 | }, 297 | "time": "2020-06-29T06:28:15+00:00" 298 | }, 299 | { 300 | "name": "psr/http-factory", 301 | "version": "1.0.1", 302 | "source": { 303 | "type": "git", 304 | "url": "https://github.com/php-fig/http-factory.git", 305 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" 306 | }, 307 | "dist": { 308 | "type": "zip", 309 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 310 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 311 | "shasum": "" 312 | }, 313 | "require": { 314 | "php": ">=7.0.0", 315 | "psr/http-message": "^1.0" 316 | }, 317 | "type": "library", 318 | "extra": { 319 | "branch-alias": { 320 | "dev-master": "1.0.x-dev" 321 | } 322 | }, 323 | "autoload": { 324 | "psr-4": { 325 | "Psr\\Http\\Message\\": "src/" 326 | } 327 | }, 328 | "notification-url": "https://packagist.org/downloads/", 329 | "license": [ 330 | "MIT" 331 | ], 332 | "authors": [ 333 | { 334 | "name": "PHP-FIG", 335 | "homepage": "http://www.php-fig.org/" 336 | } 337 | ], 338 | "description": "Common interfaces for PSR-7 HTTP message factories", 339 | "keywords": [ 340 | "factory", 341 | "http", 342 | "message", 343 | "psr", 344 | "psr-17", 345 | "psr-7", 346 | "request", 347 | "response" 348 | ], 349 | "support": { 350 | "source": "https://github.com/php-fig/http-factory/tree/master" 351 | }, 352 | "time": "2019-04-30T12:38:16+00:00" 353 | }, 354 | { 355 | "name": "psr/http-message", 356 | "version": "1.0.1", 357 | "source": { 358 | "type": "git", 359 | "url": "https://github.com/php-fig/http-message.git", 360 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 361 | }, 362 | "dist": { 363 | "type": "zip", 364 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 365 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 366 | "shasum": "" 367 | }, 368 | "require": { 369 | "php": ">=5.3.0" 370 | }, 371 | "type": "library", 372 | "extra": { 373 | "branch-alias": { 374 | "dev-master": "1.0.x-dev" 375 | } 376 | }, 377 | "autoload": { 378 | "psr-4": { 379 | "Psr\\Http\\Message\\": "src/" 380 | } 381 | }, 382 | "notification-url": "https://packagist.org/downloads/", 383 | "license": [ 384 | "MIT" 385 | ], 386 | "authors": [ 387 | { 388 | "name": "PHP-FIG", 389 | "homepage": "http://www.php-fig.org/" 390 | } 391 | ], 392 | "description": "Common interface for HTTP messages", 393 | "homepage": "https://github.com/php-fig/http-message", 394 | "keywords": [ 395 | "http", 396 | "http-message", 397 | "psr", 398 | "psr-7", 399 | "request", 400 | "response" 401 | ], 402 | "support": { 403 | "source": "https://github.com/php-fig/http-message/tree/master" 404 | }, 405 | "time": "2016-08-06T14:39:51+00:00" 406 | }, 407 | { 408 | "name": "ralouphie/getallheaders", 409 | "version": "3.0.3", 410 | "source": { 411 | "type": "git", 412 | "url": "https://github.com/ralouphie/getallheaders.git", 413 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 414 | }, 415 | "dist": { 416 | "type": "zip", 417 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 418 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 419 | "shasum": "" 420 | }, 421 | "require": { 422 | "php": ">=5.6" 423 | }, 424 | "require-dev": { 425 | "php-coveralls/php-coveralls": "^2.1", 426 | "phpunit/phpunit": "^5 || ^6.5" 427 | }, 428 | "type": "library", 429 | "autoload": { 430 | "files": [ 431 | "src/getallheaders.php" 432 | ] 433 | }, 434 | "notification-url": "https://packagist.org/downloads/", 435 | "license": [ 436 | "MIT" 437 | ], 438 | "authors": [ 439 | { 440 | "name": "Ralph Khattar", 441 | "email": "ralph.khattar@gmail.com" 442 | } 443 | ], 444 | "description": "A polyfill for getallheaders.", 445 | "support": { 446 | "issues": "https://github.com/ralouphie/getallheaders/issues", 447 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 448 | }, 449 | "time": "2019-03-08T08:55:37+00:00" 450 | } 451 | ], 452 | "packages-dev": [ 453 | { 454 | "name": "doctrine/instantiator", 455 | "version": "1.4.0", 456 | "source": { 457 | "type": "git", 458 | "url": "https://github.com/doctrine/instantiator.git", 459 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" 460 | }, 461 | "dist": { 462 | "type": "zip", 463 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", 464 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", 465 | "shasum": "" 466 | }, 467 | "require": { 468 | "php": "^7.1 || ^8.0" 469 | }, 470 | "require-dev": { 471 | "doctrine/coding-standard": "^8.0", 472 | "ext-pdo": "*", 473 | "ext-phar": "*", 474 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 475 | "phpstan/phpstan": "^0.12", 476 | "phpstan/phpstan-phpunit": "^0.12", 477 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 478 | }, 479 | "type": "library", 480 | "autoload": { 481 | "psr-4": { 482 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 483 | } 484 | }, 485 | "notification-url": "https://packagist.org/downloads/", 486 | "license": [ 487 | "MIT" 488 | ], 489 | "authors": [ 490 | { 491 | "name": "Marco Pivetta", 492 | "email": "ocramius@gmail.com", 493 | "homepage": "https://ocramius.github.io/" 494 | } 495 | ], 496 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 497 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 498 | "keywords": [ 499 | "constructor", 500 | "instantiate" 501 | ], 502 | "support": { 503 | "issues": "https://github.com/doctrine/instantiator/issues", 504 | "source": "https://github.com/doctrine/instantiator/tree/1.4.0" 505 | }, 506 | "funding": [ 507 | { 508 | "url": "https://www.doctrine-project.org/sponsorship.html", 509 | "type": "custom" 510 | }, 511 | { 512 | "url": "https://www.patreon.com/phpdoctrine", 513 | "type": "patreon" 514 | }, 515 | { 516 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 517 | "type": "tidelift" 518 | } 519 | ], 520 | "time": "2020-11-10T18:47:58+00:00" 521 | }, 522 | { 523 | "name": "graham-campbell/result-type", 524 | "version": "v1.0.2", 525 | "source": { 526 | "type": "git", 527 | "url": "https://github.com/GrahamCampbell/Result-Type.git", 528 | "reference": "84afea85c6841deeea872f36249a206e878a5de0" 529 | }, 530 | "dist": { 531 | "type": "zip", 532 | "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/84afea85c6841deeea872f36249a206e878a5de0", 533 | "reference": "84afea85c6841deeea872f36249a206e878a5de0", 534 | "shasum": "" 535 | }, 536 | "require": { 537 | "php": "^7.0 || ^8.0", 538 | "phpoption/phpoption": "^1.8" 539 | }, 540 | "require-dev": { 541 | "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" 542 | }, 543 | "type": "library", 544 | "autoload": { 545 | "psr-4": { 546 | "GrahamCampbell\\ResultType\\": "src/" 547 | } 548 | }, 549 | "notification-url": "https://packagist.org/downloads/", 550 | "license": [ 551 | "MIT" 552 | ], 553 | "authors": [ 554 | { 555 | "name": "Graham Campbell", 556 | "email": "hello@gjcampbell.co.uk" 557 | } 558 | ], 559 | "description": "An Implementation Of The Result Type", 560 | "keywords": [ 561 | "Graham Campbell", 562 | "GrahamCampbell", 563 | "Result Type", 564 | "Result-Type", 565 | "result" 566 | ], 567 | "support": { 568 | "issues": "https://github.com/GrahamCampbell/Result-Type/issues", 569 | "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.2" 570 | }, 571 | "funding": [ 572 | { 573 | "url": "https://github.com/GrahamCampbell", 574 | "type": "github" 575 | }, 576 | { 577 | "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", 578 | "type": "tidelift" 579 | } 580 | ], 581 | "time": "2021-08-28T21:34:50+00:00" 582 | }, 583 | { 584 | "name": "myclabs/deep-copy", 585 | "version": "1.10.2", 586 | "source": { 587 | "type": "git", 588 | "url": "https://github.com/myclabs/DeepCopy.git", 589 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" 590 | }, 591 | "dist": { 592 | "type": "zip", 593 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", 594 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", 595 | "shasum": "" 596 | }, 597 | "require": { 598 | "php": "^7.1 || ^8.0" 599 | }, 600 | "replace": { 601 | "myclabs/deep-copy": "self.version" 602 | }, 603 | "require-dev": { 604 | "doctrine/collections": "^1.0", 605 | "doctrine/common": "^2.6", 606 | "phpunit/phpunit": "^7.1" 607 | }, 608 | "type": "library", 609 | "autoload": { 610 | "psr-4": { 611 | "DeepCopy\\": "src/DeepCopy/" 612 | }, 613 | "files": [ 614 | "src/DeepCopy/deep_copy.php" 615 | ] 616 | }, 617 | "notification-url": "https://packagist.org/downloads/", 618 | "license": [ 619 | "MIT" 620 | ], 621 | "description": "Create deep copies (clones) of your objects", 622 | "keywords": [ 623 | "clone", 624 | "copy", 625 | "duplicate", 626 | "object", 627 | "object graph" 628 | ], 629 | "support": { 630 | "issues": "https://github.com/myclabs/DeepCopy/issues", 631 | "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" 632 | }, 633 | "funding": [ 634 | { 635 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 636 | "type": "tidelift" 637 | } 638 | ], 639 | "time": "2020-11-13T09:40:50+00:00" 640 | }, 641 | { 642 | "name": "phar-io/manifest", 643 | "version": "1.0.3", 644 | "source": { 645 | "type": "git", 646 | "url": "https://github.com/phar-io/manifest.git", 647 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 648 | }, 649 | "dist": { 650 | "type": "zip", 651 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 652 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 653 | "shasum": "" 654 | }, 655 | "require": { 656 | "ext-dom": "*", 657 | "ext-phar": "*", 658 | "phar-io/version": "^2.0", 659 | "php": "^5.6 || ^7.0" 660 | }, 661 | "type": "library", 662 | "extra": { 663 | "branch-alias": { 664 | "dev-master": "1.0.x-dev" 665 | } 666 | }, 667 | "autoload": { 668 | "classmap": [ 669 | "src/" 670 | ] 671 | }, 672 | "notification-url": "https://packagist.org/downloads/", 673 | "license": [ 674 | "BSD-3-Clause" 675 | ], 676 | "authors": [ 677 | { 678 | "name": "Arne Blankerts", 679 | "email": "arne@blankerts.de", 680 | "role": "Developer" 681 | }, 682 | { 683 | "name": "Sebastian Heuer", 684 | "email": "sebastian@phpeople.de", 685 | "role": "Developer" 686 | }, 687 | { 688 | "name": "Sebastian Bergmann", 689 | "email": "sebastian@phpunit.de", 690 | "role": "Developer" 691 | } 692 | ], 693 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 694 | "support": { 695 | "issues": "https://github.com/phar-io/manifest/issues", 696 | "source": "https://github.com/phar-io/manifest/tree/master" 697 | }, 698 | "time": "2018-07-08T19:23:20+00:00" 699 | }, 700 | { 701 | "name": "phar-io/version", 702 | "version": "2.0.1", 703 | "source": { 704 | "type": "git", 705 | "url": "https://github.com/phar-io/version.git", 706 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 707 | }, 708 | "dist": { 709 | "type": "zip", 710 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 711 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 712 | "shasum": "" 713 | }, 714 | "require": { 715 | "php": "^5.6 || ^7.0" 716 | }, 717 | "type": "library", 718 | "autoload": { 719 | "classmap": [ 720 | "src/" 721 | ] 722 | }, 723 | "notification-url": "https://packagist.org/downloads/", 724 | "license": [ 725 | "BSD-3-Clause" 726 | ], 727 | "authors": [ 728 | { 729 | "name": "Arne Blankerts", 730 | "email": "arne@blankerts.de", 731 | "role": "Developer" 732 | }, 733 | { 734 | "name": "Sebastian Heuer", 735 | "email": "sebastian@phpeople.de", 736 | "role": "Developer" 737 | }, 738 | { 739 | "name": "Sebastian Bergmann", 740 | "email": "sebastian@phpunit.de", 741 | "role": "Developer" 742 | } 743 | ], 744 | "description": "Library for handling version information and constraints", 745 | "support": { 746 | "issues": "https://github.com/phar-io/version/issues", 747 | "source": "https://github.com/phar-io/version/tree/master" 748 | }, 749 | "time": "2018-07-08T19:19:57+00:00" 750 | }, 751 | { 752 | "name": "phpdocumentor/reflection-common", 753 | "version": "2.2.0", 754 | "source": { 755 | "type": "git", 756 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 757 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 758 | }, 759 | "dist": { 760 | "type": "zip", 761 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 762 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 763 | "shasum": "" 764 | }, 765 | "require": { 766 | "php": "^7.2 || ^8.0" 767 | }, 768 | "type": "library", 769 | "extra": { 770 | "branch-alias": { 771 | "dev-2.x": "2.x-dev" 772 | } 773 | }, 774 | "autoload": { 775 | "psr-4": { 776 | "phpDocumentor\\Reflection\\": "src/" 777 | } 778 | }, 779 | "notification-url": "https://packagist.org/downloads/", 780 | "license": [ 781 | "MIT" 782 | ], 783 | "authors": [ 784 | { 785 | "name": "Jaap van Otterdijk", 786 | "email": "opensource@ijaap.nl" 787 | } 788 | ], 789 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 790 | "homepage": "http://www.phpdoc.org", 791 | "keywords": [ 792 | "FQSEN", 793 | "phpDocumentor", 794 | "phpdoc", 795 | "reflection", 796 | "static analysis" 797 | ], 798 | "support": { 799 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 800 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 801 | }, 802 | "time": "2020-06-27T09:03:43+00:00" 803 | }, 804 | { 805 | "name": "phpdocumentor/reflection-docblock", 806 | "version": "5.2.2", 807 | "source": { 808 | "type": "git", 809 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 810 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" 811 | }, 812 | "dist": { 813 | "type": "zip", 814 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", 815 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", 816 | "shasum": "" 817 | }, 818 | "require": { 819 | "ext-filter": "*", 820 | "php": "^7.2 || ^8.0", 821 | "phpdocumentor/reflection-common": "^2.2", 822 | "phpdocumentor/type-resolver": "^1.3", 823 | "webmozart/assert": "^1.9.1" 824 | }, 825 | "require-dev": { 826 | "mockery/mockery": "~1.3.2" 827 | }, 828 | "type": "library", 829 | "extra": { 830 | "branch-alias": { 831 | "dev-master": "5.x-dev" 832 | } 833 | }, 834 | "autoload": { 835 | "psr-4": { 836 | "phpDocumentor\\Reflection\\": "src" 837 | } 838 | }, 839 | "notification-url": "https://packagist.org/downloads/", 840 | "license": [ 841 | "MIT" 842 | ], 843 | "authors": [ 844 | { 845 | "name": "Mike van Riel", 846 | "email": "me@mikevanriel.com" 847 | }, 848 | { 849 | "name": "Jaap van Otterdijk", 850 | "email": "account@ijaap.nl" 851 | } 852 | ], 853 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 854 | "support": { 855 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 856 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" 857 | }, 858 | "time": "2020-09-03T19:13:55+00:00" 859 | }, 860 | { 861 | "name": "phpdocumentor/type-resolver", 862 | "version": "1.5.0", 863 | "source": { 864 | "type": "git", 865 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 866 | "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f" 867 | }, 868 | "dist": { 869 | "type": "zip", 870 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/30f38bffc6f24293dadd1823936372dfa9e86e2f", 871 | "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f", 872 | "shasum": "" 873 | }, 874 | "require": { 875 | "php": "^7.2 || ^8.0", 876 | "phpdocumentor/reflection-common": "^2.0" 877 | }, 878 | "require-dev": { 879 | "ext-tokenizer": "*", 880 | "psalm/phar": "^4.8" 881 | }, 882 | "type": "library", 883 | "extra": { 884 | "branch-alias": { 885 | "dev-1.x": "1.x-dev" 886 | } 887 | }, 888 | "autoload": { 889 | "psr-4": { 890 | "phpDocumentor\\Reflection\\": "src" 891 | } 892 | }, 893 | "notification-url": "https://packagist.org/downloads/", 894 | "license": [ 895 | "MIT" 896 | ], 897 | "authors": [ 898 | { 899 | "name": "Mike van Riel", 900 | "email": "me@mikevanriel.com" 901 | } 902 | ], 903 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 904 | "support": { 905 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 906 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.0" 907 | }, 908 | "time": "2021-09-17T15:28:14+00:00" 909 | }, 910 | { 911 | "name": "phpoption/phpoption", 912 | "version": "1.8.0", 913 | "source": { 914 | "type": "git", 915 | "url": "https://github.com/schmittjoh/php-option.git", 916 | "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28" 917 | }, 918 | "dist": { 919 | "type": "zip", 920 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28", 921 | "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28", 922 | "shasum": "" 923 | }, 924 | "require": { 925 | "php": "^7.0 || ^8.0" 926 | }, 927 | "require-dev": { 928 | "bamarni/composer-bin-plugin": "^1.4.1", 929 | "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8" 930 | }, 931 | "type": "library", 932 | "extra": { 933 | "branch-alias": { 934 | "dev-master": "1.8-dev" 935 | } 936 | }, 937 | "autoload": { 938 | "psr-4": { 939 | "PhpOption\\": "src/PhpOption/" 940 | } 941 | }, 942 | "notification-url": "https://packagist.org/downloads/", 943 | "license": [ 944 | "Apache-2.0" 945 | ], 946 | "authors": [ 947 | { 948 | "name": "Johannes M. Schmitt", 949 | "email": "schmittjoh@gmail.com" 950 | }, 951 | { 952 | "name": "Graham Campbell", 953 | "email": "hello@gjcampbell.co.uk" 954 | } 955 | ], 956 | "description": "Option Type for PHP", 957 | "keywords": [ 958 | "language", 959 | "option", 960 | "php", 961 | "type" 962 | ], 963 | "support": { 964 | "issues": "https://github.com/schmittjoh/php-option/issues", 965 | "source": "https://github.com/schmittjoh/php-option/tree/1.8.0" 966 | }, 967 | "funding": [ 968 | { 969 | "url": "https://github.com/GrahamCampbell", 970 | "type": "github" 971 | }, 972 | { 973 | "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", 974 | "type": "tidelift" 975 | } 976 | ], 977 | "time": "2021-08-28T21:27:29+00:00" 978 | }, 979 | { 980 | "name": "phpspec/prophecy", 981 | "version": "1.14.0", 982 | "source": { 983 | "type": "git", 984 | "url": "https://github.com/phpspec/prophecy.git", 985 | "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" 986 | }, 987 | "dist": { 988 | "type": "zip", 989 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", 990 | "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", 991 | "shasum": "" 992 | }, 993 | "require": { 994 | "doctrine/instantiator": "^1.2", 995 | "php": "^7.2 || ~8.0, <8.2", 996 | "phpdocumentor/reflection-docblock": "^5.2", 997 | "sebastian/comparator": "^3.0 || ^4.0", 998 | "sebastian/recursion-context": "^3.0 || ^4.0" 999 | }, 1000 | "require-dev": { 1001 | "phpspec/phpspec": "^6.0 || ^7.0", 1002 | "phpunit/phpunit": "^8.0 || ^9.0" 1003 | }, 1004 | "type": "library", 1005 | "extra": { 1006 | "branch-alias": { 1007 | "dev-master": "1.x-dev" 1008 | } 1009 | }, 1010 | "autoload": { 1011 | "psr-4": { 1012 | "Prophecy\\": "src/Prophecy" 1013 | } 1014 | }, 1015 | "notification-url": "https://packagist.org/downloads/", 1016 | "license": [ 1017 | "MIT" 1018 | ], 1019 | "authors": [ 1020 | { 1021 | "name": "Konstantin Kudryashov", 1022 | "email": "ever.zet@gmail.com", 1023 | "homepage": "http://everzet.com" 1024 | }, 1025 | { 1026 | "name": "Marcello Duarte", 1027 | "email": "marcello.duarte@gmail.com" 1028 | } 1029 | ], 1030 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1031 | "homepage": "https://github.com/phpspec/prophecy", 1032 | "keywords": [ 1033 | "Double", 1034 | "Dummy", 1035 | "fake", 1036 | "mock", 1037 | "spy", 1038 | "stub" 1039 | ], 1040 | "support": { 1041 | "issues": "https://github.com/phpspec/prophecy/issues", 1042 | "source": "https://github.com/phpspec/prophecy/tree/1.14.0" 1043 | }, 1044 | "time": "2021-09-10T09:02:12+00:00" 1045 | }, 1046 | { 1047 | "name": "phpunit/php-code-coverage", 1048 | "version": "6.1.4", 1049 | "source": { 1050 | "type": "git", 1051 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1052 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" 1053 | }, 1054 | "dist": { 1055 | "type": "zip", 1056 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 1057 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 1058 | "shasum": "" 1059 | }, 1060 | "require": { 1061 | "ext-dom": "*", 1062 | "ext-xmlwriter": "*", 1063 | "php": "^7.1", 1064 | "phpunit/php-file-iterator": "^2.0", 1065 | "phpunit/php-text-template": "^1.2.1", 1066 | "phpunit/php-token-stream": "^3.0", 1067 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1068 | "sebastian/environment": "^3.1 || ^4.0", 1069 | "sebastian/version": "^2.0.1", 1070 | "theseer/tokenizer": "^1.1" 1071 | }, 1072 | "require-dev": { 1073 | "phpunit/phpunit": "^7.0" 1074 | }, 1075 | "suggest": { 1076 | "ext-xdebug": "^2.6.0" 1077 | }, 1078 | "type": "library", 1079 | "extra": { 1080 | "branch-alias": { 1081 | "dev-master": "6.1-dev" 1082 | } 1083 | }, 1084 | "autoload": { 1085 | "classmap": [ 1086 | "src/" 1087 | ] 1088 | }, 1089 | "notification-url": "https://packagist.org/downloads/", 1090 | "license": [ 1091 | "BSD-3-Clause" 1092 | ], 1093 | "authors": [ 1094 | { 1095 | "name": "Sebastian Bergmann", 1096 | "email": "sebastian@phpunit.de", 1097 | "role": "lead" 1098 | } 1099 | ], 1100 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1101 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1102 | "keywords": [ 1103 | "coverage", 1104 | "testing", 1105 | "xunit" 1106 | ], 1107 | "support": { 1108 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1109 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" 1110 | }, 1111 | "time": "2018-10-31T16:06:48+00:00" 1112 | }, 1113 | { 1114 | "name": "phpunit/php-file-iterator", 1115 | "version": "2.0.4", 1116 | "source": { 1117 | "type": "git", 1118 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1119 | "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05" 1120 | }, 1121 | "dist": { 1122 | "type": "zip", 1123 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/28af674ff175d0768a5a978e6de83f697d4a7f05", 1124 | "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05", 1125 | "shasum": "" 1126 | }, 1127 | "require": { 1128 | "php": ">=7.1" 1129 | }, 1130 | "require-dev": { 1131 | "phpunit/phpunit": "^8.5" 1132 | }, 1133 | "type": "library", 1134 | "extra": { 1135 | "branch-alias": { 1136 | "dev-master": "2.0.x-dev" 1137 | } 1138 | }, 1139 | "autoload": { 1140 | "classmap": [ 1141 | "src/" 1142 | ] 1143 | }, 1144 | "notification-url": "https://packagist.org/downloads/", 1145 | "license": [ 1146 | "BSD-3-Clause" 1147 | ], 1148 | "authors": [ 1149 | { 1150 | "name": "Sebastian Bergmann", 1151 | "email": "sebastian@phpunit.de", 1152 | "role": "lead" 1153 | } 1154 | ], 1155 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1156 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1157 | "keywords": [ 1158 | "filesystem", 1159 | "iterator" 1160 | ], 1161 | "support": { 1162 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1163 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.4" 1164 | }, 1165 | "funding": [ 1166 | { 1167 | "url": "https://github.com/sebastianbergmann", 1168 | "type": "github" 1169 | } 1170 | ], 1171 | "time": "2021-07-19T06:46:01+00:00" 1172 | }, 1173 | { 1174 | "name": "phpunit/php-text-template", 1175 | "version": "1.2.1", 1176 | "source": { 1177 | "type": "git", 1178 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1179 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1180 | }, 1181 | "dist": { 1182 | "type": "zip", 1183 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1184 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1185 | "shasum": "" 1186 | }, 1187 | "require": { 1188 | "php": ">=5.3.3" 1189 | }, 1190 | "type": "library", 1191 | "autoload": { 1192 | "classmap": [ 1193 | "src/" 1194 | ] 1195 | }, 1196 | "notification-url": "https://packagist.org/downloads/", 1197 | "license": [ 1198 | "BSD-3-Clause" 1199 | ], 1200 | "authors": [ 1201 | { 1202 | "name": "Sebastian Bergmann", 1203 | "email": "sebastian@phpunit.de", 1204 | "role": "lead" 1205 | } 1206 | ], 1207 | "description": "Simple template engine.", 1208 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1209 | "keywords": [ 1210 | "template" 1211 | ], 1212 | "support": { 1213 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1214 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" 1215 | }, 1216 | "time": "2015-06-21T13:50:34+00:00" 1217 | }, 1218 | { 1219 | "name": "phpunit/php-timer", 1220 | "version": "2.1.3", 1221 | "source": { 1222 | "type": "git", 1223 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1224 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" 1225 | }, 1226 | "dist": { 1227 | "type": "zip", 1228 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", 1229 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", 1230 | "shasum": "" 1231 | }, 1232 | "require": { 1233 | "php": ">=7.1" 1234 | }, 1235 | "require-dev": { 1236 | "phpunit/phpunit": "^8.5" 1237 | }, 1238 | "type": "library", 1239 | "extra": { 1240 | "branch-alias": { 1241 | "dev-master": "2.1-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": "Utility class for timing", 1261 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1262 | "keywords": [ 1263 | "timer" 1264 | ], 1265 | "support": { 1266 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1267 | "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" 1268 | }, 1269 | "funding": [ 1270 | { 1271 | "url": "https://github.com/sebastianbergmann", 1272 | "type": "github" 1273 | } 1274 | ], 1275 | "time": "2020-11-30T08:20:02+00:00" 1276 | }, 1277 | { 1278 | "name": "phpunit/php-token-stream", 1279 | "version": "3.1.3", 1280 | "source": { 1281 | "type": "git", 1282 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1283 | "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" 1284 | }, 1285 | "dist": { 1286 | "type": "zip", 1287 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", 1288 | "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", 1289 | "shasum": "" 1290 | }, 1291 | "require": { 1292 | "ext-tokenizer": "*", 1293 | "php": ">=7.1" 1294 | }, 1295 | "require-dev": { 1296 | "phpunit/phpunit": "^7.0" 1297 | }, 1298 | "type": "library", 1299 | "extra": { 1300 | "branch-alias": { 1301 | "dev-master": "3.1-dev" 1302 | } 1303 | }, 1304 | "autoload": { 1305 | "classmap": [ 1306 | "src/" 1307 | ] 1308 | }, 1309 | "notification-url": "https://packagist.org/downloads/", 1310 | "license": [ 1311 | "BSD-3-Clause" 1312 | ], 1313 | "authors": [ 1314 | { 1315 | "name": "Sebastian Bergmann", 1316 | "email": "sebastian@phpunit.de" 1317 | } 1318 | ], 1319 | "description": "Wrapper around PHP's tokenizer extension.", 1320 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1321 | "keywords": [ 1322 | "tokenizer" 1323 | ], 1324 | "support": { 1325 | "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", 1326 | "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" 1327 | }, 1328 | "funding": [ 1329 | { 1330 | "url": "https://github.com/sebastianbergmann", 1331 | "type": "github" 1332 | } 1333 | ], 1334 | "abandoned": true, 1335 | "time": "2021-07-26T12:15:06+00:00" 1336 | }, 1337 | { 1338 | "name": "phpunit/phpunit", 1339 | "version": "7.5.20", 1340 | "source": { 1341 | "type": "git", 1342 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1343 | "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" 1344 | }, 1345 | "dist": { 1346 | "type": "zip", 1347 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", 1348 | "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", 1349 | "shasum": "" 1350 | }, 1351 | "require": { 1352 | "doctrine/instantiator": "^1.1", 1353 | "ext-dom": "*", 1354 | "ext-json": "*", 1355 | "ext-libxml": "*", 1356 | "ext-mbstring": "*", 1357 | "ext-xml": "*", 1358 | "myclabs/deep-copy": "^1.7", 1359 | "phar-io/manifest": "^1.0.2", 1360 | "phar-io/version": "^2.0", 1361 | "php": "^7.1", 1362 | "phpspec/prophecy": "^1.7", 1363 | "phpunit/php-code-coverage": "^6.0.7", 1364 | "phpunit/php-file-iterator": "^2.0.1", 1365 | "phpunit/php-text-template": "^1.2.1", 1366 | "phpunit/php-timer": "^2.1", 1367 | "sebastian/comparator": "^3.0", 1368 | "sebastian/diff": "^3.0", 1369 | "sebastian/environment": "^4.0", 1370 | "sebastian/exporter": "^3.1", 1371 | "sebastian/global-state": "^2.0", 1372 | "sebastian/object-enumerator": "^3.0.3", 1373 | "sebastian/resource-operations": "^2.0", 1374 | "sebastian/version": "^2.0.1" 1375 | }, 1376 | "conflict": { 1377 | "phpunit/phpunit-mock-objects": "*" 1378 | }, 1379 | "require-dev": { 1380 | "ext-pdo": "*" 1381 | }, 1382 | "suggest": { 1383 | "ext-soap": "*", 1384 | "ext-xdebug": "*", 1385 | "phpunit/php-invoker": "^2.0" 1386 | }, 1387 | "bin": [ 1388 | "phpunit" 1389 | ], 1390 | "type": "library", 1391 | "extra": { 1392 | "branch-alias": { 1393 | "dev-master": "7.5-dev" 1394 | } 1395 | }, 1396 | "autoload": { 1397 | "classmap": [ 1398 | "src/" 1399 | ] 1400 | }, 1401 | "notification-url": "https://packagist.org/downloads/", 1402 | "license": [ 1403 | "BSD-3-Clause" 1404 | ], 1405 | "authors": [ 1406 | { 1407 | "name": "Sebastian Bergmann", 1408 | "email": "sebastian@phpunit.de", 1409 | "role": "lead" 1410 | } 1411 | ], 1412 | "description": "The PHP Unit Testing framework.", 1413 | "homepage": "https://phpunit.de/", 1414 | "keywords": [ 1415 | "phpunit", 1416 | "testing", 1417 | "xunit" 1418 | ], 1419 | "support": { 1420 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1421 | "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" 1422 | }, 1423 | "time": "2020-01-08T08:45:45+00:00" 1424 | }, 1425 | { 1426 | "name": "sebastian/code-unit-reverse-lookup", 1427 | "version": "1.0.2", 1428 | "source": { 1429 | "type": "git", 1430 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1431 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" 1432 | }, 1433 | "dist": { 1434 | "type": "zip", 1435 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", 1436 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", 1437 | "shasum": "" 1438 | }, 1439 | "require": { 1440 | "php": ">=5.6" 1441 | }, 1442 | "require-dev": { 1443 | "phpunit/phpunit": "^8.5" 1444 | }, 1445 | "type": "library", 1446 | "extra": { 1447 | "branch-alias": { 1448 | "dev-master": "1.0.x-dev" 1449 | } 1450 | }, 1451 | "autoload": { 1452 | "classmap": [ 1453 | "src/" 1454 | ] 1455 | }, 1456 | "notification-url": "https://packagist.org/downloads/", 1457 | "license": [ 1458 | "BSD-3-Clause" 1459 | ], 1460 | "authors": [ 1461 | { 1462 | "name": "Sebastian Bergmann", 1463 | "email": "sebastian@phpunit.de" 1464 | } 1465 | ], 1466 | "description": "Looks up which function or method a line of code belongs to", 1467 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1468 | "support": { 1469 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1470 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" 1471 | }, 1472 | "funding": [ 1473 | { 1474 | "url": "https://github.com/sebastianbergmann", 1475 | "type": "github" 1476 | } 1477 | ], 1478 | "time": "2020-11-30T08:15:22+00:00" 1479 | }, 1480 | { 1481 | "name": "sebastian/comparator", 1482 | "version": "3.0.3", 1483 | "source": { 1484 | "type": "git", 1485 | "url": "https://github.com/sebastianbergmann/comparator.git", 1486 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" 1487 | }, 1488 | "dist": { 1489 | "type": "zip", 1490 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", 1491 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", 1492 | "shasum": "" 1493 | }, 1494 | "require": { 1495 | "php": ">=7.1", 1496 | "sebastian/diff": "^3.0", 1497 | "sebastian/exporter": "^3.1" 1498 | }, 1499 | "require-dev": { 1500 | "phpunit/phpunit": "^8.5" 1501 | }, 1502 | "type": "library", 1503 | "extra": { 1504 | "branch-alias": { 1505 | "dev-master": "3.0-dev" 1506 | } 1507 | }, 1508 | "autoload": { 1509 | "classmap": [ 1510 | "src/" 1511 | ] 1512 | }, 1513 | "notification-url": "https://packagist.org/downloads/", 1514 | "license": [ 1515 | "BSD-3-Clause" 1516 | ], 1517 | "authors": [ 1518 | { 1519 | "name": "Sebastian Bergmann", 1520 | "email": "sebastian@phpunit.de" 1521 | }, 1522 | { 1523 | "name": "Jeff Welch", 1524 | "email": "whatthejeff@gmail.com" 1525 | }, 1526 | { 1527 | "name": "Volker Dusch", 1528 | "email": "github@wallbash.com" 1529 | }, 1530 | { 1531 | "name": "Bernhard Schussek", 1532 | "email": "bschussek@2bepublished.at" 1533 | } 1534 | ], 1535 | "description": "Provides the functionality to compare PHP values for equality", 1536 | "homepage": "https://github.com/sebastianbergmann/comparator", 1537 | "keywords": [ 1538 | "comparator", 1539 | "compare", 1540 | "equality" 1541 | ], 1542 | "support": { 1543 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 1544 | "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" 1545 | }, 1546 | "funding": [ 1547 | { 1548 | "url": "https://github.com/sebastianbergmann", 1549 | "type": "github" 1550 | } 1551 | ], 1552 | "time": "2020-11-30T08:04:30+00:00" 1553 | }, 1554 | { 1555 | "name": "sebastian/diff", 1556 | "version": "3.0.3", 1557 | "source": { 1558 | "type": "git", 1559 | "url": "https://github.com/sebastianbergmann/diff.git", 1560 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" 1561 | }, 1562 | "dist": { 1563 | "type": "zip", 1564 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", 1565 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", 1566 | "shasum": "" 1567 | }, 1568 | "require": { 1569 | "php": ">=7.1" 1570 | }, 1571 | "require-dev": { 1572 | "phpunit/phpunit": "^7.5 || ^8.0", 1573 | "symfony/process": "^2 || ^3.3 || ^4" 1574 | }, 1575 | "type": "library", 1576 | "extra": { 1577 | "branch-alias": { 1578 | "dev-master": "3.0-dev" 1579 | } 1580 | }, 1581 | "autoload": { 1582 | "classmap": [ 1583 | "src/" 1584 | ] 1585 | }, 1586 | "notification-url": "https://packagist.org/downloads/", 1587 | "license": [ 1588 | "BSD-3-Clause" 1589 | ], 1590 | "authors": [ 1591 | { 1592 | "name": "Sebastian Bergmann", 1593 | "email": "sebastian@phpunit.de" 1594 | }, 1595 | { 1596 | "name": "Kore Nordmann", 1597 | "email": "mail@kore-nordmann.de" 1598 | } 1599 | ], 1600 | "description": "Diff implementation", 1601 | "homepage": "https://github.com/sebastianbergmann/diff", 1602 | "keywords": [ 1603 | "diff", 1604 | "udiff", 1605 | "unidiff", 1606 | "unified diff" 1607 | ], 1608 | "support": { 1609 | "issues": "https://github.com/sebastianbergmann/diff/issues", 1610 | "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" 1611 | }, 1612 | "funding": [ 1613 | { 1614 | "url": "https://github.com/sebastianbergmann", 1615 | "type": "github" 1616 | } 1617 | ], 1618 | "time": "2020-11-30T07:59:04+00:00" 1619 | }, 1620 | { 1621 | "name": "sebastian/environment", 1622 | "version": "4.2.4", 1623 | "source": { 1624 | "type": "git", 1625 | "url": "https://github.com/sebastianbergmann/environment.git", 1626 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" 1627 | }, 1628 | "dist": { 1629 | "type": "zip", 1630 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", 1631 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", 1632 | "shasum": "" 1633 | }, 1634 | "require": { 1635 | "php": ">=7.1" 1636 | }, 1637 | "require-dev": { 1638 | "phpunit/phpunit": "^7.5" 1639 | }, 1640 | "suggest": { 1641 | "ext-posix": "*" 1642 | }, 1643 | "type": "library", 1644 | "extra": { 1645 | "branch-alias": { 1646 | "dev-master": "4.2-dev" 1647 | } 1648 | }, 1649 | "autoload": { 1650 | "classmap": [ 1651 | "src/" 1652 | ] 1653 | }, 1654 | "notification-url": "https://packagist.org/downloads/", 1655 | "license": [ 1656 | "BSD-3-Clause" 1657 | ], 1658 | "authors": [ 1659 | { 1660 | "name": "Sebastian Bergmann", 1661 | "email": "sebastian@phpunit.de" 1662 | } 1663 | ], 1664 | "description": "Provides functionality to handle HHVM/PHP environments", 1665 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1666 | "keywords": [ 1667 | "Xdebug", 1668 | "environment", 1669 | "hhvm" 1670 | ], 1671 | "support": { 1672 | "issues": "https://github.com/sebastianbergmann/environment/issues", 1673 | "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" 1674 | }, 1675 | "funding": [ 1676 | { 1677 | "url": "https://github.com/sebastianbergmann", 1678 | "type": "github" 1679 | } 1680 | ], 1681 | "time": "2020-11-30T07:53:42+00:00" 1682 | }, 1683 | { 1684 | "name": "sebastian/exporter", 1685 | "version": "3.1.3", 1686 | "source": { 1687 | "type": "git", 1688 | "url": "https://github.com/sebastianbergmann/exporter.git", 1689 | "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" 1690 | }, 1691 | "dist": { 1692 | "type": "zip", 1693 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", 1694 | "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", 1695 | "shasum": "" 1696 | }, 1697 | "require": { 1698 | "php": ">=7.0", 1699 | "sebastian/recursion-context": "^3.0" 1700 | }, 1701 | "require-dev": { 1702 | "ext-mbstring": "*", 1703 | "phpunit/phpunit": "^6.0" 1704 | }, 1705 | "type": "library", 1706 | "extra": { 1707 | "branch-alias": { 1708 | "dev-master": "3.1.x-dev" 1709 | } 1710 | }, 1711 | "autoload": { 1712 | "classmap": [ 1713 | "src/" 1714 | ] 1715 | }, 1716 | "notification-url": "https://packagist.org/downloads/", 1717 | "license": [ 1718 | "BSD-3-Clause" 1719 | ], 1720 | "authors": [ 1721 | { 1722 | "name": "Sebastian Bergmann", 1723 | "email": "sebastian@phpunit.de" 1724 | }, 1725 | { 1726 | "name": "Jeff Welch", 1727 | "email": "whatthejeff@gmail.com" 1728 | }, 1729 | { 1730 | "name": "Volker Dusch", 1731 | "email": "github@wallbash.com" 1732 | }, 1733 | { 1734 | "name": "Adam Harvey", 1735 | "email": "aharvey@php.net" 1736 | }, 1737 | { 1738 | "name": "Bernhard Schussek", 1739 | "email": "bschussek@gmail.com" 1740 | } 1741 | ], 1742 | "description": "Provides the functionality to export PHP variables for visualization", 1743 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1744 | "keywords": [ 1745 | "export", 1746 | "exporter" 1747 | ], 1748 | "support": { 1749 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 1750 | "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" 1751 | }, 1752 | "funding": [ 1753 | { 1754 | "url": "https://github.com/sebastianbergmann", 1755 | "type": "github" 1756 | } 1757 | ], 1758 | "time": "2020-11-30T07:47:53+00:00" 1759 | }, 1760 | { 1761 | "name": "sebastian/global-state", 1762 | "version": "2.0.0", 1763 | "source": { 1764 | "type": "git", 1765 | "url": "https://github.com/sebastianbergmann/global-state.git", 1766 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1767 | }, 1768 | "dist": { 1769 | "type": "zip", 1770 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1771 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1772 | "shasum": "" 1773 | }, 1774 | "require": { 1775 | "php": "^7.0" 1776 | }, 1777 | "require-dev": { 1778 | "phpunit/phpunit": "^6.0" 1779 | }, 1780 | "suggest": { 1781 | "ext-uopz": "*" 1782 | }, 1783 | "type": "library", 1784 | "extra": { 1785 | "branch-alias": { 1786 | "dev-master": "2.0-dev" 1787 | } 1788 | }, 1789 | "autoload": { 1790 | "classmap": [ 1791 | "src/" 1792 | ] 1793 | }, 1794 | "notification-url": "https://packagist.org/downloads/", 1795 | "license": [ 1796 | "BSD-3-Clause" 1797 | ], 1798 | "authors": [ 1799 | { 1800 | "name": "Sebastian Bergmann", 1801 | "email": "sebastian@phpunit.de" 1802 | } 1803 | ], 1804 | "description": "Snapshotting of global state", 1805 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1806 | "keywords": [ 1807 | "global state" 1808 | ], 1809 | "support": { 1810 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 1811 | "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" 1812 | }, 1813 | "time": "2017-04-27T15:39:26+00:00" 1814 | }, 1815 | { 1816 | "name": "sebastian/object-enumerator", 1817 | "version": "3.0.4", 1818 | "source": { 1819 | "type": "git", 1820 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1821 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" 1822 | }, 1823 | "dist": { 1824 | "type": "zip", 1825 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", 1826 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", 1827 | "shasum": "" 1828 | }, 1829 | "require": { 1830 | "php": ">=7.0", 1831 | "sebastian/object-reflector": "^1.1.1", 1832 | "sebastian/recursion-context": "^3.0" 1833 | }, 1834 | "require-dev": { 1835 | "phpunit/phpunit": "^6.0" 1836 | }, 1837 | "type": "library", 1838 | "extra": { 1839 | "branch-alias": { 1840 | "dev-master": "3.0.x-dev" 1841 | } 1842 | }, 1843 | "autoload": { 1844 | "classmap": [ 1845 | "src/" 1846 | ] 1847 | }, 1848 | "notification-url": "https://packagist.org/downloads/", 1849 | "license": [ 1850 | "BSD-3-Clause" 1851 | ], 1852 | "authors": [ 1853 | { 1854 | "name": "Sebastian Bergmann", 1855 | "email": "sebastian@phpunit.de" 1856 | } 1857 | ], 1858 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1859 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1860 | "support": { 1861 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 1862 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" 1863 | }, 1864 | "funding": [ 1865 | { 1866 | "url": "https://github.com/sebastianbergmann", 1867 | "type": "github" 1868 | } 1869 | ], 1870 | "time": "2020-11-30T07:40:27+00:00" 1871 | }, 1872 | { 1873 | "name": "sebastian/object-reflector", 1874 | "version": "1.1.2", 1875 | "source": { 1876 | "type": "git", 1877 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1878 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" 1879 | }, 1880 | "dist": { 1881 | "type": "zip", 1882 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", 1883 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", 1884 | "shasum": "" 1885 | }, 1886 | "require": { 1887 | "php": ">=7.0" 1888 | }, 1889 | "require-dev": { 1890 | "phpunit/phpunit": "^6.0" 1891 | }, 1892 | "type": "library", 1893 | "extra": { 1894 | "branch-alias": { 1895 | "dev-master": "1.1-dev" 1896 | } 1897 | }, 1898 | "autoload": { 1899 | "classmap": [ 1900 | "src/" 1901 | ] 1902 | }, 1903 | "notification-url": "https://packagist.org/downloads/", 1904 | "license": [ 1905 | "BSD-3-Clause" 1906 | ], 1907 | "authors": [ 1908 | { 1909 | "name": "Sebastian Bergmann", 1910 | "email": "sebastian@phpunit.de" 1911 | } 1912 | ], 1913 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1914 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1915 | "support": { 1916 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 1917 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" 1918 | }, 1919 | "funding": [ 1920 | { 1921 | "url": "https://github.com/sebastianbergmann", 1922 | "type": "github" 1923 | } 1924 | ], 1925 | "time": "2020-11-30T07:37:18+00:00" 1926 | }, 1927 | { 1928 | "name": "sebastian/recursion-context", 1929 | "version": "3.0.1", 1930 | "source": { 1931 | "type": "git", 1932 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1933 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" 1934 | }, 1935 | "dist": { 1936 | "type": "zip", 1937 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", 1938 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", 1939 | "shasum": "" 1940 | }, 1941 | "require": { 1942 | "php": ">=7.0" 1943 | }, 1944 | "require-dev": { 1945 | "phpunit/phpunit": "^6.0" 1946 | }, 1947 | "type": "library", 1948 | "extra": { 1949 | "branch-alias": { 1950 | "dev-master": "3.0.x-dev" 1951 | } 1952 | }, 1953 | "autoload": { 1954 | "classmap": [ 1955 | "src/" 1956 | ] 1957 | }, 1958 | "notification-url": "https://packagist.org/downloads/", 1959 | "license": [ 1960 | "BSD-3-Clause" 1961 | ], 1962 | "authors": [ 1963 | { 1964 | "name": "Sebastian Bergmann", 1965 | "email": "sebastian@phpunit.de" 1966 | }, 1967 | { 1968 | "name": "Jeff Welch", 1969 | "email": "whatthejeff@gmail.com" 1970 | }, 1971 | { 1972 | "name": "Adam Harvey", 1973 | "email": "aharvey@php.net" 1974 | } 1975 | ], 1976 | "description": "Provides functionality to recursively process PHP variables", 1977 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1978 | "support": { 1979 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 1980 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" 1981 | }, 1982 | "funding": [ 1983 | { 1984 | "url": "https://github.com/sebastianbergmann", 1985 | "type": "github" 1986 | } 1987 | ], 1988 | "time": "2020-11-30T07:34:24+00:00" 1989 | }, 1990 | { 1991 | "name": "sebastian/resource-operations", 1992 | "version": "2.0.2", 1993 | "source": { 1994 | "type": "git", 1995 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1996 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" 1997 | }, 1998 | "dist": { 1999 | "type": "zip", 2000 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", 2001 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", 2002 | "shasum": "" 2003 | }, 2004 | "require": { 2005 | "php": ">=7.1" 2006 | }, 2007 | "type": "library", 2008 | "extra": { 2009 | "branch-alias": { 2010 | "dev-master": "2.0-dev" 2011 | } 2012 | }, 2013 | "autoload": { 2014 | "classmap": [ 2015 | "src/" 2016 | ] 2017 | }, 2018 | "notification-url": "https://packagist.org/downloads/", 2019 | "license": [ 2020 | "BSD-3-Clause" 2021 | ], 2022 | "authors": [ 2023 | { 2024 | "name": "Sebastian Bergmann", 2025 | "email": "sebastian@phpunit.de" 2026 | } 2027 | ], 2028 | "description": "Provides a list of PHP built-in functions that operate on resources", 2029 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2030 | "support": { 2031 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues", 2032 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" 2033 | }, 2034 | "funding": [ 2035 | { 2036 | "url": "https://github.com/sebastianbergmann", 2037 | "type": "github" 2038 | } 2039 | ], 2040 | "time": "2020-11-30T07:30:19+00:00" 2041 | }, 2042 | { 2043 | "name": "sebastian/version", 2044 | "version": "2.0.1", 2045 | "source": { 2046 | "type": "git", 2047 | "url": "https://github.com/sebastianbergmann/version.git", 2048 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2049 | }, 2050 | "dist": { 2051 | "type": "zip", 2052 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2053 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2054 | "shasum": "" 2055 | }, 2056 | "require": { 2057 | "php": ">=5.6" 2058 | }, 2059 | "type": "library", 2060 | "extra": { 2061 | "branch-alias": { 2062 | "dev-master": "2.0.x-dev" 2063 | } 2064 | }, 2065 | "autoload": { 2066 | "classmap": [ 2067 | "src/" 2068 | ] 2069 | }, 2070 | "notification-url": "https://packagist.org/downloads/", 2071 | "license": [ 2072 | "BSD-3-Clause" 2073 | ], 2074 | "authors": [ 2075 | { 2076 | "name": "Sebastian Bergmann", 2077 | "email": "sebastian@phpunit.de", 2078 | "role": "lead" 2079 | } 2080 | ], 2081 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2082 | "homepage": "https://github.com/sebastianbergmann/version", 2083 | "support": { 2084 | "issues": "https://github.com/sebastianbergmann/version/issues", 2085 | "source": "https://github.com/sebastianbergmann/version/tree/master" 2086 | }, 2087 | "time": "2016-10-03T07:35:21+00:00" 2088 | }, 2089 | { 2090 | "name": "symfony/polyfill-ctype", 2091 | "version": "v1.23.0", 2092 | "source": { 2093 | "type": "git", 2094 | "url": "https://github.com/symfony/polyfill-ctype.git", 2095 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" 2096 | }, 2097 | "dist": { 2098 | "type": "zip", 2099 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", 2100 | "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", 2101 | "shasum": "" 2102 | }, 2103 | "require": { 2104 | "php": ">=7.1" 2105 | }, 2106 | "suggest": { 2107 | "ext-ctype": "For best performance" 2108 | }, 2109 | "type": "library", 2110 | "extra": { 2111 | "branch-alias": { 2112 | "dev-main": "1.23-dev" 2113 | }, 2114 | "thanks": { 2115 | "name": "symfony/polyfill", 2116 | "url": "https://github.com/symfony/polyfill" 2117 | } 2118 | }, 2119 | "autoload": { 2120 | "psr-4": { 2121 | "Symfony\\Polyfill\\Ctype\\": "" 2122 | }, 2123 | "files": [ 2124 | "bootstrap.php" 2125 | ] 2126 | }, 2127 | "notification-url": "https://packagist.org/downloads/", 2128 | "license": [ 2129 | "MIT" 2130 | ], 2131 | "authors": [ 2132 | { 2133 | "name": "Gert de Pagter", 2134 | "email": "BackEndTea@gmail.com" 2135 | }, 2136 | { 2137 | "name": "Symfony Community", 2138 | "homepage": "https://symfony.com/contributors" 2139 | } 2140 | ], 2141 | "description": "Symfony polyfill for ctype functions", 2142 | "homepage": "https://symfony.com", 2143 | "keywords": [ 2144 | "compatibility", 2145 | "ctype", 2146 | "polyfill", 2147 | "portable" 2148 | ], 2149 | "support": { 2150 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" 2151 | }, 2152 | "funding": [ 2153 | { 2154 | "url": "https://symfony.com/sponsor", 2155 | "type": "custom" 2156 | }, 2157 | { 2158 | "url": "https://github.com/fabpot", 2159 | "type": "github" 2160 | }, 2161 | { 2162 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2163 | "type": "tidelift" 2164 | } 2165 | ], 2166 | "time": "2021-02-19T12:13:01+00:00" 2167 | }, 2168 | { 2169 | "name": "symfony/polyfill-mbstring", 2170 | "version": "v1.23.1", 2171 | "source": { 2172 | "type": "git", 2173 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2174 | "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" 2175 | }, 2176 | "dist": { 2177 | "type": "zip", 2178 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", 2179 | "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", 2180 | "shasum": "" 2181 | }, 2182 | "require": { 2183 | "php": ">=7.1" 2184 | }, 2185 | "suggest": { 2186 | "ext-mbstring": "For best performance" 2187 | }, 2188 | "type": "library", 2189 | "extra": { 2190 | "branch-alias": { 2191 | "dev-main": "1.23-dev" 2192 | }, 2193 | "thanks": { 2194 | "name": "symfony/polyfill", 2195 | "url": "https://github.com/symfony/polyfill" 2196 | } 2197 | }, 2198 | "autoload": { 2199 | "psr-4": { 2200 | "Symfony\\Polyfill\\Mbstring\\": "" 2201 | }, 2202 | "files": [ 2203 | "bootstrap.php" 2204 | ] 2205 | }, 2206 | "notification-url": "https://packagist.org/downloads/", 2207 | "license": [ 2208 | "MIT" 2209 | ], 2210 | "authors": [ 2211 | { 2212 | "name": "Nicolas Grekas", 2213 | "email": "p@tchwork.com" 2214 | }, 2215 | { 2216 | "name": "Symfony Community", 2217 | "homepage": "https://symfony.com/contributors" 2218 | } 2219 | ], 2220 | "description": "Symfony polyfill for the Mbstring extension", 2221 | "homepage": "https://symfony.com", 2222 | "keywords": [ 2223 | "compatibility", 2224 | "mbstring", 2225 | "polyfill", 2226 | "portable", 2227 | "shim" 2228 | ], 2229 | "support": { 2230 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" 2231 | }, 2232 | "funding": [ 2233 | { 2234 | "url": "https://symfony.com/sponsor", 2235 | "type": "custom" 2236 | }, 2237 | { 2238 | "url": "https://github.com/fabpot", 2239 | "type": "github" 2240 | }, 2241 | { 2242 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2243 | "type": "tidelift" 2244 | } 2245 | ], 2246 | "time": "2021-05-27T12:26:48+00:00" 2247 | }, 2248 | { 2249 | "name": "symfony/polyfill-php80", 2250 | "version": "v1.23.1", 2251 | "source": { 2252 | "type": "git", 2253 | "url": "https://github.com/symfony/polyfill-php80.git", 2254 | "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" 2255 | }, 2256 | "dist": { 2257 | "type": "zip", 2258 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", 2259 | "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", 2260 | "shasum": "" 2261 | }, 2262 | "require": { 2263 | "php": ">=7.1" 2264 | }, 2265 | "type": "library", 2266 | "extra": { 2267 | "branch-alias": { 2268 | "dev-main": "1.23-dev" 2269 | }, 2270 | "thanks": { 2271 | "name": "symfony/polyfill", 2272 | "url": "https://github.com/symfony/polyfill" 2273 | } 2274 | }, 2275 | "autoload": { 2276 | "psr-4": { 2277 | "Symfony\\Polyfill\\Php80\\": "" 2278 | }, 2279 | "files": [ 2280 | "bootstrap.php" 2281 | ], 2282 | "classmap": [ 2283 | "Resources/stubs" 2284 | ] 2285 | }, 2286 | "notification-url": "https://packagist.org/downloads/", 2287 | "license": [ 2288 | "MIT" 2289 | ], 2290 | "authors": [ 2291 | { 2292 | "name": "Ion Bazan", 2293 | "email": "ion.bazan@gmail.com" 2294 | }, 2295 | { 2296 | "name": "Nicolas Grekas", 2297 | "email": "p@tchwork.com" 2298 | }, 2299 | { 2300 | "name": "Symfony Community", 2301 | "homepage": "https://symfony.com/contributors" 2302 | } 2303 | ], 2304 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 2305 | "homepage": "https://symfony.com", 2306 | "keywords": [ 2307 | "compatibility", 2308 | "polyfill", 2309 | "portable", 2310 | "shim" 2311 | ], 2312 | "support": { 2313 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" 2314 | }, 2315 | "funding": [ 2316 | { 2317 | "url": "https://symfony.com/sponsor", 2318 | "type": "custom" 2319 | }, 2320 | { 2321 | "url": "https://github.com/fabpot", 2322 | "type": "github" 2323 | }, 2324 | { 2325 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2326 | "type": "tidelift" 2327 | } 2328 | ], 2329 | "time": "2021-07-28T13:41:28+00:00" 2330 | }, 2331 | { 2332 | "name": "theseer/tokenizer", 2333 | "version": "1.2.1", 2334 | "source": { 2335 | "type": "git", 2336 | "url": "https://github.com/theseer/tokenizer.git", 2337 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" 2338 | }, 2339 | "dist": { 2340 | "type": "zip", 2341 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", 2342 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", 2343 | "shasum": "" 2344 | }, 2345 | "require": { 2346 | "ext-dom": "*", 2347 | "ext-tokenizer": "*", 2348 | "ext-xmlwriter": "*", 2349 | "php": "^7.2 || ^8.0" 2350 | }, 2351 | "type": "library", 2352 | "autoload": { 2353 | "classmap": [ 2354 | "src/" 2355 | ] 2356 | }, 2357 | "notification-url": "https://packagist.org/downloads/", 2358 | "license": [ 2359 | "BSD-3-Clause" 2360 | ], 2361 | "authors": [ 2362 | { 2363 | "name": "Arne Blankerts", 2364 | "email": "arne@blankerts.de", 2365 | "role": "Developer" 2366 | } 2367 | ], 2368 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2369 | "support": { 2370 | "issues": "https://github.com/theseer/tokenizer/issues", 2371 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1" 2372 | }, 2373 | "funding": [ 2374 | { 2375 | "url": "https://github.com/theseer", 2376 | "type": "github" 2377 | } 2378 | ], 2379 | "time": "2021-07-28T10:34:58+00:00" 2380 | }, 2381 | { 2382 | "name": "vlucas/phpdotenv", 2383 | "version": "v5.3.0", 2384 | "source": { 2385 | "type": "git", 2386 | "url": "https://github.com/vlucas/phpdotenv.git", 2387 | "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56" 2388 | }, 2389 | "dist": { 2390 | "type": "zip", 2391 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", 2392 | "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", 2393 | "shasum": "" 2394 | }, 2395 | "require": { 2396 | "ext-pcre": "*", 2397 | "graham-campbell/result-type": "^1.0.1", 2398 | "php": "^7.1.3 || ^8.0", 2399 | "phpoption/phpoption": "^1.7.4", 2400 | "symfony/polyfill-ctype": "^1.17", 2401 | "symfony/polyfill-mbstring": "^1.17", 2402 | "symfony/polyfill-php80": "^1.17" 2403 | }, 2404 | "require-dev": { 2405 | "bamarni/composer-bin-plugin": "^1.4.1", 2406 | "ext-filter": "*", 2407 | "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5.1" 2408 | }, 2409 | "suggest": { 2410 | "ext-filter": "Required to use the boolean validator." 2411 | }, 2412 | "type": "library", 2413 | "extra": { 2414 | "branch-alias": { 2415 | "dev-master": "5.3-dev" 2416 | } 2417 | }, 2418 | "autoload": { 2419 | "psr-4": { 2420 | "Dotenv\\": "src/" 2421 | } 2422 | }, 2423 | "notification-url": "https://packagist.org/downloads/", 2424 | "license": [ 2425 | "BSD-3-Clause" 2426 | ], 2427 | "authors": [ 2428 | { 2429 | "name": "Graham Campbell", 2430 | "email": "graham@alt-three.com", 2431 | "homepage": "https://gjcampbell.co.uk/" 2432 | }, 2433 | { 2434 | "name": "Vance Lucas", 2435 | "email": "vance@vancelucas.com", 2436 | "homepage": "https://vancelucas.com/" 2437 | } 2438 | ], 2439 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 2440 | "keywords": [ 2441 | "dotenv", 2442 | "env", 2443 | "environment" 2444 | ], 2445 | "support": { 2446 | "issues": "https://github.com/vlucas/phpdotenv/issues", 2447 | "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.0" 2448 | }, 2449 | "funding": [ 2450 | { 2451 | "url": "https://github.com/GrahamCampbell", 2452 | "type": "github" 2453 | }, 2454 | { 2455 | "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", 2456 | "type": "tidelift" 2457 | } 2458 | ], 2459 | "time": "2021-01-20T15:23:13+00:00" 2460 | }, 2461 | { 2462 | "name": "webmozart/assert", 2463 | "version": "1.10.0", 2464 | "source": { 2465 | "type": "git", 2466 | "url": "https://github.com/webmozarts/assert.git", 2467 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" 2468 | }, 2469 | "dist": { 2470 | "type": "zip", 2471 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", 2472 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", 2473 | "shasum": "" 2474 | }, 2475 | "require": { 2476 | "php": "^7.2 || ^8.0", 2477 | "symfony/polyfill-ctype": "^1.8" 2478 | }, 2479 | "conflict": { 2480 | "phpstan/phpstan": "<0.12.20", 2481 | "vimeo/psalm": "<4.6.1 || 4.6.2" 2482 | }, 2483 | "require-dev": { 2484 | "phpunit/phpunit": "^8.5.13" 2485 | }, 2486 | "type": "library", 2487 | "extra": { 2488 | "branch-alias": { 2489 | "dev-master": "1.10-dev" 2490 | } 2491 | }, 2492 | "autoload": { 2493 | "psr-4": { 2494 | "Webmozart\\Assert\\": "src/" 2495 | } 2496 | }, 2497 | "notification-url": "https://packagist.org/downloads/", 2498 | "license": [ 2499 | "MIT" 2500 | ], 2501 | "authors": [ 2502 | { 2503 | "name": "Bernhard Schussek", 2504 | "email": "bschussek@gmail.com" 2505 | } 2506 | ], 2507 | "description": "Assertions to validate method input/output with nice error messages.", 2508 | "keywords": [ 2509 | "assert", 2510 | "check", 2511 | "validate" 2512 | ], 2513 | "support": { 2514 | "issues": "https://github.com/webmozarts/assert/issues", 2515 | "source": "https://github.com/webmozarts/assert/tree/1.10.0" 2516 | }, 2517 | "time": "2021-03-09T10:59:23+00:00" 2518 | } 2519 | ], 2520 | "aliases": [], 2521 | "minimum-stability": "stable", 2522 | "stability-flags": [], 2523 | "prefer-stable": false, 2524 | "prefer-lowest": false, 2525 | "platform": [], 2526 | "platform-dev": [], 2527 | "plugin-api-version": "2.1.0" 2528 | } 2529 | --------------------------------------------------------------------------------