mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-19 22:03:13 +03:00
Shortened method names of PromiseAdapter
This commit is contained in:
parent
26db4c76c6
commit
a165c3aaab
@ -5,8 +5,14 @@ use GraphQL\Executor\Promise\Adapter\SyncPromise;
|
|||||||
|
|
||||||
class Deferred
|
class Deferred
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var \SplQueue
|
||||||
|
*/
|
||||||
private static $queue;
|
private static $queue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var callable
|
||||||
|
*/
|
||||||
private $callback;
|
private $callback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,8 +27,8 @@ class Deferred
|
|||||||
|
|
||||||
public static function runQueue()
|
public static function runQueue()
|
||||||
{
|
{
|
||||||
$q = self::getQueue();
|
$q = self::$queue;
|
||||||
while (!$q->isEmpty()) {
|
while ($q && !$q->isEmpty()) {
|
||||||
/** @var self $dfd */
|
/** @var self $dfd */
|
||||||
$dfd = $q->dequeue();
|
$dfd = $q->dequeue();
|
||||||
$dfd->run();
|
$dfd->run();
|
||||||
|
@ -225,7 +225,7 @@ class Executor
|
|||||||
// field and its descendants will be omitted, and sibling fields will still
|
// field and its descendants will be omitted, and sibling fields will still
|
||||||
// be executed. An execution which encounters errors will still result in a
|
// be executed. An execution which encounters errors will still result in a
|
||||||
// resolved Promise.
|
// resolved Promise.
|
||||||
$result = $this->promises->createPromise(function (callable $resolve) {
|
$result = $this->promises->create(function (callable $resolve) {
|
||||||
return $resolve($this->executeOperation($this->exeContext->operation, $this->exeContext->rootValue));
|
return $resolve($this->executeOperation($this->exeContext->operation, $this->exeContext->rootValue));
|
||||||
});
|
});
|
||||||
return $result
|
return $result
|
||||||
@ -313,7 +313,7 @@ class Executor
|
|||||||
*/
|
*/
|
||||||
private function executeFieldsSerially(ObjectType $parentType, $sourceValue, $path, $fields)
|
private function executeFieldsSerially(ObjectType $parentType, $sourceValue, $path, $fields)
|
||||||
{
|
{
|
||||||
$prevPromise = $this->promises->createResolvedPromise([]);
|
$prevPromise = $this->promises->createFulfilled([]);
|
||||||
|
|
||||||
$process = function ($results, $responseName, $path, $parentType, $sourceValue, $fieldNodes) {
|
$process = function ($results, $responseName, $path, $parentType, $sourceValue, $fieldNodes) {
|
||||||
$fieldPath = $path;
|
$fieldPath = $path;
|
||||||
@ -398,7 +398,7 @@ class Executor
|
|||||||
$keys = array_keys($assoc);
|
$keys = array_keys($assoc);
|
||||||
$valuesAndPromises = array_values($assoc);
|
$valuesAndPromises = array_values($assoc);
|
||||||
|
|
||||||
$promise = $this->promises->createPromiseAll($valuesAndPromises);
|
$promise = $this->promises->all($valuesAndPromises);
|
||||||
|
|
||||||
return $promise->then(function($values) use ($keys) {
|
return $promise->then(function($values) use ($keys) {
|
||||||
$resolvedResults = [];
|
$resolvedResults = [];
|
||||||
@ -729,7 +729,7 @@ class Executor
|
|||||||
if ($completed instanceof Promise) {
|
if ($completed instanceof Promise) {
|
||||||
return $completed->then(null, function ($error) use ($exeContext) {
|
return $completed->then(null, function ($error) use ($exeContext) {
|
||||||
$exeContext->addError($error);
|
$exeContext->addError($error);
|
||||||
return $this->promises->createResolvedPromise(null);
|
return $this->promises->createFulfilled(null);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return $completed;
|
return $completed;
|
||||||
@ -772,7 +772,7 @@ class Executor
|
|||||||
);
|
);
|
||||||
if ($completed instanceof Promise) {
|
if ($completed instanceof Promise) {
|
||||||
return $completed->then(null, function ($error) use ($fieldNodes, $path) {
|
return $completed->then(null, function ($error) use ($fieldNodes, $path) {
|
||||||
return $this->promises->createRejectedPromise(Error::createLocatedError($error, $fieldNodes, $path));
|
return $this->promises->createRejected(Error::createLocatedError($error, $fieldNodes, $path));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return $completed;
|
return $completed;
|
||||||
@ -820,7 +820,7 @@ class Executor
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ($this->promises->isThenable($result)) {
|
if ($this->promises->isThenable($result)) {
|
||||||
$result = $this->promises->convert($result);
|
$result = $this->promises->convertThenable($result);
|
||||||
Utils::invariant($result instanceof Promise);
|
Utils::invariant($result instanceof Promise);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1023,7 +1023,7 @@ class Executor
|
|||||||
}
|
}
|
||||||
$completedItems[] = $completedItem;
|
$completedItems[] = $completedItem;
|
||||||
}
|
}
|
||||||
return $containsPromise ? $this->promises->createPromiseAll($completedItems) : $completedItems;
|
return $containsPromise ? $this->promises->all($completedItems) : $completedItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,9 +20,9 @@ class ReactPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function convert($promise)
|
public function convertThenable($thenable)
|
||||||
{
|
{
|
||||||
return new Promise($promise, $this);
|
return new Promise($thenable, $this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,7 +38,7 @@ class ReactPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createPromise(callable $resolver)
|
public function create(callable $resolver)
|
||||||
{
|
{
|
||||||
$promise = new ReactPromise($resolver);
|
$promise = new ReactPromise($resolver);
|
||||||
return new Promise($promise, $this);
|
return new Promise($promise, $this);
|
||||||
@ -47,7 +47,7 @@ class ReactPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createResolvedPromise($value = null)
|
public function createFulfilled($value = null)
|
||||||
{
|
{
|
||||||
$promise = \React\Promise\resolve($value);
|
$promise = \React\Promise\resolve($value);
|
||||||
return new Promise($promise, $this);
|
return new Promise($promise, $this);
|
||||||
@ -56,7 +56,7 @@ class ReactPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createRejectedPromise(\Exception $reason)
|
public function createRejected(\Exception $reason)
|
||||||
{
|
{
|
||||||
$promise = \React\Promise\reject($reason);
|
$promise = \React\Promise\reject($reason);
|
||||||
return new Promise($promise, $this);
|
return new Promise($promise, $this);
|
||||||
@ -65,7 +65,7 @@ class ReactPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createPromiseAll(array $promisesOrValues)
|
public function all(array $promisesOrValues)
|
||||||
{
|
{
|
||||||
// TODO: rework with generators when PHP minimum required version is changed to 5.5+
|
// TODO: rework with generators when PHP minimum required version is changed to 5.5+
|
||||||
$promisesOrValues = Utils::map($promisesOrValues, function ($item) {
|
$promisesOrValues = Utils::map($promisesOrValues, function ($item) {
|
||||||
|
@ -29,8 +29,8 @@ class SyncPromise
|
|||||||
|
|
||||||
public static function runQueue()
|
public static function runQueue()
|
||||||
{
|
{
|
||||||
$q = self::getQueue();
|
$q = self::$queue;
|
||||||
while (!$q->isEmpty()) {
|
while ($q && !$q->isEmpty()) {
|
||||||
$task = $q->dequeue();
|
$task = $q->dequeue();
|
||||||
$task();
|
$task();
|
||||||
}
|
}
|
||||||
@ -38,8 +38,8 @@ class SyncPromise
|
|||||||
|
|
||||||
public static function runNext()
|
public static function runNext()
|
||||||
{
|
{
|
||||||
$q = self::getQueue();
|
$q = self::$queue;
|
||||||
if (!$q->isEmpty()) {
|
if ($q && !$q->isEmpty()) {
|
||||||
$task = $q->dequeue();
|
$task = $q->dequeue();
|
||||||
$task();
|
$task();
|
||||||
}
|
}
|
||||||
|
@ -28,12 +28,12 @@ class SyncPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function convert($value)
|
public function convertThenable($thenable)
|
||||||
{
|
{
|
||||||
if (!$value instanceof Deferred) {
|
if (!$thenable instanceof Deferred) {
|
||||||
throw new InvariantViolation('Expected instance of GraphQL\Deferred, got ' . Utils::printSafe($value));
|
throw new InvariantViolation('Expected instance of GraphQL\Deferred, got ' . Utils::printSafe($thenable));
|
||||||
}
|
}
|
||||||
return new Promise($value->promise, $this);
|
return new Promise($thenable->promise, $this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -49,7 +49,7 @@ class SyncPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createPromise(callable $resolver)
|
public function create(callable $resolver)
|
||||||
{
|
{
|
||||||
$promise = new SyncPromise();
|
$promise = new SyncPromise();
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ class SyncPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createResolvedPromise($value = null)
|
public function createFulfilled($value = null)
|
||||||
{
|
{
|
||||||
$promise = new SyncPromise();
|
$promise = new SyncPromise();
|
||||||
return new Promise($promise->resolve($value), $this);
|
return new Promise($promise->resolve($value), $this);
|
||||||
@ -77,7 +77,7 @@ class SyncPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createRejectedPromise(\Exception $reason)
|
public function createRejected(\Exception $reason)
|
||||||
{
|
{
|
||||||
$promise = new SyncPromise();
|
$promise = new SyncPromise();
|
||||||
return new Promise($promise->reject($reason), $this);
|
return new Promise($promise->reject($reason), $this);
|
||||||
@ -86,7 +86,7 @@ class SyncPromiseAdapter implements PromiseAdapter
|
|||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function createPromiseAll(array $promisesOrValues)
|
public function all(array $promisesOrValues)
|
||||||
{
|
{
|
||||||
$all = new SyncPromise();
|
$all = new SyncPromise();
|
||||||
|
|
||||||
@ -117,6 +117,12 @@ class SyncPromiseAdapter implements PromiseAdapter
|
|||||||
return new Promise($all, $this);
|
return new Promise($all, $this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Synchronously wait when promise completes
|
||||||
|
*
|
||||||
|
* @param Promise $promise
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function wait(Promise $promise)
|
public function wait(Promise $promise)
|
||||||
{
|
{
|
||||||
$dfdQueue = Deferred::getQueue();
|
$dfdQueue = Deferred::getQueue();
|
||||||
|
@ -12,12 +12,12 @@ interface PromiseAdapter
|
|||||||
public function isThenable($value);
|
public function isThenable($value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts promise of underlying system into Promise instance
|
* Converts thenable of underlying system into Promise instance
|
||||||
*
|
*
|
||||||
* @param $adaptedPromise
|
* @param object $thenable
|
||||||
* @return Promise
|
* @return Promise
|
||||||
*/
|
*/
|
||||||
public function convert($adaptedPromise);
|
public function convertThenable($thenable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accepts our Promise wrapper, extracts adopted promise out of it and executes actual `then` logic described
|
* Accepts our Promise wrapper, extracts adopted promise out of it and executes actual `then` logic described
|
||||||
@ -38,7 +38,7 @@ interface PromiseAdapter
|
|||||||
|
|
||||||
* @return Promise
|
* @return Promise
|
||||||
*/
|
*/
|
||||||
public function createPromise(callable $resolver);
|
public function create(callable $resolver);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a fulfilled Promise for a value if the value is not a promise.
|
* Creates a fulfilled Promise for a value if the value is not a promise.
|
||||||
@ -47,7 +47,7 @@ interface PromiseAdapter
|
|||||||
*
|
*
|
||||||
* @return Promise
|
* @return Promise
|
||||||
*/
|
*/
|
||||||
public function createResolvedPromise($value = null);
|
public function createFulfilled($value = null);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a rejected promise for a reason if the reason is not a promise. If
|
* Creates a rejected promise for a reason if the reason is not a promise. If
|
||||||
@ -57,7 +57,7 @@ interface PromiseAdapter
|
|||||||
*
|
*
|
||||||
* @return Promise
|
* @return Promise
|
||||||
*/
|
*/
|
||||||
public function createRejectedPromise(\Exception $reason);
|
public function createRejected(\Exception $reason);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an array of promises (or values), returns a promise that is fulfilled when all the
|
* Given an array of promises (or values), returns a promise that is fulfilled when all the
|
||||||
@ -67,5 +67,5 @@ interface PromiseAdapter
|
|||||||
*
|
*
|
||||||
* @return Promise
|
* @return Promise
|
||||||
*/
|
*/
|
||||||
public function createPromiseAll(array $promisesOrValues);
|
public function all(array $promisesOrValues);
|
||||||
}
|
}
|
||||||
|
@ -35,13 +35,13 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testConvert()
|
public function testConvert()
|
||||||
{
|
{
|
||||||
$dfd = new Deferred(function() {});
|
$dfd = new Deferred(function() {});
|
||||||
$result = $this->promises->convert($dfd);
|
$result = $this->promises->convertThenable($dfd);
|
||||||
|
|
||||||
$this->assertInstanceOf('GraphQL\Executor\Promise\Promise', $result);
|
$this->assertInstanceOf('GraphQL\Executor\Promise\Promise', $result);
|
||||||
$this->assertInstanceOf('GraphQL\Executor\Promise\Adapter\SyncPromise', $result->adoptedPromise);
|
$this->assertInstanceOf('GraphQL\Executor\Promise\Adapter\SyncPromise', $result->adoptedPromise);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->promises->convert('');
|
$this->promises->convertThenable('');
|
||||||
$this->fail('Expected exception no thrown');
|
$this->fail('Expected exception no thrown');
|
||||||
} catch (InvariantViolation $e) {
|
} catch (InvariantViolation $e) {
|
||||||
$this->assertEquals('Expected instance of GraphQL\Deferred, got (empty string)', $e->getMessage());
|
$this->assertEquals('Expected instance of GraphQL\Deferred, got (empty string)', $e->getMessage());
|
||||||
@ -51,7 +51,7 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testThen()
|
public function testThen()
|
||||||
{
|
{
|
||||||
$dfd = new Deferred(function() {});
|
$dfd = new Deferred(function() {});
|
||||||
$promise = $this->promises->convert($dfd);
|
$promise = $this->promises->convertThenable($dfd);
|
||||||
|
|
||||||
$result = $this->promises->then($promise);
|
$result = $this->promises->then($promise);
|
||||||
|
|
||||||
@ -61,12 +61,12 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testCreatePromise()
|
public function testCreatePromise()
|
||||||
{
|
{
|
||||||
$promise = $this->promises->createPromise(function($resolve, $reject) {});
|
$promise = $this->promises->create(function($resolve, $reject) {});
|
||||||
|
|
||||||
$this->assertInstanceOf('GraphQL\Executor\Promise\Promise', $promise);
|
$this->assertInstanceOf('GraphQL\Executor\Promise\Promise', $promise);
|
||||||
$this->assertInstanceOf('GraphQL\Executor\Promise\Adapter\SyncPromise', $promise->adoptedPromise);
|
$this->assertInstanceOf('GraphQL\Executor\Promise\Adapter\SyncPromise', $promise->adoptedPromise);
|
||||||
|
|
||||||
$promise = $this->promises->createPromise(function($resolve, $reject) {
|
$promise = $this->promises->create(function($resolve, $reject) {
|
||||||
$resolve('A');
|
$resolve('A');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -75,22 +75,22 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testCreateFulfilledPromise()
|
public function testCreateFulfilledPromise()
|
||||||
{
|
{
|
||||||
$promise = $this->promises->createResolvedPromise('test');
|
$promise = $this->promises->createFulfilled('test');
|
||||||
$this->assertValidPromise($promise, null, 'test', SyncPromise::FULFILLED);
|
$this->assertValidPromise($promise, null, 'test', SyncPromise::FULFILLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateRejectedPromise()
|
public function testCreateRejectedPromise()
|
||||||
{
|
{
|
||||||
$promise = $this->promises->createRejectedPromise(new \Exception('test reason'));
|
$promise = $this->promises->createRejected(new \Exception('test reason'));
|
||||||
$this->assertValidPromise($promise, 'test reason', null, SyncPromise::REJECTED);
|
$this->assertValidPromise($promise, 'test reason', null, SyncPromise::REJECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreatePromiseAll()
|
public function testCreatePromiseAll()
|
||||||
{
|
{
|
||||||
$promise = $this->promises->createPromiseAll([]);
|
$promise = $this->promises->all([]);
|
||||||
$this->assertValidPromise($promise, null, [], SyncPromise::FULFILLED);
|
$this->assertValidPromise($promise, null, [], SyncPromise::FULFILLED);
|
||||||
|
|
||||||
$promise = $this->promises->createPromiseAll(['1']);
|
$promise = $this->promises->all(['1']);
|
||||||
$this->assertValidPromise($promise, null, ['1'], SyncPromise::FULFILLED);
|
$this->assertValidPromise($promise, null, ['1'], SyncPromise::FULFILLED);
|
||||||
|
|
||||||
$promise1 = new SyncPromise();
|
$promise1 = new SyncPromise();
|
||||||
@ -110,7 +110,7 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
[]
|
[]
|
||||||
];
|
];
|
||||||
|
|
||||||
$promise = $this->promises->createPromiseAll($data);
|
$promise = $this->promises->all($data);
|
||||||
$this->assertValidPromise($promise, null, null, SyncPromise::PENDING);
|
$this->assertValidPromise($promise, null, null, SyncPromise::PENDING);
|
||||||
|
|
||||||
$promise1->resolve('value1');
|
$promise1->resolve('value1');
|
||||||
@ -132,15 +132,15 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
return 2;
|
return 2;
|
||||||
});
|
});
|
||||||
|
|
||||||
$p1 = $this->promises->convert($deferred1);
|
$p1 = $this->promises->convertThenable($deferred1);
|
||||||
$p2 = $this->promises->convert($deferred2);
|
$p2 = $this->promises->convertThenable($deferred2);
|
||||||
|
|
||||||
$p3 = $p2->then(function() use (&$called) {
|
$p3 = $p2->then(function() use (&$called) {
|
||||||
$dfd = new Deferred(function() use (&$called) {
|
$dfd = new Deferred(function() use (&$called) {
|
||||||
$called[] = 3;
|
$called[] = 3;
|
||||||
return 3;
|
return 3;
|
||||||
});
|
});
|
||||||
return $this->promises->convert($dfd);
|
return $this->promises->convertThenable($dfd);
|
||||||
});
|
});
|
||||||
|
|
||||||
$p4 = $p3->then(function() use (&$called) {
|
$p4 = $p3->then(function() use (&$called) {
|
||||||
@ -150,7 +150,7 @@ class SyncPromiseAdapterTest extends \PHPUnit_Framework_TestCase
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$all = $this->promises->createPromiseAll([0, $p1, $p2, $p3, $p4]);
|
$all = $this->promises->all([0, $p1, $p2, $p3, $p4]);
|
||||||
|
|
||||||
$result = $this->promises->wait($p2);
|
$result = $this->promises->wait($p2);
|
||||||
$this->assertEquals(2, $result);
|
$this->assertEquals(2, $result);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user