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,993 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Brick\Math\Tests;
6
+
7
+ use Brick\Math\BigInteger;
8
+ use Brick\Math\BigRational;
9
+ use Brick\Math\Exception\DivisionByZeroException;
10
+ use Brick\Math\Exception\MathException;
11
+ use Brick\Math\Exception\NumberFormatException;
12
+ use Brick\Math\Exception\RoundingNecessaryException;
13
+ use Brick\Math\RoundingMode;
14
+
15
+ /**
16
+ * Unit tests for class BigRational.
17
+ */
18
+ class BigRationalTest extends AbstractTestCase
19
+ {
20
+ /**
21
+ * @dataProvider providerNd
22
+ *
23
+ * @param string $numerator The expected numerator.
24
+ * @param string $denominator The expected denominator.
25
+ * @param string|int $n The input numerator.
26
+ * @param string|int $d The input denominator.
27
+ */
28
+ public function testNd(string $numerator, string $denominator, $n, $d) : void
29
+ {
30
+ $rational = BigRational::nd($n, $d);
31
+ self::assertBigRationalInternalValues($numerator, $denominator, $rational);
32
+ }
33
+
34
+ public function providerNd() : array
35
+ {
36
+ return [
37
+ ['7', '1', '7', 1],
38
+ ['7', '36', 7, 36],
39
+ ['-7', '36', 7, -36],
40
+ ['9', '15', '-9', -15],
41
+ ['-98765432109876543210', '12345678901234567890', '-98765432109876543210', '12345678901234567890'],
42
+ ];
43
+ }
44
+
45
+ public function testNdWithZeroDenominator() : void
46
+ {
47
+ $this->expectException(DivisionByZeroException::class);
48
+ BigRational::nd(1, 0);
49
+ }
50
+
51
+ /**
52
+ * @dataProvider providerOf
53
+ *
54
+ * @param string $numerator The expected numerator.
55
+ * @param string $denominator The expected denominator.
56
+ * @param string $string The string to parse.
57
+ */
58
+ public function testOf(string $numerator, string $denominator, string $string) : void
59
+ {
60
+ $rational = BigRational::of($string);
61
+ self::assertBigRationalInternalValues($numerator, $denominator, $rational);
62
+ }
63
+
64
+ public function providerOf() : array
65
+ {
66
+ return [
67
+ ['123', '456', '123/456'],
68
+ ['123', '456', '+123/456'],
69
+ ['-2345', '6789', '-2345/6789'],
70
+ ['123456', '1', '123456'],
71
+ ['-1234567', '1', '-1234567'],
72
+ ['0', '123', '-0/123'],
73
+ ['-1234567890987654321012345678909876543210', '9999', '-1234567890987654321012345678909876543210/9999'],
74
+ ['1230000', '1', '123e4'],
75
+ ['1125', '1000', '1.125'],
76
+ ];
77
+ }
78
+
79
+ public function testOfWithZeroDenominator() : void
80
+ {
81
+ $this->expectException(DivisionByZeroException::class);
82
+ BigRational::of('2/0');
83
+ }
84
+
85
+ /**
86
+ * @dataProvider providerOfInvalidString
87
+ *
88
+ * @param string $string An invalid string representation.
89
+ */
90
+ public function testOfInvalidString(string $string) : void
91
+ {
92
+ $this->expectException(NumberFormatException::class);
93
+ BigRational::of($string);
94
+ }
95
+
96
+ public function providerOfInvalidString() : array
97
+ {
98
+ return [
99
+ ['123/-456'],
100
+ ['1e4/2'],
101
+ ['1.2/3'],
102
+ ['1e2/3'],
103
+ [' 1/2'],
104
+ ['1/2 '],
105
+ ['+'],
106
+ ['-'],
107
+ ['/'],
108
+ ];
109
+ }
110
+
111
+ public function testZero() : void
112
+ {
113
+ self::assertBigRationalInternalValues('0', '1', BigRational::zero());
114
+ self::assertSame(BigRational::zero(), BigRational::zero());
115
+ }
116
+
117
+ public function testOne() : void
118
+ {
119
+ self::assertBigRationalInternalValues('1', '1', BigRational::one());
120
+ self::assertSame(BigRational::one(), BigRational::one());
121
+ }
122
+
123
+ public function testTen() : void
124
+ {
125
+ self::assertBigRationalInternalValues('10', '1', BigRational::ten());
126
+ self::assertSame(BigRational::ten(), BigRational::ten());
127
+ }
128
+
129
+ public function testAccessors() : void
130
+ {
131
+ $rational = BigRational::nd(123456789, 987654321);
132
+
133
+ self::assertBigIntegerEquals('123456789', $rational->getNumerator());
134
+ self::assertBigIntegerEquals('987654321', $rational->getDenominator());
135
+ }
136
+
137
+ /**
138
+ * @dataProvider providerMin
139
+ *
140
+ * @param array $values The values to compare.
141
+ * @param string $min The expected minimum value, in rational form.
142
+ */
143
+ public function testMin(array $values, string $min) : void
144
+ {
145
+ self::assertBigRationalEquals($min, BigRational::min(... $values));
146
+ }
147
+
148
+ public function providerMin() : array
149
+ {
150
+ return [
151
+ [['1/2', '1/4', '1/3'], '1/4'],
152
+ [['1/2', '0.1', '1/3'], '1/10'],
153
+ [['-0.25', '-0.3', '-1/8', '123456789123456789123456789', 2e25], '-3/10'],
154
+ [['1e30', '123456789123456789123456789/3', 2e26], '123456789123456789123456789/3'],
155
+ ];
156
+ }
157
+
158
+ public function testMinOfZeroValuesThrowsException() : void
159
+ {
160
+ $this->expectException(\InvalidArgumentException::class);
161
+ BigRational::min();
162
+ }
163
+
164
+ /**
165
+ * @dataProvider providerMax
166
+ *
167
+ * @param array $values The values to compare.
168
+ * @param string $max The expected maximum value, in rational form.
169
+ */
170
+ public function testMax(array $values, string $max) : void
171
+ {
172
+ self::assertBigRationalEquals($max, BigRational::max(... $values));
173
+ }
174
+
175
+ public function providerMax() : array
176
+ {
177
+ return [
178
+ [['-5532146515641651651321321064580/32453', '-1/2', '-1/99'], '-1/99'],
179
+ [['1e-30', '123456789123456789123456789/2', 2e25], '123456789123456789123456789/2'],
180
+ [['999/1000', '1'], '1'],
181
+ [[0, 0.9, -1.00], '9/10'],
182
+ [[0, 0.01, -1, -1.2], '1/100'],
183
+ [['1e-30', '15185185062185185062185185047/123', 2e25], '15185185062185185062185185047/123'],
184
+ [['1e-30', '15185185062185185062185185047/123', 2e26], '200000000000000000000000000'],
185
+ ];
186
+ }
187
+
188
+ public function testMaxOfZeroValuesThrowsException() : void
189
+ {
190
+ $this->expectException(\InvalidArgumentException::class);
191
+ BigRational::max();
192
+ }
193
+
194
+ /**
195
+ * @dataProvider providerSum
196
+ *
197
+ * @param array $values The values to add.
198
+ * @param string $sum The expected sum, in rational form.
199
+ */
200
+ public function testSum(array $values, string $sum) : void
201
+ {
202
+ self::assertBigRationalEquals($sum, BigRational::sum(... $values));
203
+ }
204
+
205
+ public function providerSum() : array
206
+ {
207
+ return [
208
+ [['-5532146515641651651321321064580/32453', '-1/2', '-1/99'], '-1095365010097047026961621574064593/6425694'],
209
+ [['1e-30', '123456789123456789123456789/2', 2e25], '163456789123456789123456789000000000000000000000000000002/2000000000000000000000000000000'],
210
+ [['999/1000', '1'], '1999/1000'],
211
+ [[0, 0.9, -1.00], '-1/10'],
212
+ [[0, 0.01, -1, -1.2], '-2190/1000'],
213
+ [['1e-30', '15185185062185185062185185047/123', 2e25], '17645185062185185062185185047000000000000000000000000000123/123000000000000000000000000000000'],
214
+ [['1e-30', '15185185062185185062185185047/123', 2e26], '39785185062185185062185185047000000000000000000000000000123/123000000000000000000000000000000'],
215
+ ];
216
+ }
217
+
218
+ public function testSumOfZeroValuesThrowsException() : void
219
+ {
220
+ $this->expectException(\InvalidArgumentException::class);
221
+ BigRational::sum();
222
+ }
223
+
224
+ /**
225
+ * @dataProvider providerQuotientAndRemainder
226
+ *
227
+ * @param string|int $rational The rational number to test.
228
+ * @param string $quotient The expected quotient.
229
+ * @param string $remainder The expected remainder.
230
+ */
231
+ public function testQuotientAndRemainder($rational, string $quotient, string $remainder) : void
232
+ {
233
+ $rational = BigRational::of($rational);
234
+
235
+ self::assertBigIntegerEquals($quotient, $rational->quotient());
236
+ self::assertBigIntegerEquals($remainder, $rational->remainder());
237
+
238
+ $quotientAndRemainder = $rational->quotientAndRemainder();
239
+
240
+ self::assertBigIntegerEquals($quotient, $quotientAndRemainder[0]);
241
+ self::assertBigIntegerEquals($remainder, $quotientAndRemainder[1]);
242
+ }
243
+
244
+ public function providerQuotientAndRemainder() : array
245
+ {
246
+ return [
247
+ ['1000/3', '333', '1'],
248
+ ['895/400', '2', '95'],
249
+ ['-2.5', '-2', '-5'],
250
+ [-2, '-2', '0'],
251
+ ];
252
+ }
253
+
254
+ /**
255
+ * @dataProvider providerPlus
256
+ *
257
+ * @param string $rational The rational number to test.
258
+ * @param string|int|BigInteger|BigRational $plus The number to add.
259
+ * @param string $expected The expected rational number result.
260
+ */
261
+ public function testPlus(string $rational, $plus, string $expected) : void
262
+ {
263
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->plus($plus));
264
+ }
265
+
266
+ public function providerPlus() : array
267
+ {
268
+ return [
269
+ ['123/456', 1, '579/456'],
270
+ ['123/456', BigInteger::of(2), '1035/456'],
271
+ ['123/456', BigRational::nd(2, 3), '1281/1368'],
272
+ ['234/567', '123/28', '76293/15876'],
273
+ ['-1234567890123456789/497', '79394345/109859892', '-135629495075630790047217323/54600366324'],
274
+ ['-1234567890123456789/999', '-98765/43210', '-53345678532234666518925/43166790'],
275
+ ['123/456789123456789123456789', '-987/654321987654321', '-450850864771369260370369260/298887167199121283949604203169112635269'],
276
+ ];
277
+ }
278
+
279
+ /**
280
+ * @dataProvider providerMinus
281
+ *
282
+ * @param string $rational The rational number to test.
283
+ * @param string $minus The number to subtract.
284
+ * @param string $expected The expected rational number result.
285
+ */
286
+ public function testMinus(string $rational, string $minus, string $expected) : void
287
+ {
288
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->minus($minus));
289
+ }
290
+
291
+ public function providerMinus() : array
292
+ {
293
+ return [
294
+ ['123/456', '1', '-333/456'],
295
+ ['234/567', '123/28', '-63189/15876'],
296
+ ['-1234567890123456789/497', '79394345/109859892', '-135629495075630868965196253/54600366324'],
297
+ ['-1234567890123456789/999', '-98765/43210', '-53345678532234469186455/43166790'],
298
+ ['123/456789123456789123456789', '-987/654321987654321', '450850864932332469333332226/298887167199121283949604203169112635269'],
299
+ ];
300
+ }
301
+
302
+ /**
303
+ * @dataProvider providerMultipliedBy
304
+ *
305
+ * @param string $rational The rational number to test.
306
+ * @param string $minus The number to multiply.
307
+ * @param string $expected The expected rational number result.
308
+ */
309
+ public function testMultipliedBy(string $rational, string $minus, string $expected) : void
310
+ {
311
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->multipliedBy($minus));
312
+ }
313
+
314
+ public function providerMultipliedBy() : array
315
+ {
316
+ return [
317
+ ['123/456', '1', '123/456'],
318
+ ['123/456', '2', '246/456'],
319
+ ['123/456', '1/2', '123/912'],
320
+ ['123/456', '2/3', '246/1368'],
321
+ ['-123/456', '2/3', '-246/1368'],
322
+ ['123/456', '-2/3', '-246/1368'],
323
+ ['489798742123504/387590928349859', '324893948394/23609901123', '159132647246919822550452576/9150983494511948540991657'],
324
+ ];
325
+ }
326
+
327
+ /**
328
+ * @dataProvider providerDividedBy
329
+ *
330
+ * @param string $rational The rational number to test.
331
+ * @param string $minus The number to multiply.
332
+ * @param string $expected The expected rational number result.
333
+ */
334
+ public function testDividedBy(string $rational, string $minus, string $expected) : void
335
+ {
336
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->dividedBy($minus));
337
+ }
338
+
339
+ public function providerDividedBy() : array
340
+ {
341
+ return [
342
+ ['123/456', '1', '123/456'],
343
+ ['123/456', '2', '123/912'],
344
+ ['123/456', '1/2', '246/456'],
345
+ ['123/456', '2/3', '369/912'],
346
+ ['-123/456', '2/3', '-369/912'],
347
+ ['123/456', '-2/3', '-369/912'],
348
+ ['489798742123504/387590928349859', '324893948394/23609901123', '11564099871705704494294992/125925947073281641523176446'],
349
+ ];
350
+ }
351
+
352
+ /**
353
+ * @dataProvider providerPower
354
+ *
355
+ * @param string $number The base number.
356
+ * @param int $exponent The exponent to apply.
357
+ * @param string $expected The expected result.
358
+ */
359
+ public function testPower(string $number, int $exponent, string $expected) : void
360
+ {
361
+ self::assertBigRationalEquals($expected, BigRational::of($number)->power($exponent));
362
+ }
363
+
364
+ public function providerPower() : array
365
+ {
366
+ return [
367
+ ['-3', 0, '1'],
368
+ ['-2/3', 0, '1'],
369
+ ['-1/2', 0, '1'],
370
+ ['0', 0, '1'],
371
+ ['1/3', 0, '1'],
372
+ ['2/3', 0, '1'],
373
+ ['3/2', 0, '1'],
374
+
375
+ ['-3/2', 1, '-3/2'],
376
+ ['-2/3', 1, '-2/3'],
377
+ ['-1/3', 1, '-1/3'],
378
+ ['0', 1, '0'],
379
+ ['1/3', 1, '1/3'],
380
+ ['2/3', 1, '2/3'],
381
+ ['3/2', 1, '3/2'],
382
+
383
+ ['-3/4', 2, '9/16'],
384
+ ['-2/3', 2, '4/9'],
385
+ ['-1/2', 2, '1/4'],
386
+ ['0', 2, '0'],
387
+ ['1/2', 2, '1/4'],
388
+ ['2/3', 2, '4/9'],
389
+ ['3/4', 2, '9/16'],
390
+
391
+ ['-3/4', 3, '-27/64'],
392
+ ['-2/3', 3, '-8/27'],
393
+ ['-1/2', 3, '-1/8'],
394
+ ['0', 3, '0'],
395
+ ['1/2', 3, '1/8'],
396
+ ['2/3', 3, '8/27'],
397
+ ['3/4', 3, '27/64'],
398
+
399
+ ['0', 1000000, '0'],
400
+ ['1', 1000000, '1'],
401
+
402
+ ['-2/3', 99, '-633825300114114700748351602688/171792506910670443678820376588540424234035840667'],
403
+ ['-2/3', 100, '1267650600228229401496703205376/515377520732011331036461129765621272702107522001'],
404
+
405
+ ['-123/33', 25, '-17685925284953355608333258649989090388842388168292443/91801229324973413645775482048441660193'],
406
+ [ '123/33', 26, '2175368810049262739824990813948658117827613744699970489/3029440567724122650310590907598574786369'],
407
+
408
+ ['-123456789/2', 8, '53965948844821664748141453212125737955899777414752273389058576481/256'],
409
+ ['9876543210/3', 7, '9167159269868350921847491739460569765344716959834325922131706410000000/2187']
410
+ ];
411
+ }
412
+
413
+ /**
414
+ * @dataProvider providerReciprocal
415
+ *
416
+ * @param string $rational The rational number to test.
417
+ * @param string $expected The expected reciprocal.
418
+ */
419
+ public function testReciprocal(string $rational, string $expected) : void
420
+ {
421
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->reciprocal());
422
+ }
423
+
424
+ public function providerReciprocal() : array
425
+ {
426
+ return [
427
+ ['1', '1'],
428
+ ['2', '1/2'],
429
+ ['1/2', '2'],
430
+ ['123/456', '456/123'],
431
+ ['-234/567', '-567/234'],
432
+ ['489798742123504998877665/387590928349859112233445', '387590928349859112233445/489798742123504998877665'],
433
+ ];
434
+ }
435
+
436
+ public function testReciprocalOfZeroThrowsException() : void
437
+ {
438
+ $this->expectException(DivisionByZeroException::class);
439
+ BigRational::nd(0, 2)->reciprocal();
440
+ }
441
+
442
+ /**
443
+ * @dataProvider providerAbs
444
+ *
445
+ * @param string $rational The rational number to test.
446
+ * @param string $expected The expected absolute number.
447
+ */
448
+ public function testAbs(string $rational, string $expected) : void
449
+ {
450
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->abs());
451
+ }
452
+
453
+ public function providerAbs() : array
454
+ {
455
+ return [
456
+ ['0', '0'],
457
+ ['1', '1'],
458
+ ['-1', '1'],
459
+ ['123/456', '123/456'],
460
+ ['-234/567', '234/567'],
461
+ ['-489798742123504998877665/387590928349859112233445', '489798742123504998877665/387590928349859112233445'],
462
+ ];
463
+ }
464
+
465
+ /**
466
+ * @dataProvider providerNegated
467
+ *
468
+ * @param string $rational The rational number to test.
469
+ * @param string $expected The expected negated number.
470
+ */
471
+ public function testNegated(string $rational, string $expected) : void
472
+ {
473
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->negated());
474
+ }
475
+
476
+ public function providerNegated() : array
477
+ {
478
+ return [
479
+ ['0', '0'],
480
+ ['1', '-1'],
481
+ ['-1', '1'],
482
+ ['123/456', '-123/456'],
483
+ ['-234/567', '234/567'],
484
+ ['-489798742123504998877665/387590928349859112233445', '489798742123504998877665/387590928349859112233445'],
485
+ ['489798742123504998877665/387590928349859112233445', '-489798742123504998877665/387590928349859112233445'],
486
+ ];
487
+ }
488
+
489
+ /**
490
+ * @dataProvider providerSimplified
491
+ *
492
+ * @param string $rational The rational number to test.
493
+ * @param string $expected The expected negated number.
494
+ */
495
+ public function testSimplified(string $rational, string $expected) : void
496
+ {
497
+ self::assertBigRationalEquals($expected, BigRational::of($rational)->simplified());
498
+ }
499
+
500
+ public function providerSimplified() : array
501
+ {
502
+ return [
503
+ ['0', '0'],
504
+ ['1', '1'],
505
+ ['-1', '-1'],
506
+ ['0/123456', '0'],
507
+ ['-0/123456', '0'],
508
+ ['-1/123456', '-1/123456'],
509
+ ['4/6', '2/3'],
510
+ ['-4/6', '-2/3'],
511
+ ['123/456', '41/152'],
512
+ ['-234/567', '-26/63'],
513
+ ['489798742123504998877665/387590928349859112233445', '32653249474900333258511/25839395223323940815563'],
514
+ ['-395651984391591565172038784/445108482440540510818543632', '-8/9'],
515
+ ['1.125', '9/8'],
516
+ ];
517
+ }
518
+
519
+ /**
520
+ * @dataProvider providerCompareTo
521
+ *
522
+ * @param string $a The first number to compare.
523
+ * @param string|int $b The second number to compare.
524
+ * @param int $cmp The comparison value.
525
+ */
526
+ public function testCompareTo(string $a, $b, int $cmp) : void
527
+ {
528
+ self::assertSame($cmp, BigRational::of($a)->compareTo($b));
529
+ }
530
+
531
+ /**
532
+ * @dataProvider providerCompareTo
533
+ *
534
+ * @param string $a The first number to compare.
535
+ * @param string|int $b The second number to compare.
536
+ * @param int $cmp The comparison value.
537
+ */
538
+ public function testIsEqualTo(string $a, $b, int $cmp) : void
539
+ {
540
+ self::assertSame($cmp === 0, BigRational::of($a)->isEqualTo($b));
541
+ }
542
+
543
+ /**
544
+ * @dataProvider providerCompareTo
545
+ *
546
+ * @param string $a The first number to compare.
547
+ * @param string|int $b The second number to compare.
548
+ * @param int $cmp The comparison value.
549
+ */
550
+ public function testIsLessThan(string $a, $b, int $cmp) : void
551
+ {
552
+ self::assertSame($cmp < 0, BigRational::of($a)->isLessThan($b));
553
+ }
554
+
555
+ /**
556
+ * @dataProvider providerCompareTo
557
+ *
558
+ * @param string $a The first number to compare.
559
+ * @param string|int $b The second number to compare.
560
+ * @param int $cmp The comparison value.
561
+ */
562
+ public function testIsLessThanOrEqualTo(string $a, $b, int $cmp) : void
563
+ {
564
+ self::assertSame($cmp <= 0, BigRational::of($a)->isLessThanOrEqualTo($b));
565
+ }
566
+
567
+ /**
568
+ * @dataProvider providerCompareTo
569
+ *
570
+ * @param string $a The first number to compare.
571
+ * @param string|int $b The second number to compare.
572
+ * @param int $cmp The comparison value.
573
+ */
574
+ public function testIsGreaterThan(string $a, $b, int $cmp) : void
575
+ {
576
+ self::assertSame($cmp > 0, BigRational::of($a)->isGreaterThan($b));
577
+ }
578
+
579
+ /**
580
+ * @dataProvider providerCompareTo
581
+ *
582
+ * @param string $a The first number to compare.
583
+ * @param string|int $b The second number to compare.
584
+ * @param int $cmp The comparison value.
585
+ */
586
+ public function testIsGreaterThanOrEqualTo(string $a, $b, int $cmp) : void
587
+ {
588
+ self::assertSame($cmp >= 0, BigRational::of($a)->isGreaterThanOrEqualTo($b));
589
+ }
590
+
591
+ public function providerCompareTo() : array
592
+ {
593
+ return [
594
+ ['-1', '1/2', -1],
595
+ ['1', '1/2', 1],
596
+ ['1', '-1/2', 1],
597
+ ['-1', '-1/2', -1],
598
+ ['1/2', '1/2', 0],
599
+ ['-1/2', '-1/2', 0],
600
+ ['1/2', '2/4', 0],
601
+ ['1/3', '122/369', 1],
602
+ ['1/3', '123/369', 0],
603
+ ['1/3', '124/369', -1],
604
+ ['1/3', '123/368', -1],
605
+ ['1/3', '123/370', 1],
606
+ ['-1/3', '-122/369', -1],
607
+ ['-1/3', '-123/369', 0],
608
+ ['-1/3', '-124/369', 1],
609
+ ['-1/3', '-123/368', 1],
610
+ ['-1/3', '-123/370', -1],
611
+ ['999999999999999999999999999999/1000000000000000000000000000000', '1', -1],
612
+ ['1', '999999999999999999999999999999/1000000000000000000000000000000', 1],
613
+ ['999999999999999999999999999999/1000000000000000000000000000000', '999/1000', 1],
614
+ ['-999999999999999999999999999999/1000000000000000000000000000000', '-999/1000', -1],
615
+ ['-999999999999999999999999999999/1000000000000000000000000000000', -1, 1],
616
+ ['-999999999999999999999999999999/1000000000000000000000000000000', '-10e-1', 1],
617
+ ['-999999999999999999999999999999/1000000000000000000000000000000', '-0.999999999999999999999999999999', 0],
618
+ ['-999999999999999999999999999999/1000000000000000000000000000000', '-0.999999999999999999999999999998', -1],
619
+ ];
620
+ }
621
+
622
+ /**
623
+ * @dataProvider providerSign
624
+ *
625
+ * @param string $number The rational number to test.
626
+ * @param int $sign The sign of the number.
627
+ */
628
+ public function testGetSign(string $number, int $sign) : void
629
+ {
630
+ self::assertSame($sign, BigRational::of($number)->getSign());
631
+ }
632
+
633
+ /**
634
+ * @dataProvider providerSign
635
+ *
636
+ * @param string $number The rational number to test.
637
+ * @param int $sign The sign of the number.
638
+ */
639
+ public function testIsZero(string $number, int $sign) : void
640
+ {
641
+ self::assertSame($sign === 0, BigRational::of($number)->isZero());
642
+ }
643
+
644
+ /**
645
+ * @dataProvider providerSign
646
+ *
647
+ * @param string $number The rational number to test.
648
+ * @param int $sign The sign of the number.
649
+ */
650
+ public function testIsNegative(string $number, int $sign) : void
651
+ {
652
+ self::assertSame($sign < 0, BigRational::of($number)->isNegative());
653
+ }
654
+
655
+ /**
656
+ * @dataProvider providerSign
657
+ *
658
+ * @param string $number The rational number to test.
659
+ * @param int $sign The sign of the number.
660
+ */
661
+ public function testIsNegativeOrZero(string $number, int $sign) : void
662
+ {
663
+ self::assertSame($sign <= 0, BigRational::of($number)->isNegativeOrZero());
664
+ }
665
+
666
+ /**
667
+ * @dataProvider providerSign
668
+ *
669
+ * @param string $number The rational number to test.
670
+ * @param int $sign The sign of the number.
671
+ */
672
+ public function testIsPositive(string $number, int $sign) : void
673
+ {
674
+ self::assertSame($sign > 0, BigRational::of($number)->isPositive());
675
+ }
676
+
677
+ /**
678
+ * @dataProvider providerSign
679
+ *
680
+ * @param string $number The rational number to test.
681
+ * @param int $sign The sign of the number.
682
+ */
683
+ public function testIsPositiveOrZero(string $number, int $sign) : void
684
+ {
685
+ self::assertSame($sign >= 0, BigRational::of($number)->isPositiveOrZero());
686
+ }
687
+
688
+ public function providerSign() : array
689
+ {
690
+ return [
691
+ ['0', 0],
692
+ ['-0', 0],
693
+ ['-2', -1],
694
+ ['2', 1],
695
+ ['0/123456', 0],
696
+ ['-0/123456', 0],
697
+ ['-1/23784738479837498273817307948739875387498374983749837984739874983749834384938493284934', -1],
698
+ ['1/3478378924784729749873298479832792487498789012890843098490820480938092849032809480932840', 1],
699
+ ];
700
+ }
701
+
702
+ /**
703
+ * @dataProvider providerToBigDecimal
704
+ *
705
+ * @param string $number The rational number to convert.
706
+ * @param string|null $expected The expected decimal number, or null if an exception is expected.
707
+ */
708
+ public function testToBigDecimal(string $number, ?string $expected) : void
709
+ {
710
+ if ($expected === null) {
711
+ $this->expectException(RoundingNecessaryException::class);
712
+ }
713
+
714
+ $actual = BigRational::of($number)->toBigDecimal();
715
+
716
+ if ($expected !== null) {
717
+ self::assertBigDecimalEquals($expected, $actual);
718
+ }
719
+ }
720
+
721
+ public function providerToBigDecimal() : \Generator
722
+ {
723
+ $tests = [
724
+ ['1', '1'],
725
+ ['1/2', '0.5'],
726
+ ['2/2', '1'],
727
+ ['3/2', '1.5'],
728
+ ['1/3', null],
729
+ ['2/3', null],
730
+ ['3/3', '1'],
731
+ ['4/3', null],
732
+ ['1/4', '0.25'],
733
+ ['2/4', '0.5'],
734
+ ['3/4', '0.75'],
735
+ ['4/4', '1'],
736
+ ['5/4', '1.25'],
737
+ ['1/5', '0.2'],
738
+ ['2/5', '0.4'],
739
+ ['1/6', null],
740
+ ['2/6', null],
741
+ ['3/6', '0.5'],
742
+ ['4/6', null],
743
+ ['5/6', null],
744
+ ['6/6', '1'],
745
+ ['7/6', null],
746
+ ['1/7', null],
747
+ ['2/7', null],
748
+ ['6/7', null],
749
+ ['7/7', '1'],
750
+ ['14/7', '2'],
751
+ ['15/7', null],
752
+ ['1/8', '0.125'],
753
+ ['2/8', '0.25'],
754
+ ['3/8', '0.375'],
755
+ ['4/8', '0.5'],
756
+ ['5/8', '0.625'],
757
+ ['6/8', '0.75'],
758
+ ['7/8', '0.875'],
759
+ ['8/8', '1'],
760
+ ['17/8', '2.125'],
761
+ ['1/9', null],
762
+ ['2/9', null],
763
+ ['9/9', '1'],
764
+ ['10/9', null],
765
+ ['17/9', null],
766
+ ['18/9', '2'],
767
+ ['19/9', null],
768
+ ['1/10', '0.1'],
769
+ ['10/2', '5'],
770
+ ['10/20', '0.5'],
771
+ ['100/20', '5'],
772
+ ['100/2', '50'],
773
+ ['8/360', null],
774
+ ['9/360', '0.025'],
775
+ ['10/360', null],
776
+ ['17/360', null],
777
+ ['18/360', '0.05'],
778
+ ['19/360', null],
779
+ ['1/500', '0.002'],
780
+ ['1/600', null],
781
+ ['1/400', '0.0025'],
782
+ ['1/800', '0.00125'],
783
+ ['1/1600', '0.000625'],
784
+ ['2/1600', '0.00125'],
785
+ ['3/1600', '0.001875'],
786
+ ['4/1600', '0.0025'],
787
+ ['5/1600', '0.003125'],
788
+ ['669433117850846623944075755499/3723692145740642445161938667297363281250', '0.0000000001797767086134066979625344023536861184'],
789
+ ['669433117850846623944075755498/3723692145740642445161938667297363281250', null],
790
+ ['669433117850846623944075755499/3723692145740642445161938667297363281251', null],
791
+
792
+ ['438002367448868006942618029488152554057431119072727/9', '48666929716540889660290892165350283784159013230303'],
793
+ ['438002367448868006942618029488152554057431119072728/9', null],
794
+
795
+ ['1278347892548908779/181664161764972047166111224214546382427215576171875', '0.0000000000000000000000000000000070368744177664'],
796
+ ['1278347892548908779/363328323529944094332222448429092764854431152343750', '0.0000000000000000000000000000000035184372088832'],
797
+ ['1278347892548908778/363328323529944094332222448429092764854431152343750', null],
798
+ ['1278347892548908779/363328323529944094332222448429092764854431152343751', null],
799
+
800
+ ['1274512848871262052662/181119169279677131024612890541902743279933929443359375', null],
801
+ ['1274512848871262052663/181119169279677131024612890541902743279933929443359375', '0.0000000000000000000000000000000070368744177664'],
802
+ ['1274512848871262052664/181119169279677131024612890541902743279933929443359375', null],
803
+ ];
804
+
805
+ foreach ($tests as [$number, $expected]) {
806
+ yield [$number, $expected];
807
+ yield ['-' . $number, $expected === null ? null : '-' . $expected];
808
+ }
809
+ }
810
+
811
+ /**
812
+ * @dataProvider providerToScale
813
+ *
814
+ * @param string $number
815
+ * @param int $scale
816
+ * @param int $roundingMode
817
+ * @param string $expected
818
+ */
819
+ public function testToScale(string $number, int $scale, int $roundingMode, string $expected) : void
820
+ {
821
+ $number = BigRational::of($number);
822
+
823
+ if (self::isException($expected)) {
824
+ $this->expectException($expected);
825
+ }
826
+
827
+ $actual = $number->toScale($scale, $roundingMode);
828
+
829
+ if (! self::isException($expected)) {
830
+ self::assertBigDecimalEquals($expected, $actual);
831
+ }
832
+ }
833
+
834
+ public function providerToScale() : array
835
+ {
836
+ return [
837
+ ['1/8', 3, RoundingMode::UNNECESSARY, '0.125'],
838
+ ['1/16', 3, RoundingMode::UNNECESSARY, RoundingNecessaryException::class],
839
+ ['1/16', 3, RoundingMode::HALF_DOWN, '0.062'],
840
+ ['1/16', 3, RoundingMode::HALF_UP, '0.063'],
841
+ ['1/9', 30, RoundingMode::DOWN, '0.111111111111111111111111111111'],
842
+ ['1/9', 30, RoundingMode::UP, '0.111111111111111111111111111112'],
843
+ ['1/9', 100, RoundingMode::UNNECESSARY, RoundingNecessaryException::class],
844
+ ];
845
+ }
846
+
847
+ /**
848
+ * @dataProvider providerToInt
849
+ *
850
+ * @param string|int $rational The rational number to test.
851
+ * @param int $integer The expected integer value.
852
+ */
853
+ public function testToInt($rational, int $integer) : void
854
+ {
855
+ self::assertSame($integer, BigRational::of($rational)->toInt());
856
+ }
857
+
858
+ public function providerToInt() : array
859
+ {
860
+ return [
861
+ [PHP_INT_MAX, PHP_INT_MAX],
862
+ [PHP_INT_MIN, PHP_INT_MIN],
863
+ [PHP_INT_MAX . '0/10', PHP_INT_MAX],
864
+ [PHP_INT_MIN . '0/10', PHP_INT_MIN],
865
+ ['246913578/2', 123456789],
866
+ ['-246913578/2', -123456789],
867
+ ['625/25', 25],
868
+ ['-625/25', -25],
869
+ ['0/3', 0],
870
+ ['-0/3', 0],
871
+ ];
872
+ }
873
+
874
+ /**
875
+ * @dataProvider providerToIntThrowsException
876
+ *
877
+ * @param string $number A valid rational number that cannot safely be converted to a native integer.
878
+ */
879
+ public function testToIntThrowsException(string $number) : void
880
+ {
881
+ $this->expectException(MathException::class);
882
+ BigRational::of($number)->toInt();
883
+ }
884
+
885
+ public function providerToIntThrowsException() : array
886
+ {
887
+ return [
888
+ ['-999999999999999999999999999999'],
889
+ ['9999999999999999999999999999999/2'],
890
+ ['1/2'],
891
+ ['2/3'],
892
+ ];
893
+ }
894
+
895
+ public function testIdentityOperationResultsInDifferentToFloatValueWithoutSimplification() : void
896
+ {
897
+ $expectedValue = 11.46;
898
+ $conversionFactor = BigRational::of('0.45359237');
899
+ $value = BigRational::of($expectedValue);
900
+
901
+ $identicalValueAfterMathOperations = $value->multipliedBy($conversionFactor)
902
+ ->dividedBy($conversionFactor)
903
+ ->multipliedBy($conversionFactor)
904
+ ->dividedBy($conversionFactor)
905
+ ->multipliedBy($conversionFactor)
906
+ ->dividedBy($conversionFactor);
907
+
908
+ self::assertSame($expectedValue, $identicalValueAfterMathOperations->toFloat());
909
+
910
+ // Assert that simplification is required and the test would fail without it
911
+ self::assertNotSame(
912
+ $expectedValue,
913
+ $identicalValueAfterMathOperations->getNumerator()->toFloat() / $identicalValueAfterMathOperations->getDenominator()->toFloat(),
914
+ );
915
+ }
916
+
917
+ public function testToFloatConversionPerformsSimplificationToPreventOverflow() : void
918
+ {
919
+ $int = BigInteger::of('1e4000');
920
+ $val = BigRational::nd($int, $int);
921
+
922
+ self::assertInfinite($val->getNumerator()->toFloat());
923
+ // Assert that simplification is required and the test would fail without it
924
+ self::assertSame(1.0, $val->toFloat());
925
+ }
926
+
927
+ /**
928
+ * @dataProvider providerToFloat
929
+ *
930
+ * @param string $value The big decimal value.
931
+ * @param float $float The expected float value.
932
+ */
933
+ public function testToFloat(string $value, float $float) : void
934
+ {
935
+ self::assertSame($float, BigRational::of($value)->toFloat());
936
+ }
937
+
938
+ public function providerToFloat() : array
939
+ {
940
+ return [
941
+ ['0', 0.0],
942
+ ['1.6', 1.6],
943
+ ['-1.6', -1.6],
944
+ ['1000000000000000000000000000000000000000/3', 3.3333333333333333333333333333333333e+38],
945
+ ['-2/300000000000000000000000000000000000000', -6.666666666666666666666666666666666e-39],
946
+ ['9.9e3000', INF],
947
+ ['-9.9e3000', -INF],
948
+ ];
949
+ }
950
+
951
+ /**
952
+ * @dataProvider providerToString
953
+ *
954
+ * @param string $numerator The numerator.
955
+ * @param string $denominator The denominator.
956
+ * @param string $expected The expected string output.
957
+ */
958
+ public function testToString(string $numerator, string $denominator, string $expected) : void
959
+ {
960
+ self::assertBigRationalEquals($expected, BigRational::nd($numerator, $denominator));
961
+ }
962
+
963
+ public function providerToString() : array
964
+ {
965
+ return [
966
+ ['-1', '1', '-1'],
967
+ ['2', '1', '2'],
968
+ ['1', '2', '1/2'],
969
+ ['-1', '-2', '1/2'],
970
+ ['1', '-2', '-1/2'],
971
+ ['34327948737247817984738927598572389', '32565046546', '34327948737247817984738927598572389/32565046546'],
972
+ ['34327948737247817984738927598572389', '-32565046546', '-34327948737247817984738927598572389/32565046546'],
973
+ ['34327948737247817984738927598572389', '1', '34327948737247817984738927598572389'],
974
+ ['34327948737247817984738927598572389', '-1', '-34327948737247817984738927598572389'],
975
+ ];
976
+ }
977
+
978
+ public function testSerialize() : void
979
+ {
980
+ $numerator = '-1234567890987654321012345678909876543210123456789';
981
+ $denominator = '347827348278374374263874681238374983729873401984091287439827467286';
982
+
983
+ $rational = BigRational::nd($numerator, $denominator);
984
+
985
+ self::assertBigRationalInternalValues($numerator, $denominator, \unserialize(\serialize($rational)));
986
+ }
987
+
988
+ public function testDirectCallToUnserialize() : void
989
+ {
990
+ $this->expectException(\LogicException::class);
991
+ BigRational::nd(1, 2)->unserialize('123/456');
992
+ }
993
+ }