Commit Graph

397 Commits

Author SHA1 Message Date
Ben Ramsey 2083110316 feat: deprecate variant and version constants 2022-08-12 20:18:40 -05:00
George Steel b4dff559ab Assert non-empty-string when UUID is valid (#410)
* Assert, for psalm, the string is non-empty if validation passes
* Adds a test for SA asserting that valid string are also non-empty
* Suppress PHPStan error for unsupported conditional type assertion
* Check SA tools don't complain about non-empty-string as input parameter to `Uuid::isValid()`
2022-08-09 10:04:36 -05:00
Ben Ramsey bc6cd7d888 Deprecate factory methods; improve deprecation docblocks 2022-08-09 09:24:01 -05:00
Ben Ramsey 2da480d7a3 Fix function type hinting 2022-08-05 17:36:05 -05:00
Ben Ramsey 7b3eaf32c7 Deprecate Uuid::setFactory() and Uuid::getFactory() 2022-08-05 17:34:18 -05:00
Ben Ramsey 55693967d7 Deprecate direct instantiation of Ramsey\Uuid\Uuid 2022-08-05 17:28:11 -05:00
Ben Ramsey f1891183f9 Upgrade PHPStan 2022-08-05 14:46:56 -05:00
Ben Ramsey 115ec653d8 Un-deprecate UuidInterface::getUrn() 2022-03-27 20:55:27 -05:00
Ben Ramsey d98bef096f Deprecate Ramsey\Uuid\Generator\RandomLibAdapter 2022-03-27 13:03:58 -05:00
Marco Pivetta f0ada112c5 Allow iterable<T> where ramsey/collection would be used, deprecate collection classes
This patch is based on https://github.com/ramsey/uuid/pull/405

As discussed in https://github.com/ramsey/uuid/pull/405#discussion_r832095457, the `ramsey/collection`
dependency can be phased out.

Doing so via direct removal is not feasible without a clear BC break, so this change only deprecates:

 * `Ramsey\Uuid\Builder\BuilderCollection`
 * `Ramsey\Uuid\Provider\Node\NodeProviderCollection`

These classes will then be removed in `5.0.0`, along with the `ramsey/collection` dependency.
2022-03-22 17:30:42 +01:00
Marco Pivetta 4cae6c8914 Removed redundant string cast, now correctly identified by vimeo/psalm:^4.20
`substr()` only fails when one of the inputs is not a `string`, but that no longer
holds true as per `php:^8.0`, since the input must be a `string` upfront.
2022-03-22 12:42:55 +01:00
Marco Pivetta 95eb7de42b Removed redundant range check, now correctly identified by vimeo/psalm:^4.20 2022-03-22 12:42:10 +01:00
hubipe e3e9179f27 LazyUuidFromString for valid UUIDs in uppercase (#401) 2022-01-29 13:05:59 -06:00
Ben Ramsey 852850b7da Remove mocks for ext-uuid functions 2021-09-23 18:49:10 -05:00
Graham Campbell 2ed177534e Ignore serialization shape checking for code coverage purposes 2021-09-05 14:03:47 +01:00
Graham Campbell 0997de99a2 Add support for PHP 8.1 2021-09-05 12:41:13 +01:00
Chris Smith 8fa223b1af Fix soft BC break of Uuid::fromString()
Uses an assertion to indicate the `$uuid` variable cannot be an empty
string, satisfying docblock on `LazyUuidFromString`.
2021-08-09 12:51:40 +01:00
Ben Ramsey 4666f7128f Merge branch 'main' into patch-1 2021-08-06 16:27:50 -05:00
Ben Ramsey 06f8e67792 Merge pull request #361 from slevomat/patch-1
Serialization should not use internal codec
2021-08-06 16:25:27 -05:00
Ben Ramsey 7ca2832d3b chore: suppress redundant condition complaint 2021-08-06 16:14:11 -05:00
Ben Ramsey fb9ef508b0 Merge branch 'fix-static-analysis' of https://github.com/pawel-slowik/uuid into pawel-slowik-fix-static-analysis 2021-08-06 16:08:43 -05:00
Ben Ramsey 0b4be8392a fix: check whether property is set 2021-08-06 14:29:01 -05:00
Ben Ramsey 4511ccd7e6 chore(deps): upgrade vimeo/psalm 2021-08-06 14:25:16 -05:00
Ben Ramsey c005f69d6e chore: update package files 2021-08-06 14:05:57 -05:00
Paweł Słowik fe475968db Assure unserialized NodeProviderCollection contains only valid elements
This stops Psalm from complaining about MixedPropertyTypeCoercion
2021-05-24 22:48:58 +02:00
Paweł Słowik 7e4909e764 Assure unserialized BuilderCollection contains only valid elements
This stops Psalm from complaining about MixedPropertyTypeCoercion
2021-05-24 22:44:43 +02:00
Paweł Słowik aeb5e4d297 Specify NodeProviderCollection element type
This stops PHPStan from complaining:

Class Ramsey\Uuid\Provider\Node\NodeProviderCollection extends generic class
Ramsey\Collection\AbstractCollection but does not specify its types: T
2021-05-24 22:31:23 +02:00
Paweł Słowik 605ff66148 Specify BuilderCollection element type
This stops PHPStan from complaining:

Class Ramsey\Uuid\Builder\BuilderCollection extends generic class
Ramsey\Collection\AbstractCollection but does not specify its types: T
2021-05-24 22:30:57 +02:00
Barney Hanlon 90a87a7543 Add interface for UUID-related exceptions (#340)
Add common interface for exceptions so that wrappers can identify that is a UUID-related exception
2021-04-23 11:12:51 -05:00
Jan Langer ef25479d05 Serialization should not use internal codec 2021-02-05 17:36:26 +01:00
Ben Ramsey 59957e2b2d Merge branch 'master' into patch-1 2020-10-29 18:30:23 -05:00
Ben Ramsey b941aa1a9a Prepare test suite for PHP 8 2020-10-29 18:24:14 -05:00
Remi Collet ae7df1ceb9 catch ValueError raised by PHP 8 (#352) 2020-10-29 11:57:41 -05:00
Ben Ramsey 0a25f73ae0 Fix static analysis issues 2020-10-28 21:19:26 -05:00
Ben Ramsey 205bba2e12 Merge branch 'master' into patch-1 2020-08-23 15:09:47 -05:00
Bilge 49b772a5e2 Removed redundant interface inheritance. 2020-08-23 19:36:53 +01:00
Marco Pivetta 0c2b4074d2 Minor performance optimization: LazyUuidFromString#unwrap() now uses an internal instance cache for unwrapped instances 2020-07-09 14:39:36 +02:00
Marco Pivetta a621ca9e81 Uuid::uuid3() uses impure Uuid::getFactory() API - suppressing it from purity static analysis checks 2020-07-09 14:04:20 +02:00
Marco Pivetta b805572537 Ensure that Uuid::uuidX() generators produce instances equivalent to Uuid::fromString() and Uuid::fromBytes()
With this change, `Uuid::uuid1()`, `Uuid::uuid2()` and so forth now produce a `LazyUuidFromString` instance, which
is both more memory efficient and comparable to `Uuid::fromString()` instances in other tools, such as within
PHPUnit's `Assertion::assertEqual()`, which would reject any two objects not matching each other's types.

Before this patch, `Assertion::assertEquals(Uuid::uuid5(...), Uuid::fromString(...))` would always fail due to
different subtypes produced by the two factory methods.
2020-07-09 13:57:30 +02:00
Marco Pivetta 910e3e459c Adjusted comment wording: s/string/strict (typo)
Co-authored-by: Jacob Dreesen <jacob@hdreesen.de>
2020-07-09 13:57:30 +02:00
Marco Pivetta 1f0cd71d93 Applied fixes and suppressions (sadly) to match psalm/phpstan code quality guidelines
We have a lot of deprecated API in here which shouldn't exist in first place, but that
will luckily disappear with v5.0.0 :-)
2020-07-09 13:57:30 +02:00
Marco Pivetta 1ce3f55673 Applied automated CS fixes according to project CS settings 2020-07-09 13:57:30 +02:00
Marco Pivetta 0f68910bf2 Optimized Uuid::fromBytes() de-serialization to use LazyUuidFromString where possible 2020-07-09 13:57:30 +02:00
Marco Pivetta 569e93ac4e Re-implemented Uuid::fromString() so it produces a LazyUuidFromString when possible
This should speed up `Uuid::fromString()` massively, leading to much shallower execution
paths when `toString()` and similar simplistic API is required.
2020-07-09 13:57:30 +02:00
Ben Ramsey 22ee596348 Make serialize(UuidInterface) more compact
Resolves #318
2020-07-08 15:27:19 -05:00
Valentin Udaltsov 388bdab9bc Mark v3() and v5() as pure 2020-04-13 22:22:22 +03:00
Ben Ramsey ba8fff1d3a Fix collection deserialization errors 2020-03-29 15:13:32 -05:00
Marco Pivetta 15a5d4f5e1 Propagating @psalm-pure to factories and builders used internally to purely assemble a UuidInterface
Ref: https://github.com/ramsey/uuid/pull/300#issuecomment-601329450
2020-03-23 11:25:22 +01:00
Marco Pivetta c8e8b7b693 Marking Uuid::uuid3() as pure as well: it produces same values for same input 2020-03-23 10:18:21 +01:00
Marco Pivetta e830b23d77 Marking Uuid::uuid5() as pure: same input leads to same output, and no I/O under normal operational constraints 2020-03-23 10:18:21 +01:00