create-prisma-php-app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +9 -0
- package/README.md +158 -0
- package/composer.json +23 -0
- package/composer.lock +812 -0
- package/dist/bootstrap.php +4 -0
- package/dist/index.js +2 -0
- package/dist/node_modules/prisma-client-php/index.enc +1 -0
- package/dist/node_modules/prisma-client-php/index.js +2 -0
- package/dist/node_modules/prisma-client-php/key.enc +1 -0
- package/dist/node_modules/prisma-client-php/package.json +7 -0
- package/dist/prisma/schema.prisma +32 -0
- package/dist/prisma/seed.js +68 -0
- package/dist/public/assets/images/prisma-php.png +0 -0
- package/dist/public/css/styles.css +0 -0
- package/dist/public/css/tailwind.css +3 -0
- package/dist/public/favicon.ico +0 -0
- package/dist/public/index.php +64 -0
- package/dist/settings/paths.php +10 -0
- package/dist/settings/project-settings.js +6 -0
- package/dist/src/app/api/api.php +39 -0
- package/dist/src/app/classes/Validator.php +77 -0
- package/dist/src/app/model/IModel.php +22 -0
- package/package.json +35 -0
- package/tsconfig.json +110 -0
- package/vendor/autoload.php +25 -0
- package/vendor/brick/math/.editorconfig +15 -0
- package/vendor/brick/math/.gitattributes +11 -0
- package/vendor/brick/math/.github/FUNDING.yml +1 -0
- package/vendor/brick/math/.github/workflows/ci.yml +80 -0
- package/vendor/brick/math/CHANGELOG.md +445 -0
- package/vendor/brick/math/LICENSE +20 -0
- package/vendor/brick/math/README.md +247 -0
- package/vendor/brick/math/composer.json +34 -0
- package/vendor/brick/math/phpunit.php +51 -0
- package/vendor/brick/math/phpunit.xml +13 -0
- package/vendor/brick/math/psalm.xml +28 -0
- package/vendor/brick/math/random-tests.php +162 -0
- package/vendor/brick/math/src/BigDecimal.php +786 -0
- package/vendor/brick/math/src/BigInteger.php +1079 -0
- package/vendor/brick/math/src/BigNumber.php +512 -0
- package/vendor/brick/math/src/BigRational.php +445 -0
- package/vendor/brick/math/src/Exception/DivisionByZeroException.php +35 -0
- package/vendor/brick/math/src/Exception/IntegerOverflowException.php +23 -0
- package/vendor/brick/math/src/Exception/MathException.php +12 -0
- package/vendor/brick/math/src/Exception/NegativeNumberException.php +12 -0
- package/vendor/brick/math/src/Exception/NumberFormatException.php +33 -0
- package/vendor/brick/math/src/Exception/RoundingNecessaryException.php +19 -0
- package/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php +75 -0
- package/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php +108 -0
- package/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php +581 -0
- package/vendor/brick/math/src/Internal/Calculator.php +676 -0
- package/vendor/brick/math/src/RoundingMode.php +107 -0
- package/vendor/brick/math/tests/AbstractTestCase.php +86 -0
- package/vendor/brick/math/tests/BigDecimalTest.php +2596 -0
- package/vendor/brick/math/tests/BigIntegerTest.php +3782 -0
- package/vendor/brick/math/tests/BigNumberTest.php +53 -0
- package/vendor/brick/math/tests/BigRationalTest.php +993 -0
- package/vendor/brick/math/tests/CalculatorDetectTest.php +25 -0
- package/vendor/brick/math/tests/Internal/Calculator/NativeCalculatorTest.php +87 -0
- package/vendor/composer/ClassLoader.php +579 -0
- package/vendor/composer/InstalledVersions.php +359 -0
- package/vendor/composer/LICENSE +21 -0
- package/vendor/composer/autoload_classmap.php +15 -0
- package/vendor/composer/autoload_files.php +13 -0
- package/vendor/composer/autoload_namespaces.php +9 -0
- package/vendor/composer/autoload_psr4.php +20 -0
- package/vendor/composer/autoload_real.php +50 -0
- package/vendor/composer/autoload_static.php +122 -0
- package/vendor/composer/installed.json +825 -0
- package/vendor/composer/installed.php +132 -0
- package/vendor/composer/platform_check.php +26 -0
- package/vendor/firebase/php-jwt/.gitattributes +9 -0
- package/vendor/firebase/php-jwt/.github/release-please.yml +3 -0
- package/vendor/firebase/php-jwt/.github/workflows/tests.yml +57 -0
- package/vendor/firebase/php-jwt/.php-cs-fixer.dist.php +24 -0
- package/vendor/firebase/php-jwt/CHANGELOG.md +170 -0
- package/vendor/firebase/php-jwt/LICENSE +30 -0
- package/vendor/firebase/php-jwt/README.md +424 -0
- package/vendor/firebase/php-jwt/composer.json +42 -0
- package/vendor/firebase/php-jwt/phpstan.neon.dist +5 -0
- package/vendor/firebase/php-jwt/phpunit.xml.dist +18 -0
- package/vendor/firebase/php-jwt/src/BeforeValidException.php +18 -0
- package/vendor/firebase/php-jwt/src/CachedKeySet.php +268 -0
- package/vendor/firebase/php-jwt/src/ExpiredException.php +18 -0
- package/vendor/firebase/php-jwt/src/JWK.php +349 -0
- package/vendor/firebase/php-jwt/src/JWT.php +669 -0
- package/vendor/firebase/php-jwt/src/JWTExceptionWithPayloadInterface.php +20 -0
- package/vendor/firebase/php-jwt/src/Key.php +64 -0
- package/vendor/firebase/php-jwt/src/SignatureInvalidException.php +7 -0
- package/vendor/firebase/php-jwt/tests/CachedKeySetTest.php +598 -0
- package/vendor/firebase/php-jwt/tests/JWKTest.php +172 -0
- package/vendor/firebase/php-jwt/tests/JWTTest.php +543 -0
- package/vendor/firebase/php-jwt/tests/data/ec-jwkset.json +40 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa-private.pem +18 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa-public.pem +9 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa256-private.pem +4 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa384-private.pem +6 -0
- package/vendor/firebase/php-jwt/tests/data/ecdsa384-public.pem +5 -0
- package/vendor/firebase/php-jwt/tests/data/ed25519-1.pub +1 -0
- package/vendor/firebase/php-jwt/tests/data/ed25519-1.sec +1 -0
- package/vendor/firebase/php-jwt/tests/data/ed25519-jwkset.json +11 -0
- package/vendor/firebase/php-jwt/tests/data/rsa-jwkset.json +18 -0
- package/vendor/firebase/php-jwt/tests/data/rsa-with-passphrase.pem +42 -0
- package/vendor/firebase/php-jwt/tests/data/rsa1-private.pem +27 -0
- package/vendor/firebase/php-jwt/tests/data/rsa1-public.pub +9 -0
- package/vendor/firebase/php-jwt/tests/data/rsa2-private.pem +27 -0
- package/vendor/firebase/php-jwt/tests/data/secp256k1-private.pem +5 -0
- package/vendor/firebase/php-jwt/tests/data/secp256k1-public.pem +4 -0
- package/vendor/graham-campbell/result-type/.gitattributes +9 -0
- package/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
- package/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
- package/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
- package/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
- package/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
- package/vendor/graham-campbell/result-type/CHANGELOG.md +43 -0
- package/vendor/graham-campbell/result-type/LICENSE +21 -0
- package/vendor/graham-campbell/result-type/README.md +42 -0
- package/vendor/graham-campbell/result-type/composer.json +33 -0
- package/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
- package/vendor/graham-campbell/result-type/src/Error.php +121 -0
- package/vendor/graham-campbell/result-type/src/Result.php +69 -0
- package/vendor/graham-campbell/result-type/src/Success.php +120 -0
- package/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
- package/vendor/hidehalo/nanoid-php/.editorconfig +15 -0
- package/vendor/hidehalo/nanoid-php/.gitattributes +8 -0
- package/vendor/hidehalo/nanoid-php/.github/workflows/php.yml +49 -0
- package/vendor/hidehalo/nanoid-php/.styleci.yml +1 -0
- package/vendor/hidehalo/nanoid-php/CHANGELOG.md +36 -0
- package/vendor/hidehalo/nanoid-php/CODE_OF_CONDUCT.md +74 -0
- package/vendor/hidehalo/nanoid-php/CONTRIBUTING.md +32 -0
- package/vendor/hidehalo/nanoid-php/ISSUE_TEMPLATE.md +27 -0
- package/vendor/hidehalo/nanoid-php/LICENSE.md +21 -0
- package/vendor/hidehalo/nanoid-php/PULL_REQUEST_TEMPLATE.md +43 -0
- package/vendor/hidehalo/nanoid-php/README.md +108 -0
- package/vendor/hidehalo/nanoid-php/benchmark/benchmark.php +24 -0
- package/vendor/hidehalo/nanoid-php/composer.json +62 -0
- package/vendor/hidehalo/nanoid-php/examples/basic_usage.php +24 -0
- package/vendor/hidehalo/nanoid-php/examples/custom_formated.php +29 -0
- package/vendor/hidehalo/nanoid-php/phpunit.xml +31 -0
- package/vendor/hidehalo/nanoid-php/src/Client.php +120 -0
- package/vendor/hidehalo/nanoid-php/src/Core.php +31 -0
- package/vendor/hidehalo/nanoid-php/src/CoreInterface.php +19 -0
- package/vendor/hidehalo/nanoid-php/src/Generator.php +13 -0
- package/vendor/hidehalo/nanoid-php/src/GeneratorInterface.php +13 -0
- package/vendor/hidehalo/nanoid-php/tests/ClientTest.php +76 -0
- package/vendor/hidehalo/nanoid-php/tests/CoreTest.php +37 -0
- package/vendor/hidehalo/nanoid-php/tests/GeneratorTest.php +34 -0
- package/vendor/hidehalo/nanoid-php/tests/Support/DummyGenerator.php +20 -0
- package/vendor/paragonie/random_compat/.gitattributes +14 -0
- package/vendor/paragonie/random_compat/.scrutinizer.yml +4 -0
- package/vendor/paragonie/random_compat/.travis.yml +59 -0
- package/vendor/paragonie/random_compat/CHANGELOG.md +3 -0
- package/vendor/paragonie/random_compat/LICENSE +22 -0
- package/vendor/paragonie/random_compat/RATIONALE.md +36 -0
- package/vendor/paragonie/random_compat/README.md +232 -0
- package/vendor/paragonie/random_compat/SECURITY.md +108 -0
- package/vendor/paragonie/random_compat/build-phar.sh +5 -0
- package/vendor/paragonie/random_compat/composer.json +34 -0
- package/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey +5 -0
- package/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc +11 -0
- package/vendor/paragonie/random_compat/lib/random.php +32 -0
- package/vendor/paragonie/random_compat/other/build_phar.php +57 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/COM.php +20 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/README.md +7 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/com_exception.php +11 -0
- package/vendor/paragonie/random_compat/other/ide_stubs/libsodium.php +90 -0
- package/vendor/paragonie/random_compat/phpunit.sh +60 -0
- package/vendor/paragonie/random_compat/phpunit.xml.dist +31 -0
- package/vendor/paragonie/random_compat/psalm-autoload.php +9 -0
- package/vendor/paragonie/random_compat/psalm.xml +19 -0
- package/vendor/paragonie/random_compat/tests/full/DieHardTest.php +61 -0
- package/vendor/paragonie/random_compat/tests/full/StatTest.php +52 -0
- package/vendor/paragonie/random_compat/tests/specific/capicom.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/dev_urandom.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/libsodium.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/libsodium_legacy.php +7 -0
- package/vendor/paragonie/random_compat/tests/specific/mcrypt.php +7 -0
- package/vendor/paragonie/random_compat/tests/unit/RandomBytesTest.php +80 -0
- package/vendor/paragonie/random_compat/tests/unit/RandomIntTest.php +63 -0
- package/vendor/paragonie/random_compat/tests/unit/UtilityTest.php +95 -0
- package/vendor/paragonie/random_compat/tests/unit_with_basedir/RandomBytesTest.php +100 -0
- package/vendor/paragonie/random_compat/tests/unit_with_basedir/RandomIntTest.php +82 -0
- package/vendor/paragonie/random_compat/tests/unit_with_basedir/UtilityTest.php +95 -0
- package/vendor/phpoption/phpoption/.gitattributes +14 -0
- package/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
- package/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
- package/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
- package/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
- package/vendor/phpoption/phpoption/.github/workflows/static.yml +74 -0
- package/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
- package/vendor/phpoption/phpoption/LICENSE +201 -0
- package/vendor/phpoption/phpoption/Makefile +26 -0
- package/vendor/phpoption/phpoption/README.md +194 -0
- package/vendor/phpoption/phpoption/composer.json +52 -0
- package/vendor/phpoption/phpoption/phpstan-baseline.neon +32 -0
- package/vendor/phpoption/phpoption/phpstan.neon.dist +8 -0
- package/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
- package/vendor/phpoption/phpoption/psalm.xml +12 -0
- package/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -0
- package/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -0
- package/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -0
- package/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +77 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +200 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +160 -0
- package/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
- package/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
- package/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
- package/vendor/phpoption/phpoption/vendor-bin/psalm/composer.json +8 -0
- package/vendor/ramsey/uuid/.editorconfig +16 -0
- package/vendor/ramsey/uuid/.gitattributes +26 -0
- package/vendor/ramsey/uuid/.github/CODEOWNERS +1 -0
- package/vendor/ramsey/uuid/.github/FUNDING.yml +2 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Bug_Report.md +35 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Feature_Request.md +31 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Question.md +19 -0
- package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/config.yml +1 -0
- package/vendor/ramsey/uuid/.github/dependabot.yml +15 -0
- package/vendor/ramsey/uuid/.github/pull_request_template.md +27 -0
- package/vendor/ramsey/uuid/.github/workflows/continuous-integration.yml +181 -0
- package/vendor/ramsey/uuid/.github/workflows/merge-dependabot-upgrades.yml +24 -0
- package/vendor/ramsey/uuid/.readthedocs.yml +11 -0
- package/vendor/ramsey/uuid/CHANGELOG.md +1511 -0
- package/vendor/ramsey/uuid/CODE_OF_CONDUCT.md +73 -0
- package/vendor/ramsey/uuid/CONTRIBUTING.md +171 -0
- package/vendor/ramsey/uuid/LICENSE +19 -0
- package/vendor/ramsey/uuid/README.md +83 -0
- package/vendor/ramsey/uuid/SECURITY.md +170 -0
- package/vendor/ramsey/uuid/build/.gitignore +6 -0
- package/vendor/ramsey/uuid/build/cache/.gitkeep +0 -0
- package/vendor/ramsey/uuid/build/logs/.gitkeep +0 -0
- package/vendor/ramsey/uuid/captainhook.json +105 -0
- package/vendor/ramsey/uuid/codecov.yml +29 -0
- package/vendor/ramsey/uuid/composer.json +106 -0
- package/vendor/ramsey/uuid/composer.lock +7208 -0
- package/vendor/ramsey/uuid/docs/Makefile +20 -0
- package/vendor/ramsey/uuid/docs/README.md +36 -0
- package/vendor/ramsey/uuid/docs/_static/.gitkeep +0 -0
- package/vendor/ramsey/uuid/docs/conf.py +103 -0
- package/vendor/ramsey/uuid/docs/copyright.rst +18 -0
- package/vendor/ramsey/uuid/docs/customize/calculators.rst +75 -0
- package/vendor/ramsey/uuid/docs/customize/factory.rst +93 -0
- package/vendor/ramsey/uuid/docs/customize/ordered-time-codec.rst +86 -0
- package/vendor/ramsey/uuid/docs/customize/timestamp-first-comb-codec.rst +72 -0
- package/vendor/ramsey/uuid/docs/customize/validators.rst +39 -0
- package/vendor/ramsey/uuid/docs/customize.rst +56 -0
- package/vendor/ramsey/uuid/docs/database.rst +260 -0
- package/vendor/ramsey/uuid/docs/faq.rst +132 -0
- package/vendor/ramsey/uuid/docs/index.rst +51 -0
- package/vendor/ramsey/uuid/docs/introduction.rst +31 -0
- package/vendor/ramsey/uuid/docs/nonstandard/guid.rst +152 -0
- package/vendor/ramsey/uuid/docs/nonstandard/other.rst +49 -0
- package/vendor/ramsey/uuid/docs/nonstandard/version6.rst +17 -0
- package/vendor/ramsey/uuid/docs/nonstandard.rst +40 -0
- package/vendor/ramsey/uuid/docs/quickstart.rst +112 -0
- package/vendor/ramsey/uuid/docs/reference/calculators.rst +168 -0
- package/vendor/ramsey/uuid/docs/reference/exceptions.rst +92 -0
- package/vendor/ramsey/uuid/docs/reference/fields-fieldsinterface.rst +16 -0
- package/vendor/ramsey/uuid/docs/reference/guid-fields.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/guid-guid.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/helper.rst +62 -0
- package/vendor/ramsey/uuid/docs/reference/name-based-namespaces.rst +31 -0
- package/vendor/ramsey/uuid/docs/reference/nonstandard-fields.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/nonstandard-uuid.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/nonstandard-uuidv6.rst +34 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-fieldsinterface.rst +78 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidinterface.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv1.rst +21 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv2.rst +47 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv3.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv4.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv5.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv6.rst +31 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv7.rst +20 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv8.rst +13 -0
- package/vendor/ramsey/uuid/docs/reference/rfc4122-version.rst +87 -0
- package/vendor/ramsey/uuid/docs/reference/timebaseduuidinterface.rst +16 -0
- package/vendor/ramsey/uuid/docs/reference/types.rst +79 -0
- package/vendor/ramsey/uuid/docs/reference/uuid.rst +161 -0
- package/vendor/ramsey/uuid/docs/reference/uuidfactoryinterface.rst +102 -0
- package/vendor/ramsey/uuid/docs/reference/uuidinterface.rst +60 -0
- package/vendor/ramsey/uuid/docs/reference/validators.rst +34 -0
- package/vendor/ramsey/uuid/docs/reference/variant.rst +32 -0
- package/vendor/ramsey/uuid/docs/reference.rst +37 -0
- package/vendor/ramsey/uuid/docs/requirements.txt +3 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version1.rst +192 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version2.rst +273 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version3.rst +68 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version4.rst +39 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version5.rst +108 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version6.rst +213 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version7.rst +173 -0
- package/vendor/ramsey/uuid/docs/rfc4122/version8.rst +51 -0
- package/vendor/ramsey/uuid/docs/rfc4122.rst +67 -0
- package/vendor/ramsey/uuid/docs/testing.rst +199 -0
- package/vendor/ramsey/uuid/docs/tidelift.rst +74 -0
- package/vendor/ramsey/uuid/docs/upgrading/2-to-3.rst +31 -0
- package/vendor/ramsey/uuid/docs/upgrading/3-to-4.rst +512 -0
- package/vendor/ramsey/uuid/docs/upgrading.rst +11 -0
- package/vendor/ramsey/uuid/phpbench.json +10 -0
- package/vendor/ramsey/uuid/phpcs.xml.dist +476 -0
- package/vendor/ramsey/uuid/phpstan-tests.neon +32 -0
- package/vendor/ramsey/uuid/phpstan.neon.dist +25 -0
- package/vendor/ramsey/uuid/phpunit.xml.dist +26 -0
- package/vendor/ramsey/uuid/psalm-baseline.xml +133 -0
- package/vendor/ramsey/uuid/psalm.xml +25 -0
- package/vendor/ramsey/uuid/resources/vagrant/README.md +10 -0
- package/vendor/ramsey/uuid/resources/vagrant/freebsd/README.md +15 -0
- package/vendor/ramsey/uuid/resources/vagrant/freebsd/Vagrantfile +35 -0
- package/vendor/ramsey/uuid/resources/vagrant/linux/README.md +15 -0
- package/vendor/ramsey/uuid/resources/vagrant/linux/Vagrantfile +27 -0
- package/vendor/ramsey/uuid/resources/vagrant/windows/README.md +16 -0
- package/vendor/ramsey/uuid/resources/vagrant/windows/Vagrantfile +22 -0
- package/vendor/ramsey/uuid/src/BinaryUtils.php +106 -0
- package/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php +68 -0
- package/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php +39 -0
- package/vendor/ramsey/uuid/src/Codec/CodecInterface.php +67 -0
- package/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php +82 -0
- package/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php +114 -0
- package/vendor/ramsey/uuid/src/Codec/StringCodec.php +128 -0
- package/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php +105 -0
- package/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php +51 -0
- package/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php +48 -0
- package/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php +53 -0
- package/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php +118 -0
- package/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php +163 -0
- package/vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php +90 -0
- package/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php +58 -0
- package/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/DateTimeException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/DceSecurityException.php +25 -0
- package/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php +25 -0
- package/vendor/ramsey/uuid/src/Exception/NameException.php +25 -0
- package/vendor/ramsey/uuid/src/Exception/NodeException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/RandomSourceException.php +27 -0
- package/vendor/ramsey/uuid/src/Exception/TimeSourceException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php +24 -0
- package/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php +21 -0
- package/vendor/ramsey/uuid/src/FeatureSet.php +395 -0
- package/vendor/ramsey/uuid/src/Fields/FieldsInterface.php +42 -0
- package/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php +70 -0
- package/vendor/ramsey/uuid/src/Generator/CombGenerator.php +124 -0
- package/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php +139 -0
- package/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php +53 -0
- package/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php +51 -0
- package/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php +131 -0
- package/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php +30 -0
- package/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php +38 -0
- package/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php +52 -0
- package/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php +37 -0
- package/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php +39 -0
- package/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php +45 -0
- package/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php +30 -0
- package/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php +31 -0
- package/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php +45 -0
- package/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php +38 -0
- package/vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php +170 -0
- package/vendor/ramsey/uuid/src/Guid/Fields.php +208 -0
- package/vendor/ramsey/uuid/src/Guid/Guid.php +61 -0
- package/vendor/ramsey/uuid/src/Guid/GuidBuilder.php +79 -0
- package/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php +226 -0
- package/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php +145 -0
- package/vendor/ramsey/uuid/src/Math/CalculatorInterface.php +106 -0
- package/vendor/ramsey/uuid/src/Math/RoundingMode.php +146 -0
- package/vendor/ramsey/uuid/src/Nonstandard/Fields.php +154 -0
- package/vendor/ramsey/uuid/src/Nonstandard/Uuid.php +37 -0
- package/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php +78 -0
- package/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php +113 -0
- package/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php +236 -0
- package/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php +41 -0
- package/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php +54 -0
- package/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php +69 -0
- package/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php +74 -0
- package/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php +190 -0
- package/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php +30 -0
- package/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php +57 -0
- package/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php +33 -0
- package/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php +28 -0
- package/vendor/ramsey/uuid/src/Rfc4122/Fields.php +214 -0
- package/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php +129 -0
- package/vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php +41 -0
- package/vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php +27 -0
- package/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php +41 -0
- package/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php +27 -0
- package/vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php +55 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php +116 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php +30 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php +61 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php +119 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php +58 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php +58 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php +58 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV6.php +30 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV7.php +63 -0
- package/vendor/ramsey/uuid/src/Rfc4122/UuidV8.php +65 -0
- package/vendor/ramsey/uuid/src/Rfc4122/Validator.php +45 -0
- package/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php +87 -0
- package/vendor/ramsey/uuid/src/Rfc4122/Version.php +139 -0
- package/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php +57 -0
- package/vendor/ramsey/uuid/src/TimeBasedUuidFactoryInterface.php +48 -0
- package/vendor/ramsey/uuid/src/TimeBasedUuidInterface.php +30 -0
- package/vendor/ramsey/uuid/src/Type/Decimal.php +135 -0
- package/vendor/ramsey/uuid/src/Type/Hexadecimal.php +109 -0
- package/vendor/ramsey/uuid/src/Type/Integer.php +145 -0
- package/vendor/ramsey/uuid/src/Type/NumberInterface.php +28 -0
- package/vendor/ramsey/uuid/src/Type/Time.php +108 -0
- package/vendor/ramsey/uuid/src/Type/TypeInterface.php +45 -0
- package/vendor/ramsey/uuid/src/Uuid.php +645 -0
- package/vendor/ramsey/uuid/src/UuidFactory.php +503 -0
- package/vendor/ramsey/uuid/src/UuidFactoryInterface.php +184 -0
- package/vendor/ramsey/uuid/src/UuidInterface.php +114 -0
- package/vendor/ramsey/uuid/src/Validator/GenericValidator.php +45 -0
- package/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php +39 -0
- package/vendor/ramsey/uuid/src/Variant.php +60 -0
- package/vendor/ramsey/uuid/src/functions.php +160 -0
- package/vendor/ramsey/uuid/tests/BinaryUtilsTest.php +381 -0
- package/vendor/ramsey/uuid/tests/Builder/FallbackBuilderTest.php +198 -0
- package/vendor/ramsey/uuid/tests/Codec/GuidStringCodecTest.php +118 -0
- package/vendor/ramsey/uuid/tests/Codec/OrderedTimeCodecTest.php +258 -0
- package/vendor/ramsey/uuid/tests/Codec/StringCodecTest.php +149 -0
- package/vendor/ramsey/uuid/tests/Converter/Number/GenericNumberConverterTest.php +28 -0
- package/vendor/ramsey/uuid/tests/Converter/Time/GenericTimeConverterTest.php +147 -0
- package/vendor/ramsey/uuid/tests/Converter/Time/PhpTimeConverterTest.php +199 -0
- package/vendor/ramsey/uuid/tests/Converter/Time/UnixTimeConverterTest.php +202 -0
- package/vendor/ramsey/uuid/tests/Encoder/TimestampFirstCombCodecTest.php +105 -0
- package/vendor/ramsey/uuid/tests/Encoder/TimestampLastCombCodecTest.php +106 -0
- package/vendor/ramsey/uuid/tests/ExpectedBehaviorTest.php +573 -0
- package/vendor/ramsey/uuid/tests/FeatureSetTest.php +88 -0
- package/vendor/ramsey/uuid/tests/FunctionsTest.php +151 -0
- package/vendor/ramsey/uuid/tests/Generator/CombGeneratorTest.php +134 -0
- package/vendor/ramsey/uuid/tests/Generator/DceSecurityGeneratorTest.php +282 -0
- package/vendor/ramsey/uuid/tests/Generator/DefaultNameGeneratorTest.php +83 -0
- package/vendor/ramsey/uuid/tests/Generator/DefaultTimeGeneratorTest.php +202 -0
- package/vendor/ramsey/uuid/tests/Generator/NameGeneratorFactoryTest.php +19 -0
- package/vendor/ramsey/uuid/tests/Generator/PeclUuidNameGeneratorTest.php +107 -0
- package/vendor/ramsey/uuid/tests/Generator/PeclUuidRandomGeneratorTest.php +30 -0
- package/vendor/ramsey/uuid/tests/Generator/PeclUuidTimeGeneratorTest.php +30 -0
- package/vendor/ramsey/uuid/tests/Generator/RandomBytesGeneratorTest.php +70 -0
- package/vendor/ramsey/uuid/tests/Generator/RandomGeneratorFactoryTest.php +19 -0
- package/vendor/ramsey/uuid/tests/Generator/TimeGeneratorFactoryTest.php +33 -0
- package/vendor/ramsey/uuid/tests/Generator/UnixTimeGeneratorTest.php +204 -0
- package/vendor/ramsey/uuid/tests/Guid/FieldsTest.php +235 -0
- package/vendor/ramsey/uuid/tests/Guid/GuidBuilderTest.php +33 -0
- package/vendor/ramsey/uuid/tests/Math/BrickMathCalculatorTest.php +116 -0
- package/vendor/ramsey/uuid/tests/Nonstandard/FieldsTest.php +84 -0
- package/vendor/ramsey/uuid/tests/Nonstandard/UuidBuilderTest.php +33 -0
- package/vendor/ramsey/uuid/tests/Nonstandard/UuidV6Test.php +192 -0
- package/vendor/ramsey/uuid/tests/Provider/Dce/SystemDceSecurityProviderTest.php +505 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/FallbackNodeProviderTest.php +87 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/RandomNodeProviderTest.php +124 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/StaticNodeProviderTest.php +58 -0
- package/vendor/ramsey/uuid/tests/Provider/Node/SystemNodeProviderTest.php +950 -0
- package/vendor/ramsey/uuid/tests/Provider/Time/FixedTimeProviderTest.php +41 -0
- package/vendor/ramsey/uuid/tests/Provider/Time/SystemTimeProviderTest.php +20 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/FieldsTest.php +260 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidBuilderTest.php +145 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV1Test.php +123 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV2Test.php +214 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV3Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV4Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV5Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV6Test.php +221 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV7Test.php +131 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/UuidV8Test.php +56 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/ValidatorTest.php +122 -0
- package/vendor/ramsey/uuid/tests/Rfc4122/VariantTraitTest.php +109 -0
- package/vendor/ramsey/uuid/tests/TestCase.php +29 -0
- package/vendor/ramsey/uuid/tests/Type/DecimalTest.php +305 -0
- package/vendor/ramsey/uuid/tests/Type/HexadecimalTest.php +112 -0
- package/vendor/ramsey/uuid/tests/Type/IntegerTest.php +235 -0
- package/vendor/ramsey/uuid/tests/Type/TimeTest.php +120 -0
- package/vendor/ramsey/uuid/tests/UuidFactoryTest.php +233 -0
- package/vendor/ramsey/uuid/tests/UuidTest.php +1910 -0
- package/vendor/ramsey/uuid/tests/Validator/GenericValidatorTest.php +98 -0
- package/vendor/ramsey/uuid/tests/benchmark/GuidConversionBench.php +43 -0
- package/vendor/ramsey/uuid/tests/benchmark/NonLazyUuidConversionBench.php +39 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidFieldExtractionBench.php +86 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidGenerationBench.php +113 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidSerializationBench.php +206 -0
- package/vendor/ramsey/uuid/tests/benchmark/UuidStringConversionBench.php +257 -0
- package/vendor/ramsey/uuid/tests/bootstrap.php +12 -0
- package/vendor/ramsey/uuid/tests/static-analysis/UuidIsImmutable.php +96 -0
- package/vendor/ramsey/uuid/tests/static-analysis/UuidIsNeverEmpty.php +36 -0
- package/vendor/ramsey/uuid/tests/static-analysis/ValidUuidIsNonEmpty.php +44 -0
- package/vendor/ramsey/uuid/tests/static-analysis/stubs.php +33 -0
- package/vendor/symfony/polyfill-ctype/Ctype.php +232 -0
- package/vendor/symfony/polyfill-ctype/LICENSE +19 -0
- package/vendor/symfony/polyfill-ctype/README.md +12 -0
- package/vendor/symfony/polyfill-ctype/bootstrap.php +50 -0
- package/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -0
- package/vendor/symfony/polyfill-ctype/composer.json +41 -0
- package/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
- package/vendor/symfony/polyfill-mbstring/Mbstring.php +947 -0
- package/vendor/symfony/polyfill-mbstring/README.md +13 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
- package/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -0
- package/vendor/symfony/polyfill-mbstring/bootstrap.php +151 -0
- package/vendor/symfony/polyfill-mbstring/bootstrap80.php +147 -0
- package/vendor/symfony/polyfill-mbstring/composer.json +41 -0
- package/vendor/symfony/polyfill-php80/LICENSE +19 -0
- package/vendor/symfony/polyfill-php80/Php80.php +115 -0
- package/vendor/symfony/polyfill-php80/PhpToken.php +103 -0
- package/vendor/symfony/polyfill-php80/README.md +25 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -0
- package/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -0
- package/vendor/symfony/polyfill-php80/bootstrap.php +42 -0
- package/vendor/symfony/polyfill-php80/composer.json +40 -0
- package/vendor/vlucas/phpdotenv/.editorconfig +15 -0
- package/vendor/vlucas/phpdotenv/.gitattributes +17 -0
- package/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
- package/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
- package/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
- package/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
- package/vendor/vlucas/phpdotenv/.github/workflows/static.yml +74 -0
- package/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
- package/vendor/vlucas/phpdotenv/LICENSE +30 -0
- package/vendor/vlucas/phpdotenv/Makefile +26 -0
- package/vendor/vlucas/phpdotenv/README.md +363 -0
- package/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
- package/vendor/vlucas/phpdotenv/composer.json +60 -0
- package/vendor/vlucas/phpdotenv/phpstan-baseline.neon +21 -0
- package/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
- package/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
- package/vendor/vlucas/phpdotenv/psalm-baseline.xml +28 -0
- package/vendor/vlucas/phpdotenv/psalm.xml +13 -0
- package/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -0
- package/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -0
- package/vendor/vlucas/phpdotenv/src/Loader/Loader.php +47 -0
- package/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -0
- package/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -0
- package/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +300 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -0
- package/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -0
- package/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +89 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +89 -0
- package/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -0
- package/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -0
- package/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -0
- package/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -0
- package/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -0
- package/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -0
- package/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -0
- package/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -0
- package/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -0
- package/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -0
- package/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -0
- package/vendor/vlucas/phpdotenv/src/Util/Str.php +98 -0
- package/vendor/vlucas/phpdotenv/src/Validator.php +209 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
- package/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
- package/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
- package/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +16 -0
- package/vendor/vlucas/phpdotenv/vendor-bin/psalm/composer.json +9 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
.. _rfc4122.version2:
|
|
2
|
+
|
|
3
|
+
=======================
|
|
4
|
+
Version 2: DCE Security
|
|
5
|
+
=======================
|
|
6
|
+
|
|
7
|
+
.. tip::
|
|
8
|
+
|
|
9
|
+
DCE Security UUIDs are so-called because they were defined as part of the
|
|
10
|
+
"Authentication and Security Services" for the `Distributed Computing
|
|
11
|
+
Environment`_ (DCE) in the early 1990s.
|
|
12
|
+
|
|
13
|
+
Version 2 UUIDs are not widely used. See :ref:`rfc4122.version2.problems`
|
|
14
|
+
before deciding whether to use them.
|
|
15
|
+
|
|
16
|
+
Like a :ref:`version 1 UUID <rfc4122.version1>`, a version 2 UUID uses the
|
|
17
|
+
current time, along with the MAC address (or *node*) for a network interface on
|
|
18
|
+
the local machine. Additionally, a version 2 UUID replaces the low part of the
|
|
19
|
+
time field with a local identifier such as the user ID or group ID of the local
|
|
20
|
+
account that created the UUID. This serves three purposes:
|
|
21
|
+
|
|
22
|
+
1. You can know *when* the identifier was created (see
|
|
23
|
+
:ref:`rfc4122.version2.timestamp-problems`).
|
|
24
|
+
2. You can know *where* the identifier was created.
|
|
25
|
+
3. You can know *who* created the identifier.
|
|
26
|
+
|
|
27
|
+
In a distributed system, these three pieces of information can be valuable. Not
|
|
28
|
+
only is there no need for a central authority to generate identifiers, but you
|
|
29
|
+
can determine what nodes in your infrastructure created the UUIDs, at what time
|
|
30
|
+
they were created, and the account on the machine that created them.
|
|
31
|
+
|
|
32
|
+
By default, ramsey/uuid will attempt to look up a MAC address for the machine it
|
|
33
|
+
is running on, using this value as the node. If it cannot find a MAC address, it
|
|
34
|
+
will generate a random node.
|
|
35
|
+
|
|
36
|
+
.. code-block:: php
|
|
37
|
+
:caption: Use a domain to generate a version 2, DCE Security UUID
|
|
38
|
+
:name: rfc4122.version2.example
|
|
39
|
+
|
|
40
|
+
use Ramsey\Uuid\Uuid;
|
|
41
|
+
|
|
42
|
+
$uuid = Uuid::uuid2(Uuid::DCE_DOMAIN_PERSON);
|
|
43
|
+
|
|
44
|
+
printf(
|
|
45
|
+
"UUID: %s\nVersion: %d\nDate: %s\nNode: %s\nDomain: %s\nID: %s\n",
|
|
46
|
+
$uuid->toString(),
|
|
47
|
+
$uuid->getFields()->getVersion()?->value,
|
|
48
|
+
$uuid->getDateTime()->format('r'),
|
|
49
|
+
$uuid->getFields()->getNode()->toString(),
|
|
50
|
+
$uuid->getLocalDomainName(),
|
|
51
|
+
$uuid->getLocalIdentifier()->toString()
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
This will generate a version 2 UUID and print out its string representation, the
|
|
55
|
+
time the UUID was created, and the node used to create it, as well as the name
|
|
56
|
+
of the local domain specified and the local domain identifier (in this case, a
|
|
57
|
+
`POSIX`_ UID, automatically obtained from the local machine).
|
|
58
|
+
|
|
59
|
+
It will look something like this:
|
|
60
|
+
|
|
61
|
+
.. code-block:: text
|
|
62
|
+
|
|
63
|
+
UUID: 000001f5-5e9a-21ea-9e00-0242ac130003
|
|
64
|
+
Version: 2
|
|
65
|
+
Date: Thu, 05 Mar 2020 04:30:10 +0000
|
|
66
|
+
Node: 0242ac130003
|
|
67
|
+
Domain: person
|
|
68
|
+
ID: 501
|
|
69
|
+
|
|
70
|
+
Just as with version 1 UUIDs, you may provide custom values for version 2 UUIDs,
|
|
71
|
+
including local identifier, node, and clock sequence.
|
|
72
|
+
|
|
73
|
+
.. code-block:: php
|
|
74
|
+
:caption: Provide custom identifier, node, and clock sequence to create a
|
|
75
|
+
version 2, DCE Security UUID
|
|
76
|
+
:name: rfc4122.version2.custom-example
|
|
77
|
+
|
|
78
|
+
use Ramsey\Uuid\Provider\Node\StaticNodeProvider;
|
|
79
|
+
use Ramsey\Uuid\Type\Hexadecimal;
|
|
80
|
+
use Ramsey\Uuid\Type\Integer;
|
|
81
|
+
use Ramsey\Uuid\Uuid;
|
|
82
|
+
|
|
83
|
+
$localId = new Integer(1001);
|
|
84
|
+
$nodeProvider = new StaticNodeProvider(new Hexadecimal('121212121212'));
|
|
85
|
+
$clockSequence = 63;
|
|
86
|
+
|
|
87
|
+
$uuid = Uuid::uuid2(
|
|
88
|
+
Uuid::DCE_DOMAIN_ORG,
|
|
89
|
+
$localId,
|
|
90
|
+
$nodeProvider->getNode(),
|
|
91
|
+
$clockSequence
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
.. tip::
|
|
95
|
+
|
|
96
|
+
Version 2 UUIDs generated in ramsey/uuid are instances of UuidV2. Check out
|
|
97
|
+
the :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV2` API documentation to learn
|
|
98
|
+
more about what you can do with a UuidV2 instance.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
.. _rfc4122.version2.domains:
|
|
102
|
+
|
|
103
|
+
Domains
|
|
104
|
+
#######
|
|
105
|
+
|
|
106
|
+
The *domain* value tells what the local identifier represents.
|
|
107
|
+
|
|
108
|
+
If using the *person* or *group* domains, ramsey/uuid will attempt to look up
|
|
109
|
+
these values from the local machine. On `POSIX`_ systems, it will use ``id -u``
|
|
110
|
+
and ``id -g``, respectively. On Windows, it will use ``whoami`` and ``wmic``.
|
|
111
|
+
|
|
112
|
+
The *org* domain is site-defined. Its intent is to identify the organization
|
|
113
|
+
that generated the UUID, but since this can have different meanings for
|
|
114
|
+
different companies and projects, you get to define its value.
|
|
115
|
+
|
|
116
|
+
.. list-table:: DCE Security Domains
|
|
117
|
+
:widths: 30 70
|
|
118
|
+
:align: center
|
|
119
|
+
:header-rows: 1
|
|
120
|
+
:name: rfc4122.version2.table-domains
|
|
121
|
+
|
|
122
|
+
* - Constant
|
|
123
|
+
- Description
|
|
124
|
+
* - :php:const:`Uuid::DCE_DOMAIN_PERSON <Ramsey\\Uuid\\Uuid::DCE_DOMAIN_PERSON>`
|
|
125
|
+
- The local identifier refers to a *person* (e.g., UID).
|
|
126
|
+
* - :php:const:`Uuid::DCE_DOMAIN_GROUP <Ramsey\\Uuid\\Uuid::DCE_DOMAIN_GROUP>`
|
|
127
|
+
- The local identifier refers to a *group* (e.g., GID).
|
|
128
|
+
* - :php:const:`Uuid::DCE_DOMAIN_ORG <Ramsey\\Uuid\\Uuid::DCE_DOMAIN_ORG>`
|
|
129
|
+
- The local identifier refers to an *organization* (this is site-defined).
|
|
130
|
+
|
|
131
|
+
.. note::
|
|
132
|
+
|
|
133
|
+
According to section 5.2.1.1 of `DCE 1.1: Authentication and Security Services
|
|
134
|
+
<https://publications.opengroup.org/c311>`_, the domain "can potentially hold
|
|
135
|
+
values outside the range [0, 2\ :sup:`8` -- 1]; however, the only values
|
|
136
|
+
currently registered are in the range [0, 2]."
|
|
137
|
+
|
|
138
|
+
As a result, ramsey/uuid supports only the *person*, *group*, and *org*
|
|
139
|
+
domains.
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
.. _rfc4122.version2.nodes:
|
|
143
|
+
|
|
144
|
+
Custom and Random Nodes
|
|
145
|
+
#######################
|
|
146
|
+
|
|
147
|
+
In the :ref:`example above <rfc4122.version2.custom-example>`, we provided a
|
|
148
|
+
custom node when generating a version 2 UUID. You may also generate random
|
|
149
|
+
node values.
|
|
150
|
+
|
|
151
|
+
To learn more, see the :ref:`rfc4122.version1.custom` and
|
|
152
|
+
:ref:`rfc4122.version1.random` sections under :ref:`rfc4122.version1`.
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
.. _rfc4122.version2.clock:
|
|
156
|
+
|
|
157
|
+
Clock Sequence
|
|
158
|
+
##############
|
|
159
|
+
|
|
160
|
+
In a version 2 UUID, the clock sequence serves the same purpose as in a version
|
|
161
|
+
1 UUID. See :ref:`rfc4122.version1.clock` to learn more.
|
|
162
|
+
|
|
163
|
+
.. warning::
|
|
164
|
+
|
|
165
|
+
The clock sequence in a version 2 UUID is a 6-bit number. It supports values
|
|
166
|
+
from 0 to 63. This is different from the 14-bit number used by version 1
|
|
167
|
+
UUIDs.
|
|
168
|
+
|
|
169
|
+
See :ref:`rfc4122.version2.uniqueness-problems` to understand how this
|
|
170
|
+
affects version 2 UUIDs.
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
.. _rfc4122.version2.problems:
|
|
174
|
+
|
|
175
|
+
Problems With Version 2 UUIDs
|
|
176
|
+
#############################
|
|
177
|
+
|
|
178
|
+
Version 2 UUIDs can be useful for the data they contain. However, there are
|
|
179
|
+
trade-offs in choosing to use them.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
.. _rfc4122.version2.privacy-problems:
|
|
183
|
+
|
|
184
|
+
Privacy
|
|
185
|
+
-------
|
|
186
|
+
|
|
187
|
+
Unless using a randomly-generated node, version 2 UUIDs use the MAC address for
|
|
188
|
+
a local hardware interface as the node value. In addition, they use a local
|
|
189
|
+
identifier --- usually an account or group ID. Some may consider the use of
|
|
190
|
+
these identifying features a breach of privacy. The use of a timestamp further
|
|
191
|
+
complicates the issue, since these UUIDs could be used to identify a user
|
|
192
|
+
account on a specific machine at a specific time.
|
|
193
|
+
|
|
194
|
+
If you don't need an identifier with a local identifier and timestamp value
|
|
195
|
+
embedded in it, see :ref:`rfc4122.version4` to learn about random UUIDs.
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
.. _rfc4122.version2.uniqueness-problems:
|
|
199
|
+
|
|
200
|
+
Limited Uniqueness
|
|
201
|
+
------------------
|
|
202
|
+
|
|
203
|
+
With the inclusion of the local identifier and domain comes a serious limitation
|
|
204
|
+
in the number of unique UUIDs that may be created. This is because:
|
|
205
|
+
|
|
206
|
+
1. The local identifier replaces the lower 32 bits of the timestamp.
|
|
207
|
+
2. The domain replaces the lower 8 bits of the clock sequence.
|
|
208
|
+
|
|
209
|
+
As a result, the timestamp advances --- the clock *ticks* --- only once every
|
|
210
|
+
429.49 seconds (about 7 minutes). This means the clock sequence is important to
|
|
211
|
+
ensure uniqueness, but since the clock sequence is only 6 bits, compared to 14
|
|
212
|
+
bits for version 1 UUIDs, **only 64 unique UUIDs per combination of node,
|
|
213
|
+
domain, and identifier may be generated per 7-minute tick of the clock**.
|
|
214
|
+
|
|
215
|
+
You can overcome this lack of uniqueness by using a
|
|
216
|
+
:ref:`random node <rfc4122.version2.nodes>`, which provides 47 bits of
|
|
217
|
+
randomness to the UUID --- after setting the unicast/multicast bit (see
|
|
218
|
+
discussion on :ref:`rfc4122.version1.custom`) --- increasing the number of UUIDs
|
|
219
|
+
per 7-minute clock tick to 2\ :sup:`53` (or 9,007,199,254,740,992), at the
|
|
220
|
+
expense of remaining locally unique.
|
|
221
|
+
|
|
222
|
+
.. note::
|
|
223
|
+
|
|
224
|
+
This lack of uniqueness did not present a problem for DCE, since:
|
|
225
|
+
|
|
226
|
+
[T]he security architecture of DCE depends upon the uniqueness of
|
|
227
|
+
security-version UUIDs *only within the context of a cell*; that is,
|
|
228
|
+
only within the context of the local [Registration Service's]
|
|
229
|
+
(persistent) datastore, and that degree of uniqueness can be guaranteed
|
|
230
|
+
by the RS itself (namely, the RS maintains state in its datastore, in
|
|
231
|
+
the sense that it can always check that every UUID it maintains is
|
|
232
|
+
different from all other UUIDs it maintains). In other words, while
|
|
233
|
+
security-version UUIDs are (like all UUIDs) specified to be "globally
|
|
234
|
+
unique in space and time", security is not compromised if they are
|
|
235
|
+
merely "locally unique per cell".
|
|
236
|
+
|
|
237
|
+
-- `DCE 1.1: Authentication and Security Services, section 5.2.1.1
|
|
238
|
+
<https://publications.opengroup.org/c311>`_
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
.. _rfc4122.version2.timestamp-problems:
|
|
242
|
+
|
|
243
|
+
Lossy Timestamps
|
|
244
|
+
----------------
|
|
245
|
+
|
|
246
|
+
Version 2 UUIDs are generated in the same way as version 1 UUIDs, but the low
|
|
247
|
+
part of the timestamp (the ``time_low`` field) is replaced by a 32-bit integer
|
|
248
|
+
that represents a local identifier. Because of this, not only do version 2 UUIDs
|
|
249
|
+
have :ref:`limited uniqueness <rfc4122.version2.uniqueness-problems>`, but they
|
|
250
|
+
also lack time precision.
|
|
251
|
+
|
|
252
|
+
When reconstructing the timestamp to return a `DateTimeInterface`_ instance from
|
|
253
|
+
:php:meth:`UuidV2::getDateTime() <Ramsey\\Uuid\\Rfc4122\\UuidV2::getDateTime>`,
|
|
254
|
+
we replace the 32 lower bits of the timestamp with zeros, since the local
|
|
255
|
+
identifier should not be part of the timestamp. This results in a loss of
|
|
256
|
+
precision, causing the timestamp to be off by a range of 0 to 429.4967295
|
|
257
|
+
seconds (or 7 minutes, 9 seconds, and 496,730 microseconds).
|
|
258
|
+
|
|
259
|
+
When using version 2 UUIDs, treat the timestamp as an approximation. At worst,
|
|
260
|
+
it could be off by about 7 minutes.
|
|
261
|
+
|
|
262
|
+
.. hint::
|
|
263
|
+
|
|
264
|
+
If the value 429.4967295 looks familiar, it's because it directly
|
|
265
|
+
corresponds to 2\ :sup:`32` -- 1, or ``0xffffffff``. The local identifier is
|
|
266
|
+
32-bits, and we have set each of these bits to 0, so the maximum range of
|
|
267
|
+
timestamp drift is ``0x00000000`` to ``0xffffffff`` (counted in
|
|
268
|
+
100-nanosecond intervals).
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
.. _Distributed Computing Environment: https://en.wikipedia.org/wiki/Distributed_Computing_Environment
|
|
272
|
+
.. _POSIX: https://en.wikipedia.org/wiki/POSIX
|
|
273
|
+
.. _DateTimeInterface: https://www.php.net/datetimeinterface
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
.. _rfc4122.version3:
|
|
2
|
+
|
|
3
|
+
===========================
|
|
4
|
+
Version 3: Name-based (MD5)
|
|
5
|
+
===========================
|
|
6
|
+
|
|
7
|
+
.. attention::
|
|
8
|
+
|
|
9
|
+
`RFC 4122`_ states, "If backward compatibility is not an issue, SHA-1 is
|
|
10
|
+
preferred." As a result, the use of :ref:`version 5 UUIDs
|
|
11
|
+
<rfc4122.version5>` is preferred over version 3 UUIDs, unless you have a
|
|
12
|
+
specific use-case for version 3 UUIDs.
|
|
13
|
+
|
|
14
|
+
.. note::
|
|
15
|
+
|
|
16
|
+
To learn about name-based UUIDs, read the section :ref:`rfc4122.version5`.
|
|
17
|
+
Version 3 UUIDs behave exactly the same as :ref:`version 5 UUIDs
|
|
18
|
+
<rfc4122.version5>`. The only difference is the hashing algorithm used to
|
|
19
|
+
generate the UUID.
|
|
20
|
+
|
|
21
|
+
Version 3 UUIDs use `MD5`_ as the hashing algorithm for combining
|
|
22
|
+
the namespace and the name.
|
|
23
|
+
|
|
24
|
+
Due to the use of a different hashing algorithm, version 3 UUIDs generated with
|
|
25
|
+
any given namespace and name will differ from version 5 UUIDs generated using
|
|
26
|
+
the same namespace and name.
|
|
27
|
+
|
|
28
|
+
As an example, let's take a look at generating a version 3 UUID using the same
|
|
29
|
+
namespace and name used in ":ref:`rfc4122.version5.url-example`."
|
|
30
|
+
|
|
31
|
+
.. code-block:: php
|
|
32
|
+
:caption: Generate a version 3, name-based UUID for a URL
|
|
33
|
+
:name: rfc4122.version3.url-example
|
|
34
|
+
|
|
35
|
+
use Ramsey\Uuid\Uuid;
|
|
36
|
+
|
|
37
|
+
$uuid = Uuid::uuid3(Uuid::NAMESPACE_URL, 'https://www.php.net');
|
|
38
|
+
|
|
39
|
+
Even though the namespace and name are the same, the version 3 UUID generated
|
|
40
|
+
will always be ``3f703955-aaba-3e70-a3cb-baff6aa3b28f``.
|
|
41
|
+
|
|
42
|
+
Likewise, we can use the custom namespace we created in
|
|
43
|
+
":ref:`rfc4122.version5.create-namespace`" to generate a version 3 UUID, but the
|
|
44
|
+
result will be different from the version 5 UUID with the same custom namespace
|
|
45
|
+
and name.
|
|
46
|
+
|
|
47
|
+
.. code-block:: php
|
|
48
|
+
:caption: Use a custom namespace to create version 3, name-based UUIDs
|
|
49
|
+
:name: rfc4122.version3.custom-example
|
|
50
|
+
|
|
51
|
+
use Ramsey\Uuid\Uuid;
|
|
52
|
+
|
|
53
|
+
const WIDGET_NAMESPACE = '4bdbe8ec-5cb5-11ea-bc55-0242ac130003';
|
|
54
|
+
|
|
55
|
+
$uuid = Uuid::uuid3(WIDGET_NAMESPACE, 'widget/1234567890');
|
|
56
|
+
|
|
57
|
+
With this custom namespace, the version 3 UUID for the name "widget/1234567890"
|
|
58
|
+
will always be ``53564aa3-4154-3ca5-ac90-dba59dc7d3cb``.
|
|
59
|
+
|
|
60
|
+
.. tip::
|
|
61
|
+
|
|
62
|
+
Version 3 UUIDs generated in ramsey/uuid are instances of UuidV3. Check out
|
|
63
|
+
the :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV3` API documentation to learn
|
|
64
|
+
more about what you can do with a UuidV3 instance.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
.. _RFC 4122: https://tools.ietf.org/html/rfc4122
|
|
68
|
+
.. _MD5: https://en.wikipedia.org/wiki/MD5
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
.. _rfc4122.version4:
|
|
2
|
+
|
|
3
|
+
=================
|
|
4
|
+
Version 4: Random
|
|
5
|
+
=================
|
|
6
|
+
|
|
7
|
+
Version 4 UUIDs are perhaps the most popular form of UUID. They are
|
|
8
|
+
randomly-generated and do not contain any information about the time they are
|
|
9
|
+
created or the machine that generated them. If you don't care about this
|
|
10
|
+
information, then a version 4 UUID might be perfect for your needs.
|
|
11
|
+
|
|
12
|
+
.. code-block:: php
|
|
13
|
+
:caption: Generate a version 4, random UUID
|
|
14
|
+
:name: rfc4122.version4.example
|
|
15
|
+
|
|
16
|
+
use Ramsey\Uuid\Uuid;
|
|
17
|
+
|
|
18
|
+
$uuid = Uuid::uuid4();
|
|
19
|
+
|
|
20
|
+
printf(
|
|
21
|
+
"UUID: %s\nVersion: %d\n",
|
|
22
|
+
$uuid->toString(),
|
|
23
|
+
$uuid->getFields()->getVersion()?->value
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
This will generate a version 4 UUID and print out its string representation.
|
|
27
|
+
It will look something like this:
|
|
28
|
+
|
|
29
|
+
.. code-block:: text
|
|
30
|
+
|
|
31
|
+
UUID: 1ee9aa1b-6510-4105-92b9-7171bb2f3089
|
|
32
|
+
Version: 4
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
.. tip::
|
|
36
|
+
|
|
37
|
+
Version 4 UUIDs generated in ramsey/uuid are instances of UuidV4. Check out
|
|
38
|
+
the :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV4` API documentation to learn
|
|
39
|
+
more about what you can do with a UuidV4 instance.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
.. _rfc4122.version5:
|
|
2
|
+
|
|
3
|
+
=============================
|
|
4
|
+
Version 5: Name-based (SHA-1)
|
|
5
|
+
=============================
|
|
6
|
+
|
|
7
|
+
.. danger::
|
|
8
|
+
|
|
9
|
+
Since :ref:`version 3 <rfc4122.version3>` and version 5 UUIDs essentially
|
|
10
|
+
use a *salt* (the namespace) to hash data, it may be tempting to use them to
|
|
11
|
+
hash passwords. **DO NOT do this under any circumstances!** You should not
|
|
12
|
+
store any sensitive information in a version 3 or version 5 UUID, since `MD5
|
|
13
|
+
and SHA-1 are insecure and have known attacks demonstrated against them
|
|
14
|
+
<https://en.wikipedia.org/wiki/Hash_function_security_summary>`_. *Use these
|
|
15
|
+
types of UUIDs as identifiers only.*
|
|
16
|
+
|
|
17
|
+
The first thing that comes to mind with most people think of a UUID is a
|
|
18
|
+
*random* identifier, but name-based UUIDs aren't random at all. In fact, they're
|
|
19
|
+
deterministic. For any given identical namespace and name, you will always
|
|
20
|
+
generate the same UUID.
|
|
21
|
+
|
|
22
|
+
Name-based UUIDs are useful when you need an identifier that's based on
|
|
23
|
+
something's *name* --- think *identity* --- and will always be the same no
|
|
24
|
+
matter where or when it is created.
|
|
25
|
+
|
|
26
|
+
For example, let's say I want to create an identifier for a URL. I could use
|
|
27
|
+
a :ref:`version 1 <rfc4122.version1>` or :ref:`version 4 <rfc4122.version4>`
|
|
28
|
+
UUID to create an identifier for the URL, but what if I'm working with a
|
|
29
|
+
distributed system, and I want to ensure that every client in this system can
|
|
30
|
+
always generate the same identifier for any given URL?
|
|
31
|
+
|
|
32
|
+
This is where a name-based UUID comes in handy.
|
|
33
|
+
|
|
34
|
+
Name-based UUIDs combine a namespace with a name. This way, the UUIDs are unique
|
|
35
|
+
to the namespace they're created in. `RFC 4122`_ defines some
|
|
36
|
+
:ref:`predefined namespaces <reference.name-based-namespaces>`, one of which is
|
|
37
|
+
for URLs.
|
|
38
|
+
|
|
39
|
+
.. note::
|
|
40
|
+
|
|
41
|
+
Version 5 UUIDs use `SHA-1`_ as the hashing algorithm for combining the
|
|
42
|
+
namespace and the name.
|
|
43
|
+
|
|
44
|
+
.. code-block:: php
|
|
45
|
+
:caption: Generate a version 5, name-based UUID for a URL
|
|
46
|
+
:name: rfc4122.version5.url-example
|
|
47
|
+
|
|
48
|
+
use Ramsey\Uuid\Uuid;
|
|
49
|
+
|
|
50
|
+
$uuid = Uuid::uuid5(Uuid::NAMESPACE_URL, 'https://www.php.net');
|
|
51
|
+
|
|
52
|
+
The UUID generated will always be the same, as long as the namespace and name
|
|
53
|
+
are the same. The version 5 UUID for "https://www.php.net" in the URL namespace
|
|
54
|
+
will always be ``a8f6ae40-d8a7-58f0-be05-a22f94eca9ec``. See for yourself. Run
|
|
55
|
+
the code above, and you'll see it always generates the same UUID.
|
|
56
|
+
|
|
57
|
+
.. tip::
|
|
58
|
+
|
|
59
|
+
Version 5 UUIDs generated in ramsey/uuid are instances of UuidV5. Check out
|
|
60
|
+
the :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV5` API documentation to learn
|
|
61
|
+
more about what you can do with a UuidV5 instance.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
.. _rfc4122.version5.custom-namespaces:
|
|
65
|
+
|
|
66
|
+
Custom Namespaces
|
|
67
|
+
#################
|
|
68
|
+
|
|
69
|
+
If you're working with name-based UUIDs for names that don't fit into any of
|
|
70
|
+
the :ref:`predefined namespaces <reference.name-based-namespaces>`, or you don't
|
|
71
|
+
want to use any of the predefined namespaces, you can create your own namespace.
|
|
72
|
+
|
|
73
|
+
The best way to do this is to generate a :ref:`version 1 <rfc4122.version1>` or
|
|
74
|
+
:ref:`version 4 <rfc4122.version4>` UUID and save this UUID as your namespace.
|
|
75
|
+
|
|
76
|
+
.. code-block:: php
|
|
77
|
+
:caption: Generate a custom namespace UUID
|
|
78
|
+
:name: rfc4122.version5.create-namespace
|
|
79
|
+
|
|
80
|
+
use Ramsey\Uuid\Uuid;
|
|
81
|
+
|
|
82
|
+
$uuid = Uuid::uuid1();
|
|
83
|
+
|
|
84
|
+
printf("My namespace UUID is %s\n", $uuid->toString());
|
|
85
|
+
|
|
86
|
+
This will generate a version 1, Gregorian time UUID, which we'll store to a
|
|
87
|
+
constant so we can reuse it as our own custom namespace.
|
|
88
|
+
|
|
89
|
+
.. code-block:: php
|
|
90
|
+
:caption: Use a custom namespace to create version 5, name-based UUIDs
|
|
91
|
+
:name: rfc4122.version5.custom-example
|
|
92
|
+
|
|
93
|
+
use Ramsey\Uuid\Uuid;
|
|
94
|
+
|
|
95
|
+
const WIDGET_NAMESPACE = '4bdbe8ec-5cb5-11ea-bc55-0242ac130003';
|
|
96
|
+
|
|
97
|
+
$uuid = Uuid::uuid5(WIDGET_NAMESPACE, 'widget/1234567890');
|
|
98
|
+
|
|
99
|
+
With this custom namespace, the version 5 UUID for the name "widget/1234567890"
|
|
100
|
+
will always be ``a35477ae-bfb1-5f2e-b5a4-4711594d855f``.
|
|
101
|
+
|
|
102
|
+
We can publish this namespace, allowing others to use it to generate identifiers
|
|
103
|
+
for widgets. When two or more systems try to reference the same widget, they'll
|
|
104
|
+
end up generating the same identifier for it, which is exactly what we want.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
.. _RFC 4122: https://tools.ietf.org/html/rfc4122
|
|
108
|
+
.. _SHA-1: https://en.wikipedia.org/wiki/SHA-1
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
.. _rfc4122.version6:
|
|
2
|
+
|
|
3
|
+
=========================
|
|
4
|
+
Version 6: Reordered Time
|
|
5
|
+
=========================
|
|
6
|
+
|
|
7
|
+
.. note::
|
|
8
|
+
|
|
9
|
+
Version 6, reordered time UUIDs are a new format of UUID, proposed in an
|
|
10
|
+
`Internet-Draft under review`_ at the IETF. While the draft is still going
|
|
11
|
+
through the IETF process, the version 6 format is not expected to change
|
|
12
|
+
in any way that breaks compatibility.
|
|
13
|
+
|
|
14
|
+
.. attention::
|
|
15
|
+
|
|
16
|
+
If you need a time-based UUID, and you don't need the other features
|
|
17
|
+
included in version 6 UUIDs, we recommend using
|
|
18
|
+
:ref:`version 7 UUIDs <rfc4122.version7>`.
|
|
19
|
+
|
|
20
|
+
Version 6 UUIDs solve `two problems that have long existed`_ with the use of
|
|
21
|
+
:ref:`version 1 <rfc4122.version1>` UUIDs:
|
|
22
|
+
|
|
23
|
+
1. Scattered database records
|
|
24
|
+
2. Inability to sort by an identifier in a meaningful way (i.e., insert order)
|
|
25
|
+
|
|
26
|
+
To overcome these issues, we need the ability to generate UUIDs that are
|
|
27
|
+
*monotonically increasing* while still providing all the benefits of version
|
|
28
|
+
1 UUIDs.
|
|
29
|
+
|
|
30
|
+
Version 6 UUIDs do this by storing the time in standard byte order, instead of
|
|
31
|
+
breaking it up and rearranging the time bytes, according to the `RFC 4122`_
|
|
32
|
+
definition. All other fields remain the same, and the version maintains its
|
|
33
|
+
position, according to RFC 4122.
|
|
34
|
+
|
|
35
|
+
In all other ways, version 6 UUIDs function like version 1 UUIDs.
|
|
36
|
+
|
|
37
|
+
.. tip::
|
|
38
|
+
|
|
39
|
+
Prior to version 4.0.0, ramsey/uuid provided a solution for this with the
|
|
40
|
+
:ref:`ordered-time codec <customize.ordered-time-codec>`. Use of the
|
|
41
|
+
ordered-time codec is still valid and acceptable. However, you may replace
|
|
42
|
+
UUIDs generated using the ordered-time codec with version 6 UUIDs. Keep
|
|
43
|
+
reading to find out how.
|
|
44
|
+
|
|
45
|
+
.. code-block:: php
|
|
46
|
+
:caption: Generate a version 6, reordered time UUID
|
|
47
|
+
:name: rfc4122.version6.example
|
|
48
|
+
|
|
49
|
+
use Ramsey\Uuid\Uuid;
|
|
50
|
+
|
|
51
|
+
$uuid = Uuid::uuid6();
|
|
52
|
+
|
|
53
|
+
printf(
|
|
54
|
+
"UUID: %s\nVersion: %d\nDate: %s\nNode: %s\n",
|
|
55
|
+
$uuid->toString(),
|
|
56
|
+
$uuid->getFields()->getVersion()?->value,
|
|
57
|
+
$uuid->getDateTime()->format('r'),
|
|
58
|
+
$uuid->getFields()->getNode()->toString()
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
This will generate a version 6 UUID and print out its string representation, the
|
|
62
|
+
time the UUID was created, and the node used to create the UUID.
|
|
63
|
+
|
|
64
|
+
It will look something like this:
|
|
65
|
+
|
|
66
|
+
.. code-block:: text
|
|
67
|
+
|
|
68
|
+
UUID: 1ea60f56-b67b-61fc-829a-0242ac130003
|
|
69
|
+
Version: 6
|
|
70
|
+
Date: Sun, 08 Mar 2020 04:29:37 +0000
|
|
71
|
+
Node: 0242ac130003
|
|
72
|
+
|
|
73
|
+
You may provide custom values for version 6 UUIDs, including node and clock
|
|
74
|
+
sequence.
|
|
75
|
+
|
|
76
|
+
.. code-block:: php
|
|
77
|
+
:caption: Provide custom node and clock sequence to create a version 6,
|
|
78
|
+
reordered time UUID
|
|
79
|
+
:name: rfc4122.version6.custom-example
|
|
80
|
+
|
|
81
|
+
use Ramsey\Uuid\Provider\Node\StaticNodeProvider;
|
|
82
|
+
use Ramsey\Uuid\Type\Hexadecimal;
|
|
83
|
+
use Ramsey\Uuid\Uuid;
|
|
84
|
+
|
|
85
|
+
$nodeProvider = new StaticNodeProvider(new Hexadecimal('121212121212'));
|
|
86
|
+
$clockSequence = 16383;
|
|
87
|
+
|
|
88
|
+
$uuid = Uuid::uuid6($nodeProvider->getNode(), $clockSequence);
|
|
89
|
+
|
|
90
|
+
.. tip::
|
|
91
|
+
|
|
92
|
+
Version 6 UUIDs generated in ramsey/uuid are instances of UuidV6. Check out
|
|
93
|
+
the :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV6` API documentation to
|
|
94
|
+
learn more about what you can do with a UuidV6 instance.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
.. _rfc4122.version6.nodes:
|
|
98
|
+
|
|
99
|
+
Custom and Random Nodes
|
|
100
|
+
#######################
|
|
101
|
+
|
|
102
|
+
In the :ref:`example above <rfc4122.version6.custom-example>`, we provided a
|
|
103
|
+
custom node when generating a version 6 UUID. You may also generate random
|
|
104
|
+
node values.
|
|
105
|
+
|
|
106
|
+
To learn more, see the :ref:`rfc4122.version1.custom` and
|
|
107
|
+
:ref:`rfc4122.version1.random` sections under :ref:`rfc4122.version1`.
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
.. _rfc4122.version6.clock:
|
|
111
|
+
|
|
112
|
+
Clock Sequence
|
|
113
|
+
##############
|
|
114
|
+
|
|
115
|
+
In a version 6 UUID, the clock sequence serves the same purpose as in a version
|
|
116
|
+
1 UUID. See :ref:`rfc4122.version1.clock` to learn more.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
.. _rfc4122.version6.version1-conversion:
|
|
120
|
+
|
|
121
|
+
Version 1-to-6 Conversion
|
|
122
|
+
#########################
|
|
123
|
+
|
|
124
|
+
It is possible to convert back-and-forth between version 6 and version 1 UUIDs.
|
|
125
|
+
|
|
126
|
+
.. code-block:: php
|
|
127
|
+
:caption: Convert a version 1 UUID to a version 6 UUID
|
|
128
|
+
:name: rfc4122.version6.convert-version1-example
|
|
129
|
+
|
|
130
|
+
use Ramsey\Uuid\Rfc4122\UuidV1;
|
|
131
|
+
use Ramsey\Uuid\Rfc4122\UuidV6;
|
|
132
|
+
use Ramsey\Uuid\Uuid;
|
|
133
|
+
|
|
134
|
+
$uuid1 = Uuid::fromString('3960c5d8-60f8-11ea-bc55-0242ac130003');
|
|
135
|
+
|
|
136
|
+
if ($uuid1 instanceof UuidV1) {
|
|
137
|
+
$uuid6 = UuidV6::fromUuidV1($uuid1);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.. code-block:: php
|
|
141
|
+
:caption: Convert a version 6 UUID to a version 1 UUID
|
|
142
|
+
:name: rfc4122.version6.convert-version6-example
|
|
143
|
+
|
|
144
|
+
use Ramsey\Uuid\Rfc4122\UuidV6;
|
|
145
|
+
use Ramsey\Uuid\Uuid;
|
|
146
|
+
|
|
147
|
+
$uuid6 = Uuid::fromString('1ea60f83-960c-65d8-bc55-0242ac130003');
|
|
148
|
+
|
|
149
|
+
if ($uuid6 instanceof UuidV6) {
|
|
150
|
+
$uuid1 = $uuid6->toUuidV1();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
.. _rfc4122.version6.ordered-time-conversion:
|
|
155
|
+
|
|
156
|
+
Ordered-time to Version 6 Conversion
|
|
157
|
+
####################################
|
|
158
|
+
|
|
159
|
+
You may convert UUIDs previously generated and stored using the
|
|
160
|
+
:ref:`ordered-time codec <customize.ordered-time-codec>` into version 6 UUIDs.
|
|
161
|
+
|
|
162
|
+
.. caution::
|
|
163
|
+
|
|
164
|
+
If you perform this conversion, the bytes and string representation of your
|
|
165
|
+
UUIDs will change. This will break any software that expects your
|
|
166
|
+
identifiers to be fixed.
|
|
167
|
+
|
|
168
|
+
.. code-block:: php
|
|
169
|
+
:caption: Convert an ordered-time codec encoded UUID to a version 6 UUID
|
|
170
|
+
:name: rfc4122.version6.convert-ordered-time-example
|
|
171
|
+
|
|
172
|
+
use Ramsey\Uuid\Codec\OrderedTimeCodec;
|
|
173
|
+
use Ramsey\Uuid\Rfc4122\UuidV1;
|
|
174
|
+
use Ramsey\Uuid\Rfc4122\UuidV6;
|
|
175
|
+
use Ramsey\Uuid\UuidFactory;
|
|
176
|
+
|
|
177
|
+
// The bytes of a version 1 UUID previously stored in some datastore
|
|
178
|
+
// after encoding to bytes with the OrderedTimeCodec.
|
|
179
|
+
$bytes = hex2bin('11ea60faf17c8af6ad23acde48001122');
|
|
180
|
+
|
|
181
|
+
$factory = new UuidFactory();
|
|
182
|
+
$codec = new OrderedTimeCodec($factory->getUuidBuilder());
|
|
183
|
+
|
|
184
|
+
$factory->setCodec($codec);
|
|
185
|
+
|
|
186
|
+
$orderedTimeUuid = $factory->fromBytes($bytes);
|
|
187
|
+
|
|
188
|
+
if ($orderedTimeUuid instanceof UuidV1) {
|
|
189
|
+
$uuid6 = UuidV6::fromUuidV1($orderedTimeUuid);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
.. _rfc4122.version6.privacy:
|
|
194
|
+
|
|
195
|
+
Privacy Concerns
|
|
196
|
+
################
|
|
197
|
+
|
|
198
|
+
Like :ref:`version 1 UUIDs <rfc4122.version1>`, version 6 UUIDs use a MAC
|
|
199
|
+
address from a local hardware network interface. This means it is possible to
|
|
200
|
+
uniquely identify the machine on which a version 6 UUID was created.
|
|
201
|
+
|
|
202
|
+
If the value provided by the timestamp of a version 6 UUID is important to you,
|
|
203
|
+
but you do not wish to expose the interface address of any of your local
|
|
204
|
+
machines, see :ref:`rfc4122.version6.nodes`.
|
|
205
|
+
|
|
206
|
+
If you do not need an identifier with a node value embedded in it, but you still
|
|
207
|
+
need the benefit of a monotonically increasing unique identifier, see
|
|
208
|
+
:ref:`rfc4122.version7`.
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
.. _Internet-Draft under review: https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.6
|
|
212
|
+
.. _two problems that have long existed: https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/
|
|
213
|
+
.. _RFC 4122: https://tools.ietf.org/html/rfc4122
|