From bb15224eb9ad7f8518375a161aaee4b62cd22a9b Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Fri, 1 Jun 2018 15:03:34 -0400 Subject: [PATCH 01/62] adds the idea of user tokens --- src/CraftQL.php | 22 ++++++++++++++++++++++ src/Types/Query.php | 12 ++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/CraftQL.php b/src/CraftQL.php index 315df7d2..8d7a63db 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -13,6 +13,9 @@ use markhuot\CraftQL\Models\Token; +use craft\events\RegisterUserPermissionsEvent; +use craft\services\UserPermissions; + class CraftQL extends Plugin { // const EVENT_GET_FIELD_SCHEMA = 'getFieldSchema'; @@ -79,6 +82,25 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { } } } + + // register our permissions + Event::on(UserPermissions::class, UserPermissions::EVENT_REGISTER_PERMISSIONS, function(RegisterUserPermissionsEvent $event) { + $event->permissions[\Craft::t('craftql', 'CraftQL Queries')] = [ + 'queryEntries' => ['label' => \Craft::t('craftql', 'Query Entries'), 'nested' => [ + 'stories' => ['label' => \Craft::t('craftql', 'Stories')], + ]], + 'queryEntryAuthors' => ['label' => \Craft::t('craftql', 'Query Entry Authors')], + 'queryGlobals' => ['label' => \Craft::t('craftql', 'Query Globals')], + 'queryCategories' => ['label' => \Craft::t('craftql', 'Query Categories')], + 'queryTags' => ['label' => \Craft::t('craftql', 'Query Tags')], + 'queryUsers' => ['label' => \Craft::t('craftql', 'Query Users')], + 'querySections' => ['label' => \Craft::t('craftql', 'Query Sections')], + 'queryFields' => ['label' => \Craft::t('craftql', 'Query Fields')], + 'mutateEntries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => [ + 'stories' => ['label' => \Craft::t('craftql', 'Stories')], + ]], + ]; + }); } /** diff --git a/src/Types/Query.php b/src/Types/Query.php index 319256a1..d87f7502 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -21,6 +21,8 @@ function boot() { $this->addStringField('helloWorld') ->resolve('Welcome to GraphQL! You now have a fully functional GraphQL endpoint.'); + $this->addAuthSchema(); + if ($token->can('query:entries') && $token->allowsMatch('/^query:entryType/')) { $this->addEntriesSchema(); } @@ -290,4 +292,14 @@ function addCategoriesSchema() { }); } + function addAuthSchema() { + $field = $this->addField('authorize'); + $field->addStringArgument('username')->nonNull(); + $field->addStringArgument('password')->nonNull(); + $field->resolve(function ($root, $args) { + $args['username']; + $args['password']; + }); + } + } \ No newline at end of file From 286d22980df5cd2dac9e4e64973710eea1e93b24 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Fri, 8 Jun 2018 09:00:09 -0400 Subject: [PATCH 02/62] uses jwt for user tokens --- composer.json | 3 +- src/Console/ToolsController.php | 15 ++----- src/Controllers/ApiController.php | 7 +--- src/Models/Token.php | 66 ++++++------------------------- src/Types/Authorize.php | 44 +++++++++++++++++++++ src/Types/Query.php | 35 ++++++++++++++-- 6 files changed, 95 insertions(+), 75 deletions(-) create mode 100644 src/Types/Authorize.php diff --git a/composer.json b/composer.json index 456276f2..1771ee80 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,8 @@ ], "require": { "webonyx/graphql-php": "^0.11.0", - "react/http": "^0.7" + "react/http": "^0.7", + "firebase/php-jwt": "^5.0.0" }, "authors": [ { diff --git a/src/Console/ToolsController.php b/src/Console/ToolsController.php index 5c5ecf27..aa30a420 100644 --- a/src/Console/ToolsController.php +++ b/src/Console/ToolsController.php @@ -71,6 +71,10 @@ public function actionServe() preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); $token = Token::findId(@$matches['tokenId']); + if (!$token) { + $token = Token::anonymous(); + } + // @todo, check user permissions when PRO license $headers = [ @@ -93,17 +97,6 @@ public function actionServe() return $resolve(new Response(200, $headers, '')); } - if (!$token) { - $response = new Response(403, $headers, - json_encode([ - 'errors' => [ - ['message' => 'Not authorized'] - ] - ]) - ); - return $resolve($response); - } - if ($postBody) { $body = json_decode($postBody, true); $query = @$body['query']; diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index faad6ab5..cfd78d24 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -74,12 +74,7 @@ function actionIndex() } if (!$token) { - http_response_code(403); - return $this->asJson([ - 'errors' => [ - ['message' => 'Not authorized'] - ] - ]); + $token = Token::anonymous(); } Craft::trace('CraftQL: Parsing request'); diff --git a/src/Models/Token.php b/src/Models/Token.php index 4dcddd57..280a2d9e 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -20,9 +20,14 @@ public function getUser() { public static function findId($tokenId=false) { + var_dump(preg_match('/[^.]+\.[^.]+\.[^.]+/', $tokenId)); + die; if ($tokenId) { return Token::find()->where(['token' => $tokenId])->one(); } + else if (preg_match('/[^.]+\.[^.]+\.[^.]+/', $tokenId)) { + var_dump($tokenId); + } else { $user = Craft::$app->getUser()->getIdentity(); if ($user) { @@ -41,6 +46,12 @@ public static function admin(): Token return $token; } + public static function anonymous(): Token { + $token = new static; + $token->scopes = json_encode([]); + return $token; + } + public static function forUser(): Token { $token = new static; @@ -74,60 +85,7 @@ function canNot($do): bool { return !$this->can($do); } - // function mutableEntryTypeIds(): array { - // $ids = []; - - // foreach ($this->scopeArray as $scope => $enabled) { - // if ($enabled && preg_match('/mutation:entryType:(\d+)/', $scope, $matches)) { - // $ids[] = $matches[1]; - // } - // } - - // return $ids; - // } - - // function queryableEntryTypeIds(): array { - // $ids = []; - - // foreach ($this->scopeArray as $scope => $enabled) { - // if ($enabled && preg_match('/query:entryType:(\d+)/', $scope, $matches)) { - // $ids[] = $matches[1]; - // } - // } - - // return $ids; - // } - - // private $entryTypeEnum; - - // function entryTypeEnum() { - // if ($this->entryTypeEnum) { - // return $this->entryTypeEnum; - // } - - // $entryTypeEnumValues = []; - // // $sectionEnumValues = []; - - // foreach (\markhuot\CraftQL\Repositories\EntryType::all() as $entryType) { - // if (in_array($entryType->id, $this->queryableEntryTypeIds())) { - // $name = \markhuot\CraftQL\Types\EntryType::getName($entryType); - // $entryTypeEnumValues[$name] = $entryType->id; - // // $sectionEnumValues[$entryType->section->handle] = $entryType->section->id; - // } - // } - - // return $this->entryTypeEnum = new EnumType([ - // 'name' => 'EntryTypeEnum', - // 'values' => $entryTypeEnumValues, - // ]); - - // // $this->sectionArgEnum = new EnumType([ - // // 'name' => 'SectionEnum', - // // 'values' => $sectionEnumValues, - // // ]); - // } - - function allowsMatch($regex): bool { + function canMatch($regex): bool { if ($this->admin) { return true; } diff --git a/src/Types/Authorize.php b/src/Types/Authorize.php new file mode 100644 index 00000000..8dfb025e --- /dev/null +++ b/src/Types/Authorize.php @@ -0,0 +1,44 @@ +addField('user') + ->type(User::class) + ->resolve(function ($root, $args) { + return $root['user']; + }); + + $this->addStringField('token') + ->resolve(function ($root, $args) { + /** @var \craft\elements\User $user */ + $user = $root['user']; + + $key = \Craft::$app->config->general->securityKey; + if (!empty(\Craft::$app->config->craftql->securityKey)) { + $key = \Craft::$app->config->craftql->securityKey; + } + + $userRow = (new \craft\db\Query()) + ->from('users') + ->where(['id' => $user->id]) + ->limit(1) + ->one(); + + $token = [ + 'uid' => $userRow['uid'], + // @TODO add expiration in to this + ]; + + return JWT::encode($token, $key); + }); + + } + +} \ No newline at end of file diff --git a/src/Types/Query.php b/src/Types/Query.php index d87f7502..3d08c61c 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -2,6 +2,8 @@ namespace markhuot\CraftQL\Types; +use GraphQL\Error\Error; +use GraphQL\Error\UserError; use yii\base\Component; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\Type; @@ -21,9 +23,10 @@ function boot() { $this->addStringField('helloWorld') ->resolve('Welcome to GraphQL! You now have a fully functional GraphQL endpoint.'); + // @TODO add plugin setting to control authorize visibility $this->addAuthSchema(); - if ($token->can('query:entries') && $token->allowsMatch('/^query:entryType/')) { + if ($token->can('query:entries') && $token->canMatch('/^query:entryType/')) { $this->addEntriesSchema(); } @@ -294,11 +297,37 @@ function addCategoriesSchema() { function addAuthSchema() { $field = $this->addField('authorize'); + $field->type(Authorize::class); $field->addStringArgument('username')->nonNull(); $field->addStringArgument('password')->nonNull(); $field->resolve(function ($root, $args) { - $args['username']; - $args['password']; + $loginName = $args['username']; + $password = $args['password']; + + // Does a user exist with that username/email? + $user = Craft::$app->getUsers()->getUserByUsernameOrEmail($loginName); + + // Delay randomly between 0 and 1.5 seconds. + usleep(random_int(0, 1500000)); + + if (!$user || $user->password === null) { + // Delay again to match $user->authenticate()'s delay + Craft::$app->getSecurity()->validatePassword('p@ss1w0rd', '$2y$13$nj9aiBeb7RfEfYP3Cum6Revyu14QelGGxwcnFUKXIrQUitSodEPRi'); + throw new UserError('Invalid credentials.'); + } + + // Did they submit a valid password, and is the user capable of being logged-in? + if (!$user->authenticate($password)) { + throw new UserError($user->authError); + } + + if (!Craft::$app->getUser()->login($user, 0)) { + throw new UserError('An unknown error occured'); + } + + return [ + 'user' => $user, + ]; }); } From c1f56ecfb92d65537d7c2275babeb24c56b2c0c5 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Fri, 8 Jun 2018 13:55:40 -0400 Subject: [PATCH 03/62] adds jwt and some permissions around users --- composer.json | 5 ++- src/CraftQL.php | 38 ++++++++++++------ src/Factories/EntryType.php | 2 +- src/Factories/Section.php | 2 +- src/Models/Token.php | 71 ++++++++++++++++++++++++--------- src/Request.php | 9 ++++- src/Services/GraphQLService.php | 6 ++- src/Services/JWTService.php | 34 ++++++++++++++++ src/Types/Authorize.php | 12 ++---- src/Types/Mutation.php | 11 +++-- src/Types/Query.php | 2 +- src/templates/scopes.html | 33 +++++++++++---- src/templates/settings.html | 2 +- 13 files changed, 168 insertions(+), 59 deletions(-) create mode 100644 src/Services/JWTService.php diff --git a/composer.json b/composer.json index 1771ee80..cfa77a61 100644 --- a/composer.json +++ b/composer.json @@ -29,6 +29,9 @@ "handle": "craftql", "developer": "Mark Huot", "developerUrl": "https://www.github.com/markhuot", - "class": "markhuot\\CraftQL\\CraftQL" + "class": "markhuot\\CraftQL\\CraftQL", + "components": { + "jwt": "markhuot\\CraftQL\\Services\\JWTService" + } } } diff --git a/src/CraftQL.php b/src/CraftQL.php index 8d7a63db..8977d113 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -6,6 +6,7 @@ use craft\base\Plugin; use craft\console\Application as ConsoleApplication; +use craft\models\Section; use craft\web\UrlManager; use craft\events\RegisterUrlRulesEvent; @@ -85,20 +86,31 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { // register our permissions Event::on(UserPermissions::class, UserPermissions::EVENT_REGISTER_PERMISSIONS, function(RegisterUserPermissionsEvent $event) { + $queryTypes = []; + $mutationTypes = []; + $sections = Craft::$app->sections->getAllSections(); + foreach ($sections as $section) { + $entryTypes = $section->getEntryTypes(); + foreach ($entryTypes as $entryType) { + $id = $entryType->id; + $queryTypes["craftql:query:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Query their own entries of the '.$entryType->name.' type'), 'nested' => [ + "craftql:query:entrytype:{$id}:others" => ['label' => \Craft::t('craftql', 'Query others entries of the '.$entryType->name.' type')], + ]]; + $mutationTypes["craftql:mutate:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Mutate their own entries of the '.$entryType->name.' type')]; + } + } + $event->permissions[\Craft::t('craftql', 'CraftQL Queries')] = [ - 'queryEntries' => ['label' => \Craft::t('craftql', 'Query Entries'), 'nested' => [ - 'stories' => ['label' => \Craft::t('craftql', 'Stories')], - ]], - 'queryEntryAuthors' => ['label' => \Craft::t('craftql', 'Query Entry Authors')], - 'queryGlobals' => ['label' => \Craft::t('craftql', 'Query Globals')], - 'queryCategories' => ['label' => \Craft::t('craftql', 'Query Categories')], - 'queryTags' => ['label' => \Craft::t('craftql', 'Query Tags')], - 'queryUsers' => ['label' => \Craft::t('craftql', 'Query Users')], - 'querySections' => ['label' => \Craft::t('craftql', 'Query Sections')], - 'queryFields' => ['label' => \Craft::t('craftql', 'Query Fields')], - 'mutateEntries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => [ - 'stories' => ['label' => \Craft::t('craftql', 'Stories')], - ]], + 'craftql:query:entries' => ['label' => \Craft::t('craftql', 'Query Entries'), 'nested' => $queryTypes], + 'craftql:query:entry.author' => ['label' => \Craft::t('craftql', 'Query Entry Authors')], + 'craftql:query:globals' => ['label' => \Craft::t('craftql', 'Query Globals')], + 'craftql:query:categories' => ['label' => \Craft::t('craftql', 'Query Categories')], + 'craftql:query:tags' => ['label' => \Craft::t('craftql', 'Query Tags')], + 'craftql:query:users' => ['label' => \Craft::t('craftql', 'Query Users')], + 'craftql:query:sections' => ['label' => \Craft::t('craftql', 'Query Sections')], + 'craftql:query:fields' => ['label' => \Craft::t('craftql', 'Query Fields')], + 'craftql:mutate:entries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => $mutationTypes], + 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Entries')], ]; }); } diff --git a/src/Factories/EntryType.php b/src/Factories/EntryType.php index e0884405..078d1dce 100644 --- a/src/Factories/EntryType.php +++ b/src/Factories/EntryType.php @@ -14,7 +14,7 @@ function make($raw, $request) { } function can($id, $mode='query') { - return $this->request->token()->can("{$mode}:entryType:{$id}"); + return $this->request->token()->can("{$mode}:entrytype:{$id}"); } function getEnumKey($object) { diff --git a/src/Factories/Section.php b/src/Factories/Section.php index d51717b6..8fc73a48 100644 --- a/src/Factories/Section.php +++ b/src/Factories/Section.php @@ -14,7 +14,7 @@ function make($raw, $request) { function can($id, $mode='query') { $section = $this->repository->get($id); foreach ($section->entryTypes as $type) { - if ($this->request->token()->can("{$mode}:entryType:{$type->id}")) { + if ($this->request->token()->can("{$mode}:entrytype:{$type->id}")) { return true; } } diff --git a/src/Models/Token.php b/src/Models/Token.php index 280a2d9e..96171100 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -5,34 +5,49 @@ use Craft; use craft\db\ActiveRecord; use craft\records\User; +use Firebase\JWT\JWT; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\InterfaceType; use GraphQL\Type\Definition\EnumType; use GraphQL\Type\Definition\Type; +use markhuot\CraftQL\CraftQL; class Token extends ActiveRecord { private $admin = false; - public function getUser() { - return $this->hasOne(User::class, ['id' => 'userId']); + /** + * @var \craft\elements\User + */ + private $user = false; + + /** + * @return \craft\elements\User + */ + function getUser() { + return $this->user; } - public static function findId($tokenId=false) + function setUser (\craft\elements\User $user) { + $this->user = $user; + } + + public static function findId($token=false) { - var_dump(preg_match('/[^.]+\.[^.]+\.[^.]+/', $tokenId)); - die; - if ($tokenId) { - return Token::find()->where(['token' => $tokenId])->one(); + if ($token && preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { + $tokenData = CraftQL::getInstance()->jwt->decode($token); + $userRow = (new \craft\db\Query()) + ->from('users') + ->where(['uid' => $tokenData->uid]) + ->limit(1) + ->one(); + return Token::forUser(\craft\elements\User::find()->id($userRow['id'])->one()); } - else if (preg_match('/[^.]+\.[^.]+\.[^.]+/', $tokenId)) { - var_dump($tokenId); + else if ($token && $token=Token::find()->where(['token' => $token])->one()) { + return $token; } - else { - $user = Craft::$app->getUser()->getIdentity(); - if ($user) { - return Token::forUser($user); - } + else if ($user = Craft::$app->getUser()->getIdentity()) { + return Token::forUser($user); } return false; @@ -52,11 +67,24 @@ public static function anonymous(): Token { return $token; } - public static function forUser(): Token + public static function forUser(\craft\elements\User $user): Token { $token = new static; - $token->scopes = json_encode([]); - $token->makeAdmin(); + $token->setUser($user); + + $scopes = []; + $permissions = Craft::$app->getUserPermissions()->getPermissionsByUserId($user->id); + foreach ($permissions as $permission) { + if (substr($permission, 0, 8) == 'craftql:') { + $scopes[substr($permission, 8)] = 1; + } + } + $token->scopes = json_encode($scopes); + + if ($user->admin) { + $token->makeAdmin(); + } + return $token; } @@ -74,7 +102,14 @@ public static function tableName(): string function getScopeArray(): array { - return json_decode($this->scopes ?: '[]', true); + $scopes = []; + + $rawScopes = json_decode($this->scopes ?: '[]', true); + foreach ($rawScopes as $key => $value) { + $scopes[strtolower($key)] = $value; + } + + return $scopes; } function can($do): bool { diff --git a/src/Request.php b/src/Request.php index c4d1e657..23e6e28e 100644 --- a/src/Request.php +++ b/src/Request.php @@ -114,6 +114,11 @@ function entries($criteria, $root, $args, $context, $info) { unset($args['type']); } + // @TODO check permission and allow other users if checked! + if (empty($args['authorId']) && $this->token->user) { + $args['authorId'] = $this->token->user->id; + } + if (!empty($args['relatedTo'])) { $criteria->relatedTo(array_merge(['and'], $this->parseRelatedTo($args['relatedTo'], @$root['node']->id))); unset($args['relatedTo']); @@ -129,8 +134,8 @@ function entries($criteria, $root, $args, $context, $info) { unset($args['idNot']); } - // var_dump($args); - // die; +// var_dump($args); +// die; foreach ($args as $key => $value) { $criteria = $criteria->{$key}($value); diff --git a/src/Services/GraphQLService.php b/src/Services/GraphQLService.php index 1f84ead8..72cd5324 100644 --- a/src/Services/GraphQLService.php +++ b/src/Services/GraphQLService.php @@ -5,6 +5,7 @@ use Craft; use GraphQL\GraphQL; use GraphQL\Error\Debug; +use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Schema; use yii\base\Component; use Yii; @@ -90,8 +91,11 @@ function getSchema($token) { \markhuot\CraftQL\Directives\Date::directive(), ]; + /** @var ObjectType $mutation */ $mutation = (new \markhuot\CraftQL\Types\Mutation($request))->getRawGraphQLObject(); - $schemaConfig['mutation'] = $mutation; + if (!empty($mutation->getFields())) { + $schemaConfig['mutation'] = $mutation; + } $schema = new Schema($schemaConfig); diff --git a/src/Services/JWTService.php b/src/Services/JWTService.php new file mode 100644 index 00000000..43e56c99 --- /dev/null +++ b/src/Services/JWTService.php @@ -0,0 +1,34 @@ +config->craftql->securityKey)) { + $this->key = \Craft::$app->config->craftql->securityKey; + } + else { + $this->key = \Craft::$app->config->general->securityKey; + } + } + + function encode($string) { + return JWT::encode($string, $this->key); + } + + function decode($string) { + return JWT::decode($string, $this->key, ['HS256']); + } + +} diff --git a/src/Types/Authorize.php b/src/Types/Authorize.php index 8dfb025e..16269d0f 100644 --- a/src/Types/Authorize.php +++ b/src/Types/Authorize.php @@ -4,6 +4,7 @@ use Firebase\JWT\JWT; use markhuot\CraftQL\Builders\Schema; +use markhuot\CraftQL\CraftQL; class Authorize extends Schema { @@ -20,23 +21,16 @@ function boot() { /** @var \craft\elements\User $user */ $user = $root['user']; - $key = \Craft::$app->config->general->securityKey; - if (!empty(\Craft::$app->config->craftql->securityKey)) { - $key = \Craft::$app->config->craftql->securityKey; - } - $userRow = (new \craft\db\Query()) ->from('users') ->where(['id' => $user->id]) ->limit(1) ->one(); - $token = [ + return CraftQL::getInstance()->jwt->encode([ 'uid' => $userRow['uid'], // @TODO add expiration in to this - ]; - - return JWT::encode($token, $key); + ]); }); } diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 5727aacc..9b5ddae8 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -14,9 +14,12 @@ class Mutation extends Schema { function boot() { - $this->addField('helloWorld') - ->description('A sample mutation. Doesn\'t actually save anything.') - ->resolve('If this were a real mutation it would have saved to the database.'); + if ($this->request->entryTypes()->all('mutate') || + ($this->getRequest()->token()->can('mutate:globals') && $this->request->globals()->count())) { + $this->addField('helloWorld') + ->description('A sample mutation. Doesn\'t actually save anything.') + ->resolve('If this were a real mutation it would have saved to the database.'); + } foreach ($this->request->entryTypes()->all('mutate') as $entryType) { $this->addField('upsert'.$entryType->getName()) @@ -25,7 +28,7 @@ function boot() { ->use(new EntryMutationArguments); } - if ($this->request->globals()->count()) { + if ($this->getRequest()->token()->can('mutate:globals') && $this->request->globals()->count()) { /** @var \markhuot\CraftQL\Types\Globals $globalSet */ foreach ($this->request->globals()->all() as $globalSet) { $upsertField = $this->addField('upsert'.$globalSet->getName().'Globals') diff --git a/src/Types/Query.php b/src/Types/Query.php index 3d08c61c..b8bbb0ac 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -26,7 +26,7 @@ function boot() { // @TODO add plugin setting to control authorize visibility $this->addAuthSchema(); - if ($token->can('query:entries') && $token->canMatch('/^query:entryType/')) { + if ($token->canMatch('/^query:entrytype/')) { $this->addEntriesSchema(); } diff --git a/src/templates/scopes.html b/src/templates/scopes.html index 80f36b46..94f95633 100644 --- a/src/templates/scopes.html +++ b/src/templates/scopes.html @@ -51,11 +51,6 @@

Query Fields

- - entries - Query any entry type that is enabled, below. - {{ forms.lightswitch({"name": "scope[query:entries]", "value": 1, "on": token.can('query:entries'), "small": true}) }} - entries.author Access to users through an entries author field @@ -117,7 +112,7 @@

Queries

{{ section.type|ucfirst }} {{ section.name }} {{ entryType.name }} - {{ forms.lightswitch({"name": "scope[query:entryType:" ~ entryType.id ~ "]", "value": 1, "on": token.can("query:entryType:" ~ entryType.id), "small": true}) }} + {{ forms.lightswitch({"name": "scope[query:entrytype:" ~ entryType.id ~ "]", "value": 1, "on": token.can("query:entrytype:" ~ entryType.id), "small": true}) }} {% endfor %} {% endfor %} @@ -127,6 +122,30 @@

Queries


+
+

Mutation Fields

+

Enable top level GraphQL fields when accessed through this token.

+ + + + + + + + + + + + + + + + +
Field NameDescription
globalsMutate globals{{ forms.lightswitch({"name": "scope[mutate:globals]", "value": 1, "on": token.can('mutate:globals'), "small": true}) }}
+
+ +
+

Mutations

Enable the entry types that should be editable through GraphQL.

@@ -147,7 +166,7 @@

Mutations

{{ section.type|ucfirst }} {{ section.name }} {{ entryType.name }} - {{ forms.lightswitch({"name": "scope[mutate:entryType:" ~ entryType.id ~ "]", "value": 1, "on": token.can("mutate:entryType:" ~ entryType.id), "small": true}) }} + {{ forms.lightswitch({"name": "scope[mutate:entrytype:" ~ entryType.id ~ "]", "value": 1, "on": token.can("mutate:entrytype:" ~ entryType.id), "small": true}) }} {% endfor %} {% endfor %} diff --git a/src/templates/settings.html b/src/templates/settings.html index b05f9062..ec1a5e35 100644 --- a/src/templates/settings.html +++ b/src/templates/settings.html @@ -96,7 +96,7 @@

Tokens

{{ token.token }} - Settings… + Scopes… {% endfor %} From e997651981ae3d6c02268875adaddc4e52c4241e Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Mon, 11 Jun 2018 17:22:57 -0400 Subject: [PATCH 04/62] per user tokens working --- src/Console/ToolsController.php | 2 +- src/Controllers/ApiController.php | 4 +--- src/CraftQL.php | 7 +++---- src/Models/Token.php | 29 ++++++++++++++++++++++++++--- src/Request.php | 15 ++++++++++++--- 5 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/Console/ToolsController.php b/src/Console/ToolsController.php index aa30a420..0ba2eb54 100644 --- a/src/Console/ToolsController.php +++ b/src/Console/ToolsController.php @@ -69,7 +69,7 @@ public function actionServe() $authorization = @$request->getHeaders()['authorization'][0]; preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); - $token = Token::findId(@$matches['tokenId']); + $token = Token::findByToken(@$matches['tokenId']); if (!$token) { $token = Token::anonymous(); diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index cfd78d24..71482654 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -51,9 +51,7 @@ function actionIndex() $authorization = Craft::$app->request->headers->get('authorization'); preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); - $token = Token::findId(@$matches['tokenId']); - - // @todo, check user permissions when PRO license + $token = Token::findByToken(@$matches['tokenId']); $response = \Craft::$app->getResponse(); if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { diff --git a/src/CraftQL.php b/src/CraftQL.php index 8977d113..870e81bc 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -93,12 +93,11 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { $entryTypes = $section->getEntryTypes(); foreach ($entryTypes as $entryType) { $id = $entryType->id; - $queryTypes["craftql:query:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Query their own entries of the '.$entryType->name.' type'), 'nested' => [ - "craftql:query:entrytype:{$id}:others" => ['label' => \Craft::t('craftql', 'Query others entries of the '.$entryType->name.' type')], - ]]; - $mutationTypes["craftql:mutate:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Mutate their own entries of the '.$entryType->name.' type')]; + $queryTypes["craftql:query:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Query their own entries of the '.$entryType->name.' entry type')]; + $mutationTypes["craftql:mutate:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Mutate their own entries of the '.$entryType->name.' entry type')]; } } + $queryTypes['craftql:query:otheruserentries'] = ['label' => \Craft::t('craftql', 'Query other authors’ entries')]; $event->permissions[\Craft::t('craftql', 'CraftQL Queries')] = [ 'craftql:query:entries' => ['label' => \Craft::t('craftql', 'Query Entries'), 'nested' => $queryTypes], diff --git a/src/Models/Token.php b/src/Models/Token.php index 96171100..cbc02aab 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -14,6 +14,11 @@ class Token extends ActiveRecord { + /** + * Whether the token represents an admin role + * + * @var bool + */ private $admin = false; /** @@ -28,12 +33,24 @@ function getUser() { return $this->user; } + /** + * Sets the user + * + * @param \craft\elements\User $user + */ function setUser (\craft\elements\User $user) { $this->user = $user; } - public static function findId($token=false) + /** + * Gets a token by the token id + * + * @param bool $token + * @return Token|null + */ + public static function findByToken($token=false) { + // If the token matches a JWT format if ($token && preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { $tokenData = CraftQL::getInstance()->jwt->decode($token); $userRow = (new \craft\db\Query()) @@ -41,11 +58,18 @@ public static function findId($token=false) ->where(['uid' => $tokenData->uid]) ->limit(1) ->one(); - return Token::forUser(\craft\elements\User::find()->id($userRow['id'])->one()); + $user = \craft\elements\User::find()->id($userRow['id'])->one(); + $token = Token::forUser($user); + $token->setUser($user); + return $token; } + + // If the token is in the database else if ($token && $token=Token::find()->where(['token' => $token])->one()) { return $token; } + + // If the user has an active Craft session else if ($user = Craft::$app->getUser()->getIdentity()) { return Token::forUser($user); } @@ -70,7 +94,6 @@ public static function anonymous(): Token { public static function forUser(\craft\elements\User $user): Token { $token = new static; - $token->setUser($user); $scopes = []; $permissions = Craft::$app->getUserPermissions()->getPermissionsByUserId($user->id); diff --git a/src/Request.php b/src/Request.php index 23e6e28e..b31a17be 100644 --- a/src/Request.php +++ b/src/Request.php @@ -2,9 +2,15 @@ namespace markhuot\CraftQL; +use markhuot\CraftQL\Models\Token; + class Request { + /** + * @var Token + */ private $token; + private $entryTypes; private $volumes; private $categoryGroups; @@ -114,9 +120,12 @@ function entries($criteria, $root, $args, $context, $info) { unset($args['type']); } - // @TODO check permission and allow other users if checked! - if (empty($args['authorId']) && $this->token->user) { - $args['authorId'] = $this->token->user->id; + // check if we're a user token, and if so if the user has access to + // all entries or just their own + if ($this->token->user) { + if (!$this->token->can('query:otheruserentries')) { + $args['authorId'] = $this->token->user->id; + } } if (!empty($args['relatedTo'])) { From 20b9858384f940d7d3bdd397541a1b57e30f4793 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Mon, 11 Jun 2018 17:24:41 -0400 Subject: [PATCH 05/62] formatting --- src/Console/ToolsController.php | 2 -- src/Controllers/ApiController.php | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Console/ToolsController.php b/src/Console/ToolsController.php index 0ba2eb54..8f5d488a 100644 --- a/src/Console/ToolsController.php +++ b/src/Console/ToolsController.php @@ -75,8 +75,6 @@ public function actionServe() $token = Token::anonymous(); } - // @todo, check user permissions when PRO license - $headers = [ 'Content-Type' => 'application/json; charset=UTF-8', ]; diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 71482654..621f83c2 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -53,6 +53,10 @@ function actionIndex() preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); $token = Token::findByToken(@$matches['tokenId']); + if (!$token) { + $token = Token::anonymous(); + } + $response = \Craft::$app->getResponse(); if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { if (is_string($allowedOrigins)) { @@ -71,10 +75,6 @@ function actionIndex() return ''; } - if (!$token) { - $token = Token::anonymous(); - } - Craft::trace('CraftQL: Parsing request'); if (Craft::$app->request->isPost && $query=Craft::$app->request->post('query')) { $input = $query; From 2db560320a318b258227412c340f266fa2da468e Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:11:44 -0400 Subject: [PATCH 06/62] code cleanup --- src/Console/ToolsController.php | 6 +----- src/Controllers/ApiController.php | 6 +----- src/Models/Token.php | 4 ++-- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/Console/ToolsController.php b/src/Console/ToolsController.php index 8f5d488a..30991c58 100644 --- a/src/Console/ToolsController.php +++ b/src/Console/ToolsController.php @@ -69,11 +69,7 @@ public function actionServe() $authorization = @$request->getHeaders()['authorization'][0]; preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); - $token = Token::findByToken(@$matches['tokenId']); - - if (!$token) { - $token = Token::anonymous(); - } + $token = Token::findOrAnonymous(@$matches['tokenId']); $headers = [ 'Content-Type' => 'application/json; charset=UTF-8', diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 621f83c2..d19e9970 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -51,11 +51,7 @@ function actionIndex() $authorization = Craft::$app->request->headers->get('authorization'); preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); - $token = Token::findByToken(@$matches['tokenId']); - - if (!$token) { - $token = Token::anonymous(); - } + $token = Token::findOrAnonymous(@$matches['tokenId']); $response = \Craft::$app->getResponse(); if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { diff --git a/src/Models/Token.php b/src/Models/Token.php index cbc02aab..31cc85a9 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -48,7 +48,7 @@ function setUser (\craft\elements\User $user) { * @param bool $token * @return Token|null */ - public static function findByToken($token=false) + public static function findOrAnonymous($token=false) { // If the token matches a JWT format if ($token && preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { @@ -74,7 +74,7 @@ public static function findByToken($token=false) return Token::forUser($user); } - return false; + return static::anonymous(); } public static function admin(): Token From fa17081945410b2853a12df20212faec8713d582 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:20:01 -0400 Subject: [PATCH 07/62] moving events --- src/CraftQL.php | 29 ------------------- src/Listeners/GetUserPermissions.php | 43 ++++++++++++++++++++++++++++ src/events.php | 5 ++++ 3 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 src/Listeners/GetUserPermissions.php diff --git a/src/CraftQL.php b/src/CraftQL.php index 870e81bc..12184683 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -83,35 +83,6 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { } } } - - // register our permissions - Event::on(UserPermissions::class, UserPermissions::EVENT_REGISTER_PERMISSIONS, function(RegisterUserPermissionsEvent $event) { - $queryTypes = []; - $mutationTypes = []; - $sections = Craft::$app->sections->getAllSections(); - foreach ($sections as $section) { - $entryTypes = $section->getEntryTypes(); - foreach ($entryTypes as $entryType) { - $id = $entryType->id; - $queryTypes["craftql:query:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Query their own entries of the '.$entryType->name.' entry type')]; - $mutationTypes["craftql:mutate:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Mutate their own entries of the '.$entryType->name.' entry type')]; - } - } - $queryTypes['craftql:query:otheruserentries'] = ['label' => \Craft::t('craftql', 'Query other authors’ entries')]; - - $event->permissions[\Craft::t('craftql', 'CraftQL Queries')] = [ - 'craftql:query:entries' => ['label' => \Craft::t('craftql', 'Query Entries'), 'nested' => $queryTypes], - 'craftql:query:entry.author' => ['label' => \Craft::t('craftql', 'Query Entry Authors')], - 'craftql:query:globals' => ['label' => \Craft::t('craftql', 'Query Globals')], - 'craftql:query:categories' => ['label' => \Craft::t('craftql', 'Query Categories')], - 'craftql:query:tags' => ['label' => \Craft::t('craftql', 'Query Tags')], - 'craftql:query:users' => ['label' => \Craft::t('craftql', 'Query Users')], - 'craftql:query:sections' => ['label' => \Craft::t('craftql', 'Query Sections')], - 'craftql:query:fields' => ['label' => \Craft::t('craftql', 'Query Fields')], - 'craftql:mutate:entries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => $mutationTypes], - 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Entries')], - ]; - }); } /** diff --git a/src/Listeners/GetUserPermissions.php b/src/Listeners/GetUserPermissions.php new file mode 100644 index 00000000..9ddff3c7 --- /dev/null +++ b/src/Listeners/GetUserPermissions.php @@ -0,0 +1,43 @@ +sections->getAllSections(); + foreach ($sections as $section) { + $entryTypes = $section->getEntryTypes(); + foreach ($entryTypes as $entryType) { + $id = $entryType->id; + $queryTypes["craftql:query:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Query their own entries of the '.$entryType->name.' entry type')]; + $mutationTypes["craftql:mutate:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Mutate their own entries of the '.$entryType->name.' entry type')]; + } + } + $queryTypes['craftql:query:otheruserentries'] = ['label' => \Craft::t('craftql', 'Query other authors’ entries')]; + + $event->permissions[\Craft::t('craftql', 'CraftQL Queries')] = [ + 'craftql:query:entries' => ['label' => \Craft::t('craftql', 'Query Entries'), 'nested' => $queryTypes], + 'craftql:query:entry.author' => ['label' => \Craft::t('craftql', 'Query Entry Authors')], + 'craftql:query:globals' => ['label' => \Craft::t('craftql', 'Query Globals')], + 'craftql:query:categories' => ['label' => \Craft::t('craftql', 'Query Categories')], + 'craftql:query:tags' => ['label' => \Craft::t('craftql', 'Query Tags')], + 'craftql:query:users' => ['label' => \Craft::t('craftql', 'Query Users')], + 'craftql:query:sections' => ['label' => \Craft::t('craftql', 'Query Sections')], + 'craftql:query:fields' => ['label' => \Craft::t('craftql', 'Query Fields')], + 'craftql:mutate:entries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => $mutationTypes], + 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Entries')], + ]; + } +} diff --git a/src/events.php b/src/events.php index c0c8ccfb..b17d2bfb 100644 --- a/src/events.php +++ b/src/events.php @@ -86,4 +86,9 @@ new \markhuot\CraftQL\Listeners\GetDefaultFieldSchema, ], ], + \craft\services\UserPermissions::class => [ + \craft\services\UserPermissions::EVENT_REGISTER_PERMISSIONS => [ + new \markhuot\CraftQL\Listeners\GetUserPermissions, + ] + ] ]; \ No newline at end of file From cd7b1563001c117057f99f7f8036b924675f6b9e Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:21:05 -0400 Subject: [PATCH 08/62] use statement cleanuop --- src/CraftQL.php | 3 --- src/Listeners/GetUserPermissions.php | 7 ++----- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/CraftQL.php b/src/CraftQL.php index 12184683..0de5f379 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -14,9 +14,6 @@ use markhuot\CraftQL\Models\Token; -use craft\events\RegisterUserPermissionsEvent; -use craft\services\UserPermissions; - class CraftQL extends Plugin { // const EVENT_GET_FIELD_SCHEMA = 'getFieldSchema'; diff --git a/src/Listeners/GetUserPermissions.php b/src/Listeners/GetUserPermissions.php index 9ddff3c7..db53b62e 100644 --- a/src/Listeners/GetUserPermissions.php +++ b/src/Listeners/GetUserPermissions.php @@ -3,17 +3,14 @@ namespace markhuot\CraftQL\Listeners; use Craft; -use markhuot\CraftQL\Events\GetFieldSchema; +use craft\events\RegisterUserPermissionsEvent; class GetUserPermissions { /** * Handle the request for the schema - * - * @param \markhuot\CraftQL\Events\GetFieldSchema $event - * @return void */ - function handle($event) { + function handle(RegisterUserPermissionsEvent $event) { $queryTypes = []; $mutationTypes = []; $sections = Craft::$app->sections->getAllSections(); From 154487f2b8fef676192e1c489c6da9ffbb9e40a4 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:21:25 -0400 Subject: [PATCH 09/62] cleanup --- src/CraftQL.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/CraftQL.php b/src/CraftQL.php index 0de5f379..315df7d2 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -6,7 +6,6 @@ use craft\base\Plugin; use craft\console\Application as ConsoleApplication; -use craft\models\Section; use craft\web\UrlManager; use craft\events\RegisterUrlRulesEvent; From aee5330c97748a20f68ca9bd4e25cebfe16a53f7 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:24:55 -0400 Subject: [PATCH 10/62] type hints --- src/CraftQL.php | 13 +++++++++++++ src/Models/Token.php | 6 ------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/CraftQL.php b/src/CraftQL.php index 315df7d2..8ea932be 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -9,10 +9,16 @@ use craft\web\UrlManager; use craft\events\RegisterUrlRulesEvent; +use markhuot\CraftQL\Services\JWTService; use yii\base\Event; use markhuot\CraftQL\Models\Token; +/** + * Class CraftQL + * @package markhuot\CraftQL + * @property JWTService jwt + */ class CraftQL extends Plugin { // const EVENT_GET_FIELD_SCHEMA = 'getFieldSchema'; @@ -81,6 +87,13 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { } } + /** + * @inheritdoc + */ + public static function getInstance(): self { + return parent::getInstance(); // TODO: Change the autogenerated stub + } + /** * Settings Model * diff --git a/src/Models/Token.php b/src/Models/Token.php index 31cc85a9..75f3bf8a 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -4,12 +4,6 @@ use Craft; use craft\db\ActiveRecord; -use craft\records\User; -use Firebase\JWT\JWT; -use GraphQL\Type\Definition\ObjectType; -use GraphQL\Type\Definition\InterfaceType; -use GraphQL\Type\Definition\EnumType; -use GraphQL\Type\Definition\Type; use markhuot\CraftQL\CraftQL; class Token extends ActiveRecord From 49acbd270f7ada0d97f3aa17630a77b0cafd8da5 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:26:22 -0400 Subject: [PATCH 11/62] removing comment --- src/CraftQL.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CraftQL.php b/src/CraftQL.php index 8ea932be..206fac46 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -91,7 +91,7 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { * @inheritdoc */ public static function getInstance(): self { - return parent::getInstance(); // TODO: Change the autogenerated stub + return parent::getInstance(); } /** From b0506d43982b8b89d4d59e7b94bb19da000c9ed7 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:27:28 -0400 Subject: [PATCH 12/62] cleanup --- src/Models/Token.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Models/Token.php b/src/Models/Token.php index 75f3bf8a..7a7c4f72 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -59,12 +59,12 @@ public static function findOrAnonymous($token=false) } // If the token is in the database - else if ($token && $token=Token::find()->where(['token' => $token])->one()) { + if ($token && $token=Token::find()->where(['token' => $token])->one()) { return $token; } // If the user has an active Craft session - else if ($user = Craft::$app->getUser()->getIdentity()) { + if ($user = Craft::$app->getUser()->getIdentity()) { return Token::forUser($user); } From 2a6cae19ea5201133ed76f534440cd65ab739bb5 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 16:59:21 -0400 Subject: [PATCH 13/62] token cleanup --- src/Models/Token.php | 58 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/src/Models/Token.php b/src/Models/Token.php index 7a7c4f72..fc0ca817 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -15,6 +15,13 @@ class Token extends ActiveRecord */ private $admin = false; + /** + * Whether the token is for an anonymous user (pre-auth/token) + * + * @var bool + */ + private $anonymous = false; + /** * @var \craft\elements\User */ @@ -54,7 +61,6 @@ public static function findOrAnonymous($token=false) ->one(); $user = \craft\elements\User::find()->id($userRow['id'])->one(); $token = Token::forUser($user); - $token->setUser($user); return $token; } @@ -71,23 +77,55 @@ public static function findOrAnonymous($token=false) return static::anonymous(); } + /** + * A generic admin token + * + * @return Token + */ public static function admin(): Token { - $token = new static; - $token->scopes = json_encode([]); - $token->makeAdmin(); - return $token; + return (new static)->makeAdmin(); } + /** + * Turn the token in to an admin token + * + * @return $this + */ + public function makeAdmin() { + $this->admin = true; + return $this; + } + + /** + * A generic anonymous token + * + * @return Token + */ public static function anonymous(): Token { - $token = new static; - $token->scopes = json_encode([]); - return $token; + return (new static)->makeAnonymous(); + } + + /** + * Turn the token in to an anonymous token + * + * @return $this + */ + public function makeAnonymous() { + $this->anonymous = true; + return $this; } + /** + * Returns a token with the user permissions translated over in to token permissions + * + * @param \craft\elements\User $user + * @return Token + */ public static function forUser(\craft\elements\User $user): Token { $token = new static; + $token->setUser($user); $scopes = []; $permissions = Craft::$app->getUserPermissions()->getPermissionsByUserId($user->id); @@ -105,10 +143,6 @@ public static function forUser(\craft\elements\User $user): Token return $token; } - public function makeAdmin() { - $this->admin = true; - } - /** * @return string The associated database table name */ From e58790f6e3dc401e5f4c63d539f44c4bca92fd88 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 17:05:35 -0400 Subject: [PATCH 14/62] better service/component support --- composer.json | 1 + src/Controllers/ApiController.php | 32 +++++++++++-------------------- src/CraftQL.php | 2 ++ 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/composer.json b/composer.json index cfa77a61..7c7800e3 100644 --- a/composer.json +++ b/composer.json @@ -31,6 +31,7 @@ "developerUrl": "https://www.github.com/markhuot", "class": "markhuot\\CraftQL\\CraftQL", "components": { + "graphQl": "markhuot\\CraftQL\\Services\\GraphQLService", "jwt": "markhuot\\CraftQL\\Services\\JWTService" } } diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index d19e9970..065a6754 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -16,16 +16,6 @@ class ApiController extends Controller private $graphQl; private $request; - function __construct( - $id, - $module, - \markhuot\CraftQL\Services\GraphQLService $graphQl, - $config = [] - ) { - parent::__construct($id, $module, $config); - $this->graphQl = $graphQl; - } - /** * @inheritdoc */ @@ -71,7 +61,7 @@ function actionIndex() return ''; } - Craft::trace('CraftQL: Parsing request'); + Craft::debug('CraftQL: Parsing request'); if (Craft::$app->request->isPost && $query=Craft::$app->request->post('query')) { $input = $query; } @@ -95,19 +85,19 @@ function actionIndex() $data = json_decode($data, true); $variables = @$data['variables']; } - Craft::trace('CraftQL: Parsing request complete'); + Craft::debug('CraftQL: Parsing request complete'); - Craft::trace('CraftQL: Bootstrapping'); - $this->graphQl->bootstrap(); - Craft::trace('CraftQL: Bootstrapping complete'); + Craft::debug('CraftQL: Bootstrapping'); + CraftQL::getInstance()->graphQl->bootstrap(); + Craft::debug('CraftQL: Bootstrapping complete'); - Craft::trace('CraftQL: Fetching schema'); - $schema = $this->graphQl->getSchema($token); - Craft::trace('CraftQL: Schema built'); + Craft::debug('CraftQL: Fetching schema'); + $schema = CraftQL::getInstance()->graphQl->getSchema($token); + Craft::debug('CraftQL: Schema built'); - Craft::trace('CraftQL: Executing query'); - $result = $this->graphQl->execute($schema, $input, $variables); - Craft::trace('CraftQL: Execution complete'); + Craft::debug('CraftQL: Executing query'); + $result = CraftQL::getInstance()->graphQl->execute($schema, $input, $variables); + Craft::debug('CraftQL: Execution complete'); $customHeaders = CraftQL::getInstance()->getSettings()->headers ?: []; foreach ($customHeaders as $key => $value) { diff --git a/src/CraftQL.php b/src/CraftQL.php index 206fac46..520db111 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -9,6 +9,7 @@ use craft\web\UrlManager; use craft\events\RegisterUrlRulesEvent; +use markhuot\CraftQL\Services\GraphQLService; use markhuot\CraftQL\Services\JWTService; use yii\base\Event; @@ -18,6 +19,7 @@ * Class CraftQL * @package markhuot\CraftQL * @property JWTService jwt + * @property GraphQLService graphQl */ class CraftQL extends Plugin { From 1ec6e2774de261289ab78fe2ed8f20e2a9a45267 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 14 Jun 2018 18:00:43 -0400 Subject: [PATCH 15/62] jwt expiration implmented --- src/Factories/DraftEntryType.php | 2 +- src/Models/Settings.php | 2 ++ src/Models/Token.php | 9 ++++++- src/Services/JWTService.php | 11 ++++----- src/Types/Authorize.php | 26 ++------------------- src/Types/Query.php | 40 +++++++++++++++++++++++++++++++- 6 files changed, 56 insertions(+), 34 deletions(-) diff --git a/src/Factories/DraftEntryType.php b/src/Factories/DraftEntryType.php index 42ebbe77..0fb22617 100644 --- a/src/Factories/DraftEntryType.php +++ b/src/Factories/DraftEntryType.php @@ -13,7 +13,7 @@ function make($raw, $request) { } function can($id, $mode='query') { - return $this->request->token()->can("{$mode}:entryType:{$id}"); + return $this->request->token()->can("{$mode}:entrytype:{$id}"); } function getEnumName($object) { diff --git a/src/Models/Settings.php b/src/Models/Settings.php index ededa4ad..abe42626 100644 --- a/src/Models/Settings.php +++ b/src/Models/Settings.php @@ -11,6 +11,8 @@ class Settings extends Model public $verbs = ['POST']; public $allowedOrigins = []; public $headers = []; + public $securityKey = false; + public $userTokenDuration = 60 * 60 * 4 /* 4 hours */; function rules() { diff --git a/src/Models/Token.php b/src/Models/Token.php index fc0ca817..6a24ec96 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -4,6 +4,8 @@ use Craft; use craft\db\ActiveRecord; +use Firebase\JWT\ExpiredException; +use GraphQL\Error\UserError; use markhuot\CraftQL\CraftQL; class Token extends ActiveRecord @@ -53,7 +55,12 @@ public static function findOrAnonymous($token=false) { // If the token matches a JWT format if ($token && preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { - $tokenData = CraftQL::getInstance()->jwt->decode($token); + try { + $tokenData = CraftQL::getInstance()->jwt->decode($token); + } + catch (ExpiredException $e) { + throw new UserError('The token has expired'); + } $userRow = (new \craft\db\Query()) ->from('users') ->where(['uid' => $tokenData->uid]) diff --git a/src/Services/JWTService.php b/src/Services/JWTService.php index 43e56c99..4b09ade9 100644 --- a/src/Services/JWTService.php +++ b/src/Services/JWTService.php @@ -4,22 +4,19 @@ use Craft; use Firebase\JWT\JWT; -use GraphQL\GraphQL; -use GraphQL\Error\Debug; -use GraphQL\Type\Schema; +use markhuot\CraftQL\CraftQL; use yii\base\Component; -use Yii; class JWTService extends Component { private $key; function __construct() { - if (!empty(\Craft::$app->config->craftql->securityKey)) { - $this->key = \Craft::$app->config->craftql->securityKey; + if (CraftQL::getInstance()->getSettings()->securityKey) { + $this->key = CraftQL::getInstance()->getSettings()->securityKey; } else { - $this->key = \Craft::$app->config->general->securityKey; + $this->key = Craft::$app->config->general->securityKey; } } diff --git a/src/Types/Authorize.php b/src/Types/Authorize.php index 16269d0f..4c943154 100644 --- a/src/Types/Authorize.php +++ b/src/Types/Authorize.php @@ -9,30 +9,8 @@ class Authorize extends Schema { function boot() { - - $this->addField('user') - ->type(User::class) - ->resolve(function ($root, $args) { - return $root['user']; - }); - - $this->addStringField('token') - ->resolve(function ($root, $args) { - /** @var \craft\elements\User $user */ - $user = $root['user']; - - $userRow = (new \craft\db\Query()) - ->from('users') - ->where(['id' => $user->id]) - ->limit(1) - ->one(); - - return CraftQL::getInstance()->jwt->encode([ - 'uid' => $userRow['uid'], - // @TODO add expiration in to this - ]); - }); - + $this->addField('user')->type(User::class); + $this->addStringField('token'); } } \ No newline at end of file diff --git a/src/Types/Query.php b/src/Types/Query.php index b8bbb0ac..c0bbac77 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -2,8 +2,10 @@ namespace markhuot\CraftQL\Types; +use craft\helpers\DateTimeHelper; use GraphQL\Error\Error; use GraphQL\Error\UserError; +use markhuot\CraftQL\CraftQL; use yii\base\Component; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\Type; @@ -296,11 +298,13 @@ function addCategoriesSchema() { } function addAuthSchema() { + $defaultTokenDuration = CraftQL::getInstance()->getSettings()->userTokenDuration; + $field = $this->addField('authorize'); $field->type(Authorize::class); $field->addStringArgument('username')->nonNull(); $field->addStringArgument('password')->nonNull(); - $field->resolve(function ($root, $args) { + $field->resolve(function ($root, $args) use ($defaultTokenDuration) { $loginName = $args['username']; $password = $args['password']; @@ -325,10 +329,44 @@ function addAuthSchema() { throw new UserError('An unknown error occured'); } + $userRow = (new \craft\db\Query()) + ->from('users') + ->where(['id' => $user->id]) + ->limit(1) + ->one(); + return [ 'user' => $user, + 'token' => CraftQL::getInstance()->jwt->encode([ + 'uid' => $userRow['uid'], + 'exp' => time() + $defaultTokenDuration, + ]) ]; }); + + $field = $this->addStringField('refresh'); + $field->addStringArgument('token')->nonNull(); + $field->resolve(function ($root, $args) use ($defaultTokenDuration) { + $tokenData = $args['token']; + $tokenData = CraftQL::getInstance()->jwt->decode($tokenData); + + if (time() > $tokenData->exp) { + throw new UserError('The token has expired'); + } + + $userRow = (new \craft\db\Query()) + ->from('users') + ->where(['uid' => $tokenData->uid]) + ->limit(1) + ->one(); + + $user = \craft\elements\User::find()->id($userRow['id'])->one(); + + return CraftQL::getInstance()->jwt->encode([ + 'uid' => $tokenData->uid, + 'exp' => time() + $defaultTokenDuration, + ]); + }); } } \ No newline at end of file From 3ce1132e25dd13451b6cd050e208e816d1d827c7 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 21 Jun 2018 14:35:51 -0400 Subject: [PATCH 16/62] docblock --- src/Models/Token.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Models/Token.php b/src/Models/Token.php index 6a24ec96..acfe23f1 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -72,6 +72,7 @@ public static function findOrAnonymous($token=false) } // If the token is in the database + /** @var Token $token */ if ($token && $token=Token::find()->where(['token' => $token])->one()) { return $token; } From 1ed1a61dd56484a5627060fb3593f9f38fa8d2a8 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 21 Jun 2018 16:32:46 -0400 Subject: [PATCH 17/62] less coupling and allows JWT to contain or not contain an `exp` --- src/Types/Query.php | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/Types/Query.php b/src/Types/Query.php index c0bbac77..c1feb5b8 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -335,12 +335,17 @@ function addAuthSchema() { ->limit(1) ->one(); + $tokenData = [ + 'uid' => $userRow['uid'], + ]; + + if ($defaultTokenDuration > 0) { + $tokenData['exp'] = time() + $defaultTokenDuration; + } + return [ 'user' => $user, - 'token' => CraftQL::getInstance()->jwt->encode([ - 'uid' => $userRow['uid'], - 'exp' => time() + $defaultTokenDuration, - ]) + 'token' => CraftQL::getInstance()->jwt->encode($tokenData), ]; }); @@ -349,23 +354,8 @@ function addAuthSchema() { $field->resolve(function ($root, $args) use ($defaultTokenDuration) { $tokenData = $args['token']; $tokenData = CraftQL::getInstance()->jwt->decode($tokenData); - - if (time() > $tokenData->exp) { - throw new UserError('The token has expired'); - } - - $userRow = (new \craft\db\Query()) - ->from('users') - ->where(['uid' => $tokenData->uid]) - ->limit(1) - ->one(); - - $user = \craft\elements\User::find()->id($userRow['id'])->one(); - - return CraftQL::getInstance()->jwt->encode([ - 'uid' => $tokenData->uid, - 'exp' => time() + $defaultTokenDuration, - ]); + $tokenData->exp = time() + $defaultTokenDuration; + return CraftQL::getInstance()->jwt->encode($tokenData); }); } From b7e959080767e49dba8bd905f383dbd61f559155 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Fri, 13 Jul 2018 15:35:31 -0400 Subject: [PATCH 18/62] fixes bad merge --- src/CraftQL.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/CraftQL.php b/src/CraftQL.php index 7fe499c7..a9044ad7 100644 --- a/src/CraftQL.php +++ b/src/CraftQL.php @@ -90,6 +90,9 @@ function (RegisterUrlRulesEvent $event) use ($uri, $verbs) { } } + /** + * @inheritdoc + */ public static function getInstance(): self { return parent::getInstance(); } @@ -98,13 +101,6 @@ public function getSettings(): Settings { return parent::getSettings(); } - /** - * @inheritdoc - */ - public static function getInstance(): self { - return parent::getInstance(); - } - /** * Settings Model * From 89529e83da50fd409c7474b172f345469a74e458 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Wed, 18 Jul 2018 17:59:37 -0400 Subject: [PATCH 19/62] updated to send refreshed tokens with each request via Authorization header --- src/Console/ToolsController.php | 11 ++++++++--- src/Controllers/ApiController.php | 7 +++++-- src/Models/Token.php | 15 +++++++-------- src/Services/JWTService.php | 19 ++++++++++++++++++- src/Types/Query.php | 16 ++-------------- 5 files changed, 40 insertions(+), 28 deletions(-) diff --git a/src/Console/ToolsController.php b/src/Console/ToolsController.php index 30991c58..2143f3d4 100644 --- a/src/Console/ToolsController.php +++ b/src/Console/ToolsController.php @@ -67,13 +67,18 @@ public function actionServe() $query = false; $variables = []; + $headers = [ + 'Content-Type' => 'application/json; charset=UTF-8', + ]; + $authorization = @$request->getHeaders()['authorization'][0]; preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); $token = Token::findOrAnonymous(@$matches['tokenId']); - $headers = [ - 'Content-Type' => 'application/json; charset=UTF-8', - ]; + if ($user = $token->getUser()) { + $headers['Authorization'] = 'TOKEN ' . CraftQL::getInstance()->jwt->tokenForUser($user); + } + if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { if (is_string($allowedOrigins)) { $allowedOrigins = [$allowedOrigins]; diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 065a6754..e1e863c9 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -37,13 +37,16 @@ function actionDebug() { function actionIndex() { - $token = false; + $response = \Craft::$app->getResponse(); $authorization = Craft::$app->request->headers->get('authorization'); preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); $token = Token::findOrAnonymous(@$matches['tokenId']); - $response = \Craft::$app->getResponse(); + if ($user = $token->getUser()) { + $response->headers->add('Authorization', 'TOKEN ' . CraftQL::getInstance()->jwt->tokenForUser($user)); + } + if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { if (is_string($allowedOrigins)) { $allowedOrigins = [$allowedOrigins]; diff --git a/src/Models/Token.php b/src/Models/Token.php index acfe23f1..d8c84079 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -53,27 +53,26 @@ function setUser (\craft\elements\User $user) { */ public static function findOrAnonymous($token=false) { + if (empty($token)) { + return static::anonymous(); + } + // If the token matches a JWT format - if ($token && preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { + if (preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { try { $tokenData = CraftQL::getInstance()->jwt->decode($token); } catch (ExpiredException $e) { throw new UserError('The token has expired'); } - $userRow = (new \craft\db\Query()) - ->from('users') - ->where(['uid' => $tokenData->uid]) - ->limit(1) - ->one(); - $user = \craft\elements\User::find()->id($userRow['id'])->one(); + $user = \craft\elements\User::find()->id($tokenData->id)->one(); $token = Token::forUser($user); return $token; } // If the token is in the database /** @var Token $token */ - if ($token && $token=Token::find()->where(['token' => $token])->one()) { + if ($token = Token::find()->where(['token' => $token])->one()) { return $token; } diff --git a/src/Services/JWTService.php b/src/Services/JWTService.php index 4b09ade9..1c4ba3f0 100644 --- a/src/Services/JWTService.php +++ b/src/Services/JWTService.php @@ -3,6 +3,7 @@ namespace markhuot\CraftQL\Services; use Craft; +use craft\elements\User; use Firebase\JWT\JWT; use markhuot\CraftQL\CraftQL; use yii\base\Component; @@ -11,7 +12,9 @@ class JWTService extends Component { private $key; - function __construct() { + function __construct($config=[]) { + parent::__construct($config); + if (CraftQL::getInstance()->getSettings()->securityKey) { $this->key = CraftQL::getInstance()->getSettings()->securityKey; } @@ -28,4 +31,18 @@ function decode($string) { return JWT::decode($string, $this->key, ['HS256']); } + function tokenForUser(User $user) { + $defaultTokenDuration = CraftQL::getInstance()->getSettings()->userTokenDuration; + + $tokenData = [ + 'id' => $user->id, + ]; + + if ($defaultTokenDuration > 0) { + $tokenData['exp'] = time() + $defaultTokenDuration; + } + + return $this->encode($tokenData); + } + } diff --git a/src/Types/Query.php b/src/Types/Query.php index b92ec435..9113851c 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -353,23 +353,11 @@ function addAuthSchema() { throw new UserError('An unknown error occured'); } - $userRow = (new \craft\db\Query()) - ->from('users') - ->where(['id' => $user->id]) - ->limit(1) - ->one(); - - $tokenData = [ - 'uid' => $userRow['uid'], - ]; - - if ($defaultTokenDuration > 0) { - $tokenData['exp'] = time() + $defaultTokenDuration; - } + $tokenString = CraftQL::getInstance()->jwt->tokenForUser($user); return [ 'user' => $user, - 'token' => CraftQL::getInstance()->jwt->encode($tokenData), + 'token' => $tokenString, ]; }); From 974e10c0018fb5626685eb7fccd5a3ac3df2fbff Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Thu, 19 Jul 2018 10:45:09 -0400 Subject: [PATCH 20/62] #89 updates header format --- src/Console/ToolsController.php | 2 +- src/Controllers/ApiController.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Console/ToolsController.php b/src/Console/ToolsController.php index 2143f3d4..261f7e0d 100644 --- a/src/Console/ToolsController.php +++ b/src/Console/ToolsController.php @@ -76,7 +76,7 @@ public function actionServe() $token = Token::findOrAnonymous(@$matches['tokenId']); if ($user = $token->getUser()) { - $headers['Authorization'] = 'TOKEN ' . CraftQL::getInstance()->jwt->tokenForUser($user); + $headers['Authorization'] = 'Bearer ' . CraftQL::getInstance()->jwt->tokenForUser($user); } if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index e1e863c9..ae2d589d 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -44,7 +44,7 @@ function actionIndex() $token = Token::findOrAnonymous(@$matches['tokenId']); if ($user = $token->getUser()) { - $response->headers->add('Authorization', 'TOKEN ' . CraftQL::getInstance()->jwt->tokenForUser($user)); + $response->headers->add('Authorization', 'Bearer ' . CraftQL::getInstance()->jwt->tokenForUser($user)); } if ($allowedOrigins = CraftQL::getInstance()->getSettings()->allowedOrigins) { From 4dd33c2d00b6cb7962a7096872dbed5c93ca752a Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Fri, 27 Jul 2018 16:54:06 -0400 Subject: [PATCH 21/62] fixes a bug when entries are disabled --- src/Factories/BaseFactory.php | 2 +- src/FieldBehaviors/RelatedEntriesField.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Factories/BaseFactory.php b/src/Factories/BaseFactory.php index 365cbdd3..881ffc45 100644 --- a/src/Factories/BaseFactory.php +++ b/src/Factories/BaseFactory.php @@ -49,7 +49,7 @@ function all($mode='query') { } function count() { - return count($this->repository->all()); + return count($this->all()); } function getEnumKey($object) { diff --git a/src/FieldBehaviors/RelatedEntriesField.php b/src/FieldBehaviors/RelatedEntriesField.php index 155643de..ab6e0c1b 100644 --- a/src/FieldBehaviors/RelatedEntriesField.php +++ b/src/FieldBehaviors/RelatedEntriesField.php @@ -8,6 +8,10 @@ class RelatedEntriesField extends SchemaBehavior { function initRelatedEntriesField() { + if ($this->owner->request->entryTypes()->count() == 0) { + return; + } + $this->owner->addField('relatedEntries') ->type(EntryConnection::class) ->use(new EntryQueryArguments) From 5dc48bd16d3547f4e3bb8008fbd1cdf93b523f83 Mon Sep 17 00:00:00 2001 From: Mark Huot Date: Fri, 27 Jul 2018 16:54:19 -0400 Subject: [PATCH 22/62] hopefully more logical token querying --- src/Models/Token.php | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Models/Token.php b/src/Models/Token.php index d8c84079..dfbb30d6 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -54,9 +54,29 @@ function setUser (\craft\elements\User $user) { public static function findOrAnonymous($token=false) { if (empty($token)) { - return static::anonymous(); + $token = static::tokenForSession(); } + else { + $token = static::tokenForString($token); + } + + if (!$token) { + $token = static::anonymous(); + } + + return $token; + } + + public static function tokenForSession() { + if ($user = Craft::$app->getUser()->getIdentity()) { + return Token::forUser($user); + } + + return false; + } + + public static function tokenForString($token) { // If the token matches a JWT format if (preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { try { @@ -76,12 +96,7 @@ public static function findOrAnonymous($token=false) return $token; } - // If the user has an active Craft session - if ($user = Craft::$app->getUser()->getIdentity()) { - return Token::forUser($user); - } - - return static::anonymous(); + return false; } /** From 71a5b796882e8f997d9e43b25505ce51d393e780 Mon Sep 17 00:00:00 2001 From: Gerard Lamusse <> Date: Tue, 11 Dec 2018 21:07:09 +0100 Subject: [PATCH 23/62] Added more permissions --- src/Factories/EntryType.php | 2 +- src/Listeners/GetUserPermissions.php | 1 + src/Request.php | 5 ++++- src/templates/scopes.html | 4 +++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Factories/EntryType.php b/src/Factories/EntryType.php index 078d1dce..01960e8f 100644 --- a/src/Factories/EntryType.php +++ b/src/Factories/EntryType.php @@ -14,7 +14,7 @@ function make($raw, $request) { } function can($id, $mode='query') { - return $this->request->token()->can("{$mode}:entrytype:{$id}"); + return $this->request->token()->can("{$mode}:entrytype:{$id}") || $this->request->token()->can("{$mode}:entrytype:{$id}:all"); } function getEnumKey($object) { diff --git a/src/Listeners/GetUserPermissions.php b/src/Listeners/GetUserPermissions.php index db53b62e..cb300007 100644 --- a/src/Listeners/GetUserPermissions.php +++ b/src/Listeners/GetUserPermissions.php @@ -19,6 +19,7 @@ function handle(RegisterUserPermissionsEvent $event) { foreach ($entryTypes as $entryType) { $id = $entryType->id; $queryTypes["craftql:query:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Query their own entries of the '.$entryType->name.' entry type')]; + $queryTypes["craftql:query:entrytype:{$id}:all"] = ['label' => \Craft::t('craftql', 'Query all entries of the '.$entryType->name.' entry type')]; $mutationTypes["craftql:mutate:entrytype:{$id}"] = ['label' => \Craft::t('craftql', 'Mutate their own entries of the '.$entryType->name.' entry type')]; } } diff --git a/src/Request.php b/src/Request.php index b31a17be..d8e9c1e6 100644 --- a/src/Request.php +++ b/src/Request.php @@ -123,8 +123,11 @@ function entries($criteria, $root, $args, $context, $info) { // check if we're a user token, and if so if the user has access to // all entries or just their own if ($this->token->user) { + $id = $args['sectionId'][0]; if (!$this->token->can('query:otheruserentries')) { - $args['authorId'] = $this->token->user->id; + if (!$id || !$this->token->can("query:entrytype:{$id}:all")) { + $args['authorId'] = $this->token->user->id; + } } } diff --git a/src/templates/scopes.html b/src/templates/scopes.html index abe58094..108570dd 100644 --- a/src/templates/scopes.html +++ b/src/templates/scopes.html @@ -107,7 +107,8 @@

Queries

Type Section Entry Type - + Self + All @@ -118,6 +119,7 @@

Queries

{{ section.name }} {{ entryType.name }} {{ forms.lightswitch({"name": "scope[query:entrytype:" ~ entryType.id ~ "]", "value": 1, "on": token.can("query:entrytype:" ~ entryType.id), "small": true}) }} + {{ forms.lightswitch({"name": "scope[query:entrytype:" ~ entryType.id ~ ":all]", "value": 1, "on": token.can("query:entrytype:" ~ entryType.id ~":all"), "small": true}) }} {% endfor %} {% endfor %} From 85c655bd5245a3a87cfb11cc027f99400efe0e56 Mon Sep 17 00:00:00 2001 From: Gerard Lamusse <> Date: Tue, 11 Dec 2018 23:12:16 +0100 Subject: [PATCH 24/62] Added check for own or all types --- src/Request.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Request.php b/src/Request.php index d8e9c1e6..3e4fedcc 100644 --- a/src/Request.php +++ b/src/Request.php @@ -120,16 +120,24 @@ function entries($criteria, $root, $args, $context, $info) { unset($args['type']); } + $limitedTypes = []; + foreach ($args['typeId'] as $typeId) { + if ($this->token->can('query:otheruserentries') || $this->token->can("query:entrytype:{$typeId}:all")) { + $limitedTypes[] = $typeId; + } elseif ($this->token->can("query:entrytype:{$typeId}")) { + $args['authorId'] = $this->token->user->id; + $limitedTypes[] = $typeId; + } + } + $args['typeId'] = $limitedTypes; + // check if we're a user token, and if so if the user has access to // all entries or just their own - if ($this->token->user) { - $id = $args['sectionId'][0]; + /*if ($this->token->user) { if (!$this->token->can('query:otheruserentries')) { - if (!$id || !$this->token->can("query:entrytype:{$id}:all")) { - $args['authorId'] = $this->token->user->id; - } + $args['authorId'] = $this->token->user->id; } - } + }*/ if (!empty($args['relatedTo'])) { $criteria->relatedTo(array_merge(['and'], $this->parseRelatedTo($args['relatedTo'], @$root['node']->id))); From d5986a4587466ccdcf893ed9f8ef9cd63383d9d2 Mon Sep 17 00:00:00 2001 From: Gerard Lamusse <> Date: Wed, 12 Dec 2018 13:42:43 +0100 Subject: [PATCH 25/62] Updated options to allow for mixed queries such as private entries containing references to public entries. --- src/Factories/DraftEntryType.php | 2 +- src/Factories/Section.php | 2 +- src/Request.php | 40 ++++++++++++++------------------ 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/Factories/DraftEntryType.php b/src/Factories/DraftEntryType.php index 0fb22617..707e682a 100644 --- a/src/Factories/DraftEntryType.php +++ b/src/Factories/DraftEntryType.php @@ -13,7 +13,7 @@ function make($raw, $request) { } function can($id, $mode='query') { - return $this->request->token()->can("{$mode}:entrytype:{$id}"); + return $this->request->token()->can("{$mode}:entrytype:{$id}" || $this->request->token()->can("{$mode}:entrytype:{$id}:all")); } function getEnumName($object) { diff --git a/src/Factories/Section.php b/src/Factories/Section.php index 8fc73a48..6b99267b 100644 --- a/src/Factories/Section.php +++ b/src/Factories/Section.php @@ -14,7 +14,7 @@ function make($raw, $request) { function can($id, $mode='query') { $section = $this->repository->get($id); foreach ($section->entryTypes as $type) { - if ($this->request->token()->can("{$mode}:entrytype:{$type->id}")) { + if ($this->request->token()->can("{$mode}:entrytype:{$type->id}") || $this->request->token()->can("{$mode}:entrytype:{$type->id}:all")) { return true; } } diff --git a/src/Request.php b/src/Request.php index 3e4fedcc..d87ee5f3 100644 --- a/src/Request.php +++ b/src/Request.php @@ -110,34 +110,28 @@ function entries($criteria, $root, $args, $context, $info) { unset($args['section']); } + /* Only allow users to view their own entires if explicitly defined in $args['type'] */ if (empty($args['type'])) { - $args['typeId'] = array_map(function ($value) { - return $value->value; - }, $this->entryTypes()->enum()->getValues()); + $args['typeId'] = []; + foreach ($this->entryTypes()->enum()->getValues() as $value) { + $typeId = $value->value; + if ($this->token->can('query:otheruserentries') || $this->token->can("query:entrytype:{$typeId}:all")) { + $args['typeId'][] = $typeId; + } + } } else { - $args['typeId'] = $args['type']; - unset($args['type']); - } - - $limitedTypes = []; - foreach ($args['typeId'] as $typeId) { - if ($this->token->can('query:otheruserentries') || $this->token->can("query:entrytype:{$typeId}:all")) { - $limitedTypes[] = $typeId; - } elseif ($this->token->can("query:entrytype:{$typeId}")) { - $args['authorId'] = $this->token->user->id; - $limitedTypes[] = $typeId; + $args['typeId'] = []; + foreach ($args['type'] as $typeId) { + if ($this->token->can('query:otheruserentries') || $this->token->can("query:entrytype:{$typeId}:all")) { + $args['typeId'][] = $typeId; + } elseif ($this->token->can("query:entrytype:{$typeId}")) { + $args['authorId'] = $this->token->user->id; + $args['typeId'][] = $typeId; + } } + unset($args['type']); } - $args['typeId'] = $limitedTypes; - - // check if we're a user token, and if so if the user has access to - // all entries or just their own - /*if ($this->token->user) { - if (!$this->token->can('query:otheruserentries')) { - $args['authorId'] = $this->token->user->id; - } - }*/ if (!empty($args['relatedTo'])) { $criteria->relatedTo(array_merge(['and'], $this->parseRelatedTo($args['relatedTo'], @$root['node']->id))); From a9543fd5e8a68b9412921c4f0d522ebf49d87101 Mon Sep 17 00:00:00 2001 From: Gerard Lamusse <> Date: Thu, 13 Dec 2018 15:04:12 +0100 Subject: [PATCH 26/62] Added Access-Control-Expose-Headers --- src/Controllers/ApiController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index ae2d589d..4ab019d3 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -57,6 +57,7 @@ function actionIndex() } $response->headers->add('Access-Control-Allow-Credentials', 'true'); $response->headers->add('Access-Control-Allow-Headers', 'Authorization, Content-Type'); + $response->headers->add('Access-Control-Expose-Headers', 'Authorization'); } $response->headers->add('Allow', implode(', ', CraftQL::getInstance()->getSettings()->verbs)); From a85bd45e41ff8324e5e5aa6d4ddfa7f3df035eb9 Mon Sep 17 00:00:00 2001 From: Ashton Lance Date: Fri, 9 Aug 2019 16:49:53 -0400 Subject: [PATCH 27/62] Add conditional to check if Group ID is int or not. If not int, try to load get Group by UID --- src/Listeners/GetCategoriesFieldSchema.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Listeners/GetCategoriesFieldSchema.php b/src/Listeners/GetCategoriesFieldSchema.php index e2bc8239..9812c3de 100644 --- a/src/Listeners/GetCategoriesFieldSchema.php +++ b/src/Listeners/GetCategoriesFieldSchema.php @@ -65,7 +65,11 @@ function handle(GetFieldSchema $event) { ->type($inputObject) ->lists() ->onSave(function ($values) use ($groupId) { - $group = Craft::$app->getCategories()->getGroupById($groupId); + if (!is_numeric($groupId)) { + $group = Craft::$app->getCategories()->getGroupByUid($groupId); + } else { + $group = Craft::$app->getCategories()->getGroupById($groupId); + } foreach ($values as &$value) { if (!empty($value['id']) && is_numeric($value['id'])) { From d037e0606e692968e4dbb7dc6134c7583008c3f0 Mon Sep 17 00:00:00 2001 From: Ashton Lance Date: Fri, 9 Aug 2019 16:58:19 -0400 Subject: [PATCH 28/62] Update composer json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index b392eeac..31a9523f 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "markhuot/craftql", + "name": "ashtonlance/craftql", "description": "A GraphQL implementation for Craft", "type": "craft-plugin", "keywords": [ From deed95bff1d887b7692c55d28c71d49ce5c352bc Mon Sep 17 00:00:00 2001 From: Ashton Lance Date: Mon, 12 Aug 2019 10:02:26 -0400 Subject: [PATCH 29/62] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 31a9523f..b392eeac 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "ashtonlance/craftql", + "name": "markhuot/craftql", "description": "A GraphQL implementation for Craft", "type": "craft-plugin", "keywords": [ From 1f1b2931ce73f14fa6cf411dd629b8a0cdd2a2dc Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 17 Apr 2020 19:42:07 -0500 Subject: [PATCH 30/62] Use getInstance() instead of instance variable --- src/Controllers/ApiController.php | 34 +++++++++++-------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 3aee06d1..41aba088 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -40,7 +40,6 @@ function actionDebug() { function actionIndex() { $response = \Craft::$app->getResponse(); - $token = false; $result = false; $authorization = Craft::$app->request->headers->get('authorization'); @@ -72,15 +71,6 @@ function actionIndex() return ''; } - if (!$token) { - http_response_code(403); - return $this->asJson([ - 'errors' => [ - ['message' => 'Not authorized'] - ] - ]); - } - Craft::debug('CraftQL: Parsing request'); if (Craft::$app->request->isPost && $query=Craft::$app->request->post('query')) { $input = $query; @@ -110,7 +100,7 @@ function actionIndex() $useCache = key_exists('useCache', $config) && $config['useCache'] === true; if ($useCache) { - Craft::trace('CraftQL: Checking cache'); + Craft::debug('CraftQL: Checking cache'); $cache = Craft::$app->getCache(); $cacheKey = $cache->buildKey([$input, $variables]); @@ -120,29 +110,29 @@ function actionIndex() } if(!$result) { - Craft::trace('CraftQL: Parsing request complete'); + Craft::debug('CraftQL: Parsing request complete'); - Craft::trace('CraftQL: Bootstrapping'); - $this->graphQl->bootstrap(); - Craft::trace('CraftQL: Bootstrapping complete'); + Craft::debug('CraftQL: Bootstrapping'); + CraftQL::getInstance()->graphQl->bootstrap(); + Craft::debug('CraftQL: Bootstrapping complete'); - Craft::trace('CraftQL: Fetching schema'); - $schema = $this->graphQl->getSchema($token); - Craft::trace('CraftQL: Schema built'); + Craft::debug('CraftQL: Fetching schema'); + $schema = CraftQL::getInstance()->graphQl->getSchema($token); + Craft::debug('CraftQL: Schema built'); - Craft::trace('CraftQL: Executing query'); + Craft::debug('CraftQL: Executing query'); $config = Craft::$app->getConfig()->getConfigFromFile('craftql'); - $result = $this->graphQl->execute($schema, $input, $variables); + $result = CraftQL::getInstance()->graphQl->execute($schema, $input, $variables); if($useCache) { - Craft::trace('CraftQL: Updating cache'); + Craft::debug('CraftQL: Updating cache'); $cache->set($cacheKey, $result); } } - Craft::trace('CraftQL: Execution complete'); + Craft::debug('CraftQL: Execution complete'); $customHeaders = CraftQL::getInstance()->getSettings()->headers ?: []; foreach ($customHeaders as $key => $value) { From 86ef55ecc30dfcec996480801b4e23691bd866c1 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 17 Apr 2020 21:38:34 -0500 Subject: [PATCH 31/62] Remove unnecessary delay and use consistent error message for invalid credentials. --- src/Types/Query.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Types/Query.php b/src/Types/Query.php index 1241fc0a..c68978f0 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -346,13 +346,10 @@ function addAuthSchema() { // Does a user exist with that username/email? $user = Craft::$app->getUsers()->getUserByUsernameOrEmail($loginName); - // Delay randomly between 0 and 1.5 seconds. - usleep(random_int(0, 1500000)); - if (!$user || $user->password === null) { - // Delay again to match $user->authenticate()'s delay + // Delay to match $user->authenticate()'s delay Craft::$app->getSecurity()->validatePassword('p@ss1w0rd', '$2y$13$nj9aiBeb7RfEfYP3Cum6Revyu14QelGGxwcnFUKXIrQUitSodEPRi'); - throw new UserError('Invalid credentials.'); + throw new UserError('invalid_credentials'); } // Did they submit a valid password, and is the user capable of being logged-in? From 9acce950bb946de878dc3f3b76ab119508780b2c Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Sat, 18 Apr 2020 13:10:23 -0500 Subject: [PATCH 32/62] User Permissions - Support adding / saving password on user Save - Add Permission Scope to only save changes to self - Add Permission Scope to only save a new user --- src/Listeners/GetUserPermissions.php | 8 +++++++- src/Models/Token.php | 5 +++-- src/Types/Mutation.php | 19 +++++++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Listeners/GetUserPermissions.php b/src/Listeners/GetUserPermissions.php index cb300007..050b3dc9 100644 --- a/src/Listeners/GetUserPermissions.php +++ b/src/Listeners/GetUserPermissions.php @@ -35,7 +35,13 @@ function handle(RegisterUserPermissionsEvent $event) { 'craftql:query:sections' => ['label' => \Craft::t('craftql', 'Query Sections')], 'craftql:query:fields' => ['label' => \Craft::t('craftql', 'Query Fields')], 'craftql:mutate:entries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => $mutationTypes], - 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Entries')], + 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Globals') + 'craftql:mutate:users' => [ + 'label' => \Craft::t('craftql', 'Mutate Users'), + 'nested' => [ + 'craftql:mutate:users:self' => ['label' => \Craft::t('craftql', 'Mutate thier own user.')] + ] + ], ]; } } diff --git a/src/Models/Token.php b/src/Models/Token.php index 303b4444..f480ff9a 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -116,6 +116,7 @@ public static function admin(): Token */ public function makeAdmin() { $this->admin = true; + $this->scopes = json_encode(['mutate:users:new' => 1]) return $this; } @@ -186,7 +187,7 @@ function getScopeArray(): array } function can($do): bool { - return $this->admin || @$this->scopeArray[$do] ?: false; + return $this->admin || $this->getScopeArray()[$do] ?: false; } function canNot($do): bool { @@ -200,7 +201,7 @@ function canMatch($regex): bool { $scopes = []; - foreach ($this->scopeArray as $key => $value) { + foreach ($this->getScopeArray() as $key => $value) { if ($value > 0 && preg_match($regex, $key)) { $scopes[] = $key; } diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index d714cec7..ddd6b9bd 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -50,20 +50,30 @@ function boot() { } } - if ($this->request->token()->can('mutate:users')) { + if ($this->request->token()->can('mutate:users:new') || $this->request->token()->can('mutate:users') || $this->request->token()->can('mutate:users:self')) { $updateUser = $this->addField('upsertUser') ->type(User::class) ->resolve(function ($root, $args, $context, $info) { $values = $args; + $token = $this->request->token(); + $new = empty($args['id']) - if (!empty($args['id'])) { + if (!$new) { $userId = @$args['id']; unset($values['id']); + if($token->canNot('mutate:users') && $token->canNot('mutate:users:self')) { + throw new UserError('unauthorized') + } + $user = \craft\elements\User::find()->id($userId)->anyStatus()->one(); if (!$user) { throw new UserError('Could not find user '.$userId); } + + if($token->canNot('mutate:users') && $user->id != $token->getUser()->id) { + throw new UserError('unauthorized') + } } else { $user = new \craft\elements\User; @@ -76,6 +86,10 @@ function boot() { } } + if(isset($values['password'])) { + $user->newPassword = $values['password'] + } + $permissions = []; if (!empty($values['permissions'])) { $permissions = $values['permissions']; @@ -110,6 +124,7 @@ function boot() { $updateUser->addStringArgument('lastName'); $updateUser->addStringArgument('username'); $updateUser->addStringArgument('email'); + $updateUser->addStringArgument('password'); if ($this->request->token()->can('mutate:userPermissions')) { $updateUser->addStringArgument('permissions')->lists(); From 108af3e1c359ac76e57c5d4b66ee98a8eb3b7b8f Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 20 Apr 2020 23:14:07 -0500 Subject: [PATCH 33/62] Fix Syntax Errors, Add Dev Linting --- .phplint-cache | 1 + composer.json | 3 + composer.lock | 107 ++++++++++++++++++++++++++- src/Listeners/GetUserPermissions.php | 4 +- src/Models/Token.php | 2 +- src/Types/Mutation.php | 8 +- 6 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 .phplint-cache diff --git a/.phplint-cache b/.phplint-cache new file mode 100644 index 00000000..3c5753e6 --- /dev/null +++ b/.phplint-cache @@ -0,0 +1 @@ +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"815514716d341f6f2fc9d58bd5889048","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"d29a82458213d2b171dd9338196e60d1","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"75dbdf3aa9bb2ae003c371462f4f4963","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"f03a46e7b847a4742953eccd8a0ce1ac","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6"} \ No newline at end of file diff --git a/composer.json b/composer.json index 3c440791..c093a6cc 100644 --- a/composer.json +++ b/composer.json @@ -35,5 +35,8 @@ "graphQl": "markhuot\\CraftQL\\Services\\GraphQLService", "jwt": "markhuot\\CraftQL\\Services\\JWTService" } + }, + "require-dev": { + "overtrue/phplint": "^2.0" } } diff --git a/composer.lock b/composer.lock index 4d6b4fe2..15ebf6d7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8c35049934c1ea15ad8a2bfc90b42a66", + "content-hash": "1808fcb2474e60a86dd38b258d6c9ded", "packages": [ { "name": "cebe/markdown", @@ -5430,7 +5430,110 @@ "time": "2018-09-23T22:00:47+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "n98/junit-xml", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/cmuench/junit-xml.git", + "reference": "7df0dbaf413fcaa1a63ffbcef18654e7a4cceb46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cmuench/junit-xml/zipball/7df0dbaf413fcaa1a63ffbcef18654e7a4cceb46", + "reference": "7df0dbaf413fcaa1a63ffbcef18654e7a4cceb46", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "N98\\JUnitXml": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Münch", + "email": "c.muench@netz98.de" + } + ], + "description": "JUnit XML Document generation library", + "time": "2013-11-23T13:11:26+00:00" + }, + { + "name": "overtrue/phplint", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/overtrue/phplint.git", + "reference": "ce7d236e79fffbaeab83d8c325375634b02bee37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/ce7d236e79fffbaeab83d8c325375634b02bee37", + "reference": "ce7d236e79fffbaeab83d8c325375634b02bee37", + "shasum": "" + }, + "require": { + "ext-json": "*", + "n98/junit-xml": "1.0.0", + "php": ">=5.5.9", + "symfony/console": "^3.2|^4.0|^5.0", + "symfony/finder": "^3.0|^4.0|^5.0", + "symfony/process": "^3.0|^4.0|^5.0", + "symfony/yaml": "^3.0|^4.0|^5.0" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.7", + "friendsofphp/php-cs-fixer": "^2.16", + "jakub-onderka/php-console-highlighter": "^0.3.2 || ^0.4" + }, + "bin": [ + "bin/phplint" + ], + "type": "library", + "extra": { + "hooks": { + "pre-commit": [ + "composer fix-style" + ], + "pre-push": [ + "composer check-style" + ] + } + }, + "autoload": { + "psr-4": { + "Overtrue\\PHPLint\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "`phplint` is a tool that can speed up linting of php files by running several lint processes at once.", + "keywords": [ + "check", + "lint", + "phplint", + "syntax" + ], + "time": "2020-04-18T00:59:47+00:00" + } + ], "aliases": [], "minimum-stability": "stable", "stability-flags": [], diff --git a/src/Listeners/GetUserPermissions.php b/src/Listeners/GetUserPermissions.php index 050b3dc9..d3ca9625 100644 --- a/src/Listeners/GetUserPermissions.php +++ b/src/Listeners/GetUserPermissions.php @@ -35,13 +35,13 @@ function handle(RegisterUserPermissionsEvent $event) { 'craftql:query:sections' => ['label' => \Craft::t('craftql', 'Query Sections')], 'craftql:query:fields' => ['label' => \Craft::t('craftql', 'Query Fields')], 'craftql:mutate:entries' => ['label' => \Craft::t('craftql', 'Mutate Entries'), 'nested' => $mutationTypes], - 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Globals') + 'craftql:mutate:globals' => ['label' => \Craft::t('craftql', 'Mutate Globals')], 'craftql:mutate:users' => [ 'label' => \Craft::t('craftql', 'Mutate Users'), 'nested' => [ 'craftql:mutate:users:self' => ['label' => \Craft::t('craftql', 'Mutate thier own user.')] ] - ], + ] ]; } } diff --git a/src/Models/Token.php b/src/Models/Token.php index f480ff9a..8a24df0f 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -116,7 +116,7 @@ public static function admin(): Token */ public function makeAdmin() { $this->admin = true; - $this->scopes = json_encode(['mutate:users:new' => 1]) + $this->scopes = json_encode(['mutate:users:new' => 1]); return $this; } diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index ddd6b9bd..68794fab 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -56,14 +56,14 @@ function boot() { ->resolve(function ($root, $args, $context, $info) { $values = $args; $token = $this->request->token(); - $new = empty($args['id']) + $new = empty($args['id']); if (!$new) { $userId = @$args['id']; unset($values['id']); if($token->canNot('mutate:users') && $token->canNot('mutate:users:self')) { - throw new UserError('unauthorized') + throw new UserError('unauthorized'); } $user = \craft\elements\User::find()->id($userId)->anyStatus()->one(); @@ -72,7 +72,7 @@ function boot() { } if($token->canNot('mutate:users') && $user->id != $token->getUser()->id) { - throw new UserError('unauthorized') + throw new UserError('unauthorized'); } } else { @@ -87,7 +87,7 @@ function boot() { } if(isset($values['password'])) { - $user->newPassword = $values['password'] + $user->newPassword = $values['password']; } $permissions = []; From c801b48416c47238210fad4c643724b8880362a0 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 20 Apr 2020 23:46:12 -0500 Subject: [PATCH 34/62] Adjust user mutation permissions --- .phplint-cache | 2 +- src/Listeners/GetUserPermissions.php | 2 ++ src/Types/Mutation.php | 8 ++++---- src/templates/scopes.html | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 3c5753e6..a9dc1a67 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"815514716d341f6f2fc9d58bd5889048","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"d29a82458213d2b171dd9338196e60d1","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"75dbdf3aa9bb2ae003c371462f4f4963","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"f03a46e7b847a4742953eccd8a0ce1ac","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"e706114b4600ade6bbe8011cfa1e51f1","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"d29a82458213d2b171dd9338196e60d1","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"75dbdf3aa9bb2ae003c371462f4f4963","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a"} \ No newline at end of file diff --git a/src/Listeners/GetUserPermissions.php b/src/Listeners/GetUserPermissions.php index d3ca9625..8a8340c2 100644 --- a/src/Listeners/GetUserPermissions.php +++ b/src/Listeners/GetUserPermissions.php @@ -39,6 +39,8 @@ function handle(RegisterUserPermissionsEvent $event) { 'craftql:mutate:users' => [ 'label' => \Craft::t('craftql', 'Mutate Users'), 'nested' => [ + 'craftql:mutate:users:all' => ['label' => \Craft::t('craftql', 'Mutate all users.')], + 'craftql:mutate:users:permissions' => ['label' => \Craft::t('craftql', 'Mutate users permissions.')], 'craftql:mutate:users:self' => ['label' => \Craft::t('craftql', 'Mutate thier own user.')] ] ] diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 68794fab..131ab9ee 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -50,7 +50,7 @@ function boot() { } } - if ($this->request->token()->can('mutate:users:new') || $this->request->token()->can('mutate:users') || $this->request->token()->can('mutate:users:self')) { + if ($token->canMatch('/^query:users/')) { $updateUser = $this->addField('upsertUser') ->type(User::class) ->resolve(function ($root, $args, $context, $info) { @@ -62,7 +62,7 @@ function boot() { $userId = @$args['id']; unset($values['id']); - if($token->canNot('mutate:users') && $token->canNot('mutate:users:self')) { + if($token->canNot('mutate:users:all') && $token->canNot('mutate:users:self')) { throw new UserError('unauthorized'); } @@ -71,7 +71,7 @@ function boot() { throw new UserError('Could not find user '.$userId); } - if($token->canNot('mutate:users') && $user->id != $token->getUser()->id) { + if($token->canNot('mutate:users:all') && $user->id != $token->getUser()->id) { throw new UserError('unauthorized'); } } @@ -126,7 +126,7 @@ function boot() { $updateUser->addStringArgument('email'); $updateUser->addStringArgument('password'); - if ($this->request->token()->can('mutate:userPermissions')) { + if ($this->request->token()->can('mutate:users:permissions')) { $updateUser->addStringArgument('permissions')->lists(); } diff --git a/src/templates/scopes.html b/src/templates/scopes.html index d38fbc5a..e8b8ca32 100644 --- a/src/templates/scopes.html +++ b/src/templates/scopes.html @@ -160,12 +160,12 @@

Mutation Fields

users Add and update users - {{ forms.lightswitch({"name": "scope[mutate:users]", "value": 1, "on": token.can("mutate:users"), "small": true}) }} + {{ forms.lightswitch({"name": "scope[mutate:users:all]", "value": 1, "on": token.can("mutate:users:all"), "small": true}) }} user.permissions Set user permissions - {{ forms.lightswitch({"name": "scope[mutate:userPermissions]", "value": 1, "on": token.can("mutate:users"), "small": true}) }} + {{ forms.lightswitch({"name": "scope[mutate:users:permissions]", "value": 1, "on": token.can("mutate:users:permissions"), "small": true}) }} globals From 4ec76a608fb36a2d49ce8df803e539d21a1b1a24 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 21 Apr 2020 00:00:04 -0500 Subject: [PATCH 35/62] Ignore Undefined Index errors when loading token scopes --- src/Models/Token.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Token.php b/src/Models/Token.php index 8a24df0f..9a3a6313 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -187,7 +187,7 @@ function getScopeArray(): array } function can($do): bool { - return $this->admin || $this->getScopeArray()[$do] ?: false; + return $this->admin || @$this->getScopeArray()[$do] ?: false; } function canNot($do): bool { From 592c83fb2ac110fa2dd89fab20aa9835436bd091 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 21 Apr 2020 00:15:15 -0500 Subject: [PATCH 36/62] Fix issue checking token for mutations --- .phplint-cache | 2 +- src/Types/Mutation.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index a9dc1a67..c1de9180 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"e706114b4600ade6bbe8011cfa1e51f1","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"d29a82458213d2b171dd9338196e60d1","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"75dbdf3aa9bb2ae003c371462f4f4963","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"75dbdf3aa9bb2ae003c371462f4f4963","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Types\/Mutation.php":"467477e0a606fd15a893745d146ebb3b","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Models\/Token.php":"d40c33bcfca68ed7c23d28628c3e6689"} \ No newline at end of file diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 131ab9ee..a40cd96a 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -50,7 +50,7 @@ function boot() { } } - if ($token->canMatch('/^query:users/')) { + if ($this->request->token()->canMatch('/^query:users/')) { $updateUser = $this->addField('upsertUser') ->type(User::class) ->resolve(function ($root, $args, $context, $info) { From 4e9c95199926bc9e8c7cf33ec81a136e738fe3c6 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 21 Apr 2020 00:35:36 -0500 Subject: [PATCH 37/62] Properly set registration permission on anonymous requests --- src/Models/Token.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Token.php b/src/Models/Token.php index 9a3a6313..c39a2243 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -116,7 +116,6 @@ public static function admin(): Token */ public function makeAdmin() { $this->admin = true; - $this->scopes = json_encode(['mutate:users:new' => 1]); return $this; } @@ -136,6 +135,7 @@ public static function anonymous(): Token { */ public function makeAnonymous() { $this->anonymous = true; + $this->scopes = json_encode(['mutate:users:new' => 1]); return $this; } From 7db90d5424caf4a6494d176cf322f74ba9404f11 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 24 Apr 2020 15:19:53 -0500 Subject: [PATCH 38/62] Check correct mutation permission regex --- src/Controllers/ApiController.php | 2 -- src/Types/Mutation.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 41aba088..153923d5 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -122,8 +122,6 @@ function actionIndex() Craft::debug('CraftQL: Executing query'); - $config = Craft::$app->getConfig()->getConfigFromFile('craftql'); - $result = CraftQL::getInstance()->graphQl->execute($schema, $input, $variables); if($useCache) { diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index a40cd96a..ebf9caf2 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -50,7 +50,7 @@ function boot() { } } - if ($this->request->token()->canMatch('/^query:users/')) { + if ($this->request->token()->canMatch('/^mutate:users/')) { $updateUser = $this->addField('upsertUser') ->type(User::class) ->resolve(function ($root, $args, $context, $info) { From d34a3f4273e8d5fa6b2af9075f0ed29eced0cd2b Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 24 Apr 2020 16:40:30 -0500 Subject: [PATCH 39/62] Unset password input after applying it --- src/Types/Mutation.php | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index ebf9caf2..e6660815 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -88,6 +88,7 @@ function boot() { if(isset($values['password'])) { $user->newPassword = $values['password']; + unset($values['password']); } $permissions = []; @@ -133,38 +134,6 @@ function boot() { $fieldLayout = Craft::$app->getFields()->getLayoutByType(\craft\elements\User::class); $updateUser->addArgumentsByLayoutId($fieldLayout->id); } - - // $fields['upsertField'] = [ - // 'type' => \markhuot\CraftQL\Types\Entry::interface($request), - // 'args' => [ - // 'id' => Type::nonNull(Type::int()), - // 'json' => Type::nonNull(Type::string()), - // ], - // 'resolve' => function ($root, $args) { - // $entry = \craft\elements\Entry::find(); - // $entry->id($args['id']); - // $entry = $entry->one(); - - // $json = json_decode($args['json'], true); - // $fieldData = []; - // foreach ($json as $fieldName => $value) { - // if (in_array($fieldName, ['title'])) { - // $entry->{$fieldName} = $value; - // } - // else { - // $fieldData[$fieldName] = $value; - // } - // } - - // if (!empty($fieldData)) { - // $entry->setFieldValues($fieldData); - // } - - // Craft::$app->elements->saveElement($entry); - - // return $entry; - // }, - // ]; } } From bf5330c5ccc312306cfb9920dbcbfe65f8dc77b7 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 24 Apr 2020 22:24:47 -0500 Subject: [PATCH 40/62] Support Returning JWT token on user when registering them --- .phplint-cache | 2 +- src/Types/Mutation.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.phplint-cache b/.phplint-cache index c1de9180..08ddd6e9 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"75dbdf3aa9bb2ae003c371462f4f4963","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Types\/Mutation.php":"467477e0a606fd15a893745d146ebb3b","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Models\/Token.php":"d40c33bcfca68ed7c23d28628c3e6689"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"212a0fea6cb9f3b27bfe1b4afe84e6ed","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340"} \ No newline at end of file diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index e6660815..9b22b849 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -53,6 +53,7 @@ function boot() { if ($this->request->token()->canMatch('/^mutate:users/')) { $updateUser = $this->addField('upsertUser') ->type(User::class) + ->addStringField('token') ->resolve(function ($root, $args, $context, $info) { $values = $args; $token = $this->request->token(); @@ -113,6 +114,13 @@ function boot() { } } + if($new) { + Craft::$app->users->assignUserToDefaultGroup($user); + $user->token = CraftQL::getInstance()->jwt->tokenForUser($user); + } else { + $user->token = null; + } + if (!empty($permissions)) { Craft::$app->getUserPermissions()->saveUserPermissions($user->id, $permissions); } From 81b781472e6254ea46c88b3baa89b56281ccc17d Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 24 Apr 2020 23:07:32 -0500 Subject: [PATCH 41/62] Add Token to User type --- src/Types/Mutation.php | 1 - src/Types/User.php | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 9b22b849..63e62294 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -53,7 +53,6 @@ function boot() { if ($this->request->token()->canMatch('/^mutate:users/')) { $updateUser = $this->addField('upsertUser') ->type(User::class) - ->addStringField('token') ->resolve(function ($root, $args, $context, $info) { $values = $args; $token = $this->request->token(); diff --git a/src/Types/User.php b/src/Types/User.php index d77ad8ab..bb5a588b 100644 --- a/src/Types/User.php +++ b/src/Types/User.php @@ -20,6 +20,11 @@ function boot() { $this->addBooleanField('admin')->nonNull(); $this->addBooleanField('isCurrent')->nonNull(); $this->addStringField('preferredLocale'); + $this->addStringField('token') + ->description('The active JWT token for the user. Only avalible for new users.') + ->resolve(function($root, $args, $context, $info) { + return $root->token ?? null; + }); // $this->addField('status')->type(UsersField::statusEnum())->nonNull(); $volumeId = Craft::$app->getSystemSettings()->getSetting('users', 'photoVolumeId'); From 49bc63731f9bedcbd2daa152991d2cd96bb534b7 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 15 May 2020 12:46:03 -0500 Subject: [PATCH 42/62] Disable Token setting to find bug --- src/Types/Mutation.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 63e62294..93394964 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -115,9 +115,9 @@ function boot() { if($new) { Craft::$app->users->assignUserToDefaultGroup($user); - $user->token = CraftQL::getInstance()->jwt->tokenForUser($user); + //$user->token = CraftQL::getInstance()->jwt->tokenForUser($user); } else { - $user->token = null; + //$user->token = null; } if (!empty($permissions)) { From 6426f90ebba70d613f544905ec9ffeb701f05ef1 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 22 May 2020 15:51:43 -0500 Subject: [PATCH 43/62] Apply Field Callbacks in User Mutation --- .phplint-cache | 2 +- src/Request.php | 3 - src/Types/Mutation.php | 151 ++++++++++++++++++++++------------------- 3 files changed, 81 insertions(+), 75 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 08ddd6e9..bdabc56b 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"e60557e8322950e14628353527ad4f44","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"9c1a60934f000da827427c04c2a3b3a2","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"212a0fea6cb9f3b27bfe1b4afe84e6ed","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"d943a846512efed1c7dc32cf3a2258ae","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340"} \ No newline at end of file diff --git a/src/Request.php b/src/Request.php index ba1c7fb7..b9f1c2bc 100644 --- a/src/Request.php +++ b/src/Request.php @@ -149,9 +149,6 @@ function entries($criteria, $root, $args, $context, $info) { unset($args['idNot']); } -// var_dump($args); -// die; - foreach ($args as $key => $value) { $criteria = $criteria->{$key}($value); } diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 93394964..71add321 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -52,94 +52,103 @@ function boot() { if ($this->request->token()->canMatch('/^mutate:users/')) { $updateUser = $this->addField('upsertUser') - ->type(User::class) - ->resolve(function ($root, $args, $context, $info) { - $values = $args; - $token = $this->request->token(); - $new = empty($args['id']); - - if (!$new) { - $userId = @$args['id']; - unset($values['id']); - - if($token->canNot('mutate:users:all') && $token->canNot('mutate:users:self')) { - throw new UserError('unauthorized'); - } + ->type(User::class); - $user = \craft\elements\User::find()->id($userId)->anyStatus()->one(); - if (!$user) { - throw new UserError('Could not find user '.$userId); - } + $updateUser->addIntArgument('id'); + $updateUser->addStringArgument('firstName'); + $updateUser->addStringArgument('lastName'); + $updateUser->addStringArgument('username'); + $updateUser->addStringArgument('email'); + $updateUser->addStringArgument('password'); - if($token->canNot('mutate:users:all') && $user->id != $token->getUser()->id) { - throw new UserError('unauthorized'); - } - } - else { - $user = new \craft\elements\User; - } + if ($this->request->token()->can('mutate:users:permissions')) { + $updateUser->addStringArgument('permissions')->lists(); + } - foreach (['firstName', 'lastName', 'username', 'email'] as $fieldName) { - if (isset($values[$fieldName])) { - $user->{$fieldName} = $values[$fieldName]; - unset($values[$fieldName]); - } - } + $fieldLayout = Craft::$app->getFields()->getLayoutByType(\craft\elements\User::class); + $updateUser->addArgumentsByLayoutId($fieldLayout->id); + + $updateUser->resolve(function ($root, $args, $context, $info) use ($updateUser) { + + $values = $args; + $token = $this->request->token(); + $new = empty($args['id']); - if(isset($values['password'])) { - $user->newPassword = $values['password']; - unset($values['password']); + if (!$new) { + $userId = @$args['id']; + unset($values['id']); + + if($token->canNot('mutate:users:all') && $token->canNot('mutate:users:self')) { + throw new UserError('unauthorized'); } - $permissions = []; - if (!empty($values['permissions'])) { - $permissions = $values['permissions']; - unset($values['permissions']); + $user = \craft\elements\User::find()->id($userId)->anyStatus()->one(); + if (!$user) { + throw new UserError('Could not find user '.$userId); } - if (!empty($values)) { - $user->setFieldValues($values); + if($token->canNot('mutate:users:all') && $user->id != $token->getUser()->id) { + throw new UserError('unauthorized'); + } + } + else { + $user = new \craft\elements\User; + } + + foreach (['firstName', 'lastName', 'username', 'email'] as $fieldName) { + if (isset($values[$fieldName])) { + $user->{$fieldName} = $values[$fieldName]; + unset($values[$fieldName]); + } + } + + if(isset($values['password'])) { + $user->newPassword = $values['password']; + unset($values['password']); + } + + $permissions = []; + if (!empty($values['permissions'])) { + $permissions = $values['permissions']; + unset($values['permissions']); + } + + foreach ($values as $handle => &$value) { + $callback = $updateUser->getArgument($handle)->getOnSave(); + if ($callback) { + $value = $callback($value); } + } - $user->setScenario(Element::SCENARIO_LIVE); + if (!empty($values)) { + $user->setFieldValues($values); + } - if (!Craft::$app->elements->saveElement($user)) { - if (!empty($user->getErrors())) { - foreach ($user->getErrors() as $key => $errors) { - foreach ($errors as $error) { - throw new UserError($error); - } + $user->setScenario(Element::SCENARIO_LIVE); + + if (!Craft::$app->elements->saveElement($user)) { + if (!empty($user->getErrors())) { + foreach ($user->getErrors() as $key => $errors) { + foreach ($errors as $error) { + throw new UserError($error); } } } + } - if($new) { - Craft::$app->users->assignUserToDefaultGroup($user); - //$user->token = CraftQL::getInstance()->jwt->tokenForUser($user); - } else { - //$user->token = null; - } - - if (!empty($permissions)) { - Craft::$app->getUserPermissions()->saveUserPermissions($user->id, $permissions); - } - - return $user; - }); - - $updateUser->addIntArgument('id'); - $updateUser->addStringArgument('firstName'); - $updateUser->addStringArgument('lastName'); - $updateUser->addStringArgument('username'); - $updateUser->addStringArgument('email'); - $updateUser->addStringArgument('password'); + if($new) { + Craft::$app->users->assignUserToDefaultGroup($user); + //$user->token = CraftQL::getInstance()->jwt->tokenForUser($user); + } else { + //$user->token = null; + } - if ($this->request->token()->can('mutate:users:permissions')) { - $updateUser->addStringArgument('permissions')->lists(); - } + if (!empty($permissions)) { + Craft::$app->getUserPermissions()->saveUserPermissions($user->id, $permissions); + } - $fieldLayout = Craft::$app->getFields()->getLayoutByType(\craft\elements\User::class); - $updateUser->addArgumentsByLayoutId($fieldLayout->id); + return $user; + }); } } From d2c7b83d0e5313cee03c6d84cbb6d9f4c952d5bc Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 3 Aug 2020 23:06:25 -0500 Subject: [PATCH 44/62] Add User Delete Mutation --- .phplint-cache | 2 +- src/Types/Mutation.php | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/.phplint-cache b/.phplint-cache index bdabc56b..8628286d 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e23722d200798051ebb3613a543df1ba","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"d943a846512efed1c7dc32cf3a2258ae","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"be2e90f2e6f4c92ba5497b6620b353bf","Request.php":"e3d6c81e2543c9a6799a381167226b7c"} \ No newline at end of file diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 71add321..ff550b61 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -150,6 +150,43 @@ function boot() { return $user; }); } + + if ($this->request->token()->canMatch('/^mutate:users/')) { + $deleteUser = $this->addField('deleteUser') + ->type(User::class); + + $deleteUser->addIntArgument('id')->nonNull(); + + $fieldLayout = Craft::$app->getFields()->getLayoutByType(\craft\elements\User::class); + + $deleteUser->resolve(function ($root, $args, $context, $info) use ($deleteUser) { + + $values = $args; + $token = $this->request->token(); + $userId = $args['id']; + + if($token->canNot('mutate:users:all') && $token->canNot('mutate:users:self')) { + throw new UserError('unauthorized'); + } + + $user = \craft\elements\User::find()->id($userId)->anyStatus()->one(); + if (!$user) { + throw new UserError('Could not find user '.$userId); + } + + if($token->canNot('mutate:users:all') && $user->id != $token->getUser()->id) { + throw new UserError('unauthorized'); + } + + $user->setScenario(Element::SCENARIO_LIVE); + + if (!Craft::$app->elements->deleteElement($user)) { + throw new UserError('delete.failed'); + } + + return $user; + }); + } } } From 9932f036c7be3fa085d7353c89acca5d037a5e9e Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Wed, 5 Aug 2020 00:20:38 -0500 Subject: [PATCH 45/62] Update graphql-php --- composer.json | 2 +- composer.lock | 3647 ++++++++++++++++--------------------------------- 2 files changed, 1164 insertions(+), 2485 deletions(-) diff --git a/composer.json b/composer.json index c093a6cc..cd4f02b2 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ ], "require": { "craftcms/cms": "^3.2.0", - "webonyx/graphql-php": "^0.12.0", + "webonyx/graphql-php": "^14.0.0", "react/http": "^0.7", "firebase/php-jwt": "^5.0.0" }, diff --git a/composer.lock b/composer.lock index 15ebf6d7..7c8565ac 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1808fcb2474e60a86dd38b258d6c9ded", + "content-hash": "28ed059f38f76f9712e9aeef423845c3", "packages": [ { "name": "cebe/markdown", @@ -262,16 +262,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.3", + "version": "1.5.4", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" + "reference": "6946f785871e2314c60b4524851f3702ea4f2223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223", + "reference": "6946f785871e2314c60b4524851f3702ea4f2223", "shasum": "" }, "require": { @@ -318,20 +318,20 @@ "spdx", "validator" ], - "time": "2020-02-14T07:44:31+00:00" + "time": "2020-07-15T15:35:07+00:00" }, { "name": "craftcms/cms", - "version": "3.4.15", + "version": "3.2.10", "source": { "type": "git", "url": "https://github.com/craftcms/cms.git", - "reference": "2fc56f0bcd70a1ae67e9338512e053b896f4a47e" + "reference": "620fa9e16ae1d6d205868754959c459f55128da2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/cms/zipball/2fc56f0bcd70a1ae67e9338512e053b896f4a47e", - "reference": "2fc56f0bcd70a1ae67e9338512e053b896f4a47e", + "url": "https://api.github.com/repos/craftcms/cms/zipball/620fa9e16ae1d6d205868754959c459f55128da2", + "reference": "620fa9e16ae1d6d205868754959c459f55128da2", "shasum": "" }, "require": { @@ -340,8 +340,9 @@ "craftcms/plugin-installer": "~1.5.3", "craftcms/server-check": "~1.1.0", "creocoder/yii2-nested-sets": "~0.9.0", + "danielstjules/stringy": "^3.1.0", "elvanto/litemoji": "^1.3.1", - "enshrined/svg-sanitize": "~0.13.2", + "enshrined/svg-sanitize": "~0.9.0", "ext-curl": "*", "ext-dom": "*", "ext-json": "*", @@ -350,40 +351,35 @@ "ext-pcre": "*", "ext-pdo": "*", "ext-zip": "*", - "guzzlehttp/guzzle": ">=6.3.0 <6.5.0 || ^6.5.1", - "laminas/laminas-feed": "^2.12.0", + "guzzlehttp/guzzle": "^6.3.0", "league/flysystem": "^1.0.35", "league/oauth2-client": "^2.2.1", "mikehaertl/php-shellcommand": "^1.2.5", - "mrclay/jsmin-php": "^2.4", - "mrclay/minify": "^3.0.7", "php": ">=7.0.0", "pixelandtonic/imagine": "~1.2.2.1", "seld/cli-prompt": "^1.0.3", "symfony/yaml": "^3.2|^4.0", "true/punycode": "^2.1.0", - "twig/twig": "~2.12.0", - "voku/portable-utf8": "^5.4.28", - "voku/stringy": "~5.1.0", - "webonyx/graphql-php": "^0.12.0", + "twig/twig": "~2.11.0", "yii2tech/ar-softdelete": "^1.0.2", - "yiisoft/yii2": "~2.0.34.0", - "yiisoft/yii2-debug": "^2.1.0", - "yiisoft/yii2-queue": "~2.3.0", - "yiisoft/yii2-shell": "^2.0.2", - "yiisoft/yii2-swiftmailer": "^2.1.0" + "yiisoft/yii2": "~2.0.21.0", + "yiisoft/yii2-debug": "^2.0.10", + "yiisoft/yii2-queue": "2.1.0", + "yiisoft/yii2-swiftmailer": "^2.1.0", + "zendframework/zend-feed": "^2.8.0" }, "conflict": { "league/oauth2-client": "2.4.0" }, "provide": { + "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*", "bower-asset/inputmask": "~3.2.2 | ~3.3.5", - "bower-asset/jquery": "3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", + "bower-asset/jquery": "3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", "bower-asset/punycode": "1.3.*", "bower-asset/yii2-pjax": "~2.0.1" }, "require-dev": { - "codeception/codeception": "^3.1.0", + "codeception/codeception": "^3.0", "codeception/mockery-module": "^0.3", "codeception/phpunit-wrapper": "^7.7", "codeception/specify": "^0.4", @@ -400,8 +396,7 @@ "type": "library", "autoload": { "psr-4": { - "craft\\": "src/", - "crafttests\\fixtures\\": "tests/fixtures/" + "craft\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -415,7 +410,7 @@ "craftcms", "yii2" ], - "time": "2020-04-09T17:45:41+00:00" + "time": "2019-08-13T15:50:41+00:00" }, { "name": "craftcms/oauth2-craftid", @@ -470,20 +465,23 @@ }, { "name": "craftcms/plugin-installer", - "version": "1.5.4", + "version": "1.5.5", "source": { "type": "git", "url": "https://github.com/craftcms/plugin-installer.git", - "reference": "4989a9d57babdf53da0bd70cf6a3145635d653e8" + "reference": "42c23ded70ccadf7dea7eab28660d7808dd3022a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/4989a9d57babdf53da0bd70cf6a3145635d653e8", - "reference": "4989a9d57babdf53da0bd70cf6a3145635d653e8", + "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/42c23ded70ccadf7dea7eab28660d7808dd3022a", + "reference": "42c23ded70ccadf7dea7eab28660d7808dd3022a", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0" + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^1.0 || ^2.0" }, "type": "composer-plugin", "extra": { @@ -507,20 +505,20 @@ "installer", "plugin" ], - "time": "2019-05-23T13:16:39+00:00" + "time": "2020-04-17T23:11:17+00:00" }, { "name": "craftcms/server-check", - "version": "1.1.8", + "version": "1.1.9", "source": { "type": "git", "url": "https://github.com/craftcms/server-check.git", - "reference": "a7b6c172b631ec822fbdccbe011dbcf77395a9ee" + "reference": "579fd9ac93580800330695c5d38ca6decb6601ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/server-check/zipball/a7b6c172b631ec822fbdccbe011dbcf77395a9ee", - "reference": "a7b6c172b631ec822fbdccbe011dbcf77395a9ee", + "url": "https://api.github.com/repos/craftcms/server-check/zipball/579fd9ac93580800330695c5d38ca6decb6601ac", + "reference": "579fd9ac93580800330695c5d38ca6decb6601ac", "shasum": "" }, "type": "library", @@ -541,7 +539,7 @@ "requirements", "yii2" ], - "time": "2020-01-17T22:23:26+00:00" + "time": "2020-07-14T18:57:12+00:00" }, { "name": "creocoder/yii2-nested-sets", @@ -584,54 +582,77 @@ "time": "2015-01-27T10:53:51+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", + "name": "danielstjules/stringy", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + "url": "https://github.com/danielstjules/Stringy.git", + "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", + "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.4.0", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + "phpunit/phpunit": "~4.0" }, "type": "library", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" - } + "Stringy\\": "src/" + }, + "files": [ + "src/Create.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "implementation of xdg base directory specification for php", - "time": "2019-12-04T15:06:13+00:00" + "authors": [ + { + "name": "Daniel St. Jules", + "email": "danielst.jules@gmail.com", + "homepage": "http://www.danielstjules.com" + } + ], + "description": "A string manipulation library with multibyte support", + "homepage": "https://github.com/danielstjules/Stringy", + "keywords": [ + "UTF", + "helpers", + "manipulation", + "methods", + "multibyte", + "string", + "utf-8", + "utility", + "utils" + ], + "time": "2017-06-12T01:10:27+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -676,20 +697,20 @@ "parser", "php" ], - "time": "2019-10-30T14:39:59+00:00" + "time": "2020-05-25T17:44:05+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.17", + "version": "2.1.18", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" + "reference": "cfa3d44471c7f5bfb684ac2b0da7114283d78441" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/cfa3d44471c7f5bfb684ac2b0da7114283d78441", + "reference": "cfa3d44471c7f5bfb684ac2b0da7114283d78441", "shasum": "" }, "require": { @@ -713,7 +734,7 @@ }, "autoload": { "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" + "Egulias\\EmailValidator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -734,7 +755,7 @@ "validation", "validator" ], - "time": "2020-02-13T22:36:52+00:00" + "time": "2020-06-16T20:11:17+00:00" }, { "name": "elvanto/litemoji", @@ -776,22 +797,18 @@ }, { "name": "enshrined/svg-sanitize", - "version": "0.13.3", + "version": "0.9.2", "source": { "type": "git", "url": "https://github.com/darylldoyle/svg-sanitizer.git", - "reference": "bc66593f255b7d2613d8f22041180036979b6403" + "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/bc66593f255b7d2613d8f22041180036979b6403", - "reference": "bc66593f255b7d2613d8f22041180036979b6403", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/e0cb5ad3abea5459e0962cf79a92d34714c74dfa", + "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa", "shasum": "" }, - "require": { - "ext-dom": "*", - "ext-libxml": "*" - }, "require-dev": { "codeclimate/php-test-reporter": "^0.1.2", "phpunit/phpunit": "^6" @@ -804,7 +821,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0-or-later" + "GPL-2.0+" ], "authors": [ { @@ -813,7 +830,7 @@ } ], "description": "An SVG sanitizer for PHP", - "time": "2020-01-20T01:34:17+00:00" + "time": "2018-10-01T17:11:02+00:00" }, { "name": "evenement/evenement", @@ -860,16 +877,16 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.12.0", + "version": "v4.13.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "a617e55bc62a87eec73bd456d146d134ad716f03" + "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/a617e55bc62a87eec73bd456d146d134ad716f03", - "reference": "a617e55bc62a87eec73bd456d146d134ad716f03", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75", + "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75", "shasum": "" }, "require": { @@ -885,6 +902,9 @@ }, "files": [ "library/HTMLPurifier.composer.php" + ], + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -903,7 +923,7 @@ "keywords": [ "html" ], - "time": "2019-10-28T03:44:26+00:00" + "time": "2020-06-29T00:56:53+00:00" }, { "name": "firebase/php-jwt", @@ -957,23 +977,24 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.2", + "version": "6.5.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" }, "require-dev": { "ext-curl": "*", @@ -981,7 +1002,6 @@ "psr/log": "^1.1" }, "suggest": { - "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", @@ -1020,7 +1040,7 @@ "rest", "web service" ], - "time": "2019-12-23T11:57:10+00:00" + "time": "2020-06-16T21:01:06+00:00" }, { "name": "guzzlehttp/promises", @@ -1144,165 +1164,18 @@ ], "time": "2019-07-01T23:21:34+00:00" }, - { - "name": "intervention/httpauth", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/Intervention/httpauth.git", - "reference": "825202e88c0918f5249bd5af6ff1fb8ef6e3271e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/httpauth/zipball/825202e88c0918f5249bd5af6ff1fb8ef6e3271e", - "reference": "825202e88c0918f5249bd5af6ff1fb8ef6e3271e", - "shasum": "" - }, - "require": { - "php": "^7.2" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.11", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Intervention\\HttpAuth\\Laravel\\HttpAuthServiceProvider" - ], - "aliases": { - "HttpAuth": "Intervention\\HttpAuth\\Laravel\\Facades\\HttpAuth" - } - } - }, - "autoload": { - "psr-4": { - "Intervention\\HttpAuth\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@olivervogel.com", - "homepage": "https://olivervogel.com/" - } - ], - "description": "HTTP authentication (Basic & Digest) including ServiceProviders for easy Laravel integration", - "homepage": "https://github.com/Intervention/httpauth", - "keywords": [ - "Authentication", - "http", - "laravel" - ], - "time": "2020-03-09T16:18:28+00:00" - }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "abandoned": "php-parallel-lint/php-console-color", - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "abandoned": "php-parallel-lint/php-console-highlighter", - "time": "2018-09-29T18:48:56+00:00" - }, { "name": "justinrainbow/json-schema", - "version": "5.2.9", + "version": "5.2.10", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", "shasum": "" }, "require": { @@ -1355,7 +1228,7 @@ "json", "schema" ], - "time": "2019-09-25T14:49:45+00:00" + "time": "2020-05-27T16:41:55+00:00" }, { "name": "laminas/laminas-escaper", @@ -1525,16 +1398,16 @@ }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9" + "reference": "fcd87520e4943d968557803919523772475e8ea3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", - "reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3", + "reference": "fcd87520e4943d968557803919523772475e8ea3", "shasum": "" }, "require": { @@ -1573,20 +1446,20 @@ "laminas", "zf" ], - "time": "2020-04-03T16:01:00+00:00" + "time": "2020-05-20T16:45:56+00:00" }, { "name": "league/flysystem", - "version": "1.0.67", + "version": "1.0.70", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e" + "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", - "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/585824702f534f8d3cf7fab7225e8466cc4b7493", + "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493", "shasum": "" }, "require": { @@ -1597,7 +1470,7 @@ "league/flysystem-sftp": "<1.0.6" }, "require-dev": { - "phpspec/phpspec": "^3.4", + "phpspec/phpspec": "^3.4 || ^4.0 || ^5.0 || ^6.0", "phpunit/phpunit": "^5.7.26" }, "suggest": { @@ -1657,24 +1530,24 @@ "sftp", "storage" ], - "time": "2020-04-16T13:21:26+00:00" + "time": "2020-07-26T07:20:36+00:00" }, { "name": "league/oauth2-client", - "version": "2.4.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "cc114abc622a53af969e8664722e84ca36257530" + "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/cc114abc622a53af969e8664722e84ca36257530", - "reference": "cc114abc622a53af969e8664722e84ca36257530", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb", + "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", + "guzzlehttp/guzzle": "^6.0 || ^7.0", "paragonie/random_compat": "^1|^2|^9.99", "php": "^5.6|^7.0" }, @@ -1724,59 +1597,7 @@ "oauth2", "single sign on" ], - "time": "2018-11-22T18:33:57+00:00" - }, - { - "name": "marcusschwarz/lesserphp", - "version": "v0.5.4", - "source": { - "type": "git", - "url": "https://github.com/MarcusSchwarz/lesserphp.git", - "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MarcusSchwarz/lesserphp/zipball/3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e", - "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4.3" - }, - "bin": [ - "plessc" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.1-dev" - } - }, - "autoload": { - "classmap": [ - "lessc.inc.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT", - "GPL-3.0" - ], - "authors": [ - { - "name": "Leaf Corcoran", - "email": "leafot@gmail.com", - "homepage": "http://leafo.net" - }, - { - "name": "Marcus Schwarz", - "email": "github@maswaba.de", - "homepage": "https://www.maswaba.de" - } - ], - "description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.", - "homepage": "http://leafo.net/lessphp/", - "time": "2020-01-19T19:18:49+00:00" + "time": "2020-07-18T17:54:32+00:00" }, { "name": "mikehaertl/php-shellcommand", @@ -1818,65 +1639,39 @@ "time": "2019-12-20T08:48:10+00:00" }, { - "name": "monolog/monolog", - "version": "2.0.2", + "name": "opis/closure", + "version": "3.5.5", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" + "url": "https://github.com/opis/closure.git", + "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", + "url": "https://api.github.com/repos/opis/closure/zipball/dec9fc5ecfca93f45cd6121f8e6f14457dff372c", + "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c", "shasum": "" }, "require": { - "php": "^7.2", - "psr/log": "^1.0.1" - }, - "provide": { - "psr/log-implementation": "1.0.0" + "php": "^5.4 || ^7.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^6.0", - "graylog2/gelf-php": "^1.4.2", - "jakub-onderka/php-parallel-lint": "^0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpunit/phpunit": "^8.3", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90 <3.0", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "3.5.x-dev" } }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" - } + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1884,161 +1679,155 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", "keywords": [ - "log", - "logging", - "psr-3" + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" ], - "time": "2019-12-20T14:22:59+00:00" + "time": "2020-06-17T14:59:55+00:00" }, { - "name": "mrclay/jsmin-php", - "version": "2.4.0", + "name": "paragonie/random_compat", + "version": "v9.99.99", "source": { "type": "git", - "url": "https://github.com/mrclay/jsmin-php.git", - "reference": "bb05febc9440852d39899255afd5569b7f21a72c" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/bb05febc9440852d39899255afd5569b7f21a72c", - "reference": "bb05febc9440852d39899255afd5569b7f21a72c", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", "shasum": "" }, "require": { - "ext-pcre": "*", - "php": ">=5.3.0" + "php": "^7" }, "require-dev": { - "phpunit/phpunit": "4.2" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, - "type": "library", - "autoload": { - "psr-0": { - "JSMin\\": "src/" - } + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, + "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Stephen Clay", - "email": "steve@mrclay.org", - "role": "Developer" - }, - { - "name": "Ryan Grove", - "email": "ryan@wonko.com", - "role": "Developer" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.", - "homepage": "https://github.com/mrclay/jsmin-php/", + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ - "compress", - "jsmin", - "minify" + "csprng", + "polyfill", + "pseudorandom", + "random" ], - "time": "2018-12-06T15:03:38+00:00" + "time": "2018-07-02T15:55:56+00:00" }, { - "name": "mrclay/minify", - "version": "3.0.10", + "name": "pixelandtonic/imagine", + "version": "1.2.2.1", "source": { "type": "git", - "url": "https://github.com/mrclay/minify.git", - "reference": "8dba84a2d24ae6382057a1215ad3af25202addb9" + "url": "https://github.com/pixelandtonic/Imagine.git", + "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mrclay/minify/zipball/8dba84a2d24ae6382057a1215ad3af25202addb9", - "reference": "8dba84a2d24ae6382057a1215ad3af25202addb9", + "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/c70db7d7f6bd6fb0abc7562bdabe51265af2518b", + "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b", "shasum": "" }, "require": { - "ext-pcre": "*", - "intervention/httpauth": "^2.0|^3.0", - "marcusschwarz/lesserphp": "^0.5.1", - "monolog/monolog": "~1.1|~2.0", - "mrclay/jsmin-php": "~2", - "mrclay/props-dic": "^2.2|^3.0", - "php": "^5.3.0 || ^7.0", - "tubalmartin/cssmin": "~4" + "php": ">=5.3.2" }, "require-dev": { - "firephp/firephp-core": "~0.4.0", - "leafo/scssphp": "^0.3 || ^0.6 || ^0.7", - "meenie/javascript-packer": "~1.1", - "phpunit/phpunit": "^4.8.36", - "tedivm/jshrink": "~1.1.0" + "friendsofphp/php-cs-fixer": "2.2.*", + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.4 || ^8.2" }, "suggest": { - "firephp/firephp-core": "Use FirePHP for Log messages", - "meenie/javascript-packer": "Keep track of the Packer PHP port using Composer" + "ext-gd": "to use the GD implementation", + "ext-gmagick": "to use the Gmagick implementation", + "ext-imagick": "to use the Imagick implementation" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-develop": "0.7-dev" } }, "autoload": { - "classmap": [ - "lib/" - ] + "psr-4": { + "Imagine\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Stephen Clay", - "email": "steve@mrclay.org", - "role": "Developer" + "name": "Bulat Shakirzyanov", + "email": "mallluhuct@gmail.com", + "homepage": "http://avalanche123.com" } ], - "description": "Minify is a PHP app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", - "homepage": "https://github.com/mrclay/minify", - "time": "2020-04-02T19:47:26+00:00" - }, - { - "name": "mrclay/props-dic", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/mrclay/Props.git", - "reference": "0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843" + "description": "Image processing for PHP 5.3", + "homepage": "http://imagine.readthedocs.org/", + "keywords": [ + "drawing", + "graphics", + "image manipulation", + "image processing" + ], + "time": "2019-07-19T12:55:50+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mrclay/Props/zipball/0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843", - "reference": "0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { - "php": ">=5.3.3", - "pimple/pimple": "~3.0", - "psr/container": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "psr-0": { - "Props\\": [ - "src/" - ] + "psr-4": { + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2047,107 +1836,98 @@ ], "authors": [ { - "name": "Steve Clay", - "email": "steve@mrclay.org", - "homepage": "http://www.mrclay.org/" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Props is a simple DI container that allows retrieving values via custom property and method names", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ + "PSR-11", "container", - "dependency injection", - "dependency injection container", - "di", - "di container" + "container-interface", + "container-interop", + "psr" ], - "time": "2019-11-26T17:56:10+00:00" + "time": "2017-02-14T16:28:37+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.4.0", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" + "php": ">=5.3.0" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A PHP parser written in PHP", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "parser", - "php" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], - "time": "2020-04-10T16:34:50+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "opis/closure", - "version": "3.5.1", + "name": "psr/log", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.5.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] + "Psr\\Log\\": "Psr/Log/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2155,1324 +1935,261 @@ ], "authors": [ { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" + "log", + "psr", + "psr-3" ], - "time": "2019-11-29T22:36:02+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { - "name": "paragonie/random_compat", - "version": "v9.99.99", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": "^7" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "name": "react/cache", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "url": "https://github.com/reactphp/cache.git", + "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466", + "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.3.0", + "react/promise": "~2.0|~1.1" }, "require-dev": { - "phpunit/phpunit": "~6" + "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "React\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Async, Promise-based cache interface for ReactPHP", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "cache", + "caching", + "promise", + "reactphp" ], - "time": "2018-08-07T13:53:10+00:00" + "time": "2019-07-11T13:45:28+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "name": "react/dns", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "url": "https://github.com/reactphp/dns.git", + "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/reactphp/dns/zipball/89d83794e959ef3e0f1ab792f070b0157de1abf2", + "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.0 || ^0.5", + "react/promise": "^3.0 || ^2.7 || ^1.2.1", + "react/promise-timer": "^1.2" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "clue/block-react": "^1.2", + "phpunit/phpunit": "^9.0 || ^4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "React\\Dns\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" + "time": "2020-07-10T12:12:50+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.1.0", + "name": "react/event-loop", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + "url": "https://github.com/reactphp/event-loop.git", + "reference": "6d24de090cd59cfc830263cfba965be77b563c13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13", + "reference": "6d24de090cd59cfc830263cfba965be77b563c13", "shasum": "" }, "require": { - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0" + "php": ">=5.3.0" }, "require-dev": { - "ext-tokenizer": "^7.2", - "mockery/mockery": "~1" + "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } + "suggest": { + "ext-event": "~1.0 for ExtEventLoop", + "ext-pcntl": "For signal handling support when using the StreamSelectLoop", + "ext-uv": "* for ExtUvLoop" }, + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "React\\EventLoop\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-02-18T18:59:58+00:00" + "time": "2020-01-01T18:39:52+00:00" }, { - "name": "pimple/pimple", - "version": "v3.3.0", + "name": "react/http", + "version": "v0.7.4", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930" + "url": "https://github.com/reactphp/http.git", + "reference": "6646135c01097b5316d2cb47bc12e541bf26efae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930", - "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930", + "url": "https://api.github.com/repos/reactphp/http/zipball/6646135c01097b5316d2cb47bc12e541bf26efae", + "reference": "6646135c01097b5316d2cb47bc12e541bf26efae", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/container": "^1.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/promise": "^2.3 || ^1.2.1", + "react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5", + "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6", + "ringcentral/psr7": "^1.2" }, "require-dev": { - "symfony/phpunit-bridge": "^3.4|^4.4|^5.0" + "clue/block-react": "^1.1", + "phpunit/phpunit": "^4.8.10||^5.0", + "react/promise-stream": "^0.1.1", + "react/socket": "^1.0 || ^0.8 || ^0.7" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "React\\Http\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2020-03-03T09:12:48+00:00" - }, - { - "name": "pixelandtonic/imagine", - "version": "1.2.2.1", - "source": { - "type": "git", - "url": "https://github.com/pixelandtonic/Imagine.git", - "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/c70db7d7f6bd6fb0abc7562bdabe51265af2518b", - "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "2.2.*", - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.4 || ^8.2" - }, - "suggest": { - "ext-gd": "to use the GD implementation", - "ext-gmagick": "to use the Gmagick implementation", - "ext-imagick": "to use the Imagick implementation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.7-dev" - } - }, - "autoload": { - "psr-4": { - "Imagine\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bulat Shakirzyanov", - "email": "mallluhuct@gmail.com", - "homepage": "http://avalanche123.com" - } - ], - "description": "Image processing for PHP 5.3", - "homepage": "http://imagine.readthedocs.org/", - "keywords": [ - "drawing", - "graphics", - "image manipulation", - "image processing" - ], - "time": "2019-07-19T12:55:50+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2020-03-23T09:12:05+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.9.12", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", - "shasum": "" - }, - "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", - "ext-json": "*", - "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.9.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "time": "2019-12-06T14:19:43+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "react/cache", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466", - "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/promise": "~2.0|~1.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": [ - "cache", - "caching", - "promise", - "reactphp" - ], - "time": "2019-07-11T13:45:28+00:00" - }, - { - "name": "react/dns", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "a214d90c2884dac18d0cac6176202f247b66d762" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/a214d90c2884dac18d0cac6176202f247b66d762", - "reference": "a214d90c2884dac18d0cac6176202f247b66d762", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.0 || ^0.5", - "react/promise": "^2.7 || ^1.2.1", - "react/promise-timer": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Dns\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" - ], - "time": "2019-08-15T09:06:31+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "6d24de090cd59cfc830263cfba965be77b563c13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13", - "reference": "6d24de090cd59cfc830263cfba965be77b563c13", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "time": "2020-01-01T18:39:52+00:00" - }, - { - "name": "react/http", - "version": "v0.7.4", - "source": { - "type": "git", - "url": "https://github.com/reactphp/http.git", - "reference": "6646135c01097b5316d2cb47bc12e541bf26efae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/http/zipball/6646135c01097b5316d2cb47bc12e541bf26efae", - "reference": "6646135c01097b5316d2cb47bc12e541bf26efae", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/promise": "^2.3 || ^1.2.1", - "react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5", - "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6", - "ringcentral/psr7": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.1", - "phpunit/phpunit": "^4.8.10||^5.0", - "react/promise-stream": "^0.1.1", - "react/socket": "^1.0 || ^0.8 || ^0.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Http\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Event-driven, streaming plaintext HTTP and secure HTTPS server for ReactPHP", - "keywords": [ - "event-driven", - "http", - "https", - "reactphp", - "server", - "streaming" - ], - "time": "2017-08-16T15:24:39+00:00" - }, - { - "name": "react/promise", - "version": "v2.7.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "time": "2019-01-07T21:25:54+00:00" - }, - { - "name": "react/promise-timer", - "version": "v1.5.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-timer.git", - "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc", - "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", - "react/promise": "^2.7.0 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\Timer\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@lueck.tv" - } - ], - "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", - "homepage": "https://github.com/reactphp/promise-timer", - "keywords": [ - "async", - "event-loop", - "promise", - "reactphp", - "timeout", - "timer" - ], - "time": "2019-03-27T18:10:32+00:00" - }, - { - "name": "react/socket", - "version": "v1.4.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "97522e24987365e1ed873f0f4884900747a668e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/97522e24987365e1ed873f0f4884900747a668e0", - "reference": "97522e24987365e1ed873f0f4884900747a668e0", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.1", - "react/event-loop": "^1.0 || ^0.5", - "react/promise": "^2.6.0 || ^1.2.1", - "react/promise-timer": "^1.4.0", - "react/stream": "^1.1" - }, - "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^7.5 || ^6.4 || ^5.7 || ^4.8.35", - "react/promise-stream": "^1.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Socket\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], - "time": "2020-03-12T12:15:14+00:00" - }, - { - "name": "react/stream", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6", - "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Stream\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" - ], - "time": "2019-01-01T16:15:09+00:00" - }, - { - "name": "ringcentral/psr7", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ringcentral/psr7.git", - "reference": "dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ringcentral/psr7/zipball/dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c", - "reference": "dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "RingCentral\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "PSR-7 message implementation", - "keywords": [ - "http", - "message", - "stream", - "uri" - ], - "time": "2018-01-15T21:00:49+00:00" - }, - { - "name": "seld/cli-prompt", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\CliPrompt\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", - "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" - ], - "time": "2017-03-18T11:32:45+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.7.2", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "time": "2019-10-24T14:27:39+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ], - "time": "2020-02-14T15:25:33+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "shasum": "" - }, - "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2019-11-12T09:31:26+00:00" - }, - { - "name": "symfony/console", - "version": "v4.4.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", - "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "description": "Event-driven, streaming plaintext HTTP and secure HTTPS server for ReactPHP", + "keywords": [ + "event-driven", + "http", + "https", + "reactphp", + "server", + "streaming" ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2020-03-30T11:41:10+00:00" + "time": "2017-08-16T15:24:39+00:00" }, { - "name": "symfony/filesystem", - "version": "v4.4.7", + "name": "react/promise", + "version": "v2.8.0", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "fe297193bf2e6866ed900ed2d5869362768df6a7" + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/fe297193bf2e6866ed900ed2d5869362768df6a7", - "reference": "fe297193bf2e6866ed900ed2d5869362768df6a7", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=5.4.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "React\\Promise\\": "src/" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3481,47 +2198,46 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" } ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "time": "2020-05-12T15:16:56+00:00" }, { - "name": "symfony/finder", - "version": "v4.4.7", + "name": "react/promise-timer", + "version": "v1.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "5729f943f9854c5781984ed4907bbb817735776b" + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", - "reference": "5729f943f9854c5781984ed4907bbb817735776b", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6", + "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=5.3", + "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", + "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } + "require-dev": { + "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "React\\Promise\\Timer\\": "src/" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3530,167 +2246,152 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Christian Lück", + "email": "christian@lueck.tv" } ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", + "homepage": "https://github.com/reactphp/promise-timer", + "keywords": [ + "async", + "event-loop", + "promise", + "reactphp", + "timeout", + "timer" + ], + "time": "2020-07-10T12:18:06+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.15.0", + "name": "react/socket", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14" + "url": "https://github.com/reactphp/socket.git", + "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14", - "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14", + "url": "https://api.github.com/repos/reactphp/socket/zipball/842dcd71df86671ee9491734035b3d2cf4a80ece", + "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece", "shasum": "" }, "require": { - "php": ">=5.3.3" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.1", + "react/event-loop": "^1.0 || ^0.5", + "react/promise": "^2.6.0 || ^1.2.1", + "react/promise-timer": "^1.4.0", + "react/stream": "^1.1" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "clue/block-react": "^1.2", + "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35", + "react/promise-stream": "^1.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] + "React\\Socket\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "Connection", + "Socket", + "async", + "reactphp", + "stream" ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2020-07-01T12:50:00+00:00" }, { - "name": "symfony/polyfill-iconv", - "version": "v1.15.0", + "name": "react/stream", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" + "url": "https://github.com/reactphp/stream.git", + "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", + "url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", + "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" }, - "suggest": { - "ext-iconv": "For best performance" + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, - "files": [ - "bootstrap.php" - ] + "React\\Stream\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2020-05-04T10:17:57+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.15.0", + "name": "ringcentral/psr7", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b6786f69dd7b062390582f20520ab4918283217e" + "url": "https://github.com/ringcentral/psr7.git", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b6786f69dd7b062390582f20520ab4918283217e", - "reference": "b6786f69dd7b062390582f20520ab4918283217e", + "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3", + "psr/http-message": "~1.0" }, - "suggest": { - "ext-intl": "For best performance" + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + "RingCentral\\Psr7\\": "src/" }, "files": [ - "bootstrap.php" + "src/functions_include.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3699,61 +2400,47 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", + "description": "PSR-7 message implementation", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "http", + "message", + "stream", + "uri" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2018-05-29T20:21:04+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.15.0", + "name": "seld/cli-prompt", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf" + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", - "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=5.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Seld\\CliPrompt\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3761,62 +2448,48 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + "cli", + "console", + "hidden", + "input", + "prompt" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2017-03-18T11:32:45+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.15.0", + "name": "seld/jsonlint", + "version": "1.8.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "e62715f03f90dd8d2f3eb5daa21b4d19d71aebde" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/e62715f03f90dd8d2f3eb5daa21b4d19d71aebde", - "reference": "e62715f03f90dd8d2f3eb5daa21b4d19d71aebde", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.3 || ^7.0 || ^8.0" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, + "bin": [ + "bin/jsonlint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3824,59 +2497,47 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", + "description": "JSON Linter", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "json", + "linter", + "parser", + "validator" ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2020-04-30T19:05:18+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.15.0", + "name": "seld/phar-utils", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac" + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac", - "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" + "php": ">=5.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Seld\\PharUtils\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3884,54 +2545,54 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "phar" ], - "time": "2020-03-09T19:04:49+00:00" + "time": "2020-07-07T18:42:57+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.15.0", + "name": "swiftmailer/swiftmailer", + "version": "v6.2.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "37b0976c78b94856543260ce09b460a7bc852747" + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747", - "reference": "37b0976c78b94856543260ce09b460a7bc852747", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", "shasum": "" }, "require": { - "php": ">=5.3.3" + "egulias/email-validator": "~2.0", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses", + "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "6.2-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ - "bootstrap.php" + "lib/swift_required.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3940,56 +2601,79 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Chris Corbyn" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "email", + "mail", + "mailer" ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2019-11-12T09:31:26+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.15.0", + "name": "symfony/console", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7" + "url": "https://github.com/symfony/console.git", + "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", - "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", + "url": "https://api.github.com/repos/symfony/console/zipball/55d07021da933dd0d633ffdab6f45d5b230c7e02", + "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Component\\Console\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3998,40 +2682,35 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony Console Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-02-27T09:26:54+00:00" + "time": "2020-07-06T13:18:39+00:00" }, { - "name": "symfony/process", - "version": "v4.4.7", + "name": "symfony/filesystem", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3" + "url": "https://github.com/symfony/filesystem.git", + "reference": "b27f491309db5757816db672b256ea2e03677d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3e40e87a20eaf83a1db825e1fa5097ae89042db3", - "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b27f491309db5757816db672b256ea2e03677d30", + "reference": "b27f491309db5757816db672b256ea2e03677d30", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -4041,7 +2720,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4061,41 +2740,40 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-05-30T18:50:54+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.0.1", + "name": "symfony/finder", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" + "url": "https://github.com/symfony/finder.git", + "reference": "2727aa35fddfada1dd37599948528e9b152eb742" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "url": "https://api.github.com/repos/symfony/finder/zipball/2727aa35fddfada1dd37599948528e9b152eb742", + "reference": "2727aa35fddfada1dd37599948528e9b152eb742", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" + "php": ">=7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4103,77 +2781,54 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to writing services", + "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-07-05T09:39:30+00:00" }, { - "name": "symfony/var-dumper", - "version": "v5.0.7", + "name": "symfony/polyfill-ctype", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "f74a126acd701392eef2492a17228d42552c86b5" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f74a126acd701392eef2492a17228d42552c86b5", - "reference": "f74a126acd701392eef2492a17228d42552c86b5", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.4|^3.0" + "php": ">=5.3.3" }, "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "ext-ctype": "For best performance" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Polyfill\\Ctype\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4182,61 +2837,60 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ - "debug", - "dump" + "compatibility", + "ctype", + "polyfill", + "portable" ], - "time": "2020-03-27T16:56:45+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/yaml", - "version": "v4.4.7", + "name": "symfony/polyfill-iconv", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "ef166890d821518106da3560086bfcbeb4fadfec" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/ef166890d821518106da3560086bfcbeb4fadfec", - "reference": "ef166890d821518106da3560086bfcbeb4fadfec", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "php": ">=5.3.3" }, "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-iconv": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Polyfill\\Iconv\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4245,45 +2899,65 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Symfony polyfill for the Iconv extension", "homepage": "https://symfony.com", - "time": "2020-03-30T11:41:10+00:00" + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "true/punycode", - "version": "v2.1.1", + "name": "symfony/polyfill-intl-idn", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/true/php-punycode.git", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", + "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/polyfill-mbstring": "^1.3" + "php": ">=5.3.3", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php70": "^1.10", + "symfony/polyfill-php72": "^1.10" }, - "require-dev": { - "phpunit/phpunit": "~4.7", - "squizlabs/php_codesniffer": "~2.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "TrueBV\\": "src/" - } + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4291,167 +2965,198 @@ ], "authors": [ { - "name": "Renan Gonçalves", - "email": "renan.saddam@gmail.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", - "homepage": "https://github.com/true/php-punycode", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", "keywords": [ - "idna", - "punycode" + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" ], - "time": "2016-11-16T10:37:54+00:00" + "time": "2020-08-04T06:02:08+00:00" }, { - "name": "tubalmartin/cssmin", - "version": "v4.1.1", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git", - "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf", - "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", "shasum": "" }, "require": { - "ext-pcre": "*", - "php": ">=5.3.2" + "php": ">=5.3.3" }, - "require-dev": { - "cogpowered/finediff": "0.3.*", - "phpunit/phpunit": "4.8.*" + "suggest": { + "ext-intl": "For best performance" }, - "bin": [ - "cssmin" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "tubalmartin\\CssMin\\": "src" - } + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Túbal Martín", - "homepage": "http://tubalmartin.me/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP port of the YUI CSS compressor", - "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", "keywords": [ - "compress", - "compressor", - "css", - "cssmin", - "minify", - "yui" - ], - "time": "2018-01-15T15:26:51+00:00" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "twig/twig", - "version": "v2.12.5", + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { - "php": "^7.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "php": ">=5.3.3" }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.0" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.12-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-0": { - "Twig_": "lib/" - }, "psr-4": { - "Twig\\": "src/" - } + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "templating" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2020-02-11T15:31:23+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "voku/anti-xss", - "version": "4.1.24", + "name": "symfony/polyfill-php70", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/voku/anti-xss.git", - "reference": "4c032aa1aedbf4934418520c61c00b8fad6ca8d5" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/anti-xss/zipball/4c032aa1aedbf4934418520c61c00b8fad6ca8d5", - "reference": "4c032aa1aedbf4934418520c61c00b8fad6ca8d5", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", "shasum": "" }, "require": { - "php": ">=7.0.0", - "voku/portable-utf8": "~5.4.27" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "voku\\helper\\": "src/voku/helper/" - } + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4459,55 +3164,57 @@ ], "authors": [ { - "name": "EllisLab Dev Team", - "homepage": "http://ellislab.com/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Lars Moelleken", - "email": "lars@moelleken.org", - "homepage": "http://www.moelleken.org/" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "anti xss-library", - "homepage": "https://github.com/voku/anti-xss", + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "anti-xss", - "clean", - "security", - "xss" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2020-03-08T00:12:04+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "voku/arrayy", - "version": "5.15.0", + "name": "symfony/polyfill-php72", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/voku/Arrayy.git", - "reference": "807013ebf923de01689afe516e1301c51818f056" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "639447d008615574653fb3bc60d1986d7172eaae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/Arrayy/zipball/807013ebf923de01689afe516e1301c51818f056", - "reference": "807013ebf923de01689afe516e1301c51818f056", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", + "reference": "639447d008615574653fb3bc60d1986d7172eaae", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=7.0.0", - "phpdocumentor/reflection-docblock": "~4.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "php": ">=5.3.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "Arrayy\\": "src/" + "Symfony\\Polyfill\\Php72\\": "" }, "files": [ - "src/Create.php" + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4516,54 +3223,61 @@ ], "authors": [ { - "name": "Lars Moelleken", - "email": "lars@moelleken.org", - "homepage": "http://www.moelleken.org/", - "role": "Maintainer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Array manipulation library for PHP, called Arrayy!", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "Arrayy", - "array", - "helpers", - "manipulation", - "methods", - "utility", - "utils" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2019-11-18T00:23:19+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "voku/email-check", - "version": "3.0.2", + "name": "symfony/polyfill-php73", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/voku/email-check.git", - "reference": "f91fc9da57fbb29c4ded5a1fc1238d4b988758dd" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/email-check/zipball/f91fc9da57fbb29c4ded5a1fc1238d4b988758dd", - "reference": "f91fc9da57fbb29c4ded5a1fc1238d4b988758dd", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", "shasum": "" }, "require": { - "php": ">=7.0.0", - "symfony/polyfill-intl-idn": "~1.10" - }, - "require-dev": { - "fzaninotto/faker": "~1.7", - "phpunit/phpunit": "~6.0 || ~7.0" - }, - "suggest": { - "ext-intl": "Use Intl for best performance" + "php": ">=5.3.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "voku\\helper\\": "src/voku/helper/" - } + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4571,52 +3285,61 @@ ], "authors": [ { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "email-check (syntax, dns, trash, ...) library", - "homepage": "https://github.com/voku/email-check", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "check-email", - "email", - "mail", - "mail-check", - "validate-email", - "validate-email-address", - "validate-mail" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2019-01-02T23:08:14+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "voku/portable-ascii", - "version": "1.4.10", + "name": "symfony/polyfill-php80", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/240e93829a5f985fab0984a6e55ae5e26b78a334", - "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", "shasum": "" }, "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" + "php": ">=7.0.8" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "voku\\": "src/voku/", - "voku\\tests\\": "tests/" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4624,117 +3347,111 @@ ], "authors": [ { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "ascii", - "clean", - "php" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2020-03-13T01:23:26+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "voku/portable-utf8", - "version": "5.4.41", + "name": "symfony/process", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/voku/portable-utf8.git", - "reference": "e34247dce28f9aebebd2d752d8813b91de689aec" + "url": "https://github.com/symfony/process.git", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-utf8/zipball/e34247dce28f9aebebd2d752d8813b91de689aec", - "reference": "e34247dce28f9aebebd2d752d8813b91de689aec", + "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", "shasum": "" }, "require": { - "php": ">=7.0.0", - "symfony/polyfill-iconv": "~1.0", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.0", - "voku/portable-ascii": "~1.4" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" - }, - "suggest": { - "ext-ctype": "Use Ctype for e.g. hexadecimal digit detection", - "ext-fileinfo": "Use Fileinfo for better binary file detection", - "ext-iconv": "Use iconv for best performance", - "ext-intl": "Use Intl for best performance", - "ext-json": "Use JSON for string detection", - "ext-mbstring": "Use Mbstring for best performance" + "php": ">=7.1.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { - "voku\\": "src/voku/", - "voku\\tests\\": "tests/" + "Symfony\\Component\\Process\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "(Apache-2.0 or GPL-2.0)" + "MIT" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Hamid Sarfraz", - "homepage": "http://pageconfig.com/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Portable UTF-8 library - performance optimized (unicode) string functions for php.", - "homepage": "https://github.com/voku/portable-utf8", - "keywords": [ - "UTF", - "clean", - "php", - "unicode", - "utf-8", - "utf8" - ], - "time": "2020-03-06T01:23:48+00:00" + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2020-07-23T08:31:43+00:00" }, { - "name": "voku/stop-words", - "version": "2.0.1", + "name": "symfony/service-contracts", + "version": "v2.1.3", "source": { "type": "git", - "url": "https://github.com/voku/stop-words.git", - "reference": "8e63c0af20f800b1600783764e0ce19e53969f71" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/stop-words/zipball/8e63c0af20f800b1600783764e0ce19e53969f71", - "reference": "8e63c0af20f800b1600783764e0ce19e53969f71", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", + "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", "shasum": "" }, "require": { - "php": ">=7.0.0" + "php": ">=7.2.5", + "psr/container": "^1.0" }, - "require-dev": { - "phpunit/phpunit": "~6.0" + "suggest": { + "symfony/service-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "voku\\": "src/voku/" + "Symfony\\Contracts\\Service\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -4743,50 +3460,65 @@ ], "authors": [ { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Stop-Words via PHP", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", "keywords": [ - "stop words", - "stop-words" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], - "time": "2018-11-23T01:37:27+00:00" + "time": "2020-07-06T13:23:11+00:00" }, { - "name": "voku/stringy", - "version": "5.1.1", + "name": "symfony/yaml", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/voku/Stringy.git", - "reference": "9301fb68e56ec9f0a985382d5047d4e0045074e7" + "url": "https://github.com/symfony/yaml.git", + "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/Stringy/zipball/9301fb68e56ec9f0a985382d5047d4e0045074e7", - "reference": "9301fb68e56ec9f0a985382d5047d4e0045074e7", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", + "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=7.0.0", - "voku/anti-xss": "~4.1", - "voku/arrayy": "~5.11", - "voku/email-check": "~3.0", - "voku/portable-utf8": "~5.4", - "voku/urlify": "~4.1" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, "autoload": { "psr-4": { - "Stringy\\": "src/" + "Symfony\\Component\\Yaml\\": "" }, - "files": [ - "src/Create.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4795,162 +3527,164 @@ ], "authors": [ { - "name": "Daniel St. Jules", - "email": "danielst.jules@gmail.com", - "homepage": "http://www.danielstjules.com", - "role": "Maintainer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Lars Moelleken", - "email": "lars@moelleken.org", - "homepage": "http://www.moelleken.org/", - "role": "Fork-Maintainer" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A string manipulation library with multibyte support", - "homepage": "https://github.com/danielstjules/Stringy", - "keywords": [ - "UTF", - "helpers", - "manipulation", - "methods", - "multibyte", - "string", - "utf-8", - "utility", - "utils" - ], - "time": "2019-08-21T12:37:12+00:00" + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2020-05-20T08:37:50+00:00" }, { - "name": "voku/urlify", - "version": "4.1.1", + "name": "true/punycode", + "version": "v2.1.1", "source": { "type": "git", - "url": "https://github.com/voku/urlify.git", - "reference": "4961b574a892f4f433063be6a95ba88bfe55f7cc" + "url": "https://github.com/true/php-punycode.git", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/urlify/zipball/4961b574a892f4f433063be6a95ba88bfe55f7cc", - "reference": "4961b574a892f4f433063be6a95ba88bfe55f7cc", + "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", "shasum": "" }, "require": { - "php": ">=7.0.0", - "voku/portable-utf8": "~5.3", - "voku/stop-words": "~2.0" + "php": ">=5.3.0", + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpunit/phpunit": "~4.7", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "autoload": { "psr-4": { - "voku\\helper\\": "src/voku/helper/" + "TrueBV\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Johnny Broadway", - "email": "johnny@johnnybroadway.com", - "homepage": "http://www.johnnybroadway.com/" - }, - { - "name": "Lars Moelleken", - "email": "lars@moelleken.org", - "homepage": "http://moelleken.org/" + "name": "Renan Gonçalves", + "email": "renan.saddam@gmail.com" } ], - "description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.", - "homepage": "https://github.com/voku/urlify", + "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", + "homepage": "https://github.com/true/php-punycode", "keywords": [ - "encode", - "iconv", - "link", - "slug", - "translit", - "transliterate", - "transliteration", - "url", - "urlify" - ], - "time": "2019-09-03T19:11:20+00:00" + "idna", + "punycode" + ], + "time": "2016-11-16T10:37:54+00:00" }, { - "name": "webmozart/assert", - "version": "1.7.0", + "name": "twig/twig", + "version": "v2.11.3", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" + "url": "https://github.com/twigphp/Twig.git", + "reference": "699ed2342557c88789a15402de5eb834dedd6792" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/699ed2342557c88789a15402de5eb834dedd6792", + "reference": "699ed2342557c88789a15402de5eb834dedd6792", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "vimeo/psalm": "<3.6.0" + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.11-dev" + } + }, "autoload": { + "psr-0": { + "Twig_": "lib/" + }, "psr-4": { - "Webmozart\\Assert\\": "src/" + "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", "keywords": [ - "assert", - "check", - "validate" + "templating" ], - "time": "2020-02-14T12:15:55+00:00" + "time": "2019-06-18T15:37:11+00:00" }, { "name": "webonyx/graphql-php", - "version": "v0.12.6", + "version": "v14.1.1", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95" + "reference": "d6fe86179a388abb0b671eec9688799b96673403" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95", - "reference": "4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/d6fe86179a388abb0b671eec9688799b96673403", + "reference": "d6fe86179a388abb0b671eec9688799b96673403", "shasum": "" }, "require": { + "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.6" + "php": "^7.1||^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8", + "amphp/amp": "^2.3", + "doctrine/coding-standard": "^6.0", + "nyholm/psr7": "^1.2", + "phpbench/phpbench": "^0.16.10", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "0.12.32", + "phpstan/phpstan-phpunit": "0.12.11", + "phpstan/phpstan-strict-rules": "0.12.2", + "phpunit/phpunit": "^7.2|^8.5", "psr/http-message": "^1.0", - "react/promise": "2.*" + "react/promise": "2.*", + "simpod/php-coveralls-mirror": "^3.0", + "squizlabs/php_codesniffer": "3.5.4" }, "suggest": { "psr/http-message": "To use standard GraphQL server", @@ -4972,7 +3706,7 @@ "api", "graphql" ], - "time": "2018-09-02T14:59:54+00:00" + "time": "2020-07-21T17:39:31+00:00" }, { "name": "yii2tech/ar-softdelete", @@ -5029,16 +3763,16 @@ }, { "name": "yiisoft/yii2", - "version": "2.0.34", + "version": "2.0.21", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "ef2585379bc387433e150a62451a89a4b1e130d7" + "reference": "7e4622252c5f272373e1339a47d331e4a55e9591" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/ef2585379bc387433e150a62451a89a4b1e130d7", - "reference": "ef2585379bc387433e150a62451a89a4b1e130d7", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/7e4622252c5f272373e1339a47d331e4a55e9591", + "reference": "7e4622252c5f272373e1339a47d331e4a55e9591", "shasum": "" }, "require": { @@ -5125,27 +3859,27 @@ "framework", "yii2" ], - "time": "2020-03-26T20:42:29+00:00" + "time": "2019-06-18T14:25:08+00:00" }, { "name": "yiisoft/yii2-composer", - "version": "2.0.8", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-composer.git", - "reference": "5c7ca9836cf80b34db265332a7f2f8438eb469b9" + "reference": "94bb3f66e779e2774f8776d6e1bdeab402940510" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/5c7ca9836cf80b34db265332a7f2f8438eb469b9", - "reference": "5c7ca9836cf80b34db265332a7f2f8438eb469b9", + "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/94bb3f66e779e2774f8776d6e1bdeab402940510", + "reference": "94bb3f66e779e2774f8776d6e1bdeab402940510", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0" + "composer-plugin-api": "^1.0 | ^2.0" }, "require-dev": { - "composer/composer": "^1.0", + "composer/composer": "^1.0 | ^2.0@dev", "phpunit/phpunit": "<7" }, "type": "composer-plugin", @@ -5180,7 +3914,7 @@ "extension installer", "yii2" ], - "time": "2019-07-16T13:22:30+00:00" + "time": "2020-06-24T00:04:01+00:00" }, { "name": "yiisoft/yii2-debug", @@ -5242,29 +3976,28 @@ }, { "name": "yiisoft/yii2-queue", - "version": "2.3.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-queue.git", - "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0" + "reference": "d04b4b3c932081200876a351cc6c3502e89e11b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/25c1142558768ec0e835171c972a4edc2fb59cf0", - "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0", + "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/d04b4b3c932081200876a351cc6c3502e89e11b8", + "reference": "d04b4b3c932081200876a351cc6c3502e89e11b8", "shasum": "" }, "require": { "php": ">=5.5.0", - "symfony/process": "^3.3||^4.0", + "symfony/process": "*", "yiisoft/yii2": "~2.0.14" }, "require-dev": { "aws/aws-sdk-php": ">=2.4", - "enqueue/amqp-lib": "^0.8||^0.9.10", - "enqueue/stomp": "^0.8.39", + "enqueue/amqp-lib": "^0.8", "jeremeamia/superclosure": "*", - "pda/pheanstalk": "v3.*", + "pda/pheanstalk": "*", "php-amqplib/php-amqplib": "*", "phpunit/phpunit": "~4.4", "yiisoft/yii2-debug": "*", @@ -5274,7 +4007,6 @@ "suggest": { "aws/aws-sdk-php": "Need for aws SQS.", "enqueue/amqp-lib": "Need for AMQP interop queue.", - "enqueue/stomp": "Need for Stomp queue.", "ext-gearman": "Need for Gearman queue.", "ext-pcntl": "Need for process signals.", "pda/pheanstalk": "Need for Beanstalk queue.", @@ -5284,7 +4016,7 @@ "type": "yii2-extension", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -5298,8 +4030,7 @@ "yii\\queue\\gearman\\": "src/drivers/gearman", "yii\\queue\\redis\\": "src/drivers/redis", "yii\\queue\\sync\\": "src/drivers/sync", - "yii\\queue\\sqs\\": "src/drivers/sqs", - "yii\\queue\\stomp\\": "src/drivers/stomp" + "yii\\queue\\sqs\\": "src/drivers/sqs" } }, "notification-url": "https://packagist.org/downloads/", @@ -5325,59 +4056,7 @@ "sqs", "yii" ], - "time": "2019-06-04T18:58:40+00:00" - }, - { - "name": "yiisoft/yii2-shell", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/yiisoft/yii2-shell.git", - "reference": "8439588d187c23d47e0e6fd773f5b544c87f4d56" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-shell/zipball/8439588d187c23d47e0e6fd773f5b544c87f4d56", - "reference": "8439588d187c23d47e0e6fd773f5b544c87f4d56", - "shasum": "" - }, - "require": { - "psy/psysh": "~0.9.3", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0", - "yiisoft/yii2": "~2.0.0" - }, - "type": "yii2-extension", - "extra": { - "bootstrap": "yii\\shell\\Bootstrap", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "yii\\shell\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Daniel Gomez Pan", - "email": "pana_1990@hotmail.com" - }, - { - "name": "Sascha Vincent Kurowski", - "email": "svkurowski@gmail.com" - } - ], - "description": "The interactive shell extension for Yii framework", - "keywords": [ - "shell", - "yii2" - ], - "time": "2020-03-03T20:19:36+00:00" + "time": "2018-05-23T21:04:57+00:00" }, { "name": "yiisoft/yii2-swiftmailer", @@ -5469,16 +4148,16 @@ }, { "name": "overtrue/phplint", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/overtrue/phplint.git", - "reference": "ce7d236e79fffbaeab83d8c325375634b02bee37" + "reference": "8b1e27094c82ad861ff7728cf50d349500c39fe2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/phplint/zipball/ce7d236e79fffbaeab83d8c325375634b02bee37", - "reference": "ce7d236e79fffbaeab83d8c325375634b02bee37", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/8b1e27094c82ad861ff7728cf50d349500c39fe2", + "reference": "8b1e27094c82ad861ff7728cf50d349500c39fe2", "shasum": "" }, "require": { @@ -5531,7 +4210,7 @@ "phplint", "syntax" ], - "time": "2020-04-18T00:59:47+00:00" + "time": "2020-04-23T02:04:34+00:00" } ], "aliases": [], From 9bda3cde3c3f74eb36384d841997191dc7ab11ba Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Wed, 5 Aug 2020 00:38:34 -0500 Subject: [PATCH 46/62] Revert graphql-php version --- composer.json | 2 +- composer.lock | 3498 +++++++++++++++++++++++++++++++++---------------- 2 files changed, 2403 insertions(+), 1097 deletions(-) diff --git a/composer.json b/composer.json index cd4f02b2..c093a6cc 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ ], "require": { "craftcms/cms": "^3.2.0", - "webonyx/graphql-php": "^14.0.0", + "webonyx/graphql-php": "^0.12.0", "react/http": "^0.7", "firebase/php-jwt": "^5.0.0" }, diff --git a/composer.lock b/composer.lock index 7c8565ac..7a9c6061 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "28ed059f38f76f9712e9aeef423845c3", + "content-hash": "1808fcb2474e60a86dd38b258d6c9ded", "packages": [ { "name": "cebe/markdown", @@ -124,36 +124,39 @@ }, { "name": "composer/composer", - "version": "1.6.3", + "version": "1.10.10", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "88a69fda0f2187ad8714cedffd7a8872dceaa4c2" + "reference": "32966a3b1d48bc01472a8321fd6472b44fad033a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/88a69fda0f2187ad8714cedffd7a8872dceaa4c2", - "reference": "88a69fda0f2187ad8714cedffd7a8872dceaa4c2", + "url": "https://api.github.com/repos/composer/composer/zipball/32966a3b1d48bc01472a8321fd6472b44fad033a", + "reference": "32966a3b1d48bc01472a8321fd6472b44fad033a", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", "composer/semver": "^1.0", "composer/spdx-licenses": "^1.2", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^5.2.10", "php": "^5.3.2 || ^7.0", "psr/log": "^1.0", - "seld/cli-prompt": "^1.0", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "conflict": { + "symfony/console": "2.8.38" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -166,7 +169,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -190,14 +193,14 @@ "homepage": "http://seld.be" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", "homepage": "https://getcomposer.org/", "keywords": [ "autoload", "dependency", "package" ], - "time": "2018-01-31T15:28:18+00:00" + "time": "2020-08-03T09:35:19+00:00" }, { "name": "composer/semver", @@ -320,29 +323,72 @@ ], "time": "2020-07-15T15:35:07+00:00" }, + { + "name": "composer/xdebug-handler", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", + "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2020-06-04T11:16:35+00:00" + }, { "name": "craftcms/cms", - "version": "3.2.10", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/craftcms/cms.git", - "reference": "620fa9e16ae1d6d205868754959c459f55128da2" + "reference": "c6671af5af9e45f57ca9ab50d4b30b07282819d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/cms/zipball/620fa9e16ae1d6d205868754959c459f55128da2", - "reference": "620fa9e16ae1d6d205868754959c459f55128da2", + "url": "https://api.github.com/repos/craftcms/cms/zipball/c6671af5af9e45f57ca9ab50d4b30b07282819d3", + "reference": "c6671af5af9e45f57ca9ab50d4b30b07282819d3", "shasum": "" }, "require": { - "composer/composer": "1.6.3", + "composer/composer": "1.10.10", "craftcms/oauth2-craftid": "~1.0.0", "craftcms/plugin-installer": "~1.5.3", "craftcms/server-check": "~1.1.0", "creocoder/yii2-nested-sets": "~0.9.0", - "danielstjules/stringy": "^3.1.0", "elvanto/litemoji": "^1.3.1", - "enshrined/svg-sanitize": "~0.9.0", + "enshrined/svg-sanitize": "~0.13.2", "ext-curl": "*", "ext-dom": "*", "ext-json": "*", @@ -351,39 +397,44 @@ "ext-pcre": "*", "ext-pdo": "*", "ext-zip": "*", - "guzzlehttp/guzzle": "^6.3.0", + "guzzlehttp/guzzle": ">=6.3.0 <6.5.0 || ^6.5.1", + "laminas/laminas-feed": "^2.12.0", "league/flysystem": "^1.0.35", "league/oauth2-client": "^2.2.1", "mikehaertl/php-shellcommand": "^1.2.5", + "mrclay/jsmin-php": "^2.4", + "mrclay/minify": "^3.0.7", "php": ">=7.0.0", "pixelandtonic/imagine": "~1.2.2.1", "seld/cli-prompt": "^1.0.3", "symfony/yaml": "^3.2|^4.0", "true/punycode": "^2.1.0", - "twig/twig": "~2.11.0", + "twig/twig": "~2.12.0", + "voku/portable-utf8": "^5.4.28", + "voku/stringy": "^6.2.2", + "webonyx/graphql-php": "^0.12.0", "yii2tech/ar-softdelete": "^1.0.2", - "yiisoft/yii2": "~2.0.21.0", - "yiisoft/yii2-debug": "^2.0.10", - "yiisoft/yii2-queue": "2.1.0", - "yiisoft/yii2-swiftmailer": "^2.1.0", - "zendframework/zend-feed": "^2.8.0" + "yiisoft/yii2": "~2.0.36.0", + "yiisoft/yii2-debug": "^2.1.0", + "yiisoft/yii2-queue": "~2.3.0", + "yiisoft/yii2-swiftmailer": "^2.1.0" }, "conflict": { "league/oauth2-client": "2.4.0" }, "provide": { - "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*", "bower-asset/inputmask": "~3.2.2 | ~3.3.5", - "bower-asset/jquery": "3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", + "bower-asset/jquery": "3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", "bower-asset/punycode": "1.3.*", "bower-asset/yii2-pjax": "~2.0.1" }, "require-dev": { - "codeception/codeception": "^3.0", - "codeception/mockery-module": "^0.3", - "codeception/phpunit-wrapper": "^7.7", - "codeception/specify": "^0.4", - "codeception/verify": "^1.0", + "codeception/codeception": "^4.0.0", + "codeception/module-asserts": "^1.0.0", + "codeception/module-datafactory": "^1.0.0", + "codeception/module-phpbrowser": "^1.0.0", + "codeception/module-rest": "^1.0.0", + "codeception/module-yii2": "^1.0.0", "fzaninotto/faker": "^1.8", "league/factory-muffin": "^3.0", "vlucas/phpdotenv": "^3.0" @@ -396,7 +447,8 @@ "type": "library", "autoload": { "psr-4": { - "craft\\": "src/" + "craft\\": "src/", + "crafttests\\fixtures\\": "tests/fixtures/" } }, "notification-url": "https://packagist.org/downloads/", @@ -410,7 +462,7 @@ "craftcms", "yii2" ], - "time": "2019-08-13T15:50:41+00:00" + "time": "2020-08-04T17:35:06+00:00" }, { "name": "craftcms/oauth2-craftid", @@ -582,34 +634,36 @@ "time": "2015-01-27T10:53:51+00:00" }, { - "name": "danielstjules/stringy", - "version": "3.1.0", + "name": "defuse/php-encryption", + "version": "v2.2.1", "source": { "type": "git", - "url": "https://github.com/danielstjules/Stringy.git", - "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e" + "url": "https://github.com/defuse/php-encryption.git", + "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", - "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", + "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", "shasum": "" }, "require": { - "php": ">=5.4.0", - "symfony/polyfill-mbstring": "~1.1" + "ext-openssl": "*", + "paragonie/random_compat": ">= 2", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "nikic/php-parser": "^2.0|^3.0|^4.0", + "phpunit/phpunit": "^4|^5" }, + "bin": [ + "bin/generate-defuse-key" + ], "type": "library", "autoload": { "psr-4": { - "Stringy\\": "src/" - }, - "files": [ - "src/Create.php" - ] + "Defuse\\Crypto\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -617,25 +671,30 @@ ], "authors": [ { - "name": "Daniel St. Jules", - "email": "danielst.jules@gmail.com", - "homepage": "http://www.danielstjules.com" + "name": "Taylor Hornby", + "email": "taylor@defuse.ca", + "homepage": "https://defuse.ca/" + }, + { + "name": "Scott Arciszewski", + "email": "info@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "A string manipulation library with multibyte support", - "homepage": "https://github.com/danielstjules/Stringy", + "description": "Secure PHP Encryption Library", "keywords": [ - "UTF", - "helpers", - "manipulation", - "methods", - "multibyte", - "string", - "utf-8", - "utility", - "utils" - ], - "time": "2017-06-12T01:10:27+00:00" + "aes", + "authenticated encryption", + "cipher", + "crypto", + "cryptography", + "encrypt", + "encryption", + "openssl", + "security", + "symmetric key cryptography" + ], + "time": "2018-07-24T23:27:56+00:00" }, { "name": "doctrine/lexer", @@ -797,18 +856,22 @@ }, { "name": "enshrined/svg-sanitize", - "version": "0.9.2", + "version": "0.13.3", "source": { "type": "git", "url": "https://github.com/darylldoyle/svg-sanitizer.git", - "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa" + "reference": "bc66593f255b7d2613d8f22041180036979b6403" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/e0cb5ad3abea5459e0962cf79a92d34714c74dfa", - "reference": "e0cb5ad3abea5459e0962cf79a92d34714c74dfa", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/bc66593f255b7d2613d8f22041180036979b6403", + "reference": "bc66593f255b7d2613d8f22041180036979b6403", "shasum": "" }, + "require": { + "ext-dom": "*", + "ext-libxml": "*" + }, "require-dev": { "codeclimate/php-test-reporter": "^0.1.2", "phpunit/phpunit": "^6" @@ -821,7 +884,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "authors": [ { @@ -830,7 +893,7 @@ } ], "description": "An SVG sanitizer for PHP", - "time": "2018-10-01T17:11:02+00:00" + "time": "2020-01-20T01:34:17+00:00" }, { "name": "evenement/evenement", @@ -1164,6 +1227,63 @@ ], "time": "2019-07-01T23:21:34+00:00" }, + { + "name": "intervention/httpauth", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/Intervention/httpauth.git", + "reference": "825202e88c0918f5249bd5af6ff1fb8ef6e3271e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/httpauth/zipball/825202e88c0918f5249bd5af6ff1fb8ef6e3271e", + "reference": "825202e88c0918f5249bd5af6ff1fb8ef6e3271e", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.11", + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Intervention\\HttpAuth\\Laravel\\HttpAuthServiceProvider" + ], + "aliases": { + "HttpAuth": "Intervention\\HttpAuth\\Laravel\\Facades\\HttpAuth" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\HttpAuth\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@olivervogel.com", + "homepage": "https://olivervogel.com/" + } + ], + "description": "HTTP authentication (Basic & Digest) including ServiceProviders for easy Laravel integration", + "homepage": "https://github.com/Intervention/httpauth", + "keywords": [ + "Authentication", + "http", + "laravel" + ], + "time": "2020-03-09T16:18:28+00:00" + }, { "name": "justinrainbow/json-schema", "version": "5.2.10", @@ -1599,6 +1719,58 @@ ], "time": "2020-07-18T17:54:32+00:00" }, + { + "name": "marcusschwarz/lesserphp", + "version": "v0.5.4", + "source": { + "type": "git", + "url": "https://github.com/MarcusSchwarz/lesserphp.git", + "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarcusSchwarz/lesserphp/zipball/3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e", + "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~4.3" + }, + "bin": [ + "plessc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.1-dev" + } + }, + "autoload": { + "classmap": [ + "lessc.inc.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT", + "GPL-3.0" + ], + "authors": [ + { + "name": "Leaf Corcoran", + "email": "leafot@gmail.com", + "homepage": "http://leafo.net" + }, + { + "name": "Marcus Schwarz", + "email": "github@maswaba.de", + "homepage": "https://www.maswaba.de" + } + ], + "description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.", + "homepage": "http://leafo.net/lessphp/", + "time": "2020-01-19T19:18:49+00:00" + }, { "name": "mikehaertl/php-shellcommand", "version": "1.6.1", @@ -1639,39 +1811,65 @@ "time": "2019-12-20T08:48:10+00:00" }, { - "name": "opis/closure", - "version": "3.5.5", + "name": "monolog/monolog", + "version": "2.1.1", "source": { "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c" + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/dec9fc5ecfca93f45cd6121f8e6f14457dff372c", - "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9eee5cec93dfb313a38b6b288741e84e53f02d5", + "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0" + "php": ">=7.2", + "psr/log": "^1.0.1" + }, + "provide": { + "psr/log-implementation": "1.0.0" }, "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^6.0", + "graylog2/gelf-php": "^1.4.2", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", + "phpspec/prophecy": "^1.6.1", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <3.0", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.5.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] + "Monolog\\": "src/Monolog" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1679,155 +1877,161 @@ ], "authors": [ { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" + "log", + "logging", + "psr-3" ], - "time": "2020-06-17T14:59:55+00:00" + "time": "2020-07-23T08:41:23+00:00" }, { - "name": "paragonie/random_compat", - "version": "v9.99.99", + "name": "mrclay/jsmin-php", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + "url": "https://github.com/mrclay/jsmin-php.git", + "reference": "bb05febc9440852d39899255afd5569b7f21a72c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/bb05febc9440852d39899255afd5569b7f21a72c", + "reference": "bb05febc9440852d39899255afd5569b7f21a72c", "shasum": "" }, "require": { - "php": "^7" + "ext-pcre": "*", + "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "phpunit/phpunit": "4.2" }, "type": "library", + "autoload": { + "psr-0": { + "JSMin\\": "src/" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "Stephen Clay", + "email": "steve@mrclay.org", + "role": "Developer" + }, + { + "name": "Ryan Grove", + "email": "ryan@wonko.com", + "role": "Developer" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.", + "homepage": "https://github.com/mrclay/jsmin-php/", "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" + "compress", + "jsmin", + "minify" ], - "time": "2018-07-02T15:55:56+00:00" + "time": "2018-12-06T15:03:38+00:00" }, { - "name": "pixelandtonic/imagine", - "version": "1.2.2.1", + "name": "mrclay/minify", + "version": "3.0.10", "source": { "type": "git", - "url": "https://github.com/pixelandtonic/Imagine.git", - "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b" + "url": "https://github.com/mrclay/minify.git", + "reference": "8dba84a2d24ae6382057a1215ad3af25202addb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/c70db7d7f6bd6fb0abc7562bdabe51265af2518b", - "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b", + "url": "https://api.github.com/repos/mrclay/minify/zipball/8dba84a2d24ae6382057a1215ad3af25202addb9", + "reference": "8dba84a2d24ae6382057a1215ad3af25202addb9", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-pcre": "*", + "intervention/httpauth": "^2.0|^3.0", + "marcusschwarz/lesserphp": "^0.5.1", + "monolog/monolog": "~1.1|~2.0", + "mrclay/jsmin-php": "~2", + "mrclay/props-dic": "^2.2|^3.0", + "php": "^5.3.0 || ^7.0", + "tubalmartin/cssmin": "~4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "2.2.*", - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.4 || ^8.2" + "firephp/firephp-core": "~0.4.0", + "leafo/scssphp": "^0.3 || ^0.6 || ^0.7", + "meenie/javascript-packer": "~1.1", + "phpunit/phpunit": "^4.8.36", + "tedivm/jshrink": "~1.1.0" }, "suggest": { - "ext-gd": "to use the GD implementation", - "ext-gmagick": "to use the Gmagick implementation", - "ext-imagick": "to use the Imagick implementation" + "firephp/firephp-core": "Use FirePHP for Log messages", + "meenie/javascript-packer": "Keep track of the Packer PHP port using Composer" }, "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.7-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { - "psr-4": { - "Imagine\\": "src/" - } + "classmap": [ + "lib/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bulat Shakirzyanov", - "email": "mallluhuct@gmail.com", - "homepage": "http://avalanche123.com" + "name": "Stephen Clay", + "email": "steve@mrclay.org", + "role": "Developer" } ], - "description": "Image processing for PHP 5.3", - "homepage": "http://imagine.readthedocs.org/", - "keywords": [ - "drawing", - "graphics", - "image manipulation", - "image processing" - ], - "time": "2019-07-19T12:55:50+00:00" + "description": "Minify is a PHP app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", + "homepage": "https://github.com/mrclay/minify", + "time": "2020-04-02T19:47:26+00:00" }, { - "name": "psr/container", - "version": "1.0.0", + "name": "mrclay/props-dic", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "url": "https://github.com/mrclay/Props.git", + "reference": "0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/mrclay/Props/zipball/0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843", + "reference": "0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3", + "pimple/pimple": "~3.0", + "psr/container": "^1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "require-dev": { + "phpunit/phpunit": "~4.8" }, + "type": "library", "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" + "psr-0": { + "Props\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -1836,48 +2040,55 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Steve Clay", + "email": "steve@mrclay.org", + "homepage": "http://www.mrclay.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Props is a simple DI container that allows retrieving values via custom property and method names", "keywords": [ - "PSR-11", "container", - "container-interface", - "container-interop", - "psr" + "dependency injection", + "dependency injection container", + "di", + "di container" ], - "time": "2017-02-14T16:28:37+00:00" + "time": "2019-11-26T17:56:10+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "opis/closure", + "version": "3.5.5", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/opis/closure.git", + "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/opis/closure/zipball/dec9fc5ecfca93f45cd6121f8e6f14457dff372c", + "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^5.4 || ^7.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.5.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" - } + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1885,95 +2096,98 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2020-06-17T14:59:55+00:00" }, { - "name": "psr/log", - "version": "1.1.3", + "name": "paragonie/random_compat", + "version": "v9.99.99", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, + "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ - "log", - "psr", - "psr-3" + "csprng", + "polyfill", + "pseudorandom", + "random" ], - "time": "2020-03-23T09:12:05+00:00" + "time": "2018-07-02T15:55:56+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "php": "^7.2 || ^8.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1981,215 +2195,1255 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "react/cache", - "version": "v1.0.0", + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.0", "source": { "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "3170448f5769fe19f456173d833734e0ff1b84df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466", - "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df", + "reference": "3170448f5769fe19f456173d833734e0ff1b84df", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/promise": "~2.0|~1.1" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" + "mockery/mockery": "~1.3.2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { "psr-4": { - "React\\Cache\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": [ - "cache", - "caching", - "promise", - "reactphp" + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } ], - "time": "2019-07-11T13:45:28+00:00" + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-07-20T20:05:34+00:00" }, { - "name": "react/dns", - "version": "v1.3.0", + "name": "phpdocumentor/type-resolver", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/89d83794e959ef3e0f1ab792f070b0157de1abf2", - "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.0 || ^0.5", - "react/promise": "^3.0 || ^2.7 || ^1.2.1", - "react/promise-timer": "^1.2" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.0 || ^4.8.35" + "ext-tokenizer": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, "autoload": { "psr-4": { - "React\\Dns\\": "src" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } ], - "time": "2020-07-10T12:12:50+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-06-27T10:12:23+00:00" }, { - "name": "react/event-loop", - "version": "v1.1.1", + "name": "pimple/pimple", + "version": "v3.3.0", "source": { "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "6d24de090cd59cfc830263cfba965be77b563c13" + "url": "https://github.com/silexphp/Pimple.git", + "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13", - "reference": "6d24de090cd59cfc830263cfba965be77b563c13", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930", + "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2.5", + "psr/container": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" + "symfony/phpunit-bridge": "^3.4|^4.4|^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" + "psr-0": { + "Pimple": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", "keywords": [ - "asynchronous", - "event-loop" + "container", + "dependency injection" ], - "time": "2020-01-01T18:39:52+00:00" + "time": "2020-03-03T09:12:48+00:00" }, { - "name": "react/http", - "version": "v0.7.4", + "name": "pixelandtonic/imagine", + "version": "1.2.2.1", "source": { "type": "git", - "url": "https://github.com/reactphp/http.git", - "reference": "6646135c01097b5316d2cb47bc12e541bf26efae" + "url": "https://github.com/pixelandtonic/Imagine.git", + "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/http/zipball/6646135c01097b5316d2cb47bc12e541bf26efae", - "reference": "6646135c01097b5316d2cb47bc12e541bf26efae", + "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/c70db7d7f6bd6fb0abc7562bdabe51265af2518b", + "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/promise": "^2.3 || ^1.2.1", - "react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5", - "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6", - "ringcentral/psr7": "^1.2" + "php": ">=5.3.2" }, "require-dev": { - "clue/block-react": "^1.1", - "phpunit/phpunit": "^4.8.10||^5.0", - "react/promise-stream": "^0.1.1", - "react/socket": "^1.0 || ^0.8 || ^0.7" + "friendsofphp/php-cs-fixer": "2.2.*", + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.4 || ^8.2" + }, + "suggest": { + "ext-gd": "to use the GD implementation", + "ext-gmagick": "to use the Gmagick implementation", + "ext-imagick": "to use the Imagick implementation" }, "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, "autoload": { "psr-4": { - "React\\Http\\": "src" + "Imagine\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Event-driven, streaming plaintext HTTP and secure HTTPS server for ReactPHP", + "authors": [ + { + "name": "Bulat Shakirzyanov", + "email": "mallluhuct@gmail.com", + "homepage": "http://avalanche123.com" + } + ], + "description": "Image processing for PHP 5.3", + "homepage": "http://imagine.readthedocs.org/", + "keywords": [ + "drawing", + "graphics", + "image manipulation", + "image processing" + ], + "time": "2019-07-19T12:55:50+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "event-driven", "http", - "https", - "reactphp", - "server", - "streaming" + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "react/cache", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466", + "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "~2.0|~1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "time": "2019-07-11T13:45:28+00:00" + }, + { + "name": "react/dns", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/89d83794e959ef3e0f1ab792f070b0157de1abf2", + "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.0 || ^0.5", + "react/promise": "^3.0 || ^2.7 || ^1.2.1", + "react/promise-timer": "^1.2" + }, + "require-dev": { + "clue/block-react": "^1.2", + "phpunit/phpunit": "^9.0 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "time": "2020-07-10T12:12:50+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "6d24de090cd59cfc830263cfba965be77b563c13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13", + "reference": "6d24de090cd59cfc830263cfba965be77b563c13", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" + }, + "suggest": { + "ext-event": "~1.0 for ExtEventLoop", + "ext-pcntl": "For signal handling support when using the StreamSelectLoop", + "ext-uv": "* for ExtUvLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "time": "2020-01-01T18:39:52+00:00" + }, + { + "name": "react/http", + "version": "v0.7.4", + "source": { + "type": "git", + "url": "https://github.com/reactphp/http.git", + "reference": "6646135c01097b5316d2cb47bc12e541bf26efae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/http/zipball/6646135c01097b5316d2cb47bc12e541bf26efae", + "reference": "6646135c01097b5316d2cb47bc12e541bf26efae", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/promise": "^2.3 || ^1.2.1", + "react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5", + "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6", + "ringcentral/psr7": "^1.2" + }, + "require-dev": { + "clue/block-react": "^1.1", + "phpunit/phpunit": "^4.8.10||^5.0", + "react/promise-stream": "^0.1.1", + "react/socket": "^1.0 || ^0.8 || ^0.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Http\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Event-driven, streaming plaintext HTTP and secure HTTPS server for ReactPHP", + "keywords": [ + "event-driven", + "http", + "https", + "reactphp", + "server", + "streaming" + ], + "time": "2017-08-16T15:24:39+00:00" + }, + { + "name": "react/promise", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "time": "2020-05-12T15:16:56+00:00" + }, + { + "name": "react/promise-timer", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6", + "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", + "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\Timer\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@lueck.tv" + } + ], + "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", + "homepage": "https://github.com/reactphp/promise-timer", + "keywords": [ + "async", + "event-loop", + "promise", + "reactphp", + "timeout", + "timer" + ], + "time": "2020-07-10T12:18:06+00:00" + }, + { + "name": "react/socket", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/842dcd71df86671ee9491734035b3d2cf4a80ece", + "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.1", + "react/event-loop": "^1.0 || ^0.5", + "react/promise": "^2.6.0 || ^1.2.1", + "react/promise-timer": "^1.4.0", + "react/stream": "^1.1" + }, + "require-dev": { + "clue/block-react": "^1.2", + "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35", + "react/promise-stream": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "time": "2020-07-01T12:50:00+00:00" + }, + { + "name": "react/stream", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", + "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "time": "2020-05-04T10:17:57+00:00" + }, + { + "name": "ringcentral/psr7", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ringcentral/psr7.git", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "RingCentral\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], + "time": "2018-05-29T20:21:04+00:00" + }, + { + "name": "seld/cli-prompt", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\CliPrompt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "keywords": [ + "cli", + "console", + "hidden", + "input", + "prompt" + ], + "time": "2017-03-18T11:32:45+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2020-04-30T19:05:18+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "time": "2020-07-07T18:42:57+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.2.3", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "shasum": "" + }, + "require": { + "egulias/email-validator": "~2.0", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses", + "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2019-11-12T09:31:26+00:00" + }, + { + "name": "symfony/console", + "version": "v5.1.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "2226c68009627934b8cfc01260b4d287eab070df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/2226c68009627934b8cfc01260b4d287eab070df", + "reference": "2226c68009627934b8cfc01260b4d287eab070df", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2020-07-06T13:23:11+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.1.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "6e4320f06d5f2cce0d96530162491f4465179157" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6e4320f06d5f2cce0d96530162491f4465179157", + "reference": "6e4320f06d5f2cce0d96530162491f4465179157", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.1.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187", + "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], - "time": "2017-08-16T15:24:39+00:00" + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2020-05-20T17:43:50+00:00" }, { - "name": "react/promise", - "version": "v2.8.0", + "name": "symfony/polyfill-ctype", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", + "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "React\\Promise\\": "src/" + "Symfony\\Polyfill\\Ctype\\": "" }, "files": [ - "src/functions_include.php" + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2198,46 +3452,60 @@ ], "authors": [ { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", "keywords": [ - "promise", - "promises" + "compatibility", + "ctype", + "polyfill", + "portable" ], - "time": "2020-05-12T15:16:56+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "react/promise-timer", - "version": "v1.6.0", + "name": "symfony/polyfill-iconv", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/reactphp/promise-timer.git", - "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6", - "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", "shasum": "" }, "require": { - "php": ">=5.3", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", - "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" + "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35" + "suggest": { + "ext-iconv": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "React\\Promise\\Timer\\": "src/" + "Symfony\\Polyfill\\Iconv\\": "" }, "files": [ - "src/functions_include.php" + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2246,152 +3514,199 @@ ], "authors": [ { - "name": "Christian Lück", - "email": "christian@lueck.tv" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", - "homepage": "https://github.com/reactphp/promise-timer", + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", "keywords": [ - "async", - "event-loop", - "promise", - "reactphp", - "timeout", - "timer" + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" ], - "time": "2020-07-10T12:18:06+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "react/socket", - "version": "v1.5.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/842dcd71df86671ee9491734035b3d2cf4a80ece", - "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.1", - "react/event-loop": "^1.0 || ^0.5", - "react/promise": "^2.6.0 || ^1.2.1", - "react/promise-timer": "^1.4.0", - "react/stream": "^1.1" + "php": ">=5.3.3" }, - "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35", - "react/promise-stream": "^1.2" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "React\\Socket\\": "src" - } + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], - "time": "2020-07-01T12:50:00+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "react/stream", - "version": "v1.1.1", + "name": "symfony/polyfill-intl-idn", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", - "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", + "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" + "php": ">=5.3.3", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php70": "^1.10", + "symfony/polyfill-php72": "^1.10" }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "React\\Stream\\": "src" - } + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" ], - "time": "2020-05-04T10:17:57+00:00" + "time": "2020-08-04T06:02:08+00:00" }, - { - "name": "ringcentral/psr7", - "version": "1.3.0", + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/ringcentral/psr7.git", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", "shasum": "" }, "require": { - "php": ">=5.3", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" + "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "~4.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "RingCentral\\Psr7\\": "src/" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, "files": [ - "src/functions_include.php" + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2400,47 +3715,63 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PSR-7 message implementation", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", "keywords": [ - "http", - "message", - "stream", - "uri" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], - "time": "2018-05-29T20:21:04+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "seld/cli-prompt", - "version": "1.0.3", + "name": "symfony/polyfill-mbstring", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", + "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Seld\\CliPrompt\\": "src/" - } + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2448,48 +3779,63 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2017-03-18T11:32:45+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "seld/jsonlint", - "version": "1.8.0", + "name": "symfony/polyfill-php70", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" }, - "bin": [ - "bin/jsonlint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2497,47 +3843,58 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "JSON Linter", + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "json", - "linter", - "parser", - "validator" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2020-04-30T19:05:18+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "seld/phar-utils", - "version": "1.1.1", + "name": "symfony/polyfill-php72", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "639447d008615574653fb3bc60d1986d7172eaae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", - "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", + "reference": "639447d008615574653fb3bc60d1986d7172eaae", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Seld\\PharUtils\\": "src/" - } + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2545,54 +3902,60 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHAR file format utilities, for when PHP phars you up", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "phar" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2020-07-07T18:42:57+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", + "name": "symfony/polyfill-php73", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", "shasum": "" }, "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "files": [ - "lib/swift_required.php" + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2601,79 +3964,60 @@ ], "authors": [ { - "name": "Chris Corbyn" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "email", - "mail", - "mailer" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2019-11-12T09:31:26+00:00" + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/console", - "version": "v4.4.11", + "name": "symfony/polyfill-php80", + "version": "v1.18.1", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/55d07021da933dd0d633ffdab6f45d5b230c7e02", - "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "php": ">=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2682,35 +4026,44 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", - "time": "2020-07-06T13:18:39+00:00" + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2020-07-14T12:35:20+00:00" }, { - "name": "symfony/filesystem", + "name": "symfony/process", "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b27f491309db5757816db672b256ea2e03677d30" + "url": "https://github.com/symfony/process.git", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b27f491309db5757816db672b256ea2e03677d30", - "reference": "b27f491309db5757816db672b256ea2e03677d30", + "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1.3" }, "type": "library", "extra": { @@ -2720,7 +4073,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2740,40 +4093,45 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-05-30T18:50:54+00:00" + "time": "2020-07-23T08:31:43+00:00" }, { - "name": "symfony/finder", - "version": "v4.4.11", + "name": "symfony/service-contracts", + "version": "v2.1.3", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "2727aa35fddfada1dd37599948528e9b152eb742" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2727aa35fddfada1dd37599948528e9b152eb742", - "reference": "2727aa35fddfada1dd37599948528e9b152eb742", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", + "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "2.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2781,54 +4139,69 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", - "time": "2020-07-05T09:39:30+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2020-07-06T13:23:11+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.18.1", + "name": "symfony/string", + "version": "v5.1.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" + "url": "https://github.com/symfony/string.git", + "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", + "url": "https://api.github.com/repos/symfony/string/zipball/f629ba9b611c76224feb21fe2bcbf0b6f992300b", + "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "5.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Component\\String\\": "" }, "files": [ - "bootstrap.php" + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2837,60 +4210,65 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony String component", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2020-07-08T08:27:49+00:00" }, { - "name": "symfony/polyfill-iconv", - "version": "v1.18.1", + "name": "symfony/yaml", + "version": "v4.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36" + "url": "https://github.com/symfony/yaml.git", + "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", - "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", + "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" }, "suggest": { - "ext-iconv": "For best performance" + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" + "Symfony\\Component\\Yaml\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2899,65 +4277,45 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Iconv extension", + "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2020-05-20T08:37:50+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.18.1", + "name": "true/punycode", + "version": "v2.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" + "url": "https://github.com/true/php-punycode.git", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", + "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", "shasum": "" }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require": { + "php": ">=5.3.0", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.7", + "squizlabs/php_codesniffer": "~2.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] + "TrueBV\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2965,198 +4323,167 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Renan Gonçalves", + "email": "renan.saddam@gmail.com" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", + "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", + "homepage": "https://github.com/true/php-punycode", "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + "idna", + "punycode" ], - "time": "2020-08-04T06:02:08+00:00" + "time": "2016-11-16T10:37:54+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.18.1", + "name": "tubalmartin/cssmin", + "version": "v4.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" + "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git", + "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf", + "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-pcre": "*", + "php": ">=5.3.2" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "cogpowered/finediff": "0.3.*", + "phpunit/phpunit": "4.8.*" }, + "bin": [ + "cssmin" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "tubalmartin\\CssMin\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Túbal Martín", + "homepage": "http://tubalmartin.me/" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", + "description": "A PHP port of the YUI CSS compressor", + "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" + "compress", + "compressor", + "css", + "cssmin", + "minify", + "yui" + ], + "time": "2018-01-15T15:26:51+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.18.1", + "name": "twig/twig", + "version": "v2.12.5", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" + "url": "https://github.com/twigphp/Twig.git", + "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", + "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.12-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "psr-0": { + "Twig_": "lib/" }, - "files": [ - "bootstrap.php" - ] + "psr-4": { + "Twig\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "templating" ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2020-02-11T15:31:23+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.18.1", + "name": "voku/anti-xss", + "version": "4.1.25", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" + "url": "https://github.com/voku/anti-xss.git", + "reference": "2b7b0510b5ac5194c467aa5e80a94964896f0672" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", + "url": "https://api.github.com/repos/voku/anti-xss/zipball/2b7b0510b5ac5194c467aa5e80a94964896f0672", + "reference": "2b7b0510b5ac5194c467aa5e80a94964896f0672", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" + "php": ">=7.0.0", + "voku/portable-utf8": "~5.4.27" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "voku\\helper\\": "src/voku/helper/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3164,57 +4491,55 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "EllisLab Dev Team", + "homepage": "http://ellislab.com/" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "email": "lars@moelleken.org", + "homepage": "http://www.moelleken.org/" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "anti xss-library", + "homepage": "https://github.com/voku/anti-xss", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "anti-xss", + "clean", + "security", + "xss" ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2020-06-12T00:59:34+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.18.1", + "name": "voku/arrayy", + "version": "7.8.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "639447d008615574653fb3bc60d1986d7172eaae" + "url": "https://github.com/voku/Arrayy.git", + "reference": "ff32efd0036f776bd7adc3e7e6e3441d5c037c35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", - "reference": "639447d008615574653fb3bc60d1986d7172eaae", + "url": "https://api.github.com/repos/voku/Arrayy/zipball/ff32efd0036f776bd7adc3e7e6e3441d5c037c35", + "reference": "ff32efd0036f776bd7adc3e7e6e3441d5c037c35", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-json": "*", + "php": ">=7.0.0", + "phpdocumentor/reflection-docblock": "~4.3|~5.0", + "symfony/polyfill-mbstring": "~1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Arrayy\\": "src/" }, "files": [ - "bootstrap.php" + "src/Create.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3223,61 +4548,54 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "email": "lars@moelleken.org", + "homepage": "http://www.moelleken.org/", + "role": "Maintainer" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Array manipulation library for PHP, called Arrayy!", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "Arrayy", + "array", + "helpers", + "manipulation", + "methods", + "utility", + "utils" ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2020-07-28T21:43:54+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.18.1", + "name": "voku/email-check", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" + "url": "https://github.com/voku/email-check.git", + "reference": "f91fc9da57fbb29c4ded5a1fc1238d4b988758dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "url": "https://api.github.com/repos/voku/email-check/zipball/f91fc9da57fbb29c4ded5a1fc1238d4b988758dd", + "reference": "f91fc9da57fbb29c4ded5a1fc1238d4b988758dd", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.0.0", + "symfony/polyfill-intl-idn": "~1.10" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "fzaninotto/faker": "~1.7", + "phpunit/phpunit": "~6.0 || ~7.0" }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "suggest": { + "ext-intl": "Use Intl for best performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\helper\\": "src/voku/helper/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3285,61 +4603,51 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "email-check (syntax, dns, trash, ...) library", + "homepage": "https://github.com/voku/email-check", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "check-email", + "email", + "mail", + "mail-check", + "validate-email", + "validate-email-address", + "validate-mail" ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2019-01-02T23:08:14+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.18.1", + "name": "voku/portable-ascii", + "version": "1.5.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "25bcbf01678930251fd572891447d9e318a6e2b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/25bcbf01678930251fd572891447d9e318a6e2b8", + "reference": "25bcbf01678930251fd572891447d9e318a6e2b8", "shasum": "" }, "require": { - "php": ">=7.0.8" + "php": ">=7.0.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "voku\\": "src/voku/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3347,111 +4655,116 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "ascii", + "clean", + "php" ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2020-07-22T23:32:04+00:00" }, { - "name": "symfony/process", - "version": "v4.4.11", + "name": "voku/portable-utf8", + "version": "5.4.47", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" + "url": "https://github.com/voku/portable-utf8.git", + "reference": "c92522515a2d5ec9b03fd3c9e231b8b277c65121" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", - "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", + "url": "https://api.github.com/repos/voku/portable-utf8/zipball/c92522515a2d5ec9b03fd3c9e231b8b277c65121", + "reference": "c92522515a2d5ec9b03fd3c9e231b8b277c65121", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.0.0", + "symfony/polyfill-iconv": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.0", + "voku/portable-ascii": "~1.5" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "suggest": { + "ext-ctype": "Use Ctype for e.g. hexadecimal digit detection", + "ext-fileinfo": "Use Fileinfo for better binary file detection", + "ext-iconv": "Use iconv for best performance", + "ext-intl": "Use Intl for best performance", + "ext-json": "Use JSON for string detection", + "ext-mbstring": "Use Mbstring for best performance" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "voku\\": "src/voku/" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "(Apache-2.0 or GPL-2.0)" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Hamid Sarfraz", + "homepage": "http://pageconfig.com/" + }, + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" } ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "description": "Portable UTF-8 library - performance optimized (unicode) string functions for php.", + "homepage": "https://github.com/voku/portable-utf8", + "keywords": [ + "UTF", + "clean", + "php", + "unicode", + "utf-8", + "utf8" + ], + "time": "2020-07-26T11:17:51+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.1.3", + "name": "voku/stop-words", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" + "url": "https://github.com/voku/stop-words.git", + "reference": "8e63c0af20f800b1600783764e0ce19e53969f71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", + "url": "https://api.github.com/repos/voku/stop-words/zipball/8e63c0af20f800b1600783764e0ce19e53969f71", + "reference": "8e63c0af20f800b1600783764e0ce19e53969f71", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.0" + "php": ">=7.0.0" }, - "suggest": { - "symfony/service-implementation": "" + "require-dev": { + "phpunit/phpunit": "~6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" + "voku\\": "src/voku/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3460,65 +4773,55 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" } ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", + "description": "Stop-Words via PHP", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "stop words", + "stop-words" ], - "time": "2020-07-06T13:23:11+00:00" + "time": "2018-11-23T01:37:27+00:00" }, { - "name": "symfony/yaml", - "version": "v4.4.11", + "name": "voku/stringy", + "version": "6.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" + "url": "https://github.com/voku/Stringy.git", + "reference": "68429ad7626e94e2ec3a2a9f0b530e96ebb4a4db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", + "url": "https://api.github.com/repos/voku/Stringy/zipball/68429ad7626e94e2ec3a2a9f0b530e96ebb4a4db", + "reference": "68429ad7626e94e2ec3a2a9f0b530e96ebb4a4db", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "defuse/php-encryption": "~2.0", + "ext-json": "*", + "php": ">=7.0.0", + "voku/anti-xss": "~4.1", + "voku/arrayy": "~7.5", + "voku/email-check": "~3.0", + "voku/portable-ascii": "~1.5", + "voku/portable-utf8": "~5.4", + "voku/urlify": "~5.0" }, - "conflict": { - "symfony/console": "<3.4" + "replace": { + "danielstjules/stringy": "~3.0" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "phpunit/phpunit": "~6.0 || ~7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Stringy\\": "src/" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/Create.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3527,164 +4830,164 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Daniel St. Jules", + "email": "danielst.jules@gmail.com", + "homepage": "http://www.danielstjules.com", + "role": "Maintainer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Lars Moelleken", + "email": "lars@moelleken.org", + "homepage": "http://www.moelleken.org/", + "role": "Fork-Maintainer" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "description": "A string manipulation library with multibyte support", + "homepage": "https://github.com/danielstjules/Stringy", + "keywords": [ + "UTF", + "helpers", + "manipulation", + "methods", + "multibyte", + "string", + "utf-8", + "utility", + "utils" + ], + "time": "2020-05-24T00:26:26+00:00" }, { - "name": "true/punycode", - "version": "v2.1.1", + "name": "voku/urlify", + "version": "5.0.5", "source": { "type": "git", - "url": "https://github.com/true/php-punycode.git", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" + "url": "https://github.com/voku/urlify.git", + "reference": "d59bfa6d13ce08062e2fe40dd23d226262f961c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "url": "https://api.github.com/repos/voku/urlify/zipball/d59bfa6d13ce08062e2fe40dd23d226262f961c5", + "reference": "d59bfa6d13ce08062e2fe40dd23d226262f961c5", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/polyfill-mbstring": "^1.3" + "php": ">=7.0.0", + "voku/portable-ascii": "~1.4", + "voku/portable-utf8": "~5.4", + "voku/stop-words": "~2.0" }, "require-dev": { - "phpunit/phpunit": "~4.7", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "~6.0 || ~7.0" }, "type": "library", "autoload": { "psr-4": { - "TrueBV\\": "src/" + "voku\\helper\\": "src/voku/helper/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Renan Gonçalves", - "email": "renan.saddam@gmail.com" + "name": "Johnny Broadway", + "email": "johnny@johnnybroadway.com", + "homepage": "http://www.johnnybroadway.com/" + }, + { + "name": "Lars Moelleken", + "email": "lars@moelleken.org", + "homepage": "http://moelleken.org/" } ], - "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", - "homepage": "https://github.com/true/php-punycode", + "description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.", + "homepage": "https://github.com/voku/urlify", "keywords": [ - "idna", - "punycode" - ], - "time": "2016-11-16T10:37:54+00:00" + "encode", + "iconv", + "link", + "slug", + "translit", + "transliterate", + "transliteration", + "url", + "urlify" + ], + "time": "2019-12-13T02:57:54+00:00" }, { - "name": "twig/twig", - "version": "v2.11.3", + "name": "webmozart/assert", + "version": "1.9.1", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "699ed2342557c88789a15402de5eb834dedd6792" + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/699ed2342557c88789a15402de5eb834dedd6792", - "reference": "699ed2342557c88789a15402de5eb834dedd6792", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", "shasum": "" }, "require": { - "php": "^7.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" }, "require-dev": { - "psr/container": "^1.0", - "symfony/debug": "^2.7", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11-dev" - } - }, "autoload": { - "psr-0": { - "Twig_": "lib/" - }, "psr-4": { - "Twig\\": "src/" + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", - "role": "Contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", + "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "templating" + "assert", + "check", + "validate" ], - "time": "2019-06-18T15:37:11+00:00" + "time": "2020-07-08T17:02:28+00:00" }, { "name": "webonyx/graphql-php", - "version": "v14.1.1", + "version": "v0.12.6", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "d6fe86179a388abb0b671eec9688799b96673403" + "reference": "4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/d6fe86179a388abb0b671eec9688799b96673403", - "reference": "d6fe86179a388abb0b671eec9688799b96673403", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95", + "reference": "4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95", "shasum": "" }, "require": { - "ext-json": "*", "ext-mbstring": "*", - "php": "^7.1||^8.0" + "php": ">=5.6" }, "require-dev": { - "amphp/amp": "^2.3", - "doctrine/coding-standard": "^6.0", - "nyholm/psr7": "^1.2", - "phpbench/phpbench": "^0.16.10", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.32", - "phpstan/phpstan-phpunit": "0.12.11", - "phpstan/phpstan-strict-rules": "0.12.2", - "phpunit/phpunit": "^7.2|^8.5", + "phpunit/phpunit": "^4.8", "psr/http-message": "^1.0", - "react/promise": "2.*", - "simpod/php-coveralls-mirror": "^3.0", - "squizlabs/php_codesniffer": "3.5.4" + "react/promise": "2.*" }, "suggest": { "psr/http-message": "To use standard GraphQL server", @@ -3706,7 +5009,7 @@ "api", "graphql" ], - "time": "2020-07-21T17:39:31+00:00" + "time": "2018-09-02T14:59:54+00:00" }, { "name": "yii2tech/ar-softdelete", @@ -3763,21 +5066,21 @@ }, { "name": "yiisoft/yii2", - "version": "2.0.21", + "version": "2.0.36", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "7e4622252c5f272373e1339a47d331e4a55e9591" + "reference": "a557111ea6c27794b98c98b76ff3f127eb55f309" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/7e4622252c5f272373e1339a47d331e4a55e9591", - "reference": "7e4622252c5f272373e1339a47d331e4a55e9591", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/a557111ea6c27794b98c98b76ff3f127eb55f309", + "reference": "a557111ea6c27794b98c98b76ff3f127eb55f309", "shasum": "" }, "require": { "bower-asset/inputmask": "~3.2.2 | ~3.3.5", - "bower-asset/jquery": "3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", + "bower-asset/jquery": "3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", "bower-asset/punycode": "1.3.*", "bower-asset/yii2-pjax": "~2.0.1", "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0", @@ -3859,7 +5162,7 @@ "framework", "yii2" ], - "time": "2019-06-18T14:25:08+00:00" + "time": "2020-07-07T21:45:32+00:00" }, { "name": "yiisoft/yii2-composer", @@ -3976,28 +5279,29 @@ }, { "name": "yiisoft/yii2-queue", - "version": "2.1.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-queue.git", - "reference": "d04b4b3c932081200876a351cc6c3502e89e11b8" + "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/d04b4b3c932081200876a351cc6c3502e89e11b8", - "reference": "d04b4b3c932081200876a351cc6c3502e89e11b8", + "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/25c1142558768ec0e835171c972a4edc2fb59cf0", + "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0", "shasum": "" }, "require": { "php": ">=5.5.0", - "symfony/process": "*", + "symfony/process": "^3.3||^4.0", "yiisoft/yii2": "~2.0.14" }, "require-dev": { "aws/aws-sdk-php": ">=2.4", - "enqueue/amqp-lib": "^0.8", + "enqueue/amqp-lib": "^0.8||^0.9.10", + "enqueue/stomp": "^0.8.39", "jeremeamia/superclosure": "*", - "pda/pheanstalk": "*", + "pda/pheanstalk": "v3.*", "php-amqplib/php-amqplib": "*", "phpunit/phpunit": "~4.4", "yiisoft/yii2-debug": "*", @@ -4007,6 +5311,7 @@ "suggest": { "aws/aws-sdk-php": "Need for aws SQS.", "enqueue/amqp-lib": "Need for AMQP interop queue.", + "enqueue/stomp": "Need for Stomp queue.", "ext-gearman": "Need for Gearman queue.", "ext-pcntl": "Need for process signals.", "pda/pheanstalk": "Need for Beanstalk queue.", @@ -4016,7 +5321,7 @@ "type": "yii2-extension", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -4030,7 +5335,8 @@ "yii\\queue\\gearman\\": "src/drivers/gearman", "yii\\queue\\redis\\": "src/drivers/redis", "yii\\queue\\sync\\": "src/drivers/sync", - "yii\\queue\\sqs\\": "src/drivers/sqs" + "yii\\queue\\sqs\\": "src/drivers/sqs", + "yii\\queue\\stomp\\": "src/drivers/stomp" } }, "notification-url": "https://packagist.org/downloads/", @@ -4056,7 +5362,7 @@ "sqs", "yii" ], - "time": "2018-05-23T21:04:57+00:00" + "time": "2019-06-04T18:58:40+00:00" }, { "name": "yiisoft/yii2-swiftmailer", From f2e5979494630c4d5c6fc9d6b86551d04372a3ab Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 10 Aug 2020 23:53:46 -0500 Subject: [PATCH 47/62] Allow Base64 User Photo Upload --- .phplint-cache | 2 +- src/Listeners/GetAssetsFieldSchema.php | 1 - src/Types/Mutation.php | 37 +++++++++++++++++++++----- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 8628286d..94709697 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"255be644a1a3cd865b54e0617dc632af","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"be2e90f2e6f4c92ba5497b6620b353bf","Request.php":"e3d6c81e2543c9a6799a381167226b7c"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"c7dd7f3a8e813b44054945228311d523","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400"} \ No newline at end of file diff --git a/src/Listeners/GetAssetsFieldSchema.php b/src/Listeners/GetAssetsFieldSchema.php index a563fdd0..08ae41cf 100644 --- a/src/Listeners/GetAssetsFieldSchema.php +++ b/src/Listeners/GetAssetsFieldSchema.php @@ -34,7 +34,6 @@ function handle(GetFieldSchema $event) { $inputObject->addIntArgument('id'); $inputObject->addStringArgument('url'); $inputObject->addStringArgument('title'); - // $inputObject->addFieldsByLayoutId(); $event->mutation->addArgument($field) ->lists() diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index ff550b61..dcb5e1ff 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -3,6 +3,7 @@ namespace markhuot\CraftQL\Types; use craft\base\Element; +use craft\elements\Asset; use GraphQL\Error\UserError; use Craft; use markhuot\CraftQL\Builders\Schema; @@ -60,6 +61,7 @@ function boot() { $updateUser->addStringArgument('username'); $updateUser->addStringArgument('email'); $updateUser->addStringArgument('password'); + $updateUser->addStringArgument('photoUrl'); if ($this->request->token()->can('mutate:users:permissions')) { $updateUser->addStringArgument('permissions')->lists(); @@ -113,6 +115,35 @@ function boot() { unset($values['permissions']); } + if(!empty($values['photo'])) { + $data = $values['photo']; + + if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) { + $data = substr($data, strpos($data, ',') + 1); + $type = strtolower($type[1]); // jpg, png, gif + + if (!in_array($type, [ 'jpg', 'jpeg', 'gif', 'png' ])) { + throw new \Exception('invalid image type'); + } + + $photo = base64_decode($data); + + if ($data === false) { + throw new \Exception('base64_decode failed'); + } + } else { + throw new \Exception('did not match data URI with image data'); + } + + $uploadPath = \craft\helpers\Assets::tempFilePath(); + $fileLocation = "{$uploadPath}/user_{$user->id}_photo.{$type}"; + file_put_contents($fileLocation, $photo); + + Craft::$app->users->saveUserPhoto($fileLocation, $user); + + unset($values['photoUrl']); + } + foreach ($values as $handle => &$value) { $callback = $updateUser->getArgument($handle)->getOnSave(); if ($callback) { @@ -138,9 +169,6 @@ function boot() { if($new) { Craft::$app->users->assignUserToDefaultGroup($user); - //$user->token = CraftQL::getInstance()->jwt->tokenForUser($user); - } else { - //$user->token = null; } if (!empty($permissions)) { @@ -157,11 +185,8 @@ function boot() { $deleteUser->addIntArgument('id')->nonNull(); - $fieldLayout = Craft::$app->getFields()->getLayoutByType(\craft\elements\User::class); - $deleteUser->resolve(function ($root, $args, $context, $info) use ($deleteUser) { - $values = $args; $token = $this->request->token(); $userId = $args['id']; From 6c4d79dbeeae5f83916eddddb143373eeb8609c3 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 11 Aug 2020 00:04:02 -0500 Subject: [PATCH 48/62] Fix User Photo argument naming --- src/Types/Mutation.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index dcb5e1ff..35e5c66e 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -61,7 +61,7 @@ function boot() { $updateUser->addStringArgument('username'); $updateUser->addStringArgument('email'); $updateUser->addStringArgument('password'); - $updateUser->addStringArgument('photoUrl'); + $updateUser->addStringArgument('photo'); if ($this->request->token()->can('mutate:users:permissions')) { $updateUser->addStringArgument('permissions')->lists(); @@ -141,7 +141,7 @@ function boot() { Craft::$app->users->saveUserPhoto($fileLocation, $user); - unset($values['photoUrl']); + unset($values['photo']); } foreach ($values as $handle => &$value) { From 8745f9c5649762cc8dbc883492e88b0b3bcc2cd1 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 11 Aug 2020 20:07:47 -0500 Subject: [PATCH 49/62] Remove Duplicate filename as tempFilePath generates a name for us. --- src/Types/Mutation.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 35e5c66e..c2f88e58 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -135,11 +135,10 @@ function boot() { throw new \Exception('did not match data URI with image data'); } - $uploadPath = \craft\helpers\Assets::tempFilePath(); - $fileLocation = "{$uploadPath}/user_{$user->id}_photo.{$type}"; - file_put_contents($fileLocation, $photo); + $uploadPath = \craft\helpers\Assets::tempFilePath($type); + file_put_contents($uploadPath, $photo); - Craft::$app->users->saveUserPhoto($fileLocation, $user); + Craft::$app->users->saveUserPhoto($uploadPath, $user); unset($values['photo']); } From 06d715ad6881441a6fd17d89257e9a78e138924a Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 11 Aug 2020 23:16:00 -0500 Subject: [PATCH 50/62] Fix validation and add user photo filename --- src/Types/Mutation.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index c2f88e58..f132a342 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -128,7 +128,7 @@ function boot() { $photo = base64_decode($data); - if ($data === false) { + if ($photo === false) { throw new \Exception('base64_decode failed'); } } else { @@ -138,7 +138,9 @@ function boot() { $uploadPath = \craft\helpers\Assets::tempFilePath($type); file_put_contents($uploadPath, $photo); - Craft::$app->users->saveUserPhoto($uploadPath, $user); + $filename = "user_{$user->id}_photo.{$type}"; + + Craft::$app->users->saveUserPhoto($uploadPath, $user, $filename); unset($values['photo']); } From 12d46d21a2555ab79f34a1838e2a0ea6b48bb6a1 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Tue, 11 Aug 2020 23:45:09 -0500 Subject: [PATCH 51/62] Allow for photo deletion if null is passed. --- src/Types/Mutation.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index f132a342..898c5485 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -115,6 +115,10 @@ function boot() { unset($values['permissions']); } + if($values['photo'] === null) { + Craft::$app->users->deleteUserPhoto($user); + } + if(!empty($values['photo'])) { $data = $values['photo']; From 8e1efbc205b39549384b9c811a22b35cf8c95ce2 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Wed, 12 Aug 2020 00:31:07 -0500 Subject: [PATCH 52/62] Unset photo when deleting --- src/Types/Mutation.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 898c5485..6f4b30de 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -117,6 +117,7 @@ function boot() { if($values['photo'] === null) { Craft::$app->users->deleteUserPhoto($user); + unset($values['photo']); } if(!empty($values['photo'])) { From dc774f010e111469340a8fc8b508b42c97925ac7 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 7 Sep 2020 19:03:06 -0500 Subject: [PATCH 53/62] Check for photoId before deleting --- .phplint-cache | 2 +- src/Types/Mutation.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 94709697..90253689 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"c7dd7f3a8e813b44054945228311d523","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"3180c74e900590d233cc467caf20367a"} \ No newline at end of file diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 6f4b30de..d6b6959e 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -116,7 +116,9 @@ function boot() { } if($values['photo'] === null) { - Craft::$app->users->deleteUserPhoto($user); + if(isset($user->photoId)) { + Craft::$app->users->deleteUserPhoto($user); + } unset($values['photo']); } From 0e34d34086d8eff3430a5be3f41f57b98e9e4258 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 11 Sep 2020 10:01:35 -0500 Subject: [PATCH 54/62] Allow for not including the photo arg --- .phplint-cache | 2 +- src/Types/Mutation.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 90253689..1de76558 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"3180c74e900590d233cc467caf20367a"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"3ed038ddac7551612052312acec4b046"} \ No newline at end of file diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index d6b6959e..6549f6be 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -115,7 +115,7 @@ function boot() { unset($values['permissions']); } - if($values['photo'] === null) { + if(array_key_exists('photo', $values) && $values['photo'] === null) { if(isset($user->photoId)) { Craft::$app->users->deleteUserPhoto($user); } From 27688c1f262de4531f146816b1d75ebdd33f6cc0 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 11 Sep 2020 11:11:22 -0500 Subject: [PATCH 55/62] Use UUID to ensure unique avatar file names --- .phplint-cache | 2 +- src/Types/Mutation.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 1de76558..d331685c 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"3ed038ddac7551612052312acec4b046"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f"} \ No newline at end of file diff --git a/src/Types/Mutation.php b/src/Types/Mutation.php index 6549f6be..e33f2eda 100644 --- a/src/Types/Mutation.php +++ b/src/Types/Mutation.php @@ -145,7 +145,9 @@ function boot() { $uploadPath = \craft\helpers\Assets::tempFilePath($type); file_put_contents($uploadPath, $photo); - $filename = "user_{$user->id}_photo.{$type}"; + $uuid = craft\helpers\StringHelper::UUID(); + + $filename = "user_{$uuid}_photo.{$type}"; Craft::$app->users->saveUserPhoto($uploadPath, $user, $filename); From 732acf60795289ce7c292e6d28e419ebfa5f96e0 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Sun, 8 Nov 2020 17:57:05 -0600 Subject: [PATCH 56/62] Refresh Refactor - Use embeded refresh token - Refresh Token = hash of lastPasswordChanged and lastLoginDate - Update API controller to rescue JWT exceptions and return 401 --- .phplint-cache | 2 +- src/Controllers/ApiController.php | 12 ++++++++- src/Models/Token.php | 23 +++++++++++----- src/Services/JWTService.php | 45 +++++++++++++++++++++++++++++++ src/Types/Query.php | 9 ------- 5 files changed, 74 insertions(+), 17 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index d331685c..74ba2fd5 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"3a639c972d858b56f32c606b49c92bd7","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"854d0af3a08ff43b505faff6b07d2a80","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"56a5ebf0fd1c96d10e4f0375f8cc9340","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/JWTService.php":"90dd9a8dfbddc10c58ec3fbb0cf4ecc8","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"faac3808e5328f7e4c49ee60d262fa2e","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"51093c1690d879a1962756da3cf6b874","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"61ed653a5c44b902218aaf608aafeaee","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Services\/JWTService.php":"dc29940b855278d5b40112c8d5c641bb"} \ No newline at end of file diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 153923d5..22e23509 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -44,7 +44,17 @@ function actionIndex() $authorization = Craft::$app->request->headers->get('authorization'); preg_match('/^(?:b|B)earer\s+(?.+)/', $authorization, $matches); - $token = Token::findOrAnonymous(@$matches['tokenId']); + try { + $token = Token::findOrAnonymous(@$matches['tokenId']); + } catch ( \UnexpectedValueException + | \Firebase\JWT\SignatureInvalidException + | \Firebase\JWT\BeforeValidException + | \Firebase\JWT\ExpiredException $e) { + $response->setStatusCode(401); + $response->headers->add('Content-Type', 'application/json; charset=UTF-8'); + return $this->asErrorJson($e->getMessage()); + } + if ($user = $token->getUser()) { $response->headers->add('Authorization', 'Bearer ' . CraftQL::getInstance()->jwt->tokenForUser($user)); diff --git a/src/Models/Token.php b/src/Models/Token.php index c39a2243..6d59fbbb 100644 --- a/src/Models/Token.php +++ b/src/Models/Token.php @@ -50,6 +50,12 @@ function setUser (\craft\elements\User $user) { * * @param bool $token * @return Token|null + * + * @throws \Firebase\JWT\UnexpectedValueException Provided JWT was invalid + * @throws \Firebase\JWT\SignatureInvalidException Provided JWT was invalid because the signature verification failed + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf' + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat' + * @throws \Firebase\JWT\ExpiredException Provided JWT has since expired, as defined by the 'exp' claim */ public static function findOrAnonymous($token=false) { @@ -76,15 +82,20 @@ public static function tokenForSession() { return false; } + /** + * @param $token + * @return false|Token + * + * @throws \UnexpectedValueException Provided JWT was invalid + * @throws \Firebase\JWT\SignatureInvalidException Provided JWT was invalid because the signature verification failed + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf' + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat' + * @throws \Firebase\JWT\ExpiredException Provided JWT has since expired, as defined by the 'exp' claim + */ public static function tokenForString($token) { // If the token matches a JWT format if (preg_match('/[^.]+\.[^.]+\.[^.]+/', $token)) { - try { - $tokenData = CraftQL::getInstance()->jwt->decode($token); - } - catch (ExpiredException $e) { - throw new UserError('The token has expired'); - } + $tokenData = CraftQL::getInstance()->jwt->refreshDecode($token); $user = \craft\elements\User::find()->id($tokenData->id)->one(); $token = Token::forUser($user); return $token; diff --git a/src/Services/JWTService.php b/src/Services/JWTService.php index 1c4ba3f0..bf2471e6 100644 --- a/src/Services/JWTService.php +++ b/src/Services/JWTService.php @@ -5,6 +5,7 @@ use Craft; use craft\elements\User; use Firebase\JWT\JWT; +use Firebase\JWT\SignatureInvalidException; use markhuot\CraftQL\CraftQL; use yii\base\Component; @@ -27,15 +28,53 @@ function encode($string) { return JWT::encode($string, $this->key); } + /** + * @param $string + * @return object + * + * @throws \UnexpectedValueException Provided JWT was invalid + * @throws \Firebase\JWT\SignatureInvalidException Provided JWT was invalid because the signature verification failed + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf' + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat' + * @throws \Firebase\JWT\ExpiredException Provided JWT has since expired, as defined by the 'exp' claim + */ function decode($string) { return JWT::decode($string, $this->key, ['HS256']); } + /** + * @param $token + * @return object + * + * @throws \UnexpectedValueException Provided JWT was invalid + * @throws \Firebase\JWT\SignatureInvalidException Provided JWT was invalid because the signature verification failed + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf' + * @throws \Firebase\JWT\BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat' + * @throws \Firebase\JWT\ExpiredException Provided JWT has since expired, as defined by the 'exp' claim + */ + function refreshDecode($token) { + try { + $this->decode($token); + } catch(\Firebase\JWT\ExpiredException $e) { + + list($header, $payload, $signature) = explode(".", $token); + $tokenData = JWT::jsonDecode(JWT::urlsafeB64Decode($payload)); + $refreshToken = $tokenData->refresh_token; + $user = \craft\elements\User::find()->id($tokenData->id)->one(); + if($refreshToken != $this->refreshToken($user)){ + throw $e; + } + + return $tokenData; + } + } + function tokenForUser(User $user) { $defaultTokenDuration = CraftQL::getInstance()->getSettings()->userTokenDuration; $tokenData = [ 'id' => $user->id, + 'refresh_token' => $this->refreshToken($user) ]; if ($defaultTokenDuration > 0) { @@ -45,4 +84,10 @@ function tokenForUser(User $user) { return $this->encode($tokenData); } + function refreshToken(User $user) { + $lastLogin = $user->lastLoginDate->format(DATE_ATOM); + $passwordChanged = $user->lastPasswordChangeDate->format(DATE_ATOM); + return hash('sha256', "$lastLogin:$passwordChanged"); + } + } diff --git a/src/Types/Query.php b/src/Types/Query.php index c68978f0..8be1e123 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -368,15 +368,6 @@ function addAuthSchema() { 'token' => $tokenString, ]; }); - - $field = $this->addStringField('refresh'); - $field->addStringArgument('token')->nonNull(); - $field->resolve(function ($root, $args) use ($defaultTokenDuration) { - $tokenData = $args['token']; - $tokenData = CraftQL::getInstance()->jwt->decode($tokenData); - $tokenData->exp = time() + $defaultTokenDuration; - return CraftQL::getInstance()->jwt->encode($tokenData); - }); } function addUsersSchema() { From 97c52c799e8ef1b2a8396f6b6d977b010daee750 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 9 Nov 2020 18:04:07 -0600 Subject: [PATCH 57/62] Handle missing values for refresh token checks and generation --- .phplint-cache | 2 +- src/Services/JWTService.php | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 74ba2fd5..2fe5f369 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"faac3808e5328f7e4c49ee60d262fa2e","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"51093c1690d879a1962756da3cf6b874","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"61ed653a5c44b902218aaf608aafeaee","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Services\/JWTService.php":"dc29940b855278d5b40112c8d5c641bb"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"faac3808e5328f7e4c49ee60d262fa2e","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"51093c1690d879a1962756da3cf6b874","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"61ed653a5c44b902218aaf608aafeaee","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Services\/JWTService.php":"f4acf6ceae5db0fc8e01ab1a1aa0cc93"} \ No newline at end of file diff --git a/src/Services/JWTService.php b/src/Services/JWTService.php index bf2471e6..0276b487 100644 --- a/src/Services/JWTService.php +++ b/src/Services/JWTService.php @@ -59,6 +59,11 @@ function refreshDecode($token) { list($header, $payload, $signature) = explode(".", $token); $tokenData = JWT::jsonDecode(JWT::urlsafeB64Decode($payload)); + + if(!isset($tokenData->refresh_token)){ + throw $e; + } + $refreshToken = $tokenData->refresh_token; $user = \craft\elements\User::find()->id($tokenData->id)->one(); if($refreshToken != $this->refreshToken($user)){ @@ -85,8 +90,8 @@ function tokenForUser(User $user) { } function refreshToken(User $user) { - $lastLogin = $user->lastLoginDate->format(DATE_ATOM); - $passwordChanged = $user->lastPasswordChangeDate->format(DATE_ATOM); + $lastLogin = ($lastLogin = $user->lastLoginDate) ? $lastLogin->format(DATE_ATOM) : ''; + $passwordChanged = ($passwordChanged = $user->lastPasswordChangeDate) ? $passwordChanged->format(DATE_ATOM) : ''; return hash('sha256', "$lastLogin:$passwordChanged"); } From a414f8c2b509109570a4a4a37b4d90ce0ed65332 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Mon, 9 Nov 2020 19:00:22 -0600 Subject: [PATCH 58/62] Return tokenData from refresh decode --- .phplint-cache | 2 +- src/Services/JWTService.php | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.phplint-cache b/.phplint-cache index 2fe5f369..a075afbe 100644 --- a/.phplint-cache +++ b/.phplint-cache @@ -1 +1 @@ -{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"faac3808e5328f7e4c49ee60d262fa2e","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"51093c1690d879a1962756da3cf6b874","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"61ed653a5c44b902218aaf608aafeaee","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Services\/JWTService.php":"f4acf6ceae5db0fc8e01ab1a1aa0cc93"} \ No newline at end of file +{"Directives\/Date.php":"baeb2a9b2cfd54bac865275a21ffb2a4","migrations\/Install.php":"bdac5ceaf75628d94501436a7a9d99e1","migrations\/m170804_170613_add_scopes.php":"e0a91f086742015e4be16ce9dcd3d0cc","Types\/GlobalsSet.php":"be4aa61174b94342963334ae6dcd3a0f","Types\/TagEdge.php":"3dd152aceb896a9a1364edc39dd6010d","Types\/PageInfo.php":"cd3c234439e7b6227bd9a23da4197b20","Types\/Category.php":"261a780b751773a610f2d45fe1b7eb38","Types\/Mutation.php":"807c0e78a3b3b633e154307e18e77e7f","Types\/Timestamp.php":"7b992fb55cd6254eda53af019e050fd0","Types\/Volume.php":"768da11619e56ee5ce73ddb68ffc1f35","Types\/OptionFieldDataOptions.php":"81791e88bc1e322dc63714b11129e54d","Types\/VolumeInterface.php":"60ca277fa635d1318af32a76163ebf7b","Types\/EntryInterface.php":"f7310b403be156bfad63cfa5c226fad9","Types\/Authorize.php":"65c6030498077e2057e7576f056da77f","Types\/TagInterface.php":"a62d6fb8956143ef74c9c73fc2f05754","Types\/CategoryInterface.php":"e3fb0f08b2957c077b0454c6f1bcb1e0","Types\/EntryDraftConnection.php":"17511256eed20693ca8748d5f6628754","Types\/Tag.php":"832d7d88d29ee1dcc730b0a6f530b0f2","Types\/CategoryGroup.php":"60a4bc0603220428d1fdc246d51388bf","Types\/User.php":"9185044a1e80cda3a968819609b997c1","Types\/OptionFieldData.php":"e70fbf0132072e6e81961425b42ae893","Types\/Field.php":"121ef00f689e78e677686f38a3f26f59","Types\/CategoryEdge.php":"e3f789e5035e9b25893a442f2ab1e662","Types\/Section.php":"7766719b9e4436766e9cf013dd239ef9","Types\/Entry.php":"221ed92de5fd2afce1018b266fec0aa4","Types\/MultiOptionFieldData.php":"05501b0b9b01367150b2d8e15ceaf408","Types\/TagGroup.php":"3a6158e2f9465644f6deacee9bb47b57","Types\/EntryDraftInfo.php":"4e7cfa4a7493aedbc27a263998062056","Types\/SectionSiteSettings.php":"015d796a7d587dd71fa6623eb3598472","Types\/Globals.php":"ea1b57496e3e792b9b0fbed78c98f375","Types\/EntryDraftEdge.php":"1b1b9dd062848e1069b068de95f7ea53","Types\/EntryEdge.php":"6a793e416b033131d7aa46cee5af1154","Types\/CategoryConnection.php":"0b6f59bff6afcd66f077f3e8f1813667","Types\/Query.php":"faac3808e5328f7e4c49ee60d262fa2e","Types\/ElementInterface.php":"0af961a0995acfc44bbadce33272b24d","Types\/VolumeFolder.php":"b788b6f40e44159215ec33de813d495d","Types\/EntryType.php":"95da0ddae6c0f3998597a4369e16e4fa","Types\/TagConnection.php":"ade5318cbd441ba3445c206934d734a4","Types\/EntryConnection.php":"bb8ffb6e3691ba777c71f93420adb5ea","Types\/Site.php":"21728601850dbc401d8542a9edfad99e","GraphiQLAssetBundle.php":"1ee7ac5d3412ede48f2f762cc1b60090","Builders\/HasResolveAttribute.php":"0c9edfeacdbebe939f66cd4972227edf","Builders\/EnumObject.php":"c7ae8a37a38c5d51b6d071714f6bad1f","Builders\/ContentField.php":"a2f7b6c203cc5494a2e433ffd54f70fc","Builders\/Argument.php":"bc58e7f1c40aea08a1ed83b8993c230b","Builders\/HasDescriptionAttribute.php":"9b89956b611645be16f4ae227947ea2e","Builders\/InterfaceBuilder.php":"582550f35748c01ae65fb83e1051ac71","Builders\/InputSchema.php":"9bd36aaef58410736bb8277945d44eb5","Builders\/HasIsListAttribute.php":"008233ae4cac7de01e09c6db88f179c9","Builders\/HasOnSaveAttribute.php":"912eecf6ae28be322f7c8a0049173075","Builders\/Field.php":"e3d8e16ba397f070efeb9e9f86c9c567","Builders\/HasDeprecationReasonAttribute.php":"c9259e7346df24aa34489fb453e4ae5a","Builders\/HasArgumentsAttribute.php":"1e30f5e96031d2275ad2906b60d8cf7c","Builders\/Date.php":"f2e6df9547a2ebe437b88c20b716fc67","Builders\/HasNonNullAttribute.php":"6fb719c199c061c9da19880d0e5b6462","Builders\/Schema.php":"db7862c996dd5c3e8cb16592ac49de07","Builders\/HasTypeAttribute.php":"2dc892a2fa13d2d6f45125be8a52f32c","Builders\/BaseBuilder.php":"b9833341e12d172ccfbbfa0bd7377ec1","Builders\/Union.php":"0bc1757f662471b987a2667a3fe96737","Builders\/EnumField.php":"1f578407e4a5a8c9017e2f3086d8cde0","TypeModels\/PageInfo.php":"357cf86c4725878e75e75bf4f0533f7f","events.php":"7a1ee57998d4ad2803cfa4bcb523e2ef","Repositories\/Volumes.php":"962b3279ec5c231d1c1f5c09c0c20ab6","Repositories\/CategoryGroup.php":"ce6e1bd189557a4b6eccf29ec175e8b6","Repositories\/Section.php":"233795aeb2c448a64f2932a2f905095c","Repositories\/TagGroup.php":"90abbe425aaa627edea7599b958c583b","Repositories\/Globals.php":"f33089c03a539d2388302cc12edb1f60","Repositories\/EntryType.php":"d361108742c657dbc6a3070cbb1a12ad","Models\/Settings.php":"8f90a36e3a144c3952fd65d9d2682852","Models\/Token.php":"51093c1690d879a1962756da3cf6b874","CraftQL.php":"d51ea33f98050d33db8d1625519dd0d2","Request.php":"e3d6c81e2543c9a6799a381167226b7c","Behaviors\/FieldBehavior.php":"5ae6bff9597550fb5e8ee1c8abfb2aed","Behaviors\/SchemaBehavior.php":"5b46ff848f03b0c60413dcd4057583c1","Factories\/Volume.php":"4818db3c3f7d4e5227a34aaea66a5eff","Factories\/CategoryGroup.php":"e52b302a120c7fde80af3ce76ba13ece","Factories\/Section.php":"1a4675b195302743c7472c02ee9142c9","Factories\/BaseFactory.php":"7f23db8c96c5f369a70259f095e8e485","Factories\/TagGroup.php":"b7cb9980d92a83a710d7fb62f91968e7","Factories\/Globals.php":"b1d0c6c6be79df67981e4004548747af","Factories\/EntryType.php":"8978798c65bcb45a5f4c9a5e1066202c","Factories\/DraftEntryType.php":"a7d18b520c59d47277ee1bfd1c2e49ea","Events\/AlterQuerySchema.php":"ec3ff837e159e7bc60aeaf5cd7cfae7b","Events\/GetFieldSchema.php":"1fea4e43df488f7531b596bbdb188041","Events\/AlterSchemaFields.php":"9eef06015d13cc67a98233c762892f42","Controllers\/ApiController.php":"61ed653a5c44b902218aaf608aafeaee","Controllers\/CpController.php":"a754745cbda87e4dfed9a4e299e3a49e","Listeners\/GetSuperTableFieldSchema.php":"5cf90f651dcd75d2b80f2ca2d732510f","Listeners\/GetSelectMultipleFieldSchema.php":"4994a19db85021117db39d7e6e037f91","Listeners\/GetMatrixFieldSchema.php":"1599b300042097bd6d1f611707c60c5f","Listeners\/GetColorFieldSchema.php":"32b71a617926a0b8c01e02e94ee5b4b9","Listeners\/GetVideosFieldSchema.php":"13c49543a684598b3e34856ae24fa596","Listeners\/GetUsersFieldSchema.php":"df83e779effeca8c7896f253620eb3ab","Listeners\/GetUserPermissions.php":"a24d43cd3f763d5952d7dad77493ea2a","Listeners\/GetTableFieldSchema.php":"c411a6935bb97e480c0e1ce4319fd116","Listeners\/GetSelectOneFieldSchema.php":"f5b9f540afa8d8d0e4e3ec7251fc1680","Listeners\/GetDateFieldSchema.php":"0432c0c39654792471adc649b04750a2","Listeners\/GetNumberFieldSchema.php":"42c123b3a57387fbb87cbc0b29a07a11","Listeners\/GetDefaultFieldSchema.php":"793d5046942da5489ace073e670acad2","Listeners\/GetEntriesFieldSchema.php":"e352c02ad6c20070912c3fd52c1a8f6a","Listeners\/GetPositionSelectFieldSchema.php":"0298329ecf341b0842aef6f8d3bcab36","Listeners\/GetCategoriesFieldSchema.php":"629016929f40892d3ab7c74920a3ab56","Listeners\/GetLightswitchFieldSchema.php":"f03a65ccf6b133aa4041d74e2eb9761c","Listeners\/GetTagsFieldSchema.php":"1074ce6430434c1838631abb16d0a37d","Listeners\/GetAssetsFieldSchema.php":"27d706390b93d1477aa696f7f9e59400","Listeners\/GetRedactorFieldSchema.php":"33749d16f29388490cd4e4bf900f16fc","Helpers\/StringHelper.php":"dc934b6491437c8aa184ba8c00aab3d9","Services\/GraphQLService.php":"9f9125083f8422188efec74e4c6a9d07","Services\/FieldService.php":"c1a98d2549367c1cba4a705681a8e0db","FieldBehaviors\/EntryMutationArguments.php":"12438eca9b47c463b9d32941f349ab87","FieldBehaviors\/AssetQueryArguments.php":"3f9a989390e8cb3197ba89676f67f80b","FieldBehaviors\/AssetTransformArguments.php":"4066e61688429007eaab847cf6ce822a","FieldBehaviors\/EntryQueryArguments.php":"3c29942eca383d86fc7392e7bc7844b0","FieldBehaviors\/TagQueryArguments.php":"de68bc8cbffe598488d8648155f43764","FieldBehaviors\/UserQueryArguments.php":"bf4b14b49c56679f6b52a7a52686a21a","FieldBehaviors\/RelatedEntriesField.php":"2f1b158a2ca5d1dd3fc2f26b4856ef0a","FieldBehaviors\/RelatedCategoriesField.php":"e89b1620e5d52963bb46a93f293cf504","FieldBehaviors\/CategoryQueryArguments.php":"d0ebed0a52831e2c265f767777943d2d","Console\/ToolsController.php":"3eb5de3165031f6ce817b21f4f387ba6","Services\/JWTService.php":"f16d99895e5e1e7967c7721acc68de47"} \ No newline at end of file diff --git a/src/Services/JWTService.php b/src/Services/JWTService.php index 0276b487..6c5ae57f 100644 --- a/src/Services/JWTService.php +++ b/src/Services/JWTService.php @@ -54,24 +54,24 @@ function decode($string) { */ function refreshDecode($token) { try { - $this->decode($token); + $tokenData = $this->decode($token); } catch(\Firebase\JWT\ExpiredException $e) { list($header, $payload, $signature) = explode(".", $token); $tokenData = JWT::jsonDecode(JWT::urlsafeB64Decode($payload)); - if(!isset($tokenData->refresh_token)){ + if (!isset($tokenData->refresh_token)) { throw $e; } $refreshToken = $tokenData->refresh_token; $user = \craft\elements\User::find()->id($tokenData->id)->one(); - if($refreshToken != $this->refreshToken($user)){ + if ($refreshToken != $this->refreshToken($user)) { throw $e; } - - return $tokenData; } + + return $tokenData; } function tokenForUser(User $user) { From 711c3b8b47a70f9dc80f65edaf218e5168c21bd1 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 13 Jan 2023 10:38:29 -0600 Subject: [PATCH 59/62] feat: Support triggering reset password email --- .gitignore | 2 ++ src/Types/Query.php | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 474f5433..a525aeab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ vendor .DS_Store .idea +.envrc +.tool-versions \ No newline at end of file diff --git a/src/Types/Query.php b/src/Types/Query.php index 8be1e123..5fe61eb2 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -26,6 +26,7 @@ function boot() { // @TODO add plugin setting to control authorize visibility $this->addAuthSchema(); + $this->addPasswordResetSchema(); if ($token->can('query:sites')) { $this->addSitesSchema(); @@ -358,7 +359,7 @@ function addAuthSchema() { } if (!Craft::$app->getUser()->login($user, 0)) { - throw new UserError('An unknown error occured'); + throw new UserError('An unknown error occurred'); } $tokenString = CraftQL::getInstance()->jwt->tokenForUser($user); @@ -370,6 +371,32 @@ function addAuthSchema() { }); } + function addPasswordResetSchema() { + $object = $this->createObjectType('ResetPassword') + ->addBooleanField('success'); + + $this->addField('resetPassword') + ->type($object) + ->addStringArgument('email') + ->resolve(function ($root, $args) { + $email = $args['email']; + + $user = Craft::$app->getUsers()->getUserByUsernameOrEmail($email); + + if (!$user) { + throw new UserError('user_not_found'); + } + + if(!Craft::$app->getUsers()->sendPasswordResetEmail($user)) { + throw new UserError('An unknown error occurred'); + } + + return [ + 'success' => true + ]; + }); + } + function addUsersSchema() { $userResolver = function ($root, $args) { $criteria = \craft\elements\User::find(); From 25f3ca51cebaf87e21c522de29db7618f03ad49f Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 13 Jan 2023 11:24:57 -0600 Subject: [PATCH 60/62] fix(resetPassword): Invoke resolve on correct object --- src/Types/Query.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Types/Query.php b/src/Types/Query.php index 5fe61eb2..c1fb2bab 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -375,10 +375,12 @@ function addPasswordResetSchema() { $object = $this->createObjectType('ResetPassword') ->addBooleanField('success'); - $this->addField('resetPassword') - ->type($object) - ->addStringArgument('email') - ->resolve(function ($root, $args) { + $resetPassword = $this->addField('resetPassword') + ->type($object); + + $resetPassword->addStringArgument('email'); + + $resetPassword->resolve(function ($root, $args) { $email = $args['email']; $user = Craft::$app->getUsers()->getUserByUsernameOrEmail($email); From b97b68db19be50672bf087588e370760db1431c9 Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Fri, 13 Jan 2023 11:49:54 -0600 Subject: [PATCH 61/62] fix(resetPassword): Add a PasswordReset type --- src/Types/PasswordReset.php | 13 +++++++++++++ src/Types/Query.php | 4 +--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 src/Types/PasswordReset.php diff --git a/src/Types/PasswordReset.php b/src/Types/PasswordReset.php new file mode 100644 index 00000000..23ca7d50 --- /dev/null +++ b/src/Types/PasswordReset.php @@ -0,0 +1,13 @@ +addBooleanField('success')->nonNull(); + } + +} diff --git a/src/Types/Query.php b/src/Types/Query.php index c1fb2bab..fd9064d2 100644 --- a/src/Types/Query.php +++ b/src/Types/Query.php @@ -372,11 +372,9 @@ function addAuthSchema() { } function addPasswordResetSchema() { - $object = $this->createObjectType('ResetPassword') - ->addBooleanField('success'); $resetPassword = $this->addField('resetPassword') - ->type($object); + ->type(PasswordReset::class); $resetPassword->addStringArgument('email'); From 6f11c524eee212eea1329665fa0c72b694623bed Mon Sep 17 00:00:00 2001 From: Scott Hill Date: Sun, 13 Aug 2023 17:06:27 -0500 Subject: [PATCH 62/62] feat: Craft 3.6 Compatiblity --- Dockerfile | 25 + composer.json | 10 +- composer.lock | 4179 ++++++++++++++++++----------- docker-compose.yml | 14 + src/Controllers/ApiController.php | 1 - src/Services/GraphQLService.php | 4 +- 6 files changed, 2611 insertions(+), 1622 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..4da2ad32 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM php:7.4-cli + +# Update Apt +RUN apt update && apt -y upgrade + +# Install Tools +RUN apt install wget + +# Install PHP Extensions +RUN apt-get install -y \ + libzip-dev \ + zip \ + && docker-php-ext-install zip + +# Install Composer +RUN EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) \ + && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ + && php -r "if (hash_file('SHA384', 'composer-setup.php') === '$EXPECTED_SIGNATURE') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \ + && php composer-setup.php --install-dir=/usr/bin --filename=composer \ + && php -r "unlink('composer-setup.php');" + + +COPY / / + +CMD ["composer"] \ No newline at end of file diff --git a/composer.json b/composer.json index c093a6cc..3100d17d 100644 --- a/composer.json +++ b/composer.json @@ -9,8 +9,8 @@ "craft-plugin" ], "require": { - "craftcms/cms": "^3.2.0", - "webonyx/graphql-php": "^0.12.0", + "craftcms/cms": "^3.6.0", + "webonyx/graphql-php": "^14.4.1", "react/http": "^0.7", "firebase/php-jwt": "^5.0.0" }, @@ -38,5 +38,11 @@ }, "require-dev": { "overtrue/phplint": "^2.0" + }, + "config": { + "allow-plugins": { + "yiisoft/yii2-composer": true, + "craftcms/plugin-installer": true + } } } diff --git a/composer.lock b/composer.lock index 7a9c6061..0d97f834 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1808fcb2474e60a86dd38b258d6c9ded", + "content-hash": "1b5335358056d6ad23c842fcff2d1262", "packages": [ { "name": "cebe/markdown", @@ -64,20 +64,24 @@ "markdown", "markdown-extra" ], + "support": { + "issues": "https://github.com/cebe/markdown/issues", + "source": "https://github.com/cebe/markdown" + }, "time": "2018-03-26T11:24:36+00:00" }, { "name": "composer/ca-bundle", - "version": "1.2.7", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", - "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", "shasum": "" }, "require": { @@ -86,14 +90,15 @@ "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -120,43 +125,62 @@ "ssl", "tls" ], - "time": "2020-04-08T08:27:21+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.3.6" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-06-06T12:02:59+00:00" }, { "name": "composer/composer", - "version": "1.10.10", + "version": "2.2.19", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "32966a3b1d48bc01472a8321fd6472b44fad033a" + "reference": "30ff21a9af9a10845436abaeeb0bb7276e996d24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/32966a3b1d48bc01472a8321fd6472b44fad033a", - "reference": "32966a3b1d48bc01472a8321fd6472b44fad033a", + "url": "https://api.github.com/repos/composer/composer/zipball/30ff21a9af9a10845436abaeeb0bb7276e996d24", + "reference": "30ff21a9af9a10845436abaeeb0bb7276e996d24", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", + "composer/metadata-minifier": "^1.0", + "composer/pcre": "^1.0", + "composer/semver": "^3.0", "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^5.2.10", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", + "composer/xdebug-handler": "^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.2.11", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0 || ^2.0", + "react/promise": "^1.2 || ^2.7", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" - }, - "conflict": { - "symfony/console": "2.8.38" + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" }, "require-dev": { "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2" + "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -169,7 +193,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-main": "2.2-dev" } }, "autoload": { @@ -185,12 +209,12 @@ { "name": "Nils Adermann", "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" + "homepage": "https://www.naderman.de" }, { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", @@ -200,32 +224,192 @@ "dependency", "package" ], - "time": "2020-08-03T09:35:19+00:00" + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/2.2.19" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-02-04T13:54:48+00:00" + }, + { + "name": "composer/metadata-minifier", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/metadata-minifier.git", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2", + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\MetadataMinifier\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Small utility library that handles metadata minification and expansion.", + "keywords": [ + "composer", + "compression" + ], + "support": { + "issues": "https://github.com/composer/metadata-minifier/issues", + "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-04-07T13:37:33+00:00" + }, + { + "name": "composer/pcre", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/1.0.1" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-01-21T20:24:37+00:00" }, { "name": "composer/semver", - "version": "1.5.1", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -261,32 +445,52 @@ "validation", "versioning" ], - "time": "2020-01-13T12:06:48+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.4", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "6946f785871e2314c60b4524851f3702ea4f2223" + "reference": "c848241796da2abf65837d51dce1fae55a960149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223", - "reference": "6946f785871e2314c60b4524851f3702ea4f2223", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -321,28 +525,50 @@ "spdx", "validator" ], - "time": "2020-07-15T15:35:07+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-05-23T07:37:50+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.4.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", - "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -365,30 +591,48 @@ "Xdebug", "performance" ], - "time": "2020-06-04T11:16:35+00:00" + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" }, { "name": "craftcms/cms", - "version": "3.5.0", + "version": "3.8.17", "source": { "type": "git", "url": "https://github.com/craftcms/cms.git", - "reference": "c6671af5af9e45f57ca9ab50d4b30b07282819d3" + "reference": "bfecb73a647e6b5267080e5b1de23554e06959ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/cms/zipball/c6671af5af9e45f57ca9ab50d4b30b07282819d3", - "reference": "c6671af5af9e45f57ca9ab50d4b30b07282819d3", + "url": "https://api.github.com/repos/craftcms/cms/zipball/bfecb73a647e6b5267080e5b1de23554e06959ab", + "reference": "bfecb73a647e6b5267080e5b1de23554e06959ab", "shasum": "" }, "require": { - "composer/composer": "1.10.10", - "craftcms/oauth2-craftid": "~1.0.0", - "craftcms/plugin-installer": "~1.5.3", - "craftcms/server-check": "~1.1.0", + "composer/composer": "2.2.19", + "craftcms/plugin-installer": "~1.6.0", + "craftcms/server-check": "~1.2.0", "creocoder/yii2-nested-sets": "~0.9.0", - "elvanto/litemoji": "^1.3.1", - "enshrined/svg-sanitize": "~0.13.2", + "elvanto/litemoji": "^3.0.1", + "enshrined/svg-sanitize": "~0.16.0", "ext-curl": "*", "ext-dom": "*", "ext-json": "*", @@ -397,36 +641,31 @@ "ext-pcre": "*", "ext-pdo": "*", "ext-zip": "*", - "guzzlehttp/guzzle": ">=6.3.0 <6.5.0 || ^6.5.1", - "laminas/laminas-feed": "^2.12.0", - "league/flysystem": "^1.0.35", - "league/oauth2-client": "^2.2.1", - "mikehaertl/php-shellcommand": "^1.2.5", - "mrclay/jsmin-php": "^2.4", - "mrclay/minify": "^3.0.7", - "php": ">=7.0.0", - "pixelandtonic/imagine": "~1.2.2.1", - "seld/cli-prompt": "^1.0.3", - "symfony/yaml": "^3.2|^4.0", - "true/punycode": "^2.1.0", - "twig/twig": "~2.12.0", - "voku/portable-utf8": "^5.4.28", - "voku/stringy": "^6.2.2", - "webonyx/graphql-php": "^0.12.0", - "yii2tech/ar-softdelete": "^1.0.2", - "yiisoft/yii2": "~2.0.36.0", - "yiisoft/yii2-debug": "^2.1.0", - "yiisoft/yii2-queue": "~2.3.0", - "yiisoft/yii2-swiftmailer": "^2.1.0" + "guzzlehttp/guzzle": "^6.5.5|^7.2.0", + "laminas/laminas-feed": "~2.12.3|^2.13.1", + "league/flysystem": "^1.1.4", + "mikehaertl/php-shellcommand": "^1.6.3", + "php": ">=7.2.5", + "pixelandtonic/imagine": "~1.3.3.1", + "seld/cli-prompt": "^1.0.4", + "symfony/yaml": "^5.2.1", + "twig/twig": "~2.15.3", + "voku/stringy": "^6.4.0", + "webonyx/graphql-php": "~14.11.5", + "yiisoft/yii2": "~2.0.45.0", + "yiisoft/yii2-debug": "^2.1.16", + "yiisoft/yii2-queue": "~2.3.2", + "yiisoft/yii2-swiftmailer": "^2.1.2" }, "conflict": { - "league/oauth2-client": "2.4.0" + "webonyx/graphql-php": "14.11.7" }, "provide": { "bower-asset/inputmask": "~3.2.2 | ~3.3.5", "bower-asset/jquery": "3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", "bower-asset/punycode": "1.3.*", - "bower-asset/yii2-pjax": "~2.0.1" + "bower-asset/yii2-pjax": "~2.0.1", + "yii2tech/ar-softdelete": "1.0.4" }, "require-dev": { "codeception/codeception": "^4.0.0", @@ -435,6 +674,7 @@ "codeception/module-phpbrowser": "^1.0.0", "codeception/module-rest": "^1.0.0", "codeception/module-yii2": "^1.0.0", + "craftcms/ecs": "dev-main", "fzaninotto/faker": "^1.8", "league/factory-muffin": "^3.0", "vlucas/phpdotenv": "^3.0" @@ -448,89 +688,53 @@ "autoload": { "psr-4": { "craft\\": "src/", - "crafttests\\fixtures\\": "tests/fixtures/" + "yii2tech\\ar\\softdelete\\": "lib/ar-softdelete/src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "proprietary" ], - "description": "Craft CMS", - "homepage": "https://craftcms.com", - "keywords": [ - "cms", - "craftcms", - "yii2" - ], - "time": "2020-08-04T17:35:06+00:00" - }, - { - "name": "craftcms/oauth2-craftid", - "version": "1.0.0.1", - "source": { - "type": "git", - "url": "https://github.com/craftcms/oauth2-craftid.git", - "reference": "3f18364139d72d83fb50546d85130beaaa868836" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/craftcms/oauth2-craftid/zipball/3f18364139d72d83fb50546d85130beaaa868836", - "reference": "3f18364139d72d83fb50546d85130beaaa868836", - "shasum": "" - }, - "require": { - "league/oauth2-client": "^2.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^5.0", - "satooshi/php-coveralls": "^1.0", - "squizlabs/php_codesniffer": "^2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "craftcms\\oauth2\\client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], "authors": [ { "name": "Pixel & Tonic", "homepage": "https://pixelandtonic.com/" } ], - "description": "Craft OAuth 2.0 Client Provider for The PHP League OAuth2-Client", + "description": "Craft CMS", + "homepage": "https://craftcms.com", "keywords": [ - "Authentication", - "authorization", - "client", "cms", "craftcms", - "craftid", - "oauth", - "oauth2" + "yii2" ], - "time": "2017-11-22T19:46:18+00:00" + "support": { + "docs": "https://craftcms.com/docs/3.x/", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "rss": "https://github.com/craftcms/cms/releases.atom", + "source": "https://github.com/craftcms/cms" + }, + "time": "2023-08-08T15:46:57+00:00" }, { "name": "craftcms/plugin-installer", - "version": "1.5.5", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/craftcms/plugin-installer.git", - "reference": "42c23ded70ccadf7dea7eab28660d7808dd3022a" + "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/42c23ded70ccadf7dea7eab28660d7808dd3022a", - "reference": "42c23ded70ccadf7dea7eab28660d7808dd3022a", + "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", + "reference": "bd1650e8da6d5ca7a8527068d3e51c34bc7b6b4f", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0" + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4" }, "require-dev": { "composer/composer": "^1.0 || ^2.0" @@ -557,20 +761,28 @@ "installer", "plugin" ], - "time": "2020-04-17T23:11:17+00:00" + "support": { + "docs": "https://craftcms.com/docs", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/cms/issues?state=open", + "rss": "https://craftcms.com/changelog.rss", + "source": "https://github.com/craftcms/cms" + }, + "time": "2023-02-22T13:17:00+00:00" }, { "name": "craftcms/server-check", - "version": "1.1.9", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/craftcms/server-check.git", - "reference": "579fd9ac93580800330695c5d38ca6decb6601ac" + "reference": "04518e63ae94effd4e352838278662c928c84e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/craftcms/server-check/zipball/579fd9ac93580800330695c5d38ca6decb6601ac", - "reference": "579fd9ac93580800330695c5d38ca6decb6601ac", + "url": "https://api.github.com/repos/craftcms/server-check/zipball/04518e63ae94effd4e352838278662c928c84e8c", + "reference": "04518e63ae94effd4e352838278662c928c84e8c", "shasum": "" }, "type": "library", @@ -591,7 +803,15 @@ "requirements", "yii2" ], - "time": "2020-07-14T18:57:12+00:00" + "support": { + "docs": "https://github.com/craftcms/docs", + "email": "support@craftcms.com", + "forum": "https://craftcms.stackexchange.com/", + "issues": "https://github.com/craftcms/server-check/issues?state=open", + "rss": "https://github.com/craftcms/server-check/releases.atom", + "source": "https://github.com/craftcms/server-check" + }, + "time": "2022-04-17T02:10:54+00:00" }, { "name": "creocoder/yii2-nested-sets", @@ -631,30 +851,34 @@ "nested sets", "yii2" ], + "support": { + "issues": "https://github.com/creocoder/yii2-nested-sets/issues", + "source": "https://github.com/creocoder/yii2-nested-sets/tree/master" + }, "time": "2015-01-27T10:53:51+00:00" }, { "name": "defuse/php-encryption", - "version": "v2.2.1", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/defuse/php-encryption.git", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/f53396c2d34225064647a05ca76c1da9d99e5828", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828", "shasum": "" }, "require": { "ext-openssl": "*", "paragonie/random_compat": ">= 2", - "php": ">=5.4.0" + "php": ">=5.6.0" }, "require-dev": { - "nikic/php-parser": "^2.0|^3.0|^4.0", - "phpunit/phpunit": "^4|^5" + "phpunit/phpunit": "^5|^6|^7|^8|^9|^10", + "yoast/phpunit-polyfills": "^2.0.0" }, "bin": [ "bin/generate-defuse-key" @@ -694,39 +918,88 @@ "security", "symmetric key cryptography" ], - "time": "2018-07-24T23:27:56+00:00" + "support": { + "issues": "https://github.com/defuse/php-encryption/issues", + "source": "https://github.com/defuse/php-encryption/tree/v2.4.0" + }, + "time": "2023-06-19T06:10:36+00:00" }, { - "name": "doctrine/lexer", - "version": "1.2.1", + "name": "doctrine/deprecations", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" } }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "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.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + }, + "time": "2023-06-03T09:27:29+00:00" + }, + { + "name": "doctrine/lexer", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" + }, + "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -756,31 +1029,48 @@ "parser", "php" ], - "time": "2020-05-25T17:44:05+00:00" + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-12-14T08:49:07+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.18", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "cfa3d44471c7f5bfb684ac2b0da7114283d78441" + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/cfa3d44471c7f5bfb684ac2b0da7114283d78441", - "reference": "cfa3d44471c7f5bfb684ac2b0da7114283d78441", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^1.2|^2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -788,7 +1078,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -814,28 +1104,38 @@ "validation", "validator" ], - "time": "2020-06-16T20:11:17+00:00" + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-06-01T07:04:22+00:00" }, { "name": "elvanto/litemoji", - "version": "1.4.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/elvanto/litemoji.git", - "reference": "17bf635e4d1a5b4d35d2cadf153cd589b78af7f0" + "reference": "acd6fd944814683983dcdfcf4d33f24430631b77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elvanto/litemoji/zipball/17bf635e4d1a5b4d35d2cadf153cd589b78af7f0", - "reference": "17bf635e4d1a5b4d35d2cadf153cd589b78af7f0", + "url": "https://api.github.com/repos/elvanto/litemoji/zipball/acd6fd944814683983dcdfcf4d33f24430631b77", + "reference": "acd6fd944814683983dcdfcf4d33f24430631b77", "shasum": "" }, "require": { - "php": ">=5.4" + "php": ">=7.0" }, "require-dev": { - "milesj/emojibase": "3.1.0", - "phpunit/phpunit": "^5.0" + "milesj/emojibase": "6.0.*", + "phpunit/phpunit": "^6.0" }, "type": "library", "autoload": { @@ -852,29 +1152,34 @@ "emoji", "php-emoji" ], - "time": "2018-09-28T05:23:38+00:00" + "support": { + "issues": "https://github.com/elvanto/litemoji/issues", + "source": "https://github.com/elvanto/litemoji/tree/3.0.1" + }, + "time": "2020-11-27T05:08:33+00:00" }, { "name": "enshrined/svg-sanitize", - "version": "0.13.3", + "version": "0.16.0", "source": { "type": "git", "url": "https://github.com/darylldoyle/svg-sanitizer.git", - "reference": "bc66593f255b7d2613d8f22041180036979b6403" + "reference": "239e257605e2141265b429e40987b2ee51bba4b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/bc66593f255b7d2613d8f22041180036979b6403", - "reference": "bc66593f255b7d2613d8f22041180036979b6403", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/239e257605e2141265b429e40987b2ee51bba4b4", + "reference": "239e257605e2141265b429e40987b2ee51bba4b4", "shasum": "" }, "require": { "ext-dom": "*", - "ext-libxml": "*" + "ext-libxml": "*", + "ezyang/htmlpurifier": "^4.16", + "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "codeclimate/php-test-reporter": "^0.1.2", - "phpunit/phpunit": "^6" + "phpunit/phpunit": "^5.7 || ^6.5 || ^8.5" }, "type": "library", "autoload": { @@ -893,32 +1198,36 @@ } ], "description": "An SVG sanitizer for PHP", - "time": "2020-01-20T01:34:17+00:00" + "support": { + "issues": "https://github.com/darylldoyle/svg-sanitizer/issues", + "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.16.0" + }, + "time": "2023-03-20T10:51:12+00:00" }, { "name": "evenement/evenement", - "version": "v3.0.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9 || ^6" }, "type": "library", "autoload": { - "psr-0": { - "Evenement": "src" + "psr-4": { + "Evenement\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -936,36 +1245,47 @@ "event-dispatcher", "event-emitter" ], - "time": "2017-07-23T21:35:13+00:00" + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.13.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75", - "reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", "shasum": "" }, "require": { - "php": ">=5.2" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { - "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd" + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" }, "type": "library", "autoload": { - "psr-0": { - "HTMLPurifier": "library/" - }, "files": [ "library/HTMLPurifier.composer.php" ], + "psr-0": { + "HTMLPurifier": "library/" + }, "exclude-from-classmap": [ "/library/HTMLPurifier/Language/" ] @@ -986,20 +1306,24 @@ "keywords": [ "html" ], - "time": "2020-06-29T00:56:53+00:00" + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + }, + "time": "2022-09-18T07:06:19+00:00" }, { "name": "firebase/php-jwt", - "version": "v5.2.0", + "version": "v5.5.1", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" + "reference": "83b609028194aa042ea33b5af2d41a7427de80e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/83b609028194aa042ea33b5af2d41a7427de80e6", + "reference": "83b609028194aa042ea33b5af2d41a7427de80e6", "shasum": "" }, "require": { @@ -1008,6 +1332,9 @@ "require-dev": { "phpunit/phpunit": ">=4.8 <=9" }, + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, "type": "library", "autoload": { "psr-4": { @@ -1036,182 +1363,304 @@ "jwt", "php" ], - "time": "2020-03-25T18:49:23+00:00" + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v5.5.1" + }, + "time": "2021-11-08T20:18:51+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.5.5", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" + "guzzlehttp/promises": "^1.5.3 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], - "time": "2020-06-16T21:01:06+00:00" + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-05-21T14:04:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "v1.3.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.0" + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.6.1", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.6-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, { "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -1225,77 +1674,38 @@ "uri", "url" ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "intervention/httpauth", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/Intervention/httpauth.git", - "reference": "825202e88c0918f5249bd5af6ff1fb8ef6e3271e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/httpauth/zipball/825202e88c0918f5249bd5af6ff1fb8ef6e3271e", - "reference": "825202e88c0918f5249bd5af6ff1fb8ef6e3271e", - "shasum": "" - }, - "require": { - "php": "^7.2" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.11", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Intervention\\HttpAuth\\Laravel\\HttpAuthServiceProvider" - ], - "aliases": { - "HttpAuth": "Intervention\\HttpAuth\\Laravel\\Facades\\HttpAuth" - } - } - }, - "autoload": { - "psr-4": { - "Intervention\\HttpAuth\\": "src/" - } + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, { - "name": "Oliver Vogel", - "email": "oliver@olivervogel.com", - "homepage": "https://olivervogel.com/" + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" } ], - "description": "HTTP authentication (Basic & Digest) including ServiceProviders for easy Laravel integration", - "homepage": "https://github.com/Intervention/httpauth", - "keywords": [ - "Authentication", - "http", - "laravel" - ], - "time": "2020-03-09T16:18:28+00:00" + "time": "2023-08-03T15:06:02+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.10", + "version": "5.2.12", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { @@ -1348,40 +1758,43 @@ "json", "schema" ], - "time": "2020-05-27T16:41:55+00:00" + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + }, + "time": "2022-04-13T08:02:27+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.6.1", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "25f2a053eadfa92ddacb609dcbbc39362610da70" + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/25f2a053eadfa92ddacb609dcbbc39362610da70", - "reference": "25f2a053eadfa92ddacb609dcbbc39362610da70", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, - "replace": { - "zendframework/zend-escaper": "self.version" + "conflict": { + "zendframework/zend-escaper": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + "infection/infection": "^0.26.6", + "laminas/laminas-coding-standard": "~2.4.0", + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.22.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6.x-dev", - "dev-develop": "2.7.x-dev" - } - }, "autoload": { "psr-4": { "Laminas\\Escaper\\": "src/" @@ -1397,42 +1810,59 @@ "escaper", "laminas" ], - "time": "2019-12-31T16:43:30+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-10-10T10:11:09+00:00" }, { "name": "laminas/laminas-feed", - "version": "2.12.2", + "version": "2.18.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "8a193ac96ebcb3e16b6ee754ac2a889eefacb654" + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/8a193ac96ebcb3e16b6ee754ac2a889eefacb654", - "reference": "8a193ac96ebcb3e16b6ee754ac2a889eefacb654", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/a57fdb9df42950d5b7f052509fbdab0d081c6b6d", + "reference": "a57fdb9df42950d5b7f052509fbdab0d081c6b6d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "laminas/laminas-escaper": "^2.5.2", - "laminas/laminas-stdlib": "^3.2.1", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" + "laminas/laminas-escaper": "^2.9", + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^3.6", + "php": "^7.4 || ~8.0.0 || ~8.1.0" }, - "replace": { - "zendframework/zend-feed": "^2.12.0" + "conflict": { + "laminas/laminas-servicemanager": "<3.3", + "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.7.2", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-db": "^2.8.2", - "laminas/laminas-http": "^2.7", - "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", - "laminas/laminas-validator": "^2.10.1", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20", - "psr/http-message": "^1.0.1" + "laminas/laminas-cache": "^2.13.2 || ^3.1.3", + "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.0.0", + "laminas/laminas-coding-standard": "~2.3.0", + "laminas/laminas-db": "^2.13.3", + "laminas/laminas-http": "^2.15", + "laminas/laminas-validator": "^2.15", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.17.0", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^4.24.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -1443,12 +1873,6 @@ "psr/http-message": "PSR-7 ^1.0.1, if you wish to use Laminas\\Feed\\Reader\\Http\\Psr7ResponseDecorator" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.12.x-dev", - "dev-develop": "2.13.x-dev" - } - }, "autoload": { "psr-4": { "Laminas\\Feed\\": "src/" @@ -1458,143 +1882,208 @@ "license": [ "BSD-3-Clause" ], - "description": "provides functionality for consuming RSS and Atom feeds", + "description": "provides functionality for creating and consuming RSS and Atom feeds", "homepage": "https://laminas.dev", "keywords": [ + "atom", "feed", - "laminas" + "laminas", + "rss" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-feed/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-feed/issues", + "rss": "https://github.com/laminas/laminas-feed/releases.atom", + "source": "https://github.com/laminas/laminas-feed" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } ], - "time": "2020-03-29T12:36:29+00:00" + "time": "2022-08-08T17:02:35+00:00" }, { - "name": "laminas/laminas-stdlib", - "version": "3.2.1", + "name": "laminas/laminas-servicemanager", + "version": "3.17.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6" + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "360be5f16955dd1edbcce1cfaa98ed82a17f02ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/2b18347625a2f06a1a485acfbc870f699dbe51c6", - "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/360be5f16955dd1edbcce1cfaa98ed82a17f02ec", + "reference": "360be5f16955dd1edbcce1cfaa98ed82a17f02ec", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" + "laminas/laminas-stdlib": "^3.2.1", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0", + "psr/container": "^1.0" + }, + "conflict": { + "ext-psr": "*", + "laminas/laminas-code": "<3.3.1", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "psr/container-implementation": "^1.0" }, "replace": { - "zendframework/zend-stdlib": "self.version" + "container-interop/container-interop": "^1.2.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpbench/phpbench": "^0.13", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + "composer/package-versions-deprecated": "^1.0", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-container-config-test": "^0.7", + "laminas/laminas-dependency-plugin": "^2.1.2", + "mikey179/vfsstream": "^1.6.10@alpha", + "ocramius/proxy-manager": "^2.11", + "phpbench/phpbench": "^1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.8" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev", - "dev-develop": "3.3.x-dev" - } + "suggest": { + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", "autoload": { + "files": [ + "src/autoload.php" + ], "psr-4": { - "Laminas\\Stdlib\\": "src/" + "Laminas\\ServiceManager\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "SPL extensions, array utilities, error handlers, and more", + "description": "Factory-Driven Dependency Injection Container", "homepage": "https://laminas.dev", "keywords": [ + "PSR-11", + "dependency-injection", + "di", + "dic", "laminas", - "stdlib" + "service-manager", + "servicemanager" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } ], - "time": "2019-12-31T17:51:15+00:00" + "time": "2022-09-22T11:33:46+00:00" }, { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.0.4", + "name": "laminas/laminas-stdlib", + "version": "3.13.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "fcd87520e4943d968557803919523772475e8ea3" + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "66a6d03c381f6c9f1dd988bf8244f9afb9380d76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3", - "reference": "fcd87520e4943d968557803919523772475e8ea3", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/66a6d03c381f6c9f1dd988bf8244f9afb9380d76", + "reference": "66a6d03c381f6c9f1dd988bf8244f9afb9380d76", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.4 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-stdlib": "*" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", - "squizlabs/php_codesniffer": "^3.5" + "laminas/laminas-coding-standard": "~2.3.0", + "phpbench/phpbench": "^1.2.6", + "phpstan/phpdoc-parser": "^0.5.4", + "phpunit/phpunit": "^9.5.23", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.26" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev", - "dev-develop": "1.1.x-dev" - }, - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, "autoload": { - "files": [ - "src/autoload.php" - ], "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" + "Laminas\\Stdlib\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", + "description": "SPL extensions, array utilities, error handlers, and more", + "homepage": "https://laminas.dev", "keywords": [ - "ZendFramework", - "autoloading", "laminas", - "zf" + "stdlib" ], - "time": "2020-05-20T16:45:56+00:00" + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-08-24T13:56:50+00:00" }, { "name": "league/flysystem", - "version": "1.0.70", + "version": "1.1.10", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493" + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/585824702f534f8d3cf7fab7225e8466cc4b7493", - "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": ">=5.5.9" + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" }, "conflict": { "league/flysystem-sftp": "<1.0.6" }, "require-dev": { - "phpspec/phpspec": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "phpunit/phpunit": "^5.7.26" + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" }, "suggest": { - "ext-fileinfo": "Required for MimeType", "ext-ftp": "Allows you to use FTP server storage", "ext-openssl": "Allows you to use FTPS server storage", "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", @@ -1650,43 +2139,45 @@ "sftp", "storage" ], - "time": "2020-07-26T07:20:36+00:00" + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2022-10-04T09:16:37+00:00" }, { - "name": "league/oauth2-client", - "version": "2.5.0", + "name": "league/mime-type-detection", + "version": "1.13.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb" + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb", - "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "paragonie/random_compat": "^1|^2|^9.99", - "php": "^5.6|^7.0" + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { - "eloquent/liberator": "^2.0", - "eloquent/phony-phpunit": "^1.0|^3.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phpunit/phpunit": "^5.7|^6.0", - "squizlabs/php_codesniffer": "^2.3|^3.0" + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.0.x-dev" - } - }, "autoload": { "psr-4": { - "League\\OAuth2\\Client\\": "src/" + "League\\MimeTypeDetection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1695,98 +2186,46 @@ ], "authors": [ { - "name": "Alex Bilbie", - "email": "hello@alexbilbie.com", - "homepage": "http://www.alexbilbie.com", - "role": "Developer" - }, - { - "name": "Woody Gilk", - "homepage": "https://github.com/shadowhand", - "role": "Contributor" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "OAuth 2.0 Client Library", - "keywords": [ - "Authentication", - "SSO", - "authorization", - "identity", - "idp", - "oauth", - "oauth2", - "single sign on" - ], - "time": "2020-07-18T17:54:32+00:00" - }, - { - "name": "marcusschwarz/lesserphp", - "version": "v0.5.4", - "source": { - "type": "git", - "url": "https://github.com/MarcusSchwarz/lesserphp.git", - "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MarcusSchwarz/lesserphp/zipball/3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e", - "reference": "3a0f5ae0d63cbb661b5f4afd2f96875e73b3ad7e", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4.3" - }, - "bin": [ - "plessc" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.1-dev" - } - }, - "autoload": { - "classmap": [ - "lessc.inc.php" - ] + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT", - "GPL-3.0" - ], - "authors": [ + "funding": [ { - "name": "Leaf Corcoran", - "email": "leafot@gmail.com", - "homepage": "http://leafo.net" + "url": "https://github.com/frankdejonge", + "type": "github" }, { - "name": "Marcus Schwarz", - "email": "github@maswaba.de", - "homepage": "https://www.maswaba.de" + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" } ], - "description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.", - "homepage": "http://leafo.net/lessphp/", - "time": "2020-01-19T19:18:49+00:00" + "time": "2023-08-05T12:09:49+00:00" }, { "name": "mikehaertl/php-shellcommand", - "version": "1.6.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/mikehaertl/php-shellcommand.git", - "reference": "8d98d8536e05abafe76a491da87296d824939076" + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/8d98d8536e05abafe76a491da87296d824939076", - "reference": "8d98d8536e05abafe76a491da87296d824939076", + "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/e79ea528be155ffdec6f3bf1a4a46307bb49e545", + "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545", "shasum": "" }, "require": { - "php": ">= 5.4.0" + "php": ">= 5.3.0" + }, + "require-dev": { + "phpunit/phpunit": ">4.0 <=9.4" }, "type": "library", "autoload": { @@ -1808,358 +2247,61 @@ "keywords": [ "shell" ], - "time": "2019-12-20T08:48:10+00:00" + "support": { + "issues": "https://github.com/mikehaertl/php-shellcommand/issues", + "source": "https://github.com/mikehaertl/php-shellcommand/tree/1.7.0" + }, + "time": "2023-04-19T08:25:22+00:00" }, { - "name": "monolog/monolog", - "version": "2.1.1", + "name": "paragonie/random_compat", + "version": "v9.99.100", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9eee5cec93dfb313a38b6b288741e84e53f02d5", - "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1" - }, - "provide": { - "psr/log-implementation": "1.0.0" + "php": ">= 7" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^6.0", - "graylog2/gelf-php": "^1.4.2", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "php-parallel-lint/php-parallel-lint": "^1.0", - "phpspec/prophecy": "^1.6.1", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90 <3.0", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2020-07-23T08:41:23+00:00" - }, - { - "name": "mrclay/jsmin-php", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/mrclay/jsmin-php.git", - "reference": "bb05febc9440852d39899255afd5569b7f21a72c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/bb05febc9440852d39899255afd5569b7f21a72c", - "reference": "bb05febc9440852d39899255afd5569b7f21a72c", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "4.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "JSMin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Stephen Clay", - "email": "steve@mrclay.org", - "role": "Developer" - }, - { - "name": "Ryan Grove", - "email": "ryan@wonko.com", - "role": "Developer" - } - ], - "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.", - "homepage": "https://github.com/mrclay/jsmin-php/", - "keywords": [ - "compress", - "jsmin", - "minify" - ], - "time": "2018-12-06T15:03:38+00:00" - }, - { - "name": "mrclay/minify", - "version": "3.0.10", - "source": { - "type": "git", - "url": "https://github.com/mrclay/minify.git", - "reference": "8dba84a2d24ae6382057a1215ad3af25202addb9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mrclay/minify/zipball/8dba84a2d24ae6382057a1215ad3af25202addb9", - "reference": "8dba84a2d24ae6382057a1215ad3af25202addb9", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "intervention/httpauth": "^2.0|^3.0", - "marcusschwarz/lesserphp": "^0.5.1", - "monolog/monolog": "~1.1|~2.0", - "mrclay/jsmin-php": "~2", - "mrclay/props-dic": "^2.2|^3.0", - "php": "^5.3.0 || ^7.0", - "tubalmartin/cssmin": "~4" - }, - "require-dev": { - "firephp/firephp-core": "~0.4.0", - "leafo/scssphp": "^0.3 || ^0.6 || ^0.7", - "meenie/javascript-packer": "~1.1", - "phpunit/phpunit": "^4.8.36", - "tedivm/jshrink": "~1.1.0" - }, - "suggest": { - "firephp/firephp-core": "Use FirePHP for Log messages", - "meenie/javascript-packer": "Keep track of the Packer PHP port using Composer" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Stephen Clay", - "email": "steve@mrclay.org", - "role": "Developer" - } - ], - "description": "Minify is a PHP app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", - "homepage": "https://github.com/mrclay/minify", - "time": "2020-04-02T19:47:26+00:00" - }, - { - "name": "mrclay/props-dic", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/mrclay/Props.git", - "reference": "0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mrclay/Props/zipball/0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843", - "reference": "0b0fd254e33e2d60bc2bcd7867f2ab3cdd05a843", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "pimple/pimple": "~3.0", - "psr/container": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "autoload": { - "psr-0": { - "Props\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Steve Clay", - "email": "steve@mrclay.org", - "homepage": "http://www.mrclay.org/" - } - ], - "description": "Props is a simple DI container that allows retrieving values via custom property and method names", - "keywords": [ - "container", - "dependency injection", - "dependency injection container", - "di", - "di container" - ], - "time": "2019-11-26T17:56:10+00:00" - }, - { - "name": "opis/closure", - "version": "3.5.5", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/dec9fc5ecfca93f45cd6121f8e6f14457dff372c", - "reference": "dec9fc5ecfca93f45cd6121f8e6f14457dff372c", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", - "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" - ], - "time": "2020-06-17T14:59:55+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", "polyfill", "pseudorandom", "random" ], - "time": "2018-07-02T15:55:56+00:00" + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2208,20 +2350,24 @@ "reflection", "static analysis" ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.0", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "3170448f5769fe19f456173d833734e0ff1b84df" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df", - "reference": "3170448f5769fe19f456173d833734e0ff1b84df", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -2232,7 +2378,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -2260,28 +2407,41 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-07-20T20:05:34+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.3.0", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", - "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -2305,80 +2465,81 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-06-27T10:12:23+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + }, + "time": "2023-08-12T11:01:26+00:00" }, { - "name": "pimple/pimple", - "version": "v3.3.0", + "name": "phpstan/phpdoc-parser", + "version": "1.23.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930", - "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/container": "^1.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^3.4|^4.4|^5.0" + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2020-03-03T09:12:48+00:00" + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" + }, + "time": "2023-08-03T16:32:59+00:00" }, { "name": "pixelandtonic/imagine", - "version": "1.2.2.1", + "version": "1.3.3.1", "source": { "type": "git", "url": "https://github.com/pixelandtonic/Imagine.git", - "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b" + "reference": "4d9bb596ff60504e37ccf9103c0bb705dba7fec6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/c70db7d7f6bd6fb0abc7562bdabe51265af2518b", - "reference": "c70db7d7f6bd6fb0abc7562bdabe51265af2518b", + "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/4d9bb596ff60504e37ccf9103c0bb705dba7fec6", + "reference": "4d9bb596ff60504e37ccf9103c0bb705dba7fec6", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.5" }, "require-dev": { - "friendsofphp/php-cs-fixer": "2.2.*", - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.4 || ^8.2" + "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4 || ^9.3" }, "suggest": { + "ext-exif": "to read EXIF metadata", "ext-gd": "to use the GD implementation", "ext-gmagick": "to use the Gmagick implementation", "ext-imagick": "to use the Imagick implementation" @@ -2386,7 +2547,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.7-dev" + "dev-develop": "1.x-dev" } }, "autoload": { @@ -2413,31 +2574,29 @@ "image manipulation", "image processing" ], - "time": "2019-07-19T12:55:50+00:00" + "support": { + "source": "https://github.com/pixelandtonic/Imagine/tree/1.3.3.1" + }, + "time": "2023-01-03T19:18:06+00:00" }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -2450,7 +2609,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -2462,29 +2621,140 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/1.0.2" + }, + "time": "2023-04-10T20:12:12+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -2512,20 +2782,23 @@ "request", "response" ], - "time": "2016-08-06T14:39:51+00:00" + "support": { + "source": "https://github.com/php-fig/http-message/tree/1.1" + }, + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { @@ -2549,7 +2822,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -2559,7 +2832,10 @@ "psr", "psr-3" ], - "time": "2020-03-23T09:12:05+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" }, { "name": "ralouphie/getallheaders", @@ -2599,28 +2875,32 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { "name": "react/cache", - "version": "v1.0.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/reactphp/cache.git", - "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466" + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466", - "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { "php": ">=5.3.0", - "react/promise": "~2.0|~1.1" + "react/promise": "^3.0 || ^2.0 || ^1.1" }, "require-dev": { - "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, "type": "library", "autoload": { @@ -2632,6 +2912,28 @@ "license": [ "MIT" ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], "description": "Async, Promise-based cache interface for ReactPHP", "keywords": [ "cache", @@ -2639,43 +2941,75 @@ "promise", "reactphp" ], - "time": "2019-07-11T13:45:28+00:00" + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" }, { "name": "react/dns", - "version": "v1.3.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2" + "reference": "3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/89d83794e959ef3e0f1ab792f070b0157de1abf2", - "reference": "89d83794e959ef3e0f1ab792f070b0157de1abf2", + "url": "https://api.github.com/repos/reactphp/dns/zipball/3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f", + "reference": "3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f", "shasum": "" }, "require": { "php": ">=5.3.0", "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.0 || ^0.5", - "react/promise": "^3.0 || ^2.7 || ^1.2.1", - "react/promise-timer": "^1.2" + "react/event-loop": "^1.2", + "react/promise": "^3.0 || ^2.7 || ^1.2.1" }, "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.0 || ^4.8.35" + "phpunit/phpunit": "^9.5 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-timer": "^1.9" }, "type": "library", "autoload": { "psr-4": { - "React\\Dns\\": "src" + "React\\Dns\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], "description": "Async DNS resolver for ReactPHP", "keywords": [ "async", @@ -2683,49 +3017,89 @@ "dns-resolver", "reactphp" ], - "time": "2020-07-10T12:12:50+00:00" + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.11.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-02T12:45:26+00:00" }, { "name": "react/event-loop", - "version": "v1.1.1", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "6d24de090cd59cfc830263cfba965be77b563c13" + "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13", - "reference": "6d24de090cd59cfc830263cfba965be77b563c13", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05", "shasum": "" }, "require": { "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" }, "type": "library", "autoload": { "psr-4": { - "React\\EventLoop\\": "src" + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", "keywords": [ "asynchronous", "event-loop" ], - "time": "2020-01-01T18:39:52+00:00" + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-05-05T10:11:24+00:00" }, { "name": "react/http", @@ -2774,36 +3148,40 @@ "server", "streaming" ], + "support": { + "issues": "https://github.com/reactphp/http/issues", + "source": "https://github.com/reactphp/http/tree/master" + }, "time": "2017-08-16T15:24:39+00:00" }, { "name": "react/promise", - "version": "v2.8.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "React\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2812,7 +3190,23 @@ "authors": [ { "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], "description": "A lightweight implementation of CommonJS Promises/A for PHP", @@ -2820,88 +3214,45 @@ "promise", "promises" ], - "time": "2020-05-12T15:16:56+00:00" - }, - { - "name": "react/promise-timer", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-timer.git", - "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6", - "reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", - "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\Timer\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.10.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Christian Lück", - "email": "christian@lueck.tv" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", - "homepage": "https://github.com/reactphp/promise-timer", - "keywords": [ - "async", - "event-loop", - "promise", - "reactphp", - "timeout", - "timer" - ], - "time": "2020-07-10T12:18:06+00:00" + "time": "2023-05-02T15:15:43+00:00" }, { "name": "react/socket", - "version": "v1.5.0", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece" + "reference": "cff482bbad5848ecbe8b57da57e4e213b03619aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/842dcd71df86671ee9491734035b3d2cf4a80ece", - "reference": "842dcd71df86671ee9491734035b3d2cf4a80ece", + "url": "https://api.github.com/repos/reactphp/socket/zipball/cff482bbad5848ecbe8b57da57e4e213b03619aa", + "reference": "cff482bbad5848ecbe8b57da57e4e213b03619aa", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", - "react/dns": "^1.1", - "react/event-loop": "^1.0 || ^0.5", - "react/promise": "^2.6.0 || ^1.2.1", - "react/promise-timer": "^1.4.0", - "react/stream": "^1.1" + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" }, "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35", - "react/promise-stream": "^1.2" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.9" }, "type": "library", "autoload": { @@ -2913,6 +3264,28 @@ "license": [ "MIT" ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", "keywords": [ "Connection", @@ -2921,41 +3294,73 @@ "reactphp", "stream" ], - "time": "2020-07-01T12:50:00+00:00" + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-07T10:28:34+00:00" }, { "name": "react/stream", - "version": "v1.1.1", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/reactphp/stream.git", - "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a" + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", - "reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a", + "url": "https://api.github.com/repos/reactphp/stream/zipball/6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.8", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" + "react/event-loop": "^1.2" }, "require-dev": { "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, "type": "library", "autoload": { "psr-4": { - "React\\Stream\\": "src" + "React\\Stream\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", "keywords": [ "event-driven", @@ -2967,7 +3372,17 @@ "stream", "writable" ], - "time": "2020-05-04T10:17:57+00:00" + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-16T10:52:11+00:00" }, { "name": "ringcentral/psr7", @@ -3000,12 +3415,12 @@ } }, "autoload": { - "psr-4": { - "RingCentral\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "RingCentral\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3025,25 +3440,31 @@ "stream", "uri" ], + "support": { + "source": "https://github.com/ringcentral/psr7/tree/master" + }, "time": "2018-05-29T20:21:04+00:00" }, { "name": "seld/cli-prompt", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/b8dfcf02094b8c03b40322c229493bb2884423c5", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5", "shasum": "" }, "require": { "php": ">=5.3" }, + "require-dev": { + "phpstan/phpstan": "^0.12.63" + }, "type": "library", "extra": { "branch-alias": { @@ -3073,27 +3494,32 @@ "input", "prompt" ], - "time": "2017-03-18T11:32:45+00:00" + "support": { + "issues": "https://github.com/Seldaek/cli-prompt/issues", + "source": "https://github.com/Seldaek/cli-prompt/tree/1.0.4" + }, + "time": "2020-12-15T21:32:01+00:00" }, { "name": "seld/jsonlint", - "version": "1.8.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, "bin": [ "bin/jsonlint" @@ -3122,20 +3548,34 @@ "parser", "validator" ], - "time": "2020-04-30T19:05:18+00:00" + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2023-05-11T13:16:46+00:00" }, { "name": "seld/phar-utils", - "version": "1.1.1", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", - "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", "shasum": "" }, "require": { @@ -3166,36 +3606,39 @@ "keywords": [ "phar" ], - "time": "2020-07-07T18:42:57+00:00" + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" + }, + "time": "2022-08-31T10:31:18+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", "shasum": "" }, "require": { - "egulias/email-validator": "~2.0", + "egulias/email-validator": "^2.0|^3.1", "php": ">=7.0.0", "symfony/polyfill-iconv": "^1.0", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" }, "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + "ext-intl": "Needed to support internationalized email addresses" }, "type": "library", "extra": { @@ -3228,31 +3671,48 @@ "mail", "mailer" ], - "time": "2019-11-12T09:31:26+00:00" + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" }, { "name": "symfony/console", - "version": "v5.1.3", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2226c68009627934b8cfc01260b4d287eab070df" + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2226c68009627934b8cfc01260b4d287eab070df", - "reference": "2226c68009627934b8cfc01260b4d287eab070df", + "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { + "psr/log": ">=3", "symfony/dependency-injection": "<4.4", "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", @@ -3260,16 +3720,16 @@ "symfony/process": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -3278,11 +3738,6 @@ "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -3305,34 +3760,121 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "time": "2020-07-06T13:23:11+00:00" + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-19T20:11:33+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.1.3", + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "6e4320f06d5f2cce0d96530162491f4465179157" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/6e4320f06d5f2cce0d96530162491f4465179157", - "reference": "6e4320f06d5f2cce0d96530162491f4465179157", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.4.25", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "shasum": "" }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -3355,33 +3897,47 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "time": "2020-05-30T20:35:19+00:00" + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-31T13:04:02+00:00" }, { "name": "symfony/finder", - "version": "v5.1.3", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187" + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187", - "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -3404,26 +3960,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "time": "2020-05-20T17:43:50+00:00" + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.27" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T08:02:31+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" @@ -3431,7 +4007,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3439,12 +4015,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3468,24 +4044,44 @@ "polyfill", "portable" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36" + "reference": "927013f3aac555983a5059aada98e1907d842695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", - "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" }, "suggest": { "ext-iconv": "For best performance" @@ -3493,7 +4089,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3501,12 +4097,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3531,24 +4127,41 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", - "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-intl": "For best performance" @@ -3556,7 +4169,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3564,12 +4177,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3595,26 +4208,42 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { - "php": ">=5.3.3", + "php": ">=7.1", "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", "symfony/polyfill-php72": "^1.10" }, "suggest": { @@ -3623,7 +4252,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3631,12 +4260,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3666,24 +4295,41 @@ "portable", "shim" ], - "time": "2020-08-04T06:02:08+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-intl": "For best performance" @@ -3691,7 +4337,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3699,12 +4345,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -3733,24 +4379,44 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" }, "suggest": { "ext-mbstring": "For best performance" @@ -3758,7 +4424,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3766,12 +4432,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3796,92 +4462,46 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "639447d008615574653fb3bc60d1986d7172eaae" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", - "reference": "639447d008615574653fb3bc60d1986d7172eaae", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3889,12 +4509,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3918,29 +4538,46 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3948,12 +4585,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -3980,29 +4617,46 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.18.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { - "php": ">=7.0.8" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4010,12 +4664,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -4046,31 +4700,44 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", - "version": "v4.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", - "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", + "url": "https://api.github.com/repos/symfony/process/zipball/1a44dc377ec86a50fab40d066cd061e28a6b482f", + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -4093,27 +4760,48 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.26" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-12T15:44:31+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.1.3", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.0" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -4121,7 +4809,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4157,20 +4845,37 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:23:11+00:00" + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", - "version": "v5.1.3", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b" + "reference": "1181fe9270e373537475e826873b5867b863883c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f629ba9b611c76224feb21fe2bcbf0b6f992300b", - "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b", + "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", + "reference": "1181fe9270e373537475e826873b5867b863883c", "shasum": "" }, "require": { @@ -4181,25 +4886,23 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -4218,7 +4921,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony String component", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ "grapheme", @@ -4228,193 +4931,128 @@ "utf-8", "utf8" ], - "time": "2020-07-08T08:27:49+00:00" - }, - { - "name": "symfony/yaml", - "version": "v4.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.26" }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" - }, - { - "name": "true/punycode", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/true/php-punycode.git", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.7", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "TrueBV\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "url": "https://github.com/fabpot", + "type": "github" + }, { - "name": "Renan Gonçalves", - "email": "renan.saddam@gmail.com" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", - "homepage": "https://github.com/true/php-punycode", - "keywords": [ - "idna", - "punycode" - ], - "time": "2016-11-16T10:37:54+00:00" + "time": "2023-06-28T12:46:07+00:00" }, { - "name": "tubalmartin/cssmin", - "version": "v4.1.1", + "name": "symfony/yaml", + "version": "v5.4.23", "source": { "type": "git", - "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git", - "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf" + "url": "https://github.com/symfony/yaml.git", + "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf", - "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", + "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", "shasum": "" }, "require": { - "ext-pcre": "*", - "php": ">=5.3.2" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.3" }, "require-dev": { - "cogpowered/finediff": "0.3.*", - "phpunit/phpunit": "4.8.*" + "symfony/console": "^5.3|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "bin": [ - "cssmin" + "Resources/bin/yaml-lint" ], "type": "library", "autoload": { "psr-4": { - "tubalmartin\\CssMin\\": "src" - } + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Túbal Martín", - "homepage": "http://tubalmartin.me/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP port of the YUI CSS compressor", - "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port", - "keywords": [ - "compress", - "compressor", - "css", - "cssmin", - "minify", - "yui" - ], - "time": "2018-01-15T15:26:51+00:00" + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.4.23" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-23T19:33:36+00:00" }, { "name": "twig/twig", - "version": "v2.12.5", + "version": "v2.15.5", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" + "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", + "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", "shasum": "" }, "require": { - "php": "^7.0", + "php": ">=7.1.3", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.0" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.12-dev" + "dev-master": "2.15-dev" } }, "autoload": { @@ -4451,28 +5089,42 @@ "keywords": [ "templating" ], - "time": "2020-02-11T15:31:23+00:00" + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v2.15.5" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-05-03T17:49:41+00:00" }, { "name": "voku/anti-xss", - "version": "4.1.25", + "version": "4.1.42", "source": { "type": "git", "url": "https://github.com/voku/anti-xss.git", - "reference": "2b7b0510b5ac5194c467aa5e80a94964896f0672" + "reference": "bca1f8607e55a3c5077483615cd93bd8f11bd675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/anti-xss/zipball/2b7b0510b5ac5194c467aa5e80a94964896f0672", - "reference": "2b7b0510b5ac5194c467aa5e80a94964896f0672", + "url": "https://api.github.com/repos/voku/anti-xss/zipball/bca1f8607e55a3c5077483615cd93bd8f11bd675", + "reference": "bca1f8607e55a3c5077483615cd93bd8f11bd675", "shasum": "" }, "require": { "php": ">=7.0.0", - "voku/portable-utf8": "~5.4.27" + "voku/portable-utf8": "~6.0.2" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" }, "type": "library", "extra": { @@ -4497,7 +5149,7 @@ { "name": "Lars Moelleken", "email": "lars@moelleken.org", - "homepage": "http://www.moelleken.org/" + "homepage": "https://www.moelleken.org/" } ], "description": "anti xss-library", @@ -4508,39 +5160,65 @@ "security", "xss" ], - "time": "2020-06-12T00:59:34+00:00" + "support": { + "issues": "https://github.com/voku/anti-xss/issues", + "source": "https://github.com/voku/anti-xss/tree/4.1.42" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/anti-xss", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/anti-xss", + "type": "tidelift" + } + ], + "time": "2023-07-03T14:40:46+00:00" }, { "name": "voku/arrayy", - "version": "7.8.2", + "version": "7.9.6", "source": { "type": "git", "url": "https://github.com/voku/Arrayy.git", - "reference": "ff32efd0036f776bd7adc3e7e6e3441d5c037c35" + "reference": "0e20b8c6eef7fc46694a2906e0eae2f9fc11cade" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/Arrayy/zipball/ff32efd0036f776bd7adc3e7e6e3441d5c037c35", - "reference": "ff32efd0036f776bd7adc3e7e6e3441d5c037c35", + "url": "https://api.github.com/repos/voku/Arrayy/zipball/0e20b8c6eef7fc46694a2906e0eae2f9fc11cade", + "reference": "0e20b8c6eef7fc46694a2906e0eae2f9fc11cade", "shasum": "" }, "require": { "ext-json": "*", "php": ">=7.0.0", - "phpdocumentor/reflection-docblock": "~4.3|~5.0", + "phpdocumentor/reflection-docblock": "~4.3 || ~5.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" }, "type": "library", "autoload": { - "psr-4": { - "Arrayy\\": "src/" - }, "files": [ "src/Create.php" - ] + ], + "psr-4": { + "Arrayy\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4550,7 +5228,7 @@ { "name": "Lars Moelleken", "email": "lars@moelleken.org", - "homepage": "http://www.moelleken.org/", + "homepage": "https://www.moelleken.org/", "role": "Maintainer" } ], @@ -4564,20 +5242,47 @@ "utility", "utils" ], - "time": "2020-07-28T21:43:54+00:00" + "support": { + "docs": "https://voku.github.io/Arrayy/", + "issues": "https://github.com/voku/Arrayy/issues", + "source": "https://github.com/voku/Arrayy" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/arrayy", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/arrayy", + "type": "tidelift" + } + ], + "time": "2022-12-27T12:58:32+00:00" }, { "name": "voku/email-check", - "version": "3.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/voku/email-check.git", - "reference": "f91fc9da57fbb29c4ded5a1fc1238d4b988758dd" + "reference": "6ea842920bbef6758b8c1e619fd1710e7a1a2cac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/email-check/zipball/f91fc9da57fbb29c4ded5a1fc1238d4b988758dd", - "reference": "f91fc9da57fbb29c4ded5a1fc1238d4b988758dd", + "url": "https://api.github.com/repos/voku/email-check/zipball/6ea842920bbef6758b8c1e619fd1710e7a1a2cac", + "reference": "6ea842920bbef6758b8c1e619fd1710e7a1a2cac", "shasum": "" }, "require": { @@ -4618,27 +5323,49 @@ "validate-email-address", "validate-mail" ], - "time": "2019-01-02T23:08:14+00:00" + "support": { + "issues": "https://github.com/voku/email-check/issues", + "source": "https://github.com/voku/email-check/tree/3.1.0" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/email-check", + "type": "tidelift" + } + ], + "time": "2021-01-27T14:14:33+00:00" }, { "name": "voku/portable-ascii", - "version": "1.5.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "25bcbf01678930251fd572891447d9e318a6e2b8" + "reference": "b56450eed252f6801410d810c8e1727224ae0743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/25bcbf01678930251fd572891447d9e318a6e2b8", - "reference": "25bcbf01678930251fd572891447d9e318a6e2b8", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", "shasum": "" }, "require": { "php": ">=7.0.0" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" }, "suggest": { "ext-intl": "Use Intl for transliterator_transliterate() support" @@ -4666,20 +5393,46 @@ "clean", "php" ], - "time": "2020-07-22T23:32:04+00:00" + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" }, { "name": "voku/portable-utf8", - "version": "5.4.47", + "version": "6.0.13", "source": { "type": "git", "url": "https://github.com/voku/portable-utf8.git", - "reference": "c92522515a2d5ec9b03fd3c9e231b8b277c65121" + "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-utf8/zipball/c92522515a2d5ec9b03fd3c9e231b8b277c65121", - "reference": "c92522515a2d5ec9b03fd3c9e231b8b277c65121", + "url": "https://api.github.com/repos/voku/portable-utf8/zipball/b8ce36bf26593e5c2e81b1850ef0ffb299d2043f", + "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f", "shasum": "" }, "require": { @@ -4689,10 +5442,14 @@ "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php72": "~1.0", - "voku/portable-ascii": "~1.5" + "voku/portable-ascii": "~2.0.0" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpstan/phpstan": "1.9.*@dev", + "phpstan/phpstan-strict-rules": "1.4.*@dev", + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0", + "thecodingmachine/phpstan-strict-rules": "1.0.*@dev", + "voku/phpstan-rules": "3.1.*@dev" }, "suggest": { "ext-ctype": "Use Ctype for e.g. hexadecimal digit detection", @@ -4704,12 +5461,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "voku\\": "src/voku/" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "voku\\": "src/voku/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4739,7 +5496,33 @@ "utf-8", "utf8" ], - "time": "2020-07-26T11:17:51+00:00" + "support": { + "issues": "https://github.com/voku/portable-utf8/issues", + "source": "https://github.com/voku/portable-utf8/tree/6.0.13" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-utf8", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-utf8", + "type": "tidelift" + } + ], + "time": "2023-03-08T08:35:38+00:00" }, { "name": "voku/stop-words", @@ -4782,20 +5565,24 @@ "stop words", "stop-words" ], + "support": { + "issues": "https://github.com/voku/stop-words/issues", + "source": "https://github.com/voku/stop-words/tree/master" + }, "time": "2018-11-23T01:37:27+00:00" }, { "name": "voku/stringy", - "version": "6.3.1", + "version": "6.5.3", "source": { "type": "git", "url": "https://github.com/voku/Stringy.git", - "reference": "68429ad7626e94e2ec3a2a9f0b530e96ebb4a4db" + "reference": "c453c88fbff298f042c836ef44306f8703b2d537" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/Stringy/zipball/68429ad7626e94e2ec3a2a9f0b530e96ebb4a4db", - "reference": "68429ad7626e94e2ec3a2a9f0b530e96ebb4a4db", + "url": "https://api.github.com/repos/voku/Stringy/zipball/c453c88fbff298f042c836ef44306f8703b2d537", + "reference": "c453c88fbff298f042c836ef44306f8703b2d537", "shasum": "" }, "require": { @@ -4803,26 +5590,26 @@ "ext-json": "*", "php": ">=7.0.0", "voku/anti-xss": "~4.1", - "voku/arrayy": "~7.5", - "voku/email-check": "~3.0", - "voku/portable-ascii": "~1.5", - "voku/portable-utf8": "~5.4", + "voku/arrayy": "~7.8", + "voku/email-check": "~3.1", + "voku/portable-ascii": "~2.0", + "voku/portable-utf8": "~6.0", "voku/urlify": "~5.0" }, "replace": { "danielstjules/stringy": "~3.0" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" }, "type": "library", "autoload": { - "psr-4": { - "Stringy\\": "src/" - }, "files": [ "src/Create.php" - ] + ], + "psr-4": { + "Stringy\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4838,7 +5625,7 @@ { "name": "Lars Moelleken", "email": "lars@moelleken.org", - "homepage": "http://www.moelleken.org/", + "homepage": "https://www.moelleken.org/", "role": "Fork-Maintainer" } ], @@ -4855,30 +5642,52 @@ "utility", "utils" ], - "time": "2020-05-24T00:26:26+00:00" + "support": { + "issues": "https://github.com/voku/Stringy/issues", + "source": "https://github.com/voku/Stringy" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/stringy", + "type": "tidelift" + } + ], + "time": "2022-03-28T14:52:20+00:00" }, { "name": "voku/urlify", - "version": "5.0.5", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/voku/urlify.git", - "reference": "d59bfa6d13ce08062e2fe40dd23d226262f961c5" + "reference": "014b2074407b5db5968f836c27d8731934b330e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/urlify/zipball/d59bfa6d13ce08062e2fe40dd23d226262f961c5", - "reference": "d59bfa6d13ce08062e2fe40dd23d226262f961c5", + "url": "https://api.github.com/repos/voku/urlify/zipball/014b2074407b5db5968f836c27d8731934b330e4", + "reference": "014b2074407b5db5968f836c27d8731934b330e4", "shasum": "" }, "require": { "php": ">=7.0.0", - "voku/portable-ascii": "~1.4", - "voku/portable-utf8": "~5.4", + "voku/portable-ascii": "~2.0", + "voku/portable-utf8": "~6.0", "voku/stop-words": "~2.0" }, "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" }, "type": "library", "autoload": { @@ -4899,7 +5708,7 @@ { "name": "Lars Moelleken", "email": "lars@moelleken.org", - "homepage": "http://moelleken.org/" + "homepage": "https://moelleken.org/" } ], "description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.", @@ -4915,34 +5724,61 @@ "url", "urlify" ], - "time": "2019-12-13T02:57:54+00:00" + "support": { + "issues": "https://github.com/voku/urlify/issues", + "source": "https://github.com/voku/urlify/tree/5.0.7" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/urlify", + "type": "tidelift" + } + ], + "time": "2022-01-24T19:08:46+00:00" }, { "name": "webmozart/assert", - "version": "1.9.1", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -4964,30 +5800,44 @@ "check", "validate" ], - "time": "2020-07-08T17:02:28+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" }, { "name": "webonyx/graphql-php", - "version": "v0.12.6", + "version": "v14.11.10", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95" + "reference": "d9c2fdebc6aa01d831bc2969da00e8588cffef19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95", - "reference": "4c545e5ec4fc37f6eb36c19f5a0e7feaf5979c95", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/d9c2fdebc6aa01d831bc2969da00e8588cffef19", + "reference": "d9c2fdebc6aa01d831bc2969da00e8588cffef19", "shasum": "" }, "require": { + "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.6" + "php": "^7.1 || ^8" }, "require-dev": { - "phpunit/phpunit": "^4.8", + "amphp/amp": "^2.3", + "doctrine/coding-standard": "^6.0", + "nyholm/psr7": "^1.2", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "0.12.82", + "phpstan/phpstan-phpunit": "0.12.18", + "phpstan/phpstan-strict-rules": "0.12.9", + "phpunit/phpunit": "^7.2 || ^8.5", "psr/http-message": "^1.0", - "react/promise": "2.*" + "react/promise": "2.*", + "simpod/php-coveralls-mirror": "^3.0" }, "suggest": { "psr/http-message": "To use standard GraphQL server", @@ -5009,78 +5859,35 @@ "api", "graphql" ], - "time": "2018-09-02T14:59:54+00:00" - }, - { - "name": "yii2tech/ar-softdelete", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/yii2tech/ar-softdelete.git", - "reference": "498ed03f89ded835f0ca156ec50d432191c58769" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yii2tech/ar-softdelete/zipball/498ed03f89ded835f0ca156ec50d432191c58769", - "reference": "498ed03f89ded835f0ca156ec50d432191c58769", - "shasum": "" - }, - "require": { - "yiisoft/yii2": "~2.0.13" - }, - "require-dev": { - "phpunit/phpunit": "4.8.27|^5.0|^6.0" - }, - "type": "yii2-extension", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "yii2tech\\ar\\softdelete\\": "src" - } + "support": { + "issues": "https://github.com/webonyx/graphql-php/issues", + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.10" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Paul Klimov", - "email": "klimov.paul@gmail.com" + "url": "https://opencollective.com/webonyx-graphql-php", + "type": "open_collective" } ], - "description": "Provides support for ActiveRecord soft delete in Yii2", - "keywords": [ - "active", - "delete", - "integrity", - "record", - "smart", - "soft", - "yii2" - ], - "time": "2019-07-30T11:05:57+00:00" + "time": "2023-07-05T14:23:37+00:00" }, { "name": "yiisoft/yii2", - "version": "2.0.36", + "version": "2.0.45", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "a557111ea6c27794b98c98b76ff3f127eb55f309" + "reference": "e2223d4085e5612aa616635f8fcaf478607f62e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/a557111ea6c27794b98c98b76ff3f127eb55f309", - "reference": "a557111ea6c27794b98c98b76ff3f127eb55f309", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/e2223d4085e5612aa616635f8fcaf478607f62e8", + "reference": "e2223d4085e5612aa616635f8fcaf478607f62e8", "shasum": "" }, "require": { "bower-asset/inputmask": "~3.2.2 | ~3.3.5", - "bower-asset/jquery": "3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", + "bower-asset/jquery": "3.6.*@stable | 3.5.*@stable | 3.4.*@stable | 3.3.*@stable | 3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", "bower-asset/punycode": "1.3.*", "bower-asset/yii2-pjax": "~2.0.1", "cebe/markdown": "~1.0.0 | ~1.1.0 | ~1.2.0", @@ -5088,6 +5895,7 @@ "ext-mbstring": "*", "ezyang/htmlpurifier": "~4.6", "lib-pcre": "*", + "paragonie/random_compat": ">=1", "php": ">=5.4.0", "yiisoft/yii2-composer": "~2.0.4" }, @@ -5113,13 +5921,13 @@ { "name": "Qiang Xue", "email": "qiang.xue@gmail.com", - "homepage": "http://www.yiiframework.com/", + "homepage": "https://www.yiiframework.com/", "role": "Founder and project lead" }, { "name": "Alexander Makarov", "email": "sam@rmcreative.ru", - "homepage": "http://rmcreative.ru/", + "homepage": "https://rmcreative.ru/", "role": "Core framework development" }, { @@ -5130,7 +5938,7 @@ { "name": "Carsten Brandt", "email": "mail@cebe.cc", - "homepage": "http://cebe.cc/", + "homepage": "https://www.cebe.cc/", "role": "Core framework development" }, { @@ -5157,12 +5965,33 @@ } ], "description": "Yii PHP Framework Version 2", - "homepage": "http://www.yiiframework.com/", + "homepage": "https://www.yiiframework.com/", "keywords": [ "framework", "yii2" ], - "time": "2020-07-07T21:45:32+00:00" + "support": { + "forum": "https://forum.yiiframework.com/", + "irc": "ircs://irc.libera.chat:6697/yii", + "issues": "https://github.com/yiisoft/yii2/issues?state=open", + "source": "https://github.com/yiisoft/yii2", + "wiki": "https://www.yiiframework.com/wiki" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2", + "type": "tidelift" + } + ], + "time": "2022-02-11T13:12:40+00:00" }, { "name": "yiisoft/yii2-composer", @@ -5217,30 +6046,51 @@ "extension installer", "yii2" ], + "support": { + "forum": "http://www.yiiframework.com/forum/", + "irc": "irc://irc.freenode.net/yii", + "issues": "https://github.com/yiisoft/yii2-composer/issues", + "source": "https://github.com/yiisoft/yii2-composer", + "wiki": "http://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-composer", + "type": "tidelift" + } + ], "time": "2020-06-24T00:04:01+00:00" }, { "name": "yiisoft/yii2-debug", - "version": "2.1.13", + "version": "2.1.24", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-debug.git", - "reference": "696712a2a3565b1a072ad3c9d298e262967e8282" + "reference": "e15e954d0beb82b0b532f998f55e7275083de592" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/696712a2a3565b1a072ad3c9d298e262967e8282", - "reference": "696712a2a3565b1a072ad3c9d298e262967e8282", + "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/e15e954d0beb82b0b532f998f55e7275083de592", + "reference": "e15e954d0beb82b0b532f998f55e7275083de592", "shasum": "" }, "require": { "ext-mbstring": "*", - "opis/closure": "^3.3", "php": ">=5.4", "yiisoft/yii2": "~2.0.13" }, "require-dev": { - "phpunit/phpunit": "<7", + "cweagans/composer-patches": "^1.7", + "phpunit/phpunit": "4.8.34", "yiisoft/yii2-coding-standards": "~2.0", "yiisoft/yii2-swiftmailer": "*" }, @@ -5248,6 +6098,17 @@ "extra": { "branch-alias": { "dev-master": "2.0.x-dev" + }, + "composer-exit-on-patch-failure": true, + "patches": { + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + }, + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch", + "Fix PHP 8.1 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php81.patch" + } } }, "autoload": { @@ -5275,32 +6136,53 @@ "debugger", "yii2" ], - "time": "2020-01-17T13:40:32+00:00" + "support": { + "forum": "http://www.yiiframework.com/forum/", + "irc": "irc://irc.freenode.net/yii", + "issues": "https://github.com/yiisoft/yii2-debug/issues", + "source": "https://github.com/yiisoft/yii2-debug", + "wiki": "http://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-debug", + "type": "tidelift" + } + ], + "time": "2023-07-10T06:07:43+00:00" }, { "name": "yiisoft/yii2-queue", - "version": "2.3.0", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-queue.git", - "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0" + "reference": "c1bf0ef5dbe107dc1cf692c1349b9ddd2485a399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/25c1142558768ec0e835171c972a4edc2fb59cf0", - "reference": "25c1142558768ec0e835171c972a4edc2fb59cf0", + "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/c1bf0ef5dbe107dc1cf692c1349b9ddd2485a399", + "reference": "c1bf0ef5dbe107dc1cf692c1349b9ddd2485a399", "shasum": "" }, "require": { "php": ">=5.5.0", - "symfony/process": "^3.3||^4.0", + "symfony/process": "^3.3||^4.0||^5.0||^6.0", "yiisoft/yii2": "~2.0.14" }, "require-dev": { "aws/aws-sdk-php": ">=2.4", "enqueue/amqp-lib": "^0.8||^0.9.10", "enqueue/stomp": "^0.8.39", - "jeremeamia/superclosure": "*", + "opis/closure": "*", "pda/pheanstalk": "v3.*", "php-amqplib/php-amqplib": "*", "phpunit/phpunit": "~4.4", @@ -5327,16 +6209,16 @@ "autoload": { "psr-4": { "yii\\queue\\": "src", - "yii\\queue\\amqp\\": "src/drivers/amqp", - "yii\\queue\\amqp_interop\\": "src/drivers/amqp_interop", - "yii\\queue\\beanstalk\\": "src/drivers/beanstalk", "yii\\queue\\db\\": "src/drivers/db", + "yii\\queue\\sqs\\": "src/drivers/sqs", + "yii\\queue\\amqp\\": "src/drivers/amqp", "yii\\queue\\file\\": "src/drivers/file", - "yii\\queue\\gearman\\": "src/drivers/gearman", - "yii\\queue\\redis\\": "src/drivers/redis", "yii\\queue\\sync\\": "src/drivers/sync", - "yii\\queue\\sqs\\": "src/drivers/sqs", - "yii\\queue\\stomp\\": "src/drivers/stomp" + "yii\\queue\\redis\\": "src/drivers/redis", + "yii\\queue\\stomp\\": "src/drivers/stomp", + "yii\\queue\\gearman\\": "src/drivers/gearman", + "yii\\queue\\beanstalk\\": "src/drivers/beanstalk", + "yii\\queue\\amqp_interop\\": "src/drivers/amqp_interop" } }, "notification-url": "https://packagist.org/downloads/", @@ -5362,30 +6244,63 @@ "sqs", "yii" ], - "time": "2019-06-04T18:58:40+00:00" + "support": { + "docs": "https://github.com/yiisoft/yii2-queue/blob/master/docs/guide", + "issues": "https://github.com/yiisoft/yii2-queue/issues", + "source": "https://github.com/yiisoft/yii2-queue" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-queue", + "type": "tidelift" + } + ], + "time": "2022-11-18T17:16:47+00:00" }, { "name": "yiisoft/yii2-swiftmailer", - "version": "2.1.2", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-swiftmailer.git", - "reference": "09659a55959f9e64b8178d842b64a9ffae42b994" + "reference": "7b7ec871b4a63c0abbcd10e1ee3fb5be22f8b340" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-swiftmailer/zipball/09659a55959f9e64b8178d842b64a9ffae42b994", - "reference": "09659a55959f9e64b8178d842b64a9ffae42b994", + "url": "https://api.github.com/repos/yiisoft/yii2-swiftmailer/zipball/7b7ec871b4a63c0abbcd10e1ee3fb5be22f8b340", + "reference": "7b7ec871b4a63c0abbcd10e1ee3fb5be22f8b340", "shasum": "" }, "require": { "swiftmailer/swiftmailer": "~6.0", "yiisoft/yii2": ">=2.0.4" }, + "require-dev": { + "cweagans/composer-patches": "^1.7", + "phpunit/phpunit": "4.8.34" + }, "type": "yii2-extension", "extra": { "branch-alias": { "dev-master": "2.1.x-dev" + }, + "composer-exit-on-patch-failure": true, + "patches": { + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + }, + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch" + } } }, "autoload": { @@ -5412,31 +6327,52 @@ "swiftmailer", "yii2" ], - "time": "2018-09-23T22:00:47+00:00" + "support": { + "forum": "http://www.yiiframework.com/forum/", + "irc": "irc://irc.freenode.net/yii", + "issues": "https://github.com/yiisoft/yii2-swiftmailer/issues", + "source": "https://github.com/yiisoft/yii2-swiftmailer", + "wiki": "http://www.yiiframework.com/wiki/" + }, + "funding": [ + { + "url": "https://github.com/yiisoft", + "type": "github" + }, + { + "url": "https://opencollective.com/yiisoft", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/yiisoft/yii2-swiftmailer", + "type": "tidelift" + } + ], + "time": "2021-12-30T08:48:48+00:00" } ], "packages-dev": [ { "name": "n98/junit-xml", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/cmuench/junit-xml.git", - "reference": "7df0dbaf413fcaa1a63ffbcef18654e7a4cceb46" + "reference": "0017dd92ac8cb619f02e32f4cffd768cfe327c73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cmuench/junit-xml/zipball/7df0dbaf413fcaa1a63ffbcef18654e7a4cceb46", - "reference": "7df0dbaf413fcaa1a63ffbcef18654e7a4cceb46", + "url": "https://api.github.com/repos/cmuench/junit-xml/zipball/0017dd92ac8cb619f02e32f4cffd768cfe327c73", + "reference": "0017dd92ac8cb619f02e32f4cffd768cfe327c73", "shasum": "" }, "require-dev": { - "phpunit/phpunit": "3.7.*" + "phpunit/phpunit": "^9.5.0" }, "type": "library", "autoload": { - "psr-0": { - "N98\\JUnitXml": "src/" + "psr-4": { + "N98\\JUnitXml\\": "src/N98/JUnitXml" } }, "notification-url": "https://packagist.org/downloads/", @@ -5450,29 +6386,33 @@ } ], "description": "JUnit XML Document generation library", - "time": "2013-11-23T13:11:26+00:00" + "support": { + "issues": "https://github.com/cmuench/junit-xml/issues", + "source": "https://github.com/cmuench/junit-xml/tree/1.1.0" + }, + "time": "2020-12-25T09:08:58+00:00" }, { "name": "overtrue/phplint", - "version": "2.0.2", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/overtrue/phplint.git", - "reference": "8b1e27094c82ad861ff7728cf50d349500c39fe2" + "reference": "59affacd0b09a1460e39acf2c64c963ddbf734cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/phplint/zipball/8b1e27094c82ad861ff7728cf50d349500c39fe2", - "reference": "8b1e27094c82ad861ff7728cf50d349500c39fe2", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/59affacd0b09a1460e39acf2c64c963ddbf734cf", + "reference": "59affacd0b09a1460e39acf2c64c963ddbf734cf", "shasum": "" }, "require": { "ext-json": "*", - "n98/junit-xml": "1.0.0", + "n98/junit-xml": "1.1.0", "php": ">=5.5.9", "symfony/console": "^3.2|^4.0|^5.0", "symfony/finder": "^3.0|^4.0|^5.0", - "symfony/process": "^3.0|^4.0|^5.0", + "symfony/process": "^3.3|^4.0|^5.0", "symfony/yaml": "^3.0|^4.0|^5.0" }, "require-dev": { @@ -5516,7 +6456,11 @@ "phplint", "syntax" ], - "time": "2020-04-23T02:04:34+00:00" + "support": { + "issues": "https://github.com/overtrue/phplint/issues", + "source": "https://github.com/overtrue/phplint/tree/2.4.1" + }, + "time": "2021-06-02T16:18:33+00:00" } ], "aliases": [], @@ -5525,5 +6469,6 @@ "prefer-stable": false, "prefer-lowest": false, "platform": [], - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.3.0" } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..e99b281d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: '2' + +services: + + app: + build: . + container_name: craftql-composer + volumes: + - ./composer.json:/composer.json + - ./composer.lock:/composer.lock + + environment: + # Set locale to UTF-8 (https://oncletom.io/2015/docker-encoding/) + LANG: C.UTF-8 \ No newline at end of file diff --git a/src/Controllers/ApiController.php b/src/Controllers/ApiController.php index 22e23509..ed7f1585 100644 --- a/src/Controllers/ApiController.php +++ b/src/Controllers/ApiController.php @@ -12,7 +12,6 @@ class ApiController extends Controller protected $allowAnonymous = ['index']; private $graphQl; - private $request; /** * @inheritdoc diff --git a/src/Services/GraphQLService.php b/src/Services/GraphQLService.php index a2a6d142..6a742693 100644 --- a/src/Services/GraphQLService.php +++ b/src/Services/GraphQLService.php @@ -4,7 +4,7 @@ use Craft; use GraphQL\GraphQL; -use GraphQL\Error\Debug; +use GraphQL\Error\DebugFlag; use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Schema; use GraphQL\Validator\DocumentValidator; @@ -132,7 +132,7 @@ function getSchema($token) { } function execute($schema, $input, $variables = []) { - $debug = Craft::$app->config->getGeneral()->devMode ? Debug::INCLUDE_DEBUG_MESSAGE | Debug::RETHROW_INTERNAL_EXCEPTIONS : null; + $debug = Craft::$app->config->getGeneral()->devMode ? DebugFlag::INCLUDE_DEBUG_MESSAGE | DebugFlag::RETHROW_INTERNAL_EXCEPTIONS : 0; return GraphQL::executeQuery($schema, $input, null, null, $variables)->toArray($debug); }