namespace Google\Site_Kit_Dependencies\React\Promise;
/**
* Creates a promise for the supplied `$promiseOrValue`.
*
* If `$promiseOrValue` is a value, it will be the resolution value of the
* returned promise.
*
* If `$promiseOrValue` is a thenable (any object that provides a `then()` method),
* a trusted promise that follows the state of the thenable is returned.
*
* If `$promiseOrValue` is a promise, it will be returned as is.
*
* @param mixed $promiseOrValue
* @return PromiseInterface
*/
function resolve($promiseOrValue = null)
{
if ($promiseOrValue instanceof \Google\Site_Kit_Dependencies\React\Promise\ExtendedPromiseInterface) {
return $promiseOrValue;
}
// Check is_object() first to avoid method_exists() triggering
// class autoloaders if $promiseOrValue is a string.
if (\is_object($promiseOrValue) && \method_exists($promiseOrValue, 'then')) {
$canceller = null;
if (\method_exists($promiseOrValue, 'cancel')) {
$canceller = [$promiseOrValue, 'cancel'];
}
return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promiseOrValue) {
$promiseOrValue->then($resolve, $reject, $notify);
}, $canceller);
}
return new \Google\Site_Kit_Dependencies\React\Promise\FulfilledPromise($promiseOrValue);
}
/**
* Creates a rejected promise for the supplied `$promiseOrValue`.
*
* If `$promiseOrValue` is a value, it will be the rejection value of the
* returned promise.
*
* If `$promiseOrValue` is a promise, its completion value will be the rejected
* value of the returned promise.
*
* This can be useful in situations where you need to reject a promise without
* throwing an exception. For example, it allows you to propagate a rejection with
* the value of another promise.
*
* @param mixed $promiseOrValue
* @return PromiseInterface
*/
function reject($promiseOrValue = null)
{
if ($promiseOrValue instanceof \Google\Site_Kit_Dependencies\React\Promise\PromiseInterface) {
return resolve($promiseOrValue)->then(function ($value) {
return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($value);
});
}
return new \Google\Site_Kit_Dependencies\React\Promise\RejectedPromise($promiseOrValue);
}
/**
* Returns a promise that will resolve only once all the items in
* `$promisesOrValues` have resolved. The resolution value of the returned promise
* will be an array containing the resolution values of each of the items in
* `$promisesOrValues`.
*
* @param array $promisesOrValues
* @return PromiseInterface
*/
function all($promisesOrValues)
{
return map($promisesOrValues, function ($val) {
return $val;
});
}
/**
* Initiates a competitive race that allows one winner. Returns a promise which is
* resolved in the same way the first settled promise resolves.
*
* The returned promise will become **infinitely pending** if `$promisesOrValues`
* contains 0 items.
*
* @param array $promisesOrValues
* @return PromiseInterface
*/
function race($promisesOrValues)
{
$cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue();
$cancellationQueue->enqueue($promisesOrValues);
return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $cancellationQueue) {
resolve($promisesOrValues)->done(function ($array) use($cancellationQueue, $resolve, $reject, $notify) {
if (!\is_array($array) || !$array) {
$resolve();
return;
}
foreach ($array as $promiseOrValue) {
$cancellationQueue->enqueue($promiseOrValue);
resolve($promiseOrValue)->done($resolve, $reject, $notify);
}
}, $reject, $notify);
}, $cancellationQueue);
}
/**
* Returns a promise that will resolve when any one of the items in
* `$promisesOrValues` resolves. The resolution value of the returned promise
* will be the resolution value of the triggering item.
*
* The returned promise will only reject if *all* items in `$promisesOrValues` are
* rejected. The rejection value will be an array of all rejection reasons.
*
* The returned promise will also reject with a `React\Promise\Exception\LengthException`
* if `$promisesOrValues` contains 0 items.
*
* @param array $promisesOrValues
* @return PromiseInterface
*/
function any($promisesOrValues)
{
return some($promisesOrValues, 1)->then(function ($val) {
return \array_shift($val);
});
}
/**
* Returns a promise that will resolve when `$howMany` of the supplied items in
* `$promisesOrValues` resolve. The resolution value of the returned promise
* will be an array of length `$howMany` containing the resolution values of the
* triggering items.
*
* The returned promise will reject if it becomes impossible for `$howMany` items
* to resolve (that is, when `(count($promisesOrValues) - $howMany) + 1` items
* reject). The rejection value will be an array of
* `(count($promisesOrValues) - $howMany) + 1` rejection reasons.
*
* The returned promise will also reject with a `React\Promise\Exception\LengthException`
* if `$promisesOrValues` contains less items than `$howMany`.
*
* @param array $promisesOrValues
* @param int $howMany
* @return PromiseInterface
*/
function some($promisesOrValues, $howMany)
{
$cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue();
$cancellationQueue->enqueue($promisesOrValues);
return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $howMany, $cancellationQueue) {
resolve($promisesOrValues)->done(function ($array) use($howMany, $cancellationQueue, $resolve, $reject, $notify) {
if (!\is_array($array) || $howMany < 1) {
$resolve([]);
return;
}
$len = \count($array);
if ($len < $howMany) {
throw new \Google\Site_Kit_Dependencies\React\Promise\Exception\LengthException(\sprintf('Input array must contain at least %d item%s but contains only %s item%s.', $howMany, 1 === $howMany ? '' : 's', $len, 1 === $len ? '' : 's'));
}
$toResolve = $howMany;
$toReject = $len - $toResolve + 1;
$values = [];
$reasons = [];
foreach ($array as $i => $promiseOrValue) {
$fulfiller = function ($val) use($i, &$values, &$toResolve, $toReject, $resolve) {
if ($toResolve < 1 || $toReject < 1) {
return;
}
$values[$i] = $val;
if (0 === --$toResolve) {
$resolve($values);
}
};
$rejecter = function ($reason) use($i, &$reasons, &$toReject, $toResolve, $reject) {
if ($toResolve < 1 || $toReject < 1) {
return;
}
$reasons[$i] = $reason;
if (0 === --$toReject) {
$reject($reasons);
}
};
$cancellationQueue->enqueue($promiseOrValue);
resolve($promiseOrValue)->done($fulfiller, $rejecter, $notify);
}
}, $reject, $notify);
}, $cancellationQueue);
}
/**
* Traditional map function, similar to `array_map()`, but allows input to contain
* promises and/or values, and `$mapFunc` may return either a value or a promise.
*
* The map function receives each item as argument, where item is a fully resolved
* value of a promise or value in `$promisesOrValues`.
*
* @param array $promisesOrValues
* @param callable $mapFunc
* @return PromiseInterface
*/
function map($promisesOrValues, callable $mapFunc)
{
$cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue();
$cancellationQueue->enqueue($promisesOrValues);
return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $mapFunc, $cancellationQueue) {
resolve($promisesOrValues)->done(function ($array) use($mapFunc, $cancellationQueue, $resolve, $reject, $notify) {
if (!\is_array($array) || !$array) {
$resolve([]);
return;
}
$toResolve = \count($array);
$values = [];
foreach ($array as $i => $promiseOrValue) {
$cancellationQueue->enqueue($promiseOrValue);
$values[$i] = null;
resolve($promiseOrValue)->then($mapFunc)->done(function ($mapped) use($i, &$values, &$toResolve, $resolve) {
$values[$i] = $mapped;
if (0 === --$toResolve) {
$resolve($values);
}
}, $reject, $notify);
}
}, $reject, $notify);
}, $cancellationQueue);
}
/**
* Traditional reduce function, similar to `array_reduce()`, but input may contain
* promises and/or values, and `$reduceFunc` may return either a value or a
* promise, *and* `$initialValue` may be a promise or a value for the starting
* value.
*
* @param array $promisesOrValues
* @param callable $reduceFunc
* @param mixed $initialValue
* @return PromiseInterface
*/
function reduce($promisesOrValues, callable $reduceFunc, $initialValue = null)
{
$cancellationQueue = new \Google\Site_Kit_Dependencies\React\Promise\CancellationQueue();
$cancellationQueue->enqueue($promisesOrValues);
return new \Google\Site_Kit_Dependencies\React\Promise\Promise(function ($resolve, $reject, $notify) use($promisesOrValues, $reduceFunc, $initialValue, $cancellationQueue) {
resolve($promisesOrValues)->done(function ($array) use($reduceFunc, $initialValue, $cancellationQueue, $resolve, $reject, $notify) {
if (!\is_array($array)) {
$array = [];
}
$total = \count($array);
$i = 0;
// Wrap the supplied $reduceFunc with one that handles promises and then
// delegates to the supplied.
$wrappedReduceFunc = function ($current, $val) use($reduceFunc, $cancellationQueue, $total, &$i) {
$cancellationQueue->enqueue($val);
return $current->then(function ($c) use($reduceFunc, $total, &$i, $val) {
return resolve($val)->then(function ($value) use($reduceFunc, $total, &$i, $c) {
return $reduceFunc($c, $value, $i++, $total);
});
});
};
$cancellationQueue->enqueue($initialValue);
\array_reduce($array, $wrappedReduceFunc, resolve($initialValue))->done($resolve, $reject, $notify);
}, $reject, $notify);
}, $cancellationQueue);
}
/**
* @internal
*/
function _checkTypehint(callable $callback, $object)
{
if (!\is_object($object)) {
return \true;
}
if (\is_array($callback)) {
$callbackReflection = new \ReflectionMethod($callback[0], $callback[1]);
} elseif (\is_object($callback) && !$callback instanceof \Closure) {
$callbackReflection = new \ReflectionMethod($callback, '__invoke');
} else {
$callbackReflection = new \ReflectionFunction($callback);
}
$parameters = $callbackReflection->getParameters();
if (!isset($parameters[0])) {
return \true;
}
$expectedException = $parameters[0];
// PHP before v8 used an easy API:
if (\PHP_VERSION_ID < 70100 || \defined('Google\\Site_Kit_Dependencies\\HHVM_VERSION')) {
if (!$expectedException->getClass()) {
return \true;
}
return $expectedException->getClass()->isInstance($object);
}
// Extract the type of the argument and handle different possibilities
$type = $expectedException->getType();
$isTypeUnion = \true;
$types = [];
switch (\true) {
case $type === null:
break;
case $type instanceof \ReflectionNamedType:
$types = [$type];
break;
case $type instanceof \Google\Site_Kit_Dependencies\ReflectionIntersectionType:
$isTypeUnion = \false;
case $type instanceof \ReflectionUnionType:
$types = $type->getTypes();
break;
default:
throw new \LogicException('Unexpected return value of ReflectionParameter::getType');
}
// If there is no type restriction, it matches
if (empty($types)) {
return \true;
}
foreach ($types as $type) {
if (!$type instanceof \ReflectionNamedType) {
throw new \LogicException('This implementation does not support groups of intersection or union types');
}
// A named-type can be either a class-name or a built-in type like string, int, array, etc.
$matches = $type->isBuiltin() && \gettype($object) === $type->getName() || (new \ReflectionClass($type->getName()))->isInstance($object);
// If we look for a single match (union), we can return early on match
// If we look for a full match (intersection), we can return early on mismatch
if ($matches) {
if ($isTypeUnion) {
return \true;
}
} else {
if (!$isTypeUnion) {
return \false;
}
}
}
// If we look for a single match (union) and did not return early, we matched no type and are false
// If we look for a full match (intersection) and did not return early, we matched all types and are true
return $isTypeUnion ? \false : \true;
}
The Legacy of Sp5der-Lamars Style Online Shop - INFOSTOCKIST
Trend has always functional, actually-changing area by which individuals have had the opportunity to show their selves. Our garments products are probably the most popular things on the market today. With this versatile component of clothes attire, your clothing collection will look stylish and cozy. The garments has drawn design lovers from around the globe. Higher-quality resources plus a special design will interest style men and women. A variety of colors and sizes are available for that Hoodie. Our apparel assortment on the net on the Sp5der Worldwide retail store has a few other capabilities, which include versatility. Whatever the celebration or ensemble you dress in, this bit of clothing is flexible. By wearing this hoodie, you will enhance your personality and make your wardrobe stand out. By using it, try on some various designs in sp5der hoodies, and this will become the best accessory for your character. Hoodies are a good option for any season as they are comfortable and versatile. An edgy seem is possible with this type of hoodie since it has very long sleeves and a big hood. The perfect way to hold warm and stylish whilst showing off your personal style.Questioning where to choose the best hoodies for men? You might be in the best place. Hoodies can be a should-have for anyone as well as year. When looking for hoodies, Sp5der-Gentleman hoodies are the first and best solution that comes to mind. The selection of hoodies this site offers has unique styles, various lively hues, and sizing that fits your whole body. Every thing, from textile to stitches, is the perfect. A large spider 5 hoodie range of colors and patterns lets you select a Sp5der hoodie to match your taste.
Sp5der Web Hoodie
Sp5der: Stay Ahead Of the competition
Sp5der delivers an array of streetwear that’s best for individuals who wish to show their unique design. Our series features daring models and high-top quality materials, guaranteeing you appear and feel the best.
Hoodies that will make an announcement
Our trademark hoodies are a should-have for virtually any Sp5der lover. Made out of gentle, cozy fleece, they’ll help keep you hot in colder weather. Pick from a variety of colors and graphical patterns to get the perfect hoodie to fit your personality.
Cozy Trousers for Daily Wear
Sp5der pants are equipped for each style and comfort. This site offers a selection of types, from joggers to tapered fits, to match your choice. Whether or not you’re relaxing at home or running chores, our trousers can keep you relocating readily.
Comprehensive Your Personal Style by using a Tracksuit
For a coordinated appearance, have a look at our selection of Sp5der tracksuits. Both of these-bit collections can come in many different colors and styles, which makes it easy to create a head-to-toe Sp5der outfit.
Don’t Neglect the Shirts
Sp5der delivers various graphic tees and key-up tshirts to finish your streetwear type. Our shirts are made of breathable textiles that are fantastic for every day put on.
Sp5der: An Ideal Option for Streetwear Enthusiasts
Sp5der apparel is great for all those who want to stand above the crowd. With this wide array of tracksuits, hoodies and pants and shirts, you’re sure to get something that you’ll enjoy. Shop Sp5der nowadays and show your design!
Mənim etdiyim zad Aviatorun uçuşda üç raund başa vurmasını və sonra oyuna atılmasını gözləməkdir. 1xbet casino 1xBet hər günəş milyonlarla insanın oynadığı və pul qazandığı qlobal mərc sənayesinin lideridir. nədən i̇barətdi̇r Bukmeyker şirkəti tərəfindən sizə bir-birindən fərqlənən, hər bir sahəni yan-yörə edən bonuslar təklif olunur. doldurmaq sonra isə pasportun Xidmətlərdən sonra şirkət haqqına ən ətraflı məlumat verilir. 1xbet