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.
Files changed (610) hide show
  1. package/LICENSE.txt +9 -0
  2. package/README.md +158 -0
  3. package/composer.json +23 -0
  4. package/composer.lock +812 -0
  5. package/dist/bootstrap.php +4 -0
  6. package/dist/index.js +2 -0
  7. package/dist/node_modules/prisma-client-php/index.enc +1 -0
  8. package/dist/node_modules/prisma-client-php/index.js +2 -0
  9. package/dist/node_modules/prisma-client-php/key.enc +1 -0
  10. package/dist/node_modules/prisma-client-php/package.json +7 -0
  11. package/dist/prisma/schema.prisma +32 -0
  12. package/dist/prisma/seed.js +68 -0
  13. package/dist/public/assets/images/prisma-php.png +0 -0
  14. package/dist/public/css/styles.css +0 -0
  15. package/dist/public/css/tailwind.css +3 -0
  16. package/dist/public/favicon.ico +0 -0
  17. package/dist/public/index.php +64 -0
  18. package/dist/settings/paths.php +10 -0
  19. package/dist/settings/project-settings.js +6 -0
  20. package/dist/src/app/api/api.php +39 -0
  21. package/dist/src/app/classes/Validator.php +77 -0
  22. package/dist/src/app/model/IModel.php +22 -0
  23. package/package.json +35 -0
  24. package/tsconfig.json +110 -0
  25. package/vendor/autoload.php +25 -0
  26. package/vendor/brick/math/.editorconfig +15 -0
  27. package/vendor/brick/math/.gitattributes +11 -0
  28. package/vendor/brick/math/.github/FUNDING.yml +1 -0
  29. package/vendor/brick/math/.github/workflows/ci.yml +80 -0
  30. package/vendor/brick/math/CHANGELOG.md +445 -0
  31. package/vendor/brick/math/LICENSE +20 -0
  32. package/vendor/brick/math/README.md +247 -0
  33. package/vendor/brick/math/composer.json +34 -0
  34. package/vendor/brick/math/phpunit.php +51 -0
  35. package/vendor/brick/math/phpunit.xml +13 -0
  36. package/vendor/brick/math/psalm.xml +28 -0
  37. package/vendor/brick/math/random-tests.php +162 -0
  38. package/vendor/brick/math/src/BigDecimal.php +786 -0
  39. package/vendor/brick/math/src/BigInteger.php +1079 -0
  40. package/vendor/brick/math/src/BigNumber.php +512 -0
  41. package/vendor/brick/math/src/BigRational.php +445 -0
  42. package/vendor/brick/math/src/Exception/DivisionByZeroException.php +35 -0
  43. package/vendor/brick/math/src/Exception/IntegerOverflowException.php +23 -0
  44. package/vendor/brick/math/src/Exception/MathException.php +12 -0
  45. package/vendor/brick/math/src/Exception/NegativeNumberException.php +12 -0
  46. package/vendor/brick/math/src/Exception/NumberFormatException.php +33 -0
  47. package/vendor/brick/math/src/Exception/RoundingNecessaryException.php +19 -0
  48. package/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php +75 -0
  49. package/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php +108 -0
  50. package/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php +581 -0
  51. package/vendor/brick/math/src/Internal/Calculator.php +676 -0
  52. package/vendor/brick/math/src/RoundingMode.php +107 -0
  53. package/vendor/brick/math/tests/AbstractTestCase.php +86 -0
  54. package/vendor/brick/math/tests/BigDecimalTest.php +2596 -0
  55. package/vendor/brick/math/tests/BigIntegerTest.php +3782 -0
  56. package/vendor/brick/math/tests/BigNumberTest.php +53 -0
  57. package/vendor/brick/math/tests/BigRationalTest.php +993 -0
  58. package/vendor/brick/math/tests/CalculatorDetectTest.php +25 -0
  59. package/vendor/brick/math/tests/Internal/Calculator/NativeCalculatorTest.php +87 -0
  60. package/vendor/composer/ClassLoader.php +579 -0
  61. package/vendor/composer/InstalledVersions.php +359 -0
  62. package/vendor/composer/LICENSE +21 -0
  63. package/vendor/composer/autoload_classmap.php +15 -0
  64. package/vendor/composer/autoload_files.php +13 -0
  65. package/vendor/composer/autoload_namespaces.php +9 -0
  66. package/vendor/composer/autoload_psr4.php +20 -0
  67. package/vendor/composer/autoload_real.php +50 -0
  68. package/vendor/composer/autoload_static.php +122 -0
  69. package/vendor/composer/installed.json +825 -0
  70. package/vendor/composer/installed.php +132 -0
  71. package/vendor/composer/platform_check.php +26 -0
  72. package/vendor/firebase/php-jwt/.gitattributes +9 -0
  73. package/vendor/firebase/php-jwt/.github/release-please.yml +3 -0
  74. package/vendor/firebase/php-jwt/.github/workflows/tests.yml +57 -0
  75. package/vendor/firebase/php-jwt/.php-cs-fixer.dist.php +24 -0
  76. package/vendor/firebase/php-jwt/CHANGELOG.md +170 -0
  77. package/vendor/firebase/php-jwt/LICENSE +30 -0
  78. package/vendor/firebase/php-jwt/README.md +424 -0
  79. package/vendor/firebase/php-jwt/composer.json +42 -0
  80. package/vendor/firebase/php-jwt/phpstan.neon.dist +5 -0
  81. package/vendor/firebase/php-jwt/phpunit.xml.dist +18 -0
  82. package/vendor/firebase/php-jwt/src/BeforeValidException.php +18 -0
  83. package/vendor/firebase/php-jwt/src/CachedKeySet.php +268 -0
  84. package/vendor/firebase/php-jwt/src/ExpiredException.php +18 -0
  85. package/vendor/firebase/php-jwt/src/JWK.php +349 -0
  86. package/vendor/firebase/php-jwt/src/JWT.php +669 -0
  87. package/vendor/firebase/php-jwt/src/JWTExceptionWithPayloadInterface.php +20 -0
  88. package/vendor/firebase/php-jwt/src/Key.php +64 -0
  89. package/vendor/firebase/php-jwt/src/SignatureInvalidException.php +7 -0
  90. package/vendor/firebase/php-jwt/tests/CachedKeySetTest.php +598 -0
  91. package/vendor/firebase/php-jwt/tests/JWKTest.php +172 -0
  92. package/vendor/firebase/php-jwt/tests/JWTTest.php +543 -0
  93. package/vendor/firebase/php-jwt/tests/data/ec-jwkset.json +40 -0
  94. package/vendor/firebase/php-jwt/tests/data/ecdsa-private.pem +18 -0
  95. package/vendor/firebase/php-jwt/tests/data/ecdsa-public.pem +9 -0
  96. package/vendor/firebase/php-jwt/tests/data/ecdsa256-private.pem +4 -0
  97. package/vendor/firebase/php-jwt/tests/data/ecdsa384-private.pem +6 -0
  98. package/vendor/firebase/php-jwt/tests/data/ecdsa384-public.pem +5 -0
  99. package/vendor/firebase/php-jwt/tests/data/ed25519-1.pub +1 -0
  100. package/vendor/firebase/php-jwt/tests/data/ed25519-1.sec +1 -0
  101. package/vendor/firebase/php-jwt/tests/data/ed25519-jwkset.json +11 -0
  102. package/vendor/firebase/php-jwt/tests/data/rsa-jwkset.json +18 -0
  103. package/vendor/firebase/php-jwt/tests/data/rsa-with-passphrase.pem +42 -0
  104. package/vendor/firebase/php-jwt/tests/data/rsa1-private.pem +27 -0
  105. package/vendor/firebase/php-jwt/tests/data/rsa1-public.pub +9 -0
  106. package/vendor/firebase/php-jwt/tests/data/rsa2-private.pem +27 -0
  107. package/vendor/firebase/php-jwt/tests/data/secp256k1-private.pem +5 -0
  108. package/vendor/firebase/php-jwt/tests/data/secp256k1-public.pem +4 -0
  109. package/vendor/graham-campbell/result-type/.gitattributes +9 -0
  110. package/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
  111. package/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
  112. package/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
  113. package/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
  114. package/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
  115. package/vendor/graham-campbell/result-type/CHANGELOG.md +43 -0
  116. package/vendor/graham-campbell/result-type/LICENSE +21 -0
  117. package/vendor/graham-campbell/result-type/README.md +42 -0
  118. package/vendor/graham-campbell/result-type/composer.json +33 -0
  119. package/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
  120. package/vendor/graham-campbell/result-type/src/Error.php +121 -0
  121. package/vendor/graham-campbell/result-type/src/Result.php +69 -0
  122. package/vendor/graham-campbell/result-type/src/Success.php +120 -0
  123. package/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
  124. package/vendor/hidehalo/nanoid-php/.editorconfig +15 -0
  125. package/vendor/hidehalo/nanoid-php/.gitattributes +8 -0
  126. package/vendor/hidehalo/nanoid-php/.github/workflows/php.yml +49 -0
  127. package/vendor/hidehalo/nanoid-php/.styleci.yml +1 -0
  128. package/vendor/hidehalo/nanoid-php/CHANGELOG.md +36 -0
  129. package/vendor/hidehalo/nanoid-php/CODE_OF_CONDUCT.md +74 -0
  130. package/vendor/hidehalo/nanoid-php/CONTRIBUTING.md +32 -0
  131. package/vendor/hidehalo/nanoid-php/ISSUE_TEMPLATE.md +27 -0
  132. package/vendor/hidehalo/nanoid-php/LICENSE.md +21 -0
  133. package/vendor/hidehalo/nanoid-php/PULL_REQUEST_TEMPLATE.md +43 -0
  134. package/vendor/hidehalo/nanoid-php/README.md +108 -0
  135. package/vendor/hidehalo/nanoid-php/benchmark/benchmark.php +24 -0
  136. package/vendor/hidehalo/nanoid-php/composer.json +62 -0
  137. package/vendor/hidehalo/nanoid-php/examples/basic_usage.php +24 -0
  138. package/vendor/hidehalo/nanoid-php/examples/custom_formated.php +29 -0
  139. package/vendor/hidehalo/nanoid-php/phpunit.xml +31 -0
  140. package/vendor/hidehalo/nanoid-php/src/Client.php +120 -0
  141. package/vendor/hidehalo/nanoid-php/src/Core.php +31 -0
  142. package/vendor/hidehalo/nanoid-php/src/CoreInterface.php +19 -0
  143. package/vendor/hidehalo/nanoid-php/src/Generator.php +13 -0
  144. package/vendor/hidehalo/nanoid-php/src/GeneratorInterface.php +13 -0
  145. package/vendor/hidehalo/nanoid-php/tests/ClientTest.php +76 -0
  146. package/vendor/hidehalo/nanoid-php/tests/CoreTest.php +37 -0
  147. package/vendor/hidehalo/nanoid-php/tests/GeneratorTest.php +34 -0
  148. package/vendor/hidehalo/nanoid-php/tests/Support/DummyGenerator.php +20 -0
  149. package/vendor/paragonie/random_compat/.gitattributes +14 -0
  150. package/vendor/paragonie/random_compat/.scrutinizer.yml +4 -0
  151. package/vendor/paragonie/random_compat/.travis.yml +59 -0
  152. package/vendor/paragonie/random_compat/CHANGELOG.md +3 -0
  153. package/vendor/paragonie/random_compat/LICENSE +22 -0
  154. package/vendor/paragonie/random_compat/RATIONALE.md +36 -0
  155. package/vendor/paragonie/random_compat/README.md +232 -0
  156. package/vendor/paragonie/random_compat/SECURITY.md +108 -0
  157. package/vendor/paragonie/random_compat/build-phar.sh +5 -0
  158. package/vendor/paragonie/random_compat/composer.json +34 -0
  159. package/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey +5 -0
  160. package/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc +11 -0
  161. package/vendor/paragonie/random_compat/lib/random.php +32 -0
  162. package/vendor/paragonie/random_compat/other/build_phar.php +57 -0
  163. package/vendor/paragonie/random_compat/other/ide_stubs/COM.php +20 -0
  164. package/vendor/paragonie/random_compat/other/ide_stubs/README.md +7 -0
  165. package/vendor/paragonie/random_compat/other/ide_stubs/com_exception.php +11 -0
  166. package/vendor/paragonie/random_compat/other/ide_stubs/libsodium.php +90 -0
  167. package/vendor/paragonie/random_compat/phpunit.sh +60 -0
  168. package/vendor/paragonie/random_compat/phpunit.xml.dist +31 -0
  169. package/vendor/paragonie/random_compat/psalm-autoload.php +9 -0
  170. package/vendor/paragonie/random_compat/psalm.xml +19 -0
  171. package/vendor/paragonie/random_compat/tests/full/DieHardTest.php +61 -0
  172. package/vendor/paragonie/random_compat/tests/full/StatTest.php +52 -0
  173. package/vendor/paragonie/random_compat/tests/specific/capicom.php +7 -0
  174. package/vendor/paragonie/random_compat/tests/specific/dev_urandom.php +7 -0
  175. package/vendor/paragonie/random_compat/tests/specific/libsodium.php +7 -0
  176. package/vendor/paragonie/random_compat/tests/specific/libsodium_legacy.php +7 -0
  177. package/vendor/paragonie/random_compat/tests/specific/mcrypt.php +7 -0
  178. package/vendor/paragonie/random_compat/tests/unit/RandomBytesTest.php +80 -0
  179. package/vendor/paragonie/random_compat/tests/unit/RandomIntTest.php +63 -0
  180. package/vendor/paragonie/random_compat/tests/unit/UtilityTest.php +95 -0
  181. package/vendor/paragonie/random_compat/tests/unit_with_basedir/RandomBytesTest.php +100 -0
  182. package/vendor/paragonie/random_compat/tests/unit_with_basedir/RandomIntTest.php +82 -0
  183. package/vendor/paragonie/random_compat/tests/unit_with_basedir/UtilityTest.php +95 -0
  184. package/vendor/phpoption/phpoption/.gitattributes +14 -0
  185. package/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
  186. package/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
  187. package/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
  188. package/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
  189. package/vendor/phpoption/phpoption/.github/workflows/static.yml +74 -0
  190. package/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
  191. package/vendor/phpoption/phpoption/LICENSE +201 -0
  192. package/vendor/phpoption/phpoption/Makefile +26 -0
  193. package/vendor/phpoption/phpoption/README.md +194 -0
  194. package/vendor/phpoption/phpoption/composer.json +52 -0
  195. package/vendor/phpoption/phpoption/phpstan-baseline.neon +32 -0
  196. package/vendor/phpoption/phpoption/phpstan.neon.dist +8 -0
  197. package/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
  198. package/vendor/phpoption/phpoption/psalm.xml +12 -0
  199. package/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -0
  200. package/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -0
  201. package/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -0
  202. package/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -0
  203. package/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +77 -0
  204. package/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +200 -0
  205. package/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
  206. package/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +160 -0
  207. package/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
  208. package/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
  209. package/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
  210. package/vendor/phpoption/phpoption/vendor-bin/psalm/composer.json +8 -0
  211. package/vendor/ramsey/uuid/.editorconfig +16 -0
  212. package/vendor/ramsey/uuid/.gitattributes +26 -0
  213. package/vendor/ramsey/uuid/.github/CODEOWNERS +1 -0
  214. package/vendor/ramsey/uuid/.github/FUNDING.yml +2 -0
  215. package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Bug_Report.md +35 -0
  216. package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Feature_Request.md +31 -0
  217. package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/Question.md +19 -0
  218. package/vendor/ramsey/uuid/.github/ISSUE_TEMPLATE/config.yml +1 -0
  219. package/vendor/ramsey/uuid/.github/dependabot.yml +15 -0
  220. package/vendor/ramsey/uuid/.github/pull_request_template.md +27 -0
  221. package/vendor/ramsey/uuid/.github/workflows/continuous-integration.yml +181 -0
  222. package/vendor/ramsey/uuid/.github/workflows/merge-dependabot-upgrades.yml +24 -0
  223. package/vendor/ramsey/uuid/.readthedocs.yml +11 -0
  224. package/vendor/ramsey/uuid/CHANGELOG.md +1511 -0
  225. package/vendor/ramsey/uuid/CODE_OF_CONDUCT.md +73 -0
  226. package/vendor/ramsey/uuid/CONTRIBUTING.md +171 -0
  227. package/vendor/ramsey/uuid/LICENSE +19 -0
  228. package/vendor/ramsey/uuid/README.md +83 -0
  229. package/vendor/ramsey/uuid/SECURITY.md +170 -0
  230. package/vendor/ramsey/uuid/build/.gitignore +6 -0
  231. package/vendor/ramsey/uuid/build/cache/.gitkeep +0 -0
  232. package/vendor/ramsey/uuid/build/logs/.gitkeep +0 -0
  233. package/vendor/ramsey/uuid/captainhook.json +105 -0
  234. package/vendor/ramsey/uuid/codecov.yml +29 -0
  235. package/vendor/ramsey/uuid/composer.json +106 -0
  236. package/vendor/ramsey/uuid/composer.lock +7208 -0
  237. package/vendor/ramsey/uuid/docs/Makefile +20 -0
  238. package/vendor/ramsey/uuid/docs/README.md +36 -0
  239. package/vendor/ramsey/uuid/docs/_static/.gitkeep +0 -0
  240. package/vendor/ramsey/uuid/docs/conf.py +103 -0
  241. package/vendor/ramsey/uuid/docs/copyright.rst +18 -0
  242. package/vendor/ramsey/uuid/docs/customize/calculators.rst +75 -0
  243. package/vendor/ramsey/uuid/docs/customize/factory.rst +93 -0
  244. package/vendor/ramsey/uuid/docs/customize/ordered-time-codec.rst +86 -0
  245. package/vendor/ramsey/uuid/docs/customize/timestamp-first-comb-codec.rst +72 -0
  246. package/vendor/ramsey/uuid/docs/customize/validators.rst +39 -0
  247. package/vendor/ramsey/uuid/docs/customize.rst +56 -0
  248. package/vendor/ramsey/uuid/docs/database.rst +260 -0
  249. package/vendor/ramsey/uuid/docs/faq.rst +132 -0
  250. package/vendor/ramsey/uuid/docs/index.rst +51 -0
  251. package/vendor/ramsey/uuid/docs/introduction.rst +31 -0
  252. package/vendor/ramsey/uuid/docs/nonstandard/guid.rst +152 -0
  253. package/vendor/ramsey/uuid/docs/nonstandard/other.rst +49 -0
  254. package/vendor/ramsey/uuid/docs/nonstandard/version6.rst +17 -0
  255. package/vendor/ramsey/uuid/docs/nonstandard.rst +40 -0
  256. package/vendor/ramsey/uuid/docs/quickstart.rst +112 -0
  257. package/vendor/ramsey/uuid/docs/reference/calculators.rst +168 -0
  258. package/vendor/ramsey/uuid/docs/reference/exceptions.rst +92 -0
  259. package/vendor/ramsey/uuid/docs/reference/fields-fieldsinterface.rst +16 -0
  260. package/vendor/ramsey/uuid/docs/reference/guid-fields.rst +13 -0
  261. package/vendor/ramsey/uuid/docs/reference/guid-guid.rst +20 -0
  262. package/vendor/ramsey/uuid/docs/reference/helper.rst +62 -0
  263. package/vendor/ramsey/uuid/docs/reference/name-based-namespaces.rst +31 -0
  264. package/vendor/ramsey/uuid/docs/reference/nonstandard-fields.rst +13 -0
  265. package/vendor/ramsey/uuid/docs/reference/nonstandard-uuid.rst +20 -0
  266. package/vendor/ramsey/uuid/docs/reference/nonstandard-uuidv6.rst +34 -0
  267. package/vendor/ramsey/uuid/docs/reference/rfc4122-fieldsinterface.rst +78 -0
  268. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidinterface.rst +20 -0
  269. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv1.rst +21 -0
  270. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv2.rst +47 -0
  271. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv3.rst +13 -0
  272. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv4.rst +13 -0
  273. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv5.rst +13 -0
  274. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv6.rst +31 -0
  275. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv7.rst +20 -0
  276. package/vendor/ramsey/uuid/docs/reference/rfc4122-uuidv8.rst +13 -0
  277. package/vendor/ramsey/uuid/docs/reference/rfc4122-version.rst +87 -0
  278. package/vendor/ramsey/uuid/docs/reference/timebaseduuidinterface.rst +16 -0
  279. package/vendor/ramsey/uuid/docs/reference/types.rst +79 -0
  280. package/vendor/ramsey/uuid/docs/reference/uuid.rst +161 -0
  281. package/vendor/ramsey/uuid/docs/reference/uuidfactoryinterface.rst +102 -0
  282. package/vendor/ramsey/uuid/docs/reference/uuidinterface.rst +60 -0
  283. package/vendor/ramsey/uuid/docs/reference/validators.rst +34 -0
  284. package/vendor/ramsey/uuid/docs/reference/variant.rst +32 -0
  285. package/vendor/ramsey/uuid/docs/reference.rst +37 -0
  286. package/vendor/ramsey/uuid/docs/requirements.txt +3 -0
  287. package/vendor/ramsey/uuid/docs/rfc4122/version1.rst +192 -0
  288. package/vendor/ramsey/uuid/docs/rfc4122/version2.rst +273 -0
  289. package/vendor/ramsey/uuid/docs/rfc4122/version3.rst +68 -0
  290. package/vendor/ramsey/uuid/docs/rfc4122/version4.rst +39 -0
  291. package/vendor/ramsey/uuid/docs/rfc4122/version5.rst +108 -0
  292. package/vendor/ramsey/uuid/docs/rfc4122/version6.rst +213 -0
  293. package/vendor/ramsey/uuid/docs/rfc4122/version7.rst +173 -0
  294. package/vendor/ramsey/uuid/docs/rfc4122/version8.rst +51 -0
  295. package/vendor/ramsey/uuid/docs/rfc4122.rst +67 -0
  296. package/vendor/ramsey/uuid/docs/testing.rst +199 -0
  297. package/vendor/ramsey/uuid/docs/tidelift.rst +74 -0
  298. package/vendor/ramsey/uuid/docs/upgrading/2-to-3.rst +31 -0
  299. package/vendor/ramsey/uuid/docs/upgrading/3-to-4.rst +512 -0
  300. package/vendor/ramsey/uuid/docs/upgrading.rst +11 -0
  301. package/vendor/ramsey/uuid/phpbench.json +10 -0
  302. package/vendor/ramsey/uuid/phpcs.xml.dist +476 -0
  303. package/vendor/ramsey/uuid/phpstan-tests.neon +32 -0
  304. package/vendor/ramsey/uuid/phpstan.neon.dist +25 -0
  305. package/vendor/ramsey/uuid/phpunit.xml.dist +26 -0
  306. package/vendor/ramsey/uuid/psalm-baseline.xml +133 -0
  307. package/vendor/ramsey/uuid/psalm.xml +25 -0
  308. package/vendor/ramsey/uuid/resources/vagrant/README.md +10 -0
  309. package/vendor/ramsey/uuid/resources/vagrant/freebsd/README.md +15 -0
  310. package/vendor/ramsey/uuid/resources/vagrant/freebsd/Vagrantfile +35 -0
  311. package/vendor/ramsey/uuid/resources/vagrant/linux/README.md +15 -0
  312. package/vendor/ramsey/uuid/resources/vagrant/linux/Vagrantfile +27 -0
  313. package/vendor/ramsey/uuid/resources/vagrant/windows/README.md +16 -0
  314. package/vendor/ramsey/uuid/resources/vagrant/windows/Vagrantfile +22 -0
  315. package/vendor/ramsey/uuid/src/BinaryUtils.php +106 -0
  316. package/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php +68 -0
  317. package/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php +39 -0
  318. package/vendor/ramsey/uuid/src/Codec/CodecInterface.php +67 -0
  319. package/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php +82 -0
  320. package/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php +114 -0
  321. package/vendor/ramsey/uuid/src/Codec/StringCodec.php +128 -0
  322. package/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php +105 -0
  323. package/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php +51 -0
  324. package/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php +48 -0
  325. package/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php +53 -0
  326. package/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php +118 -0
  327. package/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php +163 -0
  328. package/vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php +90 -0
  329. package/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php +58 -0
  330. package/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php +24 -0
  331. package/vendor/ramsey/uuid/src/Exception/DateTimeException.php +24 -0
  332. package/vendor/ramsey/uuid/src/Exception/DceSecurityException.php +25 -0
  333. package/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php +24 -0
  334. package/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php +24 -0
  335. package/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php +25 -0
  336. package/vendor/ramsey/uuid/src/Exception/NameException.php +25 -0
  337. package/vendor/ramsey/uuid/src/Exception/NodeException.php +24 -0
  338. package/vendor/ramsey/uuid/src/Exception/RandomSourceException.php +27 -0
  339. package/vendor/ramsey/uuid/src/Exception/TimeSourceException.php +24 -0
  340. package/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php +24 -0
  341. package/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php +24 -0
  342. package/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php +21 -0
  343. package/vendor/ramsey/uuid/src/FeatureSet.php +395 -0
  344. package/vendor/ramsey/uuid/src/Fields/FieldsInterface.php +42 -0
  345. package/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php +70 -0
  346. package/vendor/ramsey/uuid/src/Generator/CombGenerator.php +124 -0
  347. package/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php +139 -0
  348. package/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php +53 -0
  349. package/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php +51 -0
  350. package/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php +131 -0
  351. package/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php +30 -0
  352. package/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php +38 -0
  353. package/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php +52 -0
  354. package/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php +37 -0
  355. package/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php +39 -0
  356. package/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php +45 -0
  357. package/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php +30 -0
  358. package/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php +31 -0
  359. package/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php +45 -0
  360. package/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php +38 -0
  361. package/vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php +170 -0
  362. package/vendor/ramsey/uuid/src/Guid/Fields.php +208 -0
  363. package/vendor/ramsey/uuid/src/Guid/Guid.php +61 -0
  364. package/vendor/ramsey/uuid/src/Guid/GuidBuilder.php +79 -0
  365. package/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php +226 -0
  366. package/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php +145 -0
  367. package/vendor/ramsey/uuid/src/Math/CalculatorInterface.php +106 -0
  368. package/vendor/ramsey/uuid/src/Math/RoundingMode.php +146 -0
  369. package/vendor/ramsey/uuid/src/Nonstandard/Fields.php +154 -0
  370. package/vendor/ramsey/uuid/src/Nonstandard/Uuid.php +37 -0
  371. package/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php +78 -0
  372. package/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php +113 -0
  373. package/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php +236 -0
  374. package/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php +41 -0
  375. package/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php +54 -0
  376. package/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php +69 -0
  377. package/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php +74 -0
  378. package/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php +190 -0
  379. package/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php +30 -0
  380. package/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php +57 -0
  381. package/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php +33 -0
  382. package/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php +28 -0
  383. package/vendor/ramsey/uuid/src/Rfc4122/Fields.php +214 -0
  384. package/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php +129 -0
  385. package/vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php +41 -0
  386. package/vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php +27 -0
  387. package/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php +41 -0
  388. package/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php +27 -0
  389. package/vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php +55 -0
  390. package/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php +116 -0
  391. package/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php +30 -0
  392. package/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php +61 -0
  393. package/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php +119 -0
  394. package/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php +58 -0
  395. package/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php +58 -0
  396. package/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php +58 -0
  397. package/vendor/ramsey/uuid/src/Rfc4122/UuidV6.php +30 -0
  398. package/vendor/ramsey/uuid/src/Rfc4122/UuidV7.php +63 -0
  399. package/vendor/ramsey/uuid/src/Rfc4122/UuidV8.php +65 -0
  400. package/vendor/ramsey/uuid/src/Rfc4122/Validator.php +45 -0
  401. package/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php +87 -0
  402. package/vendor/ramsey/uuid/src/Rfc4122/Version.php +139 -0
  403. package/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php +57 -0
  404. package/vendor/ramsey/uuid/src/TimeBasedUuidFactoryInterface.php +48 -0
  405. package/vendor/ramsey/uuid/src/TimeBasedUuidInterface.php +30 -0
  406. package/vendor/ramsey/uuid/src/Type/Decimal.php +135 -0
  407. package/vendor/ramsey/uuid/src/Type/Hexadecimal.php +109 -0
  408. package/vendor/ramsey/uuid/src/Type/Integer.php +145 -0
  409. package/vendor/ramsey/uuid/src/Type/NumberInterface.php +28 -0
  410. package/vendor/ramsey/uuid/src/Type/Time.php +108 -0
  411. package/vendor/ramsey/uuid/src/Type/TypeInterface.php +45 -0
  412. package/vendor/ramsey/uuid/src/Uuid.php +645 -0
  413. package/vendor/ramsey/uuid/src/UuidFactory.php +503 -0
  414. package/vendor/ramsey/uuid/src/UuidFactoryInterface.php +184 -0
  415. package/vendor/ramsey/uuid/src/UuidInterface.php +114 -0
  416. package/vendor/ramsey/uuid/src/Validator/GenericValidator.php +45 -0
  417. package/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php +39 -0
  418. package/vendor/ramsey/uuid/src/Variant.php +60 -0
  419. package/vendor/ramsey/uuid/src/functions.php +160 -0
  420. package/vendor/ramsey/uuid/tests/BinaryUtilsTest.php +381 -0
  421. package/vendor/ramsey/uuid/tests/Builder/FallbackBuilderTest.php +198 -0
  422. package/vendor/ramsey/uuid/tests/Codec/GuidStringCodecTest.php +118 -0
  423. package/vendor/ramsey/uuid/tests/Codec/OrderedTimeCodecTest.php +258 -0
  424. package/vendor/ramsey/uuid/tests/Codec/StringCodecTest.php +149 -0
  425. package/vendor/ramsey/uuid/tests/Converter/Number/GenericNumberConverterTest.php +28 -0
  426. package/vendor/ramsey/uuid/tests/Converter/Time/GenericTimeConverterTest.php +147 -0
  427. package/vendor/ramsey/uuid/tests/Converter/Time/PhpTimeConverterTest.php +199 -0
  428. package/vendor/ramsey/uuid/tests/Converter/Time/UnixTimeConverterTest.php +202 -0
  429. package/vendor/ramsey/uuid/tests/Encoder/TimestampFirstCombCodecTest.php +105 -0
  430. package/vendor/ramsey/uuid/tests/Encoder/TimestampLastCombCodecTest.php +106 -0
  431. package/vendor/ramsey/uuid/tests/ExpectedBehaviorTest.php +573 -0
  432. package/vendor/ramsey/uuid/tests/FeatureSetTest.php +88 -0
  433. package/vendor/ramsey/uuid/tests/FunctionsTest.php +151 -0
  434. package/vendor/ramsey/uuid/tests/Generator/CombGeneratorTest.php +134 -0
  435. package/vendor/ramsey/uuid/tests/Generator/DceSecurityGeneratorTest.php +282 -0
  436. package/vendor/ramsey/uuid/tests/Generator/DefaultNameGeneratorTest.php +83 -0
  437. package/vendor/ramsey/uuid/tests/Generator/DefaultTimeGeneratorTest.php +202 -0
  438. package/vendor/ramsey/uuid/tests/Generator/NameGeneratorFactoryTest.php +19 -0
  439. package/vendor/ramsey/uuid/tests/Generator/PeclUuidNameGeneratorTest.php +107 -0
  440. package/vendor/ramsey/uuid/tests/Generator/PeclUuidRandomGeneratorTest.php +30 -0
  441. package/vendor/ramsey/uuid/tests/Generator/PeclUuidTimeGeneratorTest.php +30 -0
  442. package/vendor/ramsey/uuid/tests/Generator/RandomBytesGeneratorTest.php +70 -0
  443. package/vendor/ramsey/uuid/tests/Generator/RandomGeneratorFactoryTest.php +19 -0
  444. package/vendor/ramsey/uuid/tests/Generator/TimeGeneratorFactoryTest.php +33 -0
  445. package/vendor/ramsey/uuid/tests/Generator/UnixTimeGeneratorTest.php +204 -0
  446. package/vendor/ramsey/uuid/tests/Guid/FieldsTest.php +235 -0
  447. package/vendor/ramsey/uuid/tests/Guid/GuidBuilderTest.php +33 -0
  448. package/vendor/ramsey/uuid/tests/Math/BrickMathCalculatorTest.php +116 -0
  449. package/vendor/ramsey/uuid/tests/Nonstandard/FieldsTest.php +84 -0
  450. package/vendor/ramsey/uuid/tests/Nonstandard/UuidBuilderTest.php +33 -0
  451. package/vendor/ramsey/uuid/tests/Nonstandard/UuidV6Test.php +192 -0
  452. package/vendor/ramsey/uuid/tests/Provider/Dce/SystemDceSecurityProviderTest.php +505 -0
  453. package/vendor/ramsey/uuid/tests/Provider/Node/FallbackNodeProviderTest.php +87 -0
  454. package/vendor/ramsey/uuid/tests/Provider/Node/RandomNodeProviderTest.php +124 -0
  455. package/vendor/ramsey/uuid/tests/Provider/Node/StaticNodeProviderTest.php +58 -0
  456. package/vendor/ramsey/uuid/tests/Provider/Node/SystemNodeProviderTest.php +950 -0
  457. package/vendor/ramsey/uuid/tests/Provider/Time/FixedTimeProviderTest.php +41 -0
  458. package/vendor/ramsey/uuid/tests/Provider/Time/SystemTimeProviderTest.php +20 -0
  459. package/vendor/ramsey/uuid/tests/Rfc4122/FieldsTest.php +260 -0
  460. package/vendor/ramsey/uuid/tests/Rfc4122/UuidBuilderTest.php +145 -0
  461. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV1Test.php +123 -0
  462. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV2Test.php +214 -0
  463. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV3Test.php +56 -0
  464. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV4Test.php +56 -0
  465. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV5Test.php +56 -0
  466. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV6Test.php +221 -0
  467. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV7Test.php +131 -0
  468. package/vendor/ramsey/uuid/tests/Rfc4122/UuidV8Test.php +56 -0
  469. package/vendor/ramsey/uuid/tests/Rfc4122/ValidatorTest.php +122 -0
  470. package/vendor/ramsey/uuid/tests/Rfc4122/VariantTraitTest.php +109 -0
  471. package/vendor/ramsey/uuid/tests/TestCase.php +29 -0
  472. package/vendor/ramsey/uuid/tests/Type/DecimalTest.php +305 -0
  473. package/vendor/ramsey/uuid/tests/Type/HexadecimalTest.php +112 -0
  474. package/vendor/ramsey/uuid/tests/Type/IntegerTest.php +235 -0
  475. package/vendor/ramsey/uuid/tests/Type/TimeTest.php +120 -0
  476. package/vendor/ramsey/uuid/tests/UuidFactoryTest.php +233 -0
  477. package/vendor/ramsey/uuid/tests/UuidTest.php +1910 -0
  478. package/vendor/ramsey/uuid/tests/Validator/GenericValidatorTest.php +98 -0
  479. package/vendor/ramsey/uuid/tests/benchmark/GuidConversionBench.php +43 -0
  480. package/vendor/ramsey/uuid/tests/benchmark/NonLazyUuidConversionBench.php +39 -0
  481. package/vendor/ramsey/uuid/tests/benchmark/UuidFieldExtractionBench.php +86 -0
  482. package/vendor/ramsey/uuid/tests/benchmark/UuidGenerationBench.php +113 -0
  483. package/vendor/ramsey/uuid/tests/benchmark/UuidSerializationBench.php +206 -0
  484. package/vendor/ramsey/uuid/tests/benchmark/UuidStringConversionBench.php +257 -0
  485. package/vendor/ramsey/uuid/tests/bootstrap.php +12 -0
  486. package/vendor/ramsey/uuid/tests/static-analysis/UuidIsImmutable.php +96 -0
  487. package/vendor/ramsey/uuid/tests/static-analysis/UuidIsNeverEmpty.php +36 -0
  488. package/vendor/ramsey/uuid/tests/static-analysis/ValidUuidIsNonEmpty.php +44 -0
  489. package/vendor/ramsey/uuid/tests/static-analysis/stubs.php +33 -0
  490. package/vendor/symfony/polyfill-ctype/Ctype.php +232 -0
  491. package/vendor/symfony/polyfill-ctype/LICENSE +19 -0
  492. package/vendor/symfony/polyfill-ctype/README.md +12 -0
  493. package/vendor/symfony/polyfill-ctype/bootstrap.php +50 -0
  494. package/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -0
  495. package/vendor/symfony/polyfill-ctype/composer.json +41 -0
  496. package/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
  497. package/vendor/symfony/polyfill-mbstring/Mbstring.php +947 -0
  498. package/vendor/symfony/polyfill-mbstring/README.md +13 -0
  499. package/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
  500. package/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -0
  501. package/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
  502. package/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -0
  503. package/vendor/symfony/polyfill-mbstring/bootstrap.php +151 -0
  504. package/vendor/symfony/polyfill-mbstring/bootstrap80.php +147 -0
  505. package/vendor/symfony/polyfill-mbstring/composer.json +41 -0
  506. package/vendor/symfony/polyfill-php80/LICENSE +19 -0
  507. package/vendor/symfony/polyfill-php80/Php80.php +115 -0
  508. package/vendor/symfony/polyfill-php80/PhpToken.php +103 -0
  509. package/vendor/symfony/polyfill-php80/README.md +25 -0
  510. package/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -0
  511. package/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -0
  512. package/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -0
  513. package/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -0
  514. package/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -0
  515. package/vendor/symfony/polyfill-php80/bootstrap.php +42 -0
  516. package/vendor/symfony/polyfill-php80/composer.json +40 -0
  517. package/vendor/vlucas/phpdotenv/.editorconfig +15 -0
  518. package/vendor/vlucas/phpdotenv/.gitattributes +17 -0
  519. package/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
  520. package/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
  521. package/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
  522. package/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
  523. package/vendor/vlucas/phpdotenv/.github/workflows/static.yml +74 -0
  524. package/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
  525. package/vendor/vlucas/phpdotenv/LICENSE +30 -0
  526. package/vendor/vlucas/phpdotenv/Makefile +26 -0
  527. package/vendor/vlucas/phpdotenv/README.md +363 -0
  528. package/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
  529. package/vendor/vlucas/phpdotenv/composer.json +60 -0
  530. package/vendor/vlucas/phpdotenv/phpstan-baseline.neon +21 -0
  531. package/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
  532. package/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
  533. package/vendor/vlucas/phpdotenv/psalm-baseline.xml +28 -0
  534. package/vendor/vlucas/phpdotenv/psalm.xml +13 -0
  535. package/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -0
  536. package/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -0
  537. package/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -0
  538. package/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -0
  539. package/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -0
  540. package/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -0
  541. package/vendor/vlucas/phpdotenv/src/Loader/Loader.php +47 -0
  542. package/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -0
  543. package/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -0
  544. package/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -0
  545. package/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +300 -0
  546. package/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -0
  547. package/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -0
  548. package/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -0
  549. package/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -0
  550. package/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -0
  551. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -0
  552. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -0
  553. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -0
  554. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +89 -0
  555. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -0
  556. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -0
  557. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -0
  558. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -0
  559. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -0
  560. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -0
  561. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -0
  562. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +89 -0
  563. package/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -0
  564. package/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -0
  565. package/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -0
  566. package/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -0
  567. package/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -0
  568. package/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -0
  569. package/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -0
  570. package/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -0
  571. package/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -0
  572. package/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -0
  573. package/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -0
  574. package/vendor/vlucas/phpdotenv/src/Util/Str.php +98 -0
  575. package/vendor/vlucas/phpdotenv/src/Validator.php +209 -0
  576. package/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
  577. package/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
  578. package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
  579. package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
  580. package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
  581. package/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
  582. package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
  583. package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
  584. package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
  585. package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
  586. package/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
  587. package/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
  588. package/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
  589. package/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
  590. package/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
  591. package/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
  592. package/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
  593. package/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
  594. package/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
  595. package/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
  596. package/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
  597. package/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
  598. package/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
  599. package/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
  600. package/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
  601. package/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
  602. package/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
  603. package/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
  604. package/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
  605. package/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
  606. package/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
  607. package/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
  608. package/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
  609. package/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +16 -0
  610. 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