aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/ramsey/uuid/src/Nonstandard
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ramsey/uuid/src/Nonstandard')
-rw-r--r--vendor/ramsey/uuid/src/Nonstandard/Fields.php18
-rw-r--r--vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php16
-rw-r--r--vendor/ramsey/uuid/src/Nonstandard/UuidV6.php52
3 files changed, 64 insertions, 22 deletions
diff --git a/vendor/ramsey/uuid/src/Nonstandard/Fields.php b/vendor/ramsey/uuid/src/Nonstandard/Fields.php
index 5dfe61076..927bc6a26 100644
--- a/vendor/ramsey/uuid/src/Nonstandard/Fields.php
+++ b/vendor/ramsey/uuid/src/Nonstandard/Fields.php
@@ -48,18 +48,25 @@ final class Fields implements FieldsInterface
use VariantTrait;
/**
+ * @var string
+ */
+ private $bytes;
+
+ /**
* @param string $bytes A 16-byte binary string representation of a UUID
*
* @throws InvalidArgumentException if the byte string is not exactly 16 bytes
*/
- public function __construct(private string $bytes)
+ public function __construct(string $bytes)
{
- if (strlen($this->bytes) !== 16) {
+ if (strlen($bytes) !== 16) {
throw new InvalidArgumentException(
'The byte string must be 16 bytes long; '
- . 'received ' . strlen($this->bytes) . ' bytes'
+ . 'received ' . strlen($bytes) . ' bytes'
);
}
+
+ $this->bytes = $bytes;
}
public function getBytes(): string
@@ -123,9 +130,4 @@ final class Fields implements FieldsInterface
{
return false;
}
-
- public function isMax(): bool
- {
- return false;
- }
}
diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php
index 82efd402f..0c8927738 100644
--- a/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php
+++ b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php
@@ -30,15 +30,27 @@ use Throwable;
class UuidBuilder implements UuidBuilderInterface
{
/**
+ * @var NumberConverterInterface
+ */
+ private $numberConverter;
+
+ /**
+ * @var TimeConverterInterface
+ */
+ private $timeConverter;
+
+ /**
* @param NumberConverterInterface $numberConverter The number converter to
* use when constructing the Nonstandard\Uuid
* @param TimeConverterInterface $timeConverter The time converter to use
* for converting timestamps extracted from a UUID to Unix timestamps
*/
public function __construct(
- private NumberConverterInterface $numberConverter,
- private TimeConverterInterface $timeConverter
+ NumberConverterInterface $numberConverter,
+ TimeConverterInterface $timeConverter
) {
+ $this->numberConverter = $numberConverter;
+ $this->timeConverter = $timeConverter;
}
/**
diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php
index 1a7bbaf75..05586b3eb 100644
--- a/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php
+++ b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php
@@ -14,34 +14,39 @@ declare(strict_types=1);
namespace Ramsey\Uuid\Nonstandard;
+use DateTimeImmutable;
+use DateTimeInterface;
use Ramsey\Uuid\Codec\CodecInterface;
use Ramsey\Uuid\Converter\NumberConverterInterface;
use Ramsey\Uuid\Converter\TimeConverterInterface;
+use Ramsey\Uuid\Exception\DateTimeException;
use Ramsey\Uuid\Exception\InvalidArgumentException;
use Ramsey\Uuid\Lazy\LazyUuidFromString;
use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface;
-use Ramsey\Uuid\Rfc4122\TimeTrait;
use Ramsey\Uuid\Rfc4122\UuidInterface;
use Ramsey\Uuid\Rfc4122\UuidV1;
use Ramsey\Uuid\Uuid;
+use Throwable;
+
+use function hex2bin;
+use function str_pad;
+use function substr;
+
+use const STR_PAD_LEFT;
/**
- * Reordered time, or version 6, UUIDs include timestamp, clock sequence, and
- * node values that are combined into a 128-bit unsigned integer
- *
- * @deprecated Use {@see \Ramsey\Uuid\Rfc4122\UuidV6} instead.
+ * Ordered-time, or version 6, UUIDs include timestamp, clock sequence, and node
+ * values that are combined into a 128-bit unsigned integer
*
* @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft
* @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs
*
* @psalm-immutable
*/
-class UuidV6 extends Uuid implements UuidInterface
+final class UuidV6 extends Uuid implements UuidInterface
{
- use TimeTrait;
-
/**
- * Creates a version 6 (reordered time) UUID
+ * Creates a version 6 (time-based) UUID
*
* @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID
* @param NumberConverterInterface $numberConverter The number converter to use
@@ -57,10 +62,10 @@ class UuidV6 extends Uuid implements UuidInterface
CodecInterface $codec,
TimeConverterInterface $timeConverter
) {
- if ($fields->getVersion() !== Uuid::UUID_TYPE_REORDERED_TIME) {
+ if ($fields->getVersion() !== Uuid::UUID_TYPE_PEABODY) {
throw new InvalidArgumentException(
'Fields used to create a UuidV6 must represent a '
- . 'version 6 (reordered time) UUID'
+ . 'version 6 (ordered-time) UUID'
);
}
@@ -68,6 +73,29 @@ class UuidV6 extends Uuid implements UuidInterface
}
/**
+ * Returns a DateTimeInterface object representing the timestamp associated
+ * with the UUID
+ *
+ * @return DateTimeImmutable A PHP DateTimeImmutable instance representing
+ * the timestamp of a version 6 UUID
+ */
+ public function getDateTime(): DateTimeInterface
+ {
+ $time = $this->timeConverter->convertTime($this->fields->getTimestamp());
+
+ try {
+ return new DateTimeImmutable(
+ '@'
+ . $time->getSeconds()->toString()
+ . '.'
+ . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT)
+ );
+ } catch (Throwable $e) {
+ throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e);
+ }
+ }
+
+ /**
* Converts this UUID into an instance of a version 1 UUID
*/
public function toUuidV1(): UuidV1
@@ -88,7 +116,7 @@ class UuidV6 extends Uuid implements UuidInterface
/**
* Converts a version 1 UUID into an instance of a version 6 UUID
*/
- public static function fromUuidV1(UuidV1 $uuidV1): \Ramsey\Uuid\Rfc4122\UuidV6
+ public static function fromUuidV1(UuidV1 $uuidV1): UuidV6
{
$hex = $uuidV1->getHex()->toString();
$hex = substr($hex, 13, 3)