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,260 @@
1
+ .. _database:
2
+
3
+ ===================
4
+ Using In a Database
5
+ ===================
6
+
7
+ .. tip::
8
+
9
+ `ramsey/uuid-doctrine`_ allows the use of ramsey/uuid as a `Doctrine field
10
+ type`_. If you use Doctrine, it's a great option for working with UUIDs and
11
+ databases.
12
+
13
+ There are several strategies to consider when working with UUIDs in a database.
14
+ Among these are whether to store the string representation or bytes and whether
15
+ the UUID column should be treated as a primary key. We'll discuss a few of these
16
+ approaches here, but the final decision on how to use UUIDs in a database is up
17
+ to you since your needs will be different from those of others.
18
+
19
+ .. note::
20
+
21
+ All database code examples in this section assume the use of `MariaDB`_ and
22
+ `PHP Data Objects (PDO)`_. If using a different database engine or
23
+ connection library, your code will differ, but the general concepts should
24
+ remain the same.
25
+
26
+
27
+ .. _database.string:
28
+
29
+ Storing As a String
30
+ ###################
31
+
32
+ Perhaps the easiest way to store a UUID to a database is to create a ``char(36)``
33
+ column and store the UUID as a string. When stored as a string, UUIDs require
34
+ no special treatment in SQL statements or when displaying them.
35
+
36
+ The primary drawback is the size. At 36 characters, UUIDs can take up a lot of
37
+ space, and when handling a lot of data, this can add up.
38
+
39
+ .. code-block:: sql
40
+ :caption: Create a table with a column for UUIDs
41
+ :name: database.uuid-column-example
42
+
43
+ CREATE TABLE `notes` (
44
+ `uuid` char(36) NOT NULL,
45
+ `notes` text NOT NULL
46
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
47
+
48
+ Using this database table, we can store the string UUID using code similar to
49
+ this (assume some of the variables in this example have been set beforehand):
50
+
51
+ .. code-block:: php
52
+ :caption: Store a string UUID to the uuid column
53
+ :name: database.uuid-column-store-example
54
+
55
+ use Ramsey\Uuid\Uuid;
56
+
57
+ $uuid = Uuid::uuid4();
58
+
59
+ $dbh = new PDO($dsn, $username, $password);
60
+
61
+ $sth = $dbh->prepare('
62
+ INSERT INTO notes (
63
+ uuid,
64
+ notes
65
+ ) VALUES (
66
+ :uuid,
67
+ :notes
68
+ )
69
+ ');
70
+
71
+ $sth->execute([
72
+ ':uuid' => $uuid->toString(),
73
+ ':notes' => $notes,
74
+ ]);
75
+
76
+
77
+ .. _database.bytes:
78
+
79
+ Storing As Bytes
80
+ ################
81
+
82
+ In :ref:`the previous example <database.uuid-column-store-example>`, we saw how
83
+ to store the string representation of a UUID to a ``char(36)`` column. As
84
+ discussed, the primary drawback is the size. However, if we store the UUID in
85
+ byte form, we only need a ``char(16)`` column, saving over half the space.
86
+
87
+ The primary drawback with this approach is ease-of-use. Since the UUID bytes are
88
+ stored in the database, querying and selecting data becomes more difficult.
89
+
90
+ .. code-block:: sql
91
+ :caption: Create a table with a column for UUID bytes
92
+ :name: database.uuid-bytes-example
93
+
94
+ CREATE TABLE `notes` (
95
+ `uuid` char(16) NOT NULL,
96
+ `notes` text NOT NULL
97
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
98
+
99
+ Using this database table, we can store the UUID bytes using code similar to
100
+ this (again, assume some of the variables in this example have been set
101
+ beforehand):
102
+
103
+ .. code-block:: php
104
+ :caption: Store UUID bytes to the uuid column
105
+ :name: database.uuid-bytes-store-example
106
+
107
+ $sth->execute([
108
+ ':uuid' => $uuid->getBytes(),
109
+ ':notes' => $notes,
110
+ ]);
111
+
112
+ Now, when we ``SELECT`` the records from the database, we will need to convert
113
+ the ``notes.uuid`` column to a ramsey/uuid object, so that we are able to use
114
+ it.
115
+
116
+ .. code-block:: php
117
+ :caption: Covert database UUID bytes to UuidInterface instance
118
+ :name: database.uuid-bytes-convert-example
119
+
120
+ use Ramsey\Uuid\Uuid;
121
+
122
+ $uuid = Uuid::uuid4();
123
+
124
+ $dbh = new PDO($dsn, $username, $password);
125
+
126
+ $sth = $dbh->prepare('SELECT uuid, notes FROM notes');
127
+ $sth->execute();
128
+
129
+ foreach ($sth->fetchAll() as $record) {
130
+ $uuid = Uuid::fromBytes($record['uuid']);
131
+
132
+ printf(
133
+ "UUID: %s\nNotes: %s\n\n",
134
+ $uuid->toString(),
135
+ $record['notes']
136
+ );
137
+ }
138
+
139
+ We'll also need to query the database using the bytes.
140
+
141
+ .. code-block:: php
142
+ :caption: Look-up the record from the database, using the UUID bytes
143
+ :name: database.uuid-bytes-select-example
144
+
145
+ use Ramsey\Uuid\Uuid;
146
+
147
+ $uuid = Uuid::fromString('278198d3-fa96-4833-abab-82f9e67f4712');
148
+
149
+ $dbh = new PDO($dsn, $username, $password);
150
+
151
+ $sth = $dbh->prepare('
152
+ SELECT uuid, notes
153
+ FROM notes
154
+ WHERE uuid = :uuid
155
+ ');
156
+
157
+ $sth->execute([
158
+ ':uuid' => $uuid->getBytes(),
159
+ ]);
160
+
161
+ $record = $sth->fetch();
162
+
163
+ if ($record) {
164
+ $uuid = Uuid::fromBytes($record['uuid']);
165
+
166
+ printf(
167
+ "UUID: %s\nNotes: %s\n\n",
168
+ $uuid->toString(),
169
+ $record['notes']
170
+ );
171
+ }
172
+
173
+
174
+ .. _database.pk:
175
+
176
+ Using As a Primary Key
177
+ ######################
178
+
179
+ In the previous examples, we didn't use the UUID as a primary key, but it's
180
+ logical to use the ``notes.uuid`` field as a primary key. There's nothing wrong
181
+ with this approach, but there are a couple of points to consider:
182
+
183
+ * InnoDB stores data in the primary key order
184
+ * All the secondary keys also contain the primary key (in InnoDB)
185
+
186
+ We'll deal with the first point in the section, :ref:`database.order`. For the
187
+ second point, if you are using the string version of the UUID (i.e.,
188
+ ``char(36)``), then not only will the primary key be large and take up a lot of
189
+ space, but every secondary key that uses that primary key will also be much
190
+ larger.
191
+
192
+ For this reason, if you choose to use UUIDs as primary keys, it might be worth
193
+ the drawbacks to use UUID bytes (i.e., ``char(16)``) instead of the string
194
+ representation (see :ref:`database.bytes`).
195
+
196
+ .. hint::
197
+
198
+ If not using InnoDB with MySQL or MariaDB, consult your database engine
199
+ documentation to find whether it also has similar properties that will
200
+ factor into your use of UUIDs.
201
+
202
+
203
+ .. _database.uk:
204
+
205
+ Using As a Unique Key
206
+ #####################
207
+
208
+ Instead of :ref:`using UUIDs as a primary key <database.pk>`, you may choose to
209
+ use an ``AUTO_INCREMENT`` column with the ``int unsigned`` data type as a
210
+ primary key, while using a ``char(36)`` for UUIDs and setting a ``UNIQUE KEY``
211
+ on this column. This will aid in lookups while helping keep your secondary keys
212
+ small.
213
+
214
+ .. code-block:: sql
215
+ :caption: Use an auto-incrementing column as primary key, with UUID as a unique key
216
+ :name: database.id-auto-increment-uuid-unique-key
217
+
218
+ CREATE TABLE `notes` (
219
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
220
+ `uuid` char(36) NOT NULL,
221
+ `notes` text NOT NULL,
222
+ PRIMARY KEY (`id`),
223
+ UNIQUE KEY `notes_uuid_uk` (`uuid`)
224
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
225
+
226
+
227
+ .. _database.order:
228
+
229
+ Insertion Order and Sorting
230
+ ###########################
231
+
232
+ UUID versions 1, 2, 3, 4, and 5 are not *monotonically increasing*. If using
233
+ these versions as primary keys, the inserts will be random, and the data will be
234
+ scattered on disk (for InnoDB). Over time, as the database size grows, lookups
235
+ will become slower and slower.
236
+
237
+ .. tip::
238
+
239
+ See Percona's "`Storing UUID Values in MySQL`_" post, for more details on
240
+ the performance of UUIDs as primary keys.
241
+
242
+ To minimize these problems, two solutions have been devised:
243
+
244
+ 1. :ref:`rfc4122.version6` UUIDs
245
+ 2. :ref:`rfc4122.version7` UUIDs
246
+
247
+ .. note::
248
+
249
+ We previously recommended the use of the :ref:`timestamp-first COMB
250
+ <customize.timestamp-first-comb-codec>` or :ref:`ordered-time
251
+ <customize.ordered-time-codec>` codecs to solve these problems. However,
252
+ UUID versions 6 and 7 were defined to provide these solutions in a
253
+ standardized way.
254
+
255
+
256
+ .. _ramsey/uuid-doctrine: https://github.com/ramsey/uuid-doctrine
257
+ .. _Doctrine field type: https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/types.html
258
+ .. _MariaDB: https://mariadb.org
259
+ .. _PHP Data Objects (PDO): https://www.php.net/pdo
260
+ .. _Storing UUID Values in MySQL: https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/
@@ -0,0 +1,132 @@
1
+ .. _faq:
2
+
3
+ =================================
4
+ Frequently Asked Questions (FAQs)
5
+ =================================
6
+
7
+ .. contents::
8
+ :local:
9
+ :depth: 1
10
+
11
+
12
+ .. _faq.rhumsaa-abandoned:
13
+
14
+ How do I fix "rhumsaa/uuid is abandoned" messages?
15
+ ##################################################
16
+
17
+ When installing your project's dependencies using Composer, you might see the
18
+ following message:
19
+
20
+ .. code-block:: text
21
+
22
+ Package rhumsaa/uuid is abandoned; you should avoid using it. Use
23
+ ramsey/uuid instead.
24
+
25
+ Don't panic. Simply execute the following commands with Composer:
26
+
27
+ .. code-block:: bash
28
+
29
+ composer remove rhumsaa/uuid
30
+ composer require ramsey/uuid=^2.9
31
+
32
+ After doing so, you will have the latest ramsey/uuid package in the 2.x series,
33
+ and there will be no need to modify any code; the namespace in the 2.x series is
34
+ still ``Rhumsaa``.
35
+
36
+
37
+ .. _faq.final:
38
+
39
+ Why does ramsey/uuid use ``final``?
40
+ ###################################
41
+
42
+ You might notice that many of the concrete classes returned in ramsey/uuid are
43
+ marked as ``final``. There are specific reasons for this choice, and I will
44
+ offer a few solutions for those looking to extend or mock the classes for
45
+ testing purposes.
46
+
47
+ But Why?
48
+ --------
49
+
50
+ .. raw:: html
51
+
52
+ <div style="width:100%;height:0;padding-bottom:56%;position:relative;">
53
+ <iframe src="https://giphy.com/embed/eauCbbW6MvqKI" width="100%" height="100%" style="position:absolute" frameBorder="0" class="giphy-embed" allowFullScreen></iframe>
54
+ </div>
55
+ <p><a href="https://giphy.com/gifs/eauCbbW6MvqKI">via GIPHY</a></p>
56
+
57
+ First, let's take a look at why ramsey/uuid uses ``final``.
58
+
59
+ UUIDs are defined by a set of rules --- published as `RFC 4122`_ --- and those
60
+ rules shouldn't change. If they do, then it's no longer a UUID --- at least not
61
+ as defined by `RFC 4122`_.
62
+
63
+ As an example, let's think about :php:class:`Rfc4122\\UuidV1
64
+ <Ramsey\\Uuid\\Rfc4122\\UuidV1>`. If our application wants to do something
65
+ special with this type, it might use the ``instanceof`` operator to check that a
66
+ variable is a UuidV1, or it might use a type hint on a method argument. If a
67
+ third-party library passes a UUID object to us that extends UuidV1 but
68
+ overrides some very important internal logic, then we may no longer have a
69
+ version 1 UUID. Perhaps we can all be adults and play nicely, but ramsey/uuid
70
+ cannot make any guarantees for any subclasses of UuidV1.
71
+
72
+ However, ramsey/uuid *can* make guarantees about classes that implement
73
+ :php:interface:`UuidInterface <Ramsey\\Uuid\\UuidInterface>` or
74
+ :php:interface:`Rfc4122\\UuidInterface <Ramsey\\Uuid\\Rfc4122\\UuidInterface>`.
75
+
76
+ So, if we're working with an instance of a class that is marked ``final``, we
77
+ can guarantee that the rules for the creation of that object will not change,
78
+ even if a third-party library passes us an instance of the same class.
79
+
80
+ This is the reason why ramsey/uuid specifies certain :ref:`argument and return
81
+ types <reference.types>` that are marked ``final``. Since these are ``final``,
82
+ ramsey/uuid is able to guarantee the type of data these value objects contain.
83
+ :php:class:`Type\\Integer <Ramsey\\Uuid\\Type\\Integer>` should never contain
84
+ any characters other than numeral digits, and :php:class:`Type\\Hexadecimal
85
+ <Ramsey\\Uuid\\Type\\Hexadecimal>` should never contain any characters other
86
+ than hexadecimal digits. If other libraries could extend these and return them
87
+ from UUID instances, then ramsey/uuid cannot guarantee their values.
88
+
89
+ This is very similar to using strict types with ``int``, ``float``, or ``bool``.
90
+ These types cannot change, so think of final classes in ramsey/uuid as types
91
+ that cannot change.
92
+
93
+ Overriding Behavior
94
+ -------------------
95
+
96
+ You may override the behavior of ramsey/uuid as much as you want. Despite the
97
+ use of ``final``, the library is very flexible. Take a look at the myriad
98
+ opportunities to change how the library works:
99
+
100
+ * :ref:`rfc4122.version1.random`
101
+ * :ref:`customize.timestamp-first-comb-codec`
102
+ * :ref:`customize.factory`
103
+ * :ref:`And more... <customize>`
104
+
105
+ ramsey/uuid is able to provide this flexibility through the use of `interfaces`_,
106
+ `factories`_, and `dependency injection`_.
107
+
108
+ At the same time, ramsey/uuid is able to guarantee that neither a
109
+ :php:class:`UuidV1 <Ramsey\\Uuid\\Rfc4122\\UuidV1>` nor a
110
+ :php:class:`UuidV4 <Ramsey\\Uuid\\Rfc4122\\UuidV4>` nor an
111
+ :php:class:`Integer <Ramsey\\Uuid\\Type\\Integer>` nor a
112
+ :php:class:`Time <Ramsey\\Uuid\\Type\\Time>`, etc. will ever change because of
113
+ `downstream`_ code.
114
+
115
+ UUIDs have specific rules that make them practically unique. ramsey/uuid ensures
116
+ that other code cannot change this expectation while allowing your code and
117
+ third-party libraries to change how UUIDs are generated and to return different
118
+ types of UUIDs not specified by `RFC 4122`_.
119
+
120
+ Testing With UUIDs
121
+ ------------------
122
+
123
+ Sometimes, the use of ``final`` can throw a wrench in our ability to write
124
+ tests, but it doesn't have to be that way. To learn a few techniques for using
125
+ ramsey/uuid instances in your tests, take a look at :ref:`testing`.
126
+
127
+
128
+ .. _RFC 4122: https://tools.ietf.org/html/rfc4122
129
+ .. _interfaces: https://www.php.net/interfaces
130
+ .. _factories: https://en.wikipedia.org/wiki/Factory_%28object-oriented_programming%29
131
+ .. _dependency injection: https://en.wikipedia.org/wiki/Dependency_injection
132
+ .. _downstream: https://en.wikipedia.org/wiki/Downstream_(software_development)
@@ -0,0 +1,51 @@
1
+ .. _index:
2
+
3
+ ==================
4
+ ramsey/uuid Manual
5
+ ==================
6
+
7
+ For `ramsey/uuid <https://github.com/ramsey/uuid>`_ |version|. Updated on |today|.
8
+
9
+ This work is licensed under the `Creative Commons Attribution 4.0 International
10
+ <https://creativecommons.org/licenses/by/4.0/>`_ license.
11
+
12
+ .. admonition:: Support ramsey/uuid!
13
+ :class: tip
14
+
15
+ Your support encourages and motivates me to continue building and
16
+ maintaining open source software. If you benefit from my work, consider
17
+ supporting me financially.
18
+
19
+ You may support ramsey/uuid as an individual through `GitHub Sponsors
20
+ <https://github.com/sponsors/ramsey>`_ or as a company through the
21
+ **Tidelift Subscription**. With the Tidelift Subscription, you can get
22
+ commercial maintenance and assurances, while supporting my work.
23
+
24
+ Learn more about :ref:`ramsey/uuid for enterprise <tidelift>`!
25
+
26
+ Contents
27
+ --------
28
+
29
+ .. toctree::
30
+ :maxdepth: 2
31
+ :includehidden:
32
+
33
+ introduction
34
+ quickstart
35
+ rfc4122
36
+ nonstandard
37
+ database
38
+ customize
39
+ testing
40
+ upgrading
41
+ FAQs <faq>
42
+ reference
43
+ copyright
44
+ tidelift
45
+
46
+
47
+ Indices and Tables
48
+ ------------------
49
+
50
+ * :ref:`genindex`
51
+ * :ref:`search`
@@ -0,0 +1,31 @@
1
+ .. _introduction:
2
+
3
+ ============
4
+ Introduction
5
+ ============
6
+
7
+ ramsey/uuid is a PHP library for generating and working with `RFC 4122`_ version
8
+ 1, 2, 3, 4, 5, 6, and 7 universally unique identifiers (UUID). ramsey/uuid also
9
+ supports optional and non-standard features, such as GUIDs and other approaches
10
+ for encoding/decoding UUIDs.
11
+
12
+ What Is a UUID?
13
+ ###############
14
+
15
+ A universally unique identifier, or UUID, is a 128-bit unsigned integer, usually
16
+ represented as a hexadecimal string split into five groups with dashes. The most
17
+ widely-known and used types of UUIDs are defined by `RFC 4122`_.
18
+
19
+ A UUID, when encoded in hexadecimal string format, looks like:
20
+
21
+ .. code-block:: text
22
+
23
+ ebb5c735-0308-4e3c-9aea-8a270aebfe15
24
+
25
+ The probability of duplicating a UUID is close to zero, so they are a great
26
+ choice for generating unique identifiers in distributed systems.
27
+
28
+ UUIDs can also be stored in binary format, as a string of 16 bytes.
29
+
30
+
31
+ .. _RFC 4122: https://tools.ietf.org/html/rfc4122
@@ -0,0 +1,152 @@
1
+ .. _nonstandard.guid:
2
+
3
+ ===================================
4
+ Globally Unique Identifiers (GUIDs)
5
+ ===================================
6
+
7
+ .. tip::
8
+
9
+ Using these techniques to work with GUIDs is useful if you're working with
10
+ identifiers that have been stored in GUID byte order. For example, this is
11
+ the case if working with the ``UNIQUEIDENTIFIER`` data type in Microsoft SQL
12
+ Server. This is a GUID, stored as a 16-byte binary string. If working
13
+ directly with the bytes, you may use the GUID functionality in ramsey/uuid
14
+ to properly handle this data type.
15
+
16
+ According to the Windows Dev Center article on `GUID structure`_, "GUIDs are the
17
+ Microsoft implementation of the distributed computing environment (DCE)
18
+ universally unique identifier." For all intents and purposes, a GUID string
19
+ representation is identical to that of an `RFC 4122`_ UUID. For historical
20
+ reasons, *the byte order is not*.
21
+
22
+ The `.NET Framework documentation`_ explains:
23
+
24
+ Note that the order of bytes in the returned byte array is different from
25
+ the string representation of a Guid value. The order of the beginning
26
+ four-byte group and the next two two-byte groups is reversed, whereas the
27
+ order of the last two-byte group and the closing six-byte group is the same.
28
+
29
+ This is best explained by example.
30
+
31
+ .. code-block:: php
32
+ :caption: Decoding a GUID from byte representation
33
+ :name: nonstandard.guid.decode-bytes-example
34
+
35
+ use Ramsey\Uuid\FeatureSet;
36
+ use Ramsey\Uuid\UuidFactory;
37
+
38
+ // The bytes of a GUID previously stored in some datastore.
39
+ $guidBytes = hex2bin('0eab93fc9ec9584b975e9c5e68c53624');
40
+
41
+ $useGuids = true;
42
+ $featureSet = new FeatureSet($useGuids);
43
+ $factory = new UuidFactory($featureSet);
44
+
45
+ $guid = $factory->fromBytes($guidBytes);
46
+
47
+ printf(
48
+ "Class: %s\nGUID: %s\nVersion: %d\nBytes: %s\n",
49
+ get_class($guid),
50
+ $guid->toString(),
51
+ $guid->getFields()->getVersion()?->value,
52
+ bin2hex($guid->getBytes())
53
+ );
54
+
55
+ This transforms the bytes of a GUID, as represented by ``$guidBytes``, into a
56
+ :php:class:`Ramsey\\Uuid\\Guid\\Guid` instance and prints out some details about
57
+ it. It looks something like this:
58
+
59
+ .. code-block:: text
60
+
61
+ Class: Ramsey\Uuid\Guid\Guid
62
+ GUID: fc93ab0e-c99e-4b58-975e-9c5e68c53624
63
+ Version: 4
64
+ Bytes: 0eab93fc9ec9584b975e9c5e68c53624
65
+
66
+ Note the difference between the string GUID and the bytes. The bytes are
67
+ arranged like this:
68
+
69
+ .. code-block:: text
70
+
71
+ 0e ab 93 fc 9e c9 58 4b 97 5e 9c 5e 68 c5 36 24
72
+
73
+ In an `RFC 4122`_ UUID, the bytes are stored in the same order as you see
74
+ presented in the string representation. This is often called *network byte
75
+ order*, or *big-endian* order. In a GUID, the order of the bytes are reversed
76
+ in each grouping for the first 64 bits and stored in *little-endian* order. The
77
+ remaining 64 bits are stored in network byte order. See `Endianness
78
+ <#nonstandard-guid-endianness>`_ to learn more.
79
+
80
+ .. caution::
81
+
82
+ The bytes themselves do not indicate their order. If you decode GUID bytes
83
+ as a UUID or UUID bytes as a GUID, you will get the wrong values. However,
84
+ you can always create a GUID or UUID from the same string value; the bytes
85
+ for each will be in a different order, even though the string is the same.
86
+
87
+ The key is to know ahead of time in what order the bytes are stored. Then,
88
+ you will be able to decode them using the correct approach.
89
+
90
+
91
+ Converting GUIDs to UUIDs
92
+ #########################
93
+
94
+ Continuing from the example, :ref:`nonstandard.guid.decode-bytes-example`, we
95
+ can take the GUID string representation and convert it into a standard UUID.
96
+
97
+ .. code-block:: php
98
+ :caption: Convert a GUID to a UUID
99
+ :name: nonstandard.guid.convert-example
100
+
101
+ $uuid = Uuid::fromString($guid->toString());
102
+
103
+ printf(
104
+ "Class: %s\nUUID: %s\nVersion: %d\nBytes: %s\n",
105
+ get_class($uuid),
106
+ $uuid->toString(),
107
+ $uuid->getFields()->getVersion()?->value,
108
+ bin2hex($uuid->getBytes())
109
+ );
110
+
111
+ Because the GUID was a version 4, random UUID, this creates an instance of
112
+ :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV4` from the GUID string and prints out a
113
+ few details about it. It looks something like this:
114
+
115
+ .. code-block:: text
116
+
117
+ Class: Ramsey\Uuid\Rfc4122\UuidV4
118
+ UUID: fc93ab0e-c99e-4b58-975e-9c5e68c53624
119
+ Version: 4
120
+ Bytes: fc93ab0ec99e4b58975e9c5e68c53624
121
+
122
+ Note how the UUID string is identical to the GUID string. However, the byte
123
+ order is different, since they are in big-endian order. The bytes are now
124
+ arranged like this:
125
+
126
+ .. code-block:: text
127
+
128
+ fc 93 ab 0e c9 9e 4b 58 97 5e 9c 5e 68 c5 36 24
129
+
130
+
131
+ .. admonition:: Endianness
132
+ :name: nonstandard.guid.endianness
133
+
134
+ Big-endian and little-endian refer to the ordering of bytes in a multi-byte
135
+ number. Big-endian order places the most significant byte first, followed by
136
+ the other bytes in descending order. Little-endian order places the least
137
+ significant byte first, followed by the other bytes in ascending order.
138
+
139
+ Take the hexadecimal number ``0x1234``, for example. In big-endian order,
140
+ the bytes are stored as ``12 34``, and in little-endian order, they are
141
+ stored as ``34 12``. In either case, the number is still ``0x1234``.
142
+
143
+ Networking protocols usually use big-endian ordering, while computer
144
+ processor architectures often use little-endian ordering.
145
+ The terms originated in Jonathan Swift's *Gulliver's Travels*, where the
146
+ Lilliputians argue over which end of a hard-boiled egg is the best end to
147
+ crack.
148
+
149
+
150
+ .. _GUID structure: https://docs.microsoft.com/en-us/windows/win32/api/guiddef/ns-guiddef-guid#remarks
151
+ .. _RFC 4122: https://tools.ietf.org/html/rfc4122
152
+ .. _.NET Framework documentation: https://docs.microsoft.com/en-us/dotnet/api/system.guid.tobytearray#remarks
@@ -0,0 +1,49 @@
1
+ .. _nonstandard.other:
2
+
3
+ =======================
4
+ Other Nonstandard UUIDs
5
+ =======================
6
+
7
+ Sometimes, you might encounter a string that looks like a UUID but doesn't
8
+ follow the `RFC 4122`_ specification. Take this string, for example:
9
+
10
+ .. code-block:: text
11
+
12
+ d95959bc-2ff5-43eb-fccd-14883ba8f174
13
+
14
+ At a glance, this looks like a valid UUID, but the variant bits don't match RFC
15
+ 4122. Instead of throwing a validation exception, ramsey/uuid will assume this
16
+ is a UUID, since it fits the format and has 128 bits, but it will represent it
17
+ as a :php:class:`Ramsey\\Uuid\\Nonstandard\\Uuid`.
18
+
19
+ .. code-block:: php
20
+ :caption: Create an instance of Nonstandard\\Uuid from a non-RFC 4122 UUID
21
+
22
+ use Ramsey\Uuid\Uuid;
23
+
24
+ $uuid = Uuid::fromString('d95959bc-2ff5-43eb-fccd-14883ba8f174');
25
+
26
+ printf(
27
+ "Class: %s\nUUID: %s\nVersion: %d\nVariant: %s\n",
28
+ get_class($uuid),
29
+ $uuid->toString(),
30
+ $uuid->getFields()->getVersion()?->value,
31
+ $uuid->getFields()->getVariant()?->value
32
+ );
33
+
34
+ This will create a Nonstandard\\Uuid from the given string and print out a few
35
+ details about it. It will look something like this:
36
+
37
+ .. code-block:: text
38
+
39
+ Class: Ramsey\Uuid\Nonstandard\Uuid
40
+ UUID: d95959bc-2ff5-43eb-fccd-14883ba8f174
41
+ Version: 0
42
+ Variant: 7
43
+
44
+ Note that the version is 0. Since the variant is 7, and there is no
45
+ formal specification for this variant of UUID, ramsey/uuid has no way of knowing
46
+ what type of UUID this is.
47
+
48
+
49
+ .. _RFC 4122: https://tools.ietf.org/html/rfc4122
@@ -0,0 +1,17 @@
1
+ .. _nonstandard.version6:
2
+
3
+ =========================
4
+ Version 6: Reordered Time
5
+ =========================
6
+
7
+ .. attention::
8
+
9
+ This documentation has moved to :ref:`RFC 4122 UUIDs: Version 6: Reordered
10
+ Time <rfc4122.version6>`.
11
+
12
+ Version 6 UUIDs have been promoted to the ``Rfc4122`` namespace. While still
13
+ in draft form, the version 6 format is not expected to change in any way
14
+ that breaks compatibility.
15
+
16
+ The :php:class:`Ramsey\\Uuid\\Nonstandard\\UuidV6` class is deprecated in
17
+ favor of :php:class:`Ramsey\\Uuid\\Rfc4122\\UuidV6`.