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,1079 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Brick\Math;
6
+
7
+ use Brick\Math\Exception\DivisionByZeroException;
8
+ use Brick\Math\Exception\IntegerOverflowException;
9
+ use Brick\Math\Exception\MathException;
10
+ use Brick\Math\Exception\NegativeNumberException;
11
+ use Brick\Math\Exception\NumberFormatException;
12
+ use Brick\Math\Internal\Calculator;
13
+
14
+ /**
15
+ * An arbitrary-size integer.
16
+ *
17
+ * All methods accepting a number as a parameter accept either a BigInteger instance,
18
+ * an integer, or a string representing an arbitrary size integer.
19
+ *
20
+ * @psalm-immutable
21
+ */
22
+ final class BigInteger extends BigNumber
23
+ {
24
+ /**
25
+ * The value, as a string of digits with optional leading minus sign.
26
+ *
27
+ * No leading zeros must be present.
28
+ * No leading minus sign must be present if the number is zero.
29
+ */
30
+ private string $value;
31
+
32
+ /**
33
+ * Protected constructor. Use a factory method to obtain an instance.
34
+ *
35
+ * @param string $value A string of digits, with optional leading minus sign.
36
+ */
37
+ protected function __construct(string $value)
38
+ {
39
+ $this->value = $value;
40
+ }
41
+
42
+ /**
43
+ * Creates a BigInteger of the given value.
44
+ *
45
+ * @throws MathException If the value cannot be converted to a BigInteger.
46
+ *
47
+ * @psalm-pure
48
+ */
49
+ public static function of(BigNumber|int|float|string $value) : BigInteger
50
+ {
51
+ return parent::of($value)->toBigInteger();
52
+ }
53
+
54
+ /**
55
+ * Creates a number from a string in a given base.
56
+ *
57
+ * The string can optionally be prefixed with the `+` or `-` sign.
58
+ *
59
+ * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase
60
+ * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not
61
+ * differentiate lowercase and uppercase characters, which are considered equal.
62
+ *
63
+ * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method.
64
+ *
65
+ * @param string $number The number to convert, in the given base.
66
+ * @param int $base The base of the number, between 2 and 36.
67
+ *
68
+ * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base.
69
+ * @throws \InvalidArgumentException If the base is out of range.
70
+ *
71
+ * @psalm-pure
72
+ */
73
+ public static function fromBase(string $number, int $base) : BigInteger
74
+ {
75
+ if ($number === '') {
76
+ throw new NumberFormatException('The number cannot be empty.');
77
+ }
78
+
79
+ if ($base < 2 || $base > 36) {
80
+ throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base));
81
+ }
82
+
83
+ if ($number[0] === '-') {
84
+ $sign = '-';
85
+ $number = \substr($number, 1);
86
+ } elseif ($number[0] === '+') {
87
+ $sign = '';
88
+ $number = \substr($number, 1);
89
+ } else {
90
+ $sign = '';
91
+ }
92
+
93
+ if ($number === '') {
94
+ throw new NumberFormatException('The number cannot be empty.');
95
+ }
96
+
97
+ $number = \ltrim($number, '0');
98
+
99
+ if ($number === '') {
100
+ // The result will be the same in any base, avoid further calculation.
101
+ return BigInteger::zero();
102
+ }
103
+
104
+ if ($number === '1') {
105
+ // The result will be the same in any base, avoid further calculation.
106
+ return new BigInteger($sign . '1');
107
+ }
108
+
109
+ $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/';
110
+
111
+ if (\preg_match($pattern, \strtolower($number), $matches) === 1) {
112
+ throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base));
113
+ }
114
+
115
+ if ($base === 10) {
116
+ // The number is usable as is, avoid further calculation.
117
+ return new BigInteger($sign . $number);
118
+ }
119
+
120
+ $result = Calculator::get()->fromBase($number, $base);
121
+
122
+ return new BigInteger($sign . $result);
123
+ }
124
+
125
+ /**
126
+ * Parses a string containing an integer in an arbitrary base, using a custom alphabet.
127
+ *
128
+ * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers.
129
+ *
130
+ * @param string $number The number to parse.
131
+ * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8.
132
+ *
133
+ * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet.
134
+ * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars.
135
+ *
136
+ * @psalm-pure
137
+ */
138
+ public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger
139
+ {
140
+ if ($number === '') {
141
+ throw new NumberFormatException('The number cannot be empty.');
142
+ }
143
+
144
+ $base = \strlen($alphabet);
145
+
146
+ if ($base < 2) {
147
+ throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.');
148
+ }
149
+
150
+ $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/';
151
+
152
+ if (\preg_match($pattern, $number, $matches) === 1) {
153
+ throw NumberFormatException::charNotInAlphabet($matches[0]);
154
+ }
155
+
156
+ $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base);
157
+
158
+ return new BigInteger($number);
159
+ }
160
+
161
+ /**
162
+ * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger.
163
+ *
164
+ * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element.
165
+ *
166
+ * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is
167
+ * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the
168
+ * resulting BigInteger will always be positive or zero.
169
+ *
170
+ * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match.
171
+ *
172
+ * @param string $value The byte string.
173
+ * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading
174
+ * sign bit.
175
+ *
176
+ * @throws NumberFormatException If the string is empty.
177
+ */
178
+ public static function fromBytes(string $value, bool $signed = true) : BigInteger
179
+ {
180
+ if ($value === '') {
181
+ throw new NumberFormatException('The byte string must not be empty.');
182
+ }
183
+
184
+ $twosComplement = false;
185
+
186
+ if ($signed) {
187
+ $x = \ord($value[0]);
188
+
189
+ if (($twosComplement = ($x >= 0x80))) {
190
+ $value = ~$value;
191
+ }
192
+ }
193
+
194
+ $number = self::fromBase(\bin2hex($value), 16);
195
+
196
+ if ($twosComplement) {
197
+ return $number->plus(1)->negated();
198
+ }
199
+
200
+ return $number;
201
+ }
202
+
203
+ /**
204
+ * Generates a pseudo-random number in the range 0 to 2^numBits - 1.
205
+ *
206
+ * Using the default random bytes generator, this method is suitable for cryptographic use.
207
+ *
208
+ * @psalm-param (callable(int): string)|null $randomBytesGenerator
209
+ *
210
+ * @param int $numBits The number of bits.
211
+ * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a
212
+ * string of random bytes of the given length. Defaults to the
213
+ * `random_bytes()` function.
214
+ *
215
+ * @throws \InvalidArgumentException If $numBits is negative.
216
+ */
217
+ public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger
218
+ {
219
+ if ($numBits < 0) {
220
+ throw new \InvalidArgumentException('The number of bits cannot be negative.');
221
+ }
222
+
223
+ if ($numBits === 0) {
224
+ return BigInteger::zero();
225
+ }
226
+
227
+ if ($randomBytesGenerator === null) {
228
+ $randomBytesGenerator = 'random_bytes';
229
+ }
230
+
231
+ $byteLength = \intdiv($numBits - 1, 8) + 1;
232
+
233
+ $extraBits = ($byteLength * 8 - $numBits);
234
+ $bitmask = \chr(0xFF >> $extraBits);
235
+
236
+ $randomBytes = $randomBytesGenerator($byteLength);
237
+ $randomBytes[0] = $randomBytes[0] & $bitmask;
238
+
239
+ return self::fromBytes($randomBytes, false);
240
+ }
241
+
242
+ /**
243
+ * Generates a pseudo-random number between `$min` and `$max`.
244
+ *
245
+ * Using the default random bytes generator, this method is suitable for cryptographic use.
246
+ *
247
+ * @psalm-param (callable(int): string)|null $randomBytesGenerator
248
+ *
249
+ * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger.
250
+ * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger.
251
+ * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer,
252
+ * and returns a string of random bytes of the given length.
253
+ * Defaults to the `random_bytes()` function.
254
+ *
255
+ * @throws MathException If one of the parameters cannot be converted to a BigInteger,
256
+ * or `$min` is greater than `$max`.
257
+ */
258
+ public static function randomRange(
259
+ BigNumber|int|float|string $min,
260
+ BigNumber|int|float|string $max,
261
+ ?callable $randomBytesGenerator = null
262
+ ) : BigInteger {
263
+ $min = BigInteger::of($min);
264
+ $max = BigInteger::of($max);
265
+
266
+ if ($min->isGreaterThan($max)) {
267
+ throw new MathException('$min cannot be greater than $max.');
268
+ }
269
+
270
+ if ($min->isEqualTo($max)) {
271
+ return $min;
272
+ }
273
+
274
+ $diff = $max->minus($min);
275
+ $bitLength = $diff->getBitLength();
276
+
277
+ // try until the number is in range (50% to 100% chance of success)
278
+ do {
279
+ $randomNumber = self::randomBits($bitLength, $randomBytesGenerator);
280
+ } while ($randomNumber->isGreaterThan($diff));
281
+
282
+ return $randomNumber->plus($min);
283
+ }
284
+
285
+ /**
286
+ * Returns a BigInteger representing zero.
287
+ *
288
+ * @psalm-pure
289
+ */
290
+ public static function zero() : BigInteger
291
+ {
292
+ /**
293
+ * @psalm-suppress ImpureStaticVariable
294
+ * @var BigInteger|null $zero
295
+ */
296
+ static $zero;
297
+
298
+ if ($zero === null) {
299
+ $zero = new BigInteger('0');
300
+ }
301
+
302
+ return $zero;
303
+ }
304
+
305
+ /**
306
+ * Returns a BigInteger representing one.
307
+ *
308
+ * @psalm-pure
309
+ */
310
+ public static function one() : BigInteger
311
+ {
312
+ /**
313
+ * @psalm-suppress ImpureStaticVariable
314
+ * @var BigInteger|null $one
315
+ */
316
+ static $one;
317
+
318
+ if ($one === null) {
319
+ $one = new BigInteger('1');
320
+ }
321
+
322
+ return $one;
323
+ }
324
+
325
+ /**
326
+ * Returns a BigInteger representing ten.
327
+ *
328
+ * @psalm-pure
329
+ */
330
+ public static function ten() : BigInteger
331
+ {
332
+ /**
333
+ * @psalm-suppress ImpureStaticVariable
334
+ * @var BigInteger|null $ten
335
+ */
336
+ static $ten;
337
+
338
+ if ($ten === null) {
339
+ $ten = new BigInteger('10');
340
+ }
341
+
342
+ return $ten;
343
+ }
344
+
345
+ public static function gcdMultiple(BigInteger $a, BigInteger ...$n): BigInteger
346
+ {
347
+ $result = $a;
348
+
349
+ foreach ($n as $next) {
350
+ $result = $result->gcd($next);
351
+
352
+ if ($result->isEqualTo(1)) {
353
+ return $result;
354
+ }
355
+ }
356
+
357
+ return $result;
358
+ }
359
+
360
+ /**
361
+ * Returns the sum of this number and the given one.
362
+ *
363
+ * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger.
364
+ *
365
+ * @throws MathException If the number is not valid, or is not convertible to a BigInteger.
366
+ */
367
+ public function plus(BigNumber|int|float|string $that) : BigInteger
368
+ {
369
+ $that = BigInteger::of($that);
370
+
371
+ if ($that->value === '0') {
372
+ return $this;
373
+ }
374
+
375
+ if ($this->value === '0') {
376
+ return $that;
377
+ }
378
+
379
+ $value = Calculator::get()->add($this->value, $that->value);
380
+
381
+ return new BigInteger($value);
382
+ }
383
+
384
+ /**
385
+ * Returns the difference of this number and the given one.
386
+ *
387
+ * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger.
388
+ *
389
+ * @throws MathException If the number is not valid, or is not convertible to a BigInteger.
390
+ */
391
+ public function minus(BigNumber|int|float|string $that) : BigInteger
392
+ {
393
+ $that = BigInteger::of($that);
394
+
395
+ if ($that->value === '0') {
396
+ return $this;
397
+ }
398
+
399
+ $value = Calculator::get()->sub($this->value, $that->value);
400
+
401
+ return new BigInteger($value);
402
+ }
403
+
404
+ /**
405
+ * Returns the product of this number and the given one.
406
+ *
407
+ * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger.
408
+ *
409
+ * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger.
410
+ */
411
+ public function multipliedBy(BigNumber|int|float|string $that) : BigInteger
412
+ {
413
+ $that = BigInteger::of($that);
414
+
415
+ if ($that->value === '1') {
416
+ return $this;
417
+ }
418
+
419
+ if ($this->value === '1') {
420
+ return $that;
421
+ }
422
+
423
+ $value = Calculator::get()->mul($this->value, $that->value);
424
+
425
+ return new BigInteger($value);
426
+ }
427
+
428
+ /**
429
+ * Returns the result of the division of this number by the given one.
430
+ *
431
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
432
+ * @param int $roundingMode An optional rounding mode.
433
+ *
434
+ * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero,
435
+ * or RoundingMode::UNNECESSARY is used and the remainder is not zero.
436
+ */
437
+ public function dividedBy(BigNumber|int|float|string $that, int $roundingMode = RoundingMode::UNNECESSARY) : BigInteger
438
+ {
439
+ $that = BigInteger::of($that);
440
+
441
+ if ($that->value === '1') {
442
+ return $this;
443
+ }
444
+
445
+ if ($that->value === '0') {
446
+ throw DivisionByZeroException::divisionByZero();
447
+ }
448
+
449
+ $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode);
450
+
451
+ return new BigInteger($result);
452
+ }
453
+
454
+ /**
455
+ * Returns this number exponentiated to the given value.
456
+ *
457
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
458
+ */
459
+ public function power(int $exponent) : BigInteger
460
+ {
461
+ if ($exponent === 0) {
462
+ return BigInteger::one();
463
+ }
464
+
465
+ if ($exponent === 1) {
466
+ return $this;
467
+ }
468
+
469
+ if ($exponent < 0 || $exponent > Calculator::MAX_POWER) {
470
+ throw new \InvalidArgumentException(\sprintf(
471
+ 'The exponent %d is not in the range 0 to %d.',
472
+ $exponent,
473
+ Calculator::MAX_POWER
474
+ ));
475
+ }
476
+
477
+ return new BigInteger(Calculator::get()->pow($this->value, $exponent));
478
+ }
479
+
480
+ /**
481
+ * Returns the quotient of the division of this number by the given one.
482
+ *
483
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
484
+ *
485
+ * @throws DivisionByZeroException If the divisor is zero.
486
+ */
487
+ public function quotient(BigNumber|int|float|string $that) : BigInteger
488
+ {
489
+ $that = BigInteger::of($that);
490
+
491
+ if ($that->value === '1') {
492
+ return $this;
493
+ }
494
+
495
+ if ($that->value === '0') {
496
+ throw DivisionByZeroException::divisionByZero();
497
+ }
498
+
499
+ $quotient = Calculator::get()->divQ($this->value, $that->value);
500
+
501
+ return new BigInteger($quotient);
502
+ }
503
+
504
+ /**
505
+ * Returns the remainder of the division of this number by the given one.
506
+ *
507
+ * The remainder, when non-zero, has the same sign as the dividend.
508
+ *
509
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
510
+ *
511
+ * @throws DivisionByZeroException If the divisor is zero.
512
+ */
513
+ public function remainder(BigNumber|int|float|string $that) : BigInteger
514
+ {
515
+ $that = BigInteger::of($that);
516
+
517
+ if ($that->value === '1') {
518
+ return BigInteger::zero();
519
+ }
520
+
521
+ if ($that->value === '0') {
522
+ throw DivisionByZeroException::divisionByZero();
523
+ }
524
+
525
+ $remainder = Calculator::get()->divR($this->value, $that->value);
526
+
527
+ return new BigInteger($remainder);
528
+ }
529
+
530
+ /**
531
+ * Returns the quotient and remainder of the division of this number by the given one.
532
+ *
533
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
534
+ *
535
+ * @return BigInteger[] An array containing the quotient and the remainder.
536
+ *
537
+ * @throws DivisionByZeroException If the divisor is zero.
538
+ */
539
+ public function quotientAndRemainder(BigNumber|int|float|string $that) : array
540
+ {
541
+ $that = BigInteger::of($that);
542
+
543
+ if ($that->value === '0') {
544
+ throw DivisionByZeroException::divisionByZero();
545
+ }
546
+
547
+ [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value);
548
+
549
+ return [
550
+ new BigInteger($quotient),
551
+ new BigInteger($remainder)
552
+ ];
553
+ }
554
+
555
+ /**
556
+ * Returns the modulo of this number and the given one.
557
+ *
558
+ * The modulo operation yields the same result as the remainder operation when both operands are of the same sign,
559
+ * and may differ when signs are different.
560
+ *
561
+ * The result of the modulo operation, when non-zero, has the same sign as the divisor.
562
+ *
563
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger.
564
+ *
565
+ * @throws DivisionByZeroException If the divisor is zero.
566
+ */
567
+ public function mod(BigNumber|int|float|string $that) : BigInteger
568
+ {
569
+ $that = BigInteger::of($that);
570
+
571
+ if ($that->value === '0') {
572
+ throw DivisionByZeroException::modulusMustNotBeZero();
573
+ }
574
+
575
+ $value = Calculator::get()->mod($this->value, $that->value);
576
+
577
+ return new BigInteger($value);
578
+ }
579
+
580
+ /**
581
+ * Returns the modular multiplicative inverse of this BigInteger modulo $m.
582
+ *
583
+ * @throws DivisionByZeroException If $m is zero.
584
+ * @throws NegativeNumberException If $m is negative.
585
+ * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger
586
+ * is not relatively prime to m).
587
+ */
588
+ public function modInverse(BigInteger $m) : BigInteger
589
+ {
590
+ if ($m->value === '0') {
591
+ throw DivisionByZeroException::modulusMustNotBeZero();
592
+ }
593
+
594
+ if ($m->isNegative()) {
595
+ throw new NegativeNumberException('Modulus must not be negative.');
596
+ }
597
+
598
+ if ($m->value === '1') {
599
+ return BigInteger::zero();
600
+ }
601
+
602
+ $value = Calculator::get()->modInverse($this->value, $m->value);
603
+
604
+ if ($value === null) {
605
+ throw new MathException('Unable to compute the modInverse for the given modulus.');
606
+ }
607
+
608
+ return new BigInteger($value);
609
+ }
610
+
611
+ /**
612
+ * Returns this number raised into power with modulo.
613
+ *
614
+ * This operation only works on positive numbers.
615
+ *
616
+ * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero.
617
+ * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive.
618
+ *
619
+ * @throws NegativeNumberException If any of the operands is negative.
620
+ * @throws DivisionByZeroException If the modulus is zero.
621
+ */
622
+ public function modPow(BigNumber|int|float|string $exp, BigNumber|int|float|string $mod) : BigInteger
623
+ {
624
+ $exp = BigInteger::of($exp);
625
+ $mod = BigInteger::of($mod);
626
+
627
+ if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) {
628
+ throw new NegativeNumberException('The operands cannot be negative.');
629
+ }
630
+
631
+ if ($mod->isZero()) {
632
+ throw DivisionByZeroException::modulusMustNotBeZero();
633
+ }
634
+
635
+ $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value);
636
+
637
+ return new BigInteger($result);
638
+ }
639
+
640
+ /**
641
+ * Returns the greatest common divisor of this number and the given one.
642
+ *
643
+ * The GCD is always positive, unless both operands are zero, in which case it is zero.
644
+ *
645
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
646
+ */
647
+ public function gcd(BigNumber|int|float|string $that) : BigInteger
648
+ {
649
+ $that = BigInteger::of($that);
650
+
651
+ if ($that->value === '0' && $this->value[0] !== '-') {
652
+ return $this;
653
+ }
654
+
655
+ if ($this->value === '0' && $that->value[0] !== '-') {
656
+ return $that;
657
+ }
658
+
659
+ $value = Calculator::get()->gcd($this->value, $that->value);
660
+
661
+ return new BigInteger($value);
662
+ }
663
+
664
+ /**
665
+ * Returns the integer square root number of this number, rounded down.
666
+ *
667
+ * The result is the largest x such that x² ≤ n.
668
+ *
669
+ * @throws NegativeNumberException If this number is negative.
670
+ */
671
+ public function sqrt() : BigInteger
672
+ {
673
+ if ($this->value[0] === '-') {
674
+ throw new NegativeNumberException('Cannot calculate the square root of a negative number.');
675
+ }
676
+
677
+ $value = Calculator::get()->sqrt($this->value);
678
+
679
+ return new BigInteger($value);
680
+ }
681
+
682
+ /**
683
+ * Returns the absolute value of this number.
684
+ */
685
+ public function abs() : BigInteger
686
+ {
687
+ return $this->isNegative() ? $this->negated() : $this;
688
+ }
689
+
690
+ /**
691
+ * Returns the inverse of this number.
692
+ */
693
+ public function negated() : BigInteger
694
+ {
695
+ return new BigInteger(Calculator::get()->neg($this->value));
696
+ }
697
+
698
+ /**
699
+ * Returns the integer bitwise-and combined with another integer.
700
+ *
701
+ * This method returns a negative BigInteger if and only if both operands are negative.
702
+ *
703
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
704
+ */
705
+ public function and(BigNumber|int|float|string $that) : BigInteger
706
+ {
707
+ $that = BigInteger::of($that);
708
+
709
+ return new BigInteger(Calculator::get()->and($this->value, $that->value));
710
+ }
711
+
712
+ /**
713
+ * Returns the integer bitwise-or combined with another integer.
714
+ *
715
+ * This method returns a negative BigInteger if and only if either of the operands is negative.
716
+ *
717
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
718
+ */
719
+ public function or(BigNumber|int|float|string $that) : BigInteger
720
+ {
721
+ $that = BigInteger::of($that);
722
+
723
+ return new BigInteger(Calculator::get()->or($this->value, $that->value));
724
+ }
725
+
726
+ /**
727
+ * Returns the integer bitwise-xor combined with another integer.
728
+ *
729
+ * This method returns a negative BigInteger if and only if exactly one of the operands is negative.
730
+ *
731
+ * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number.
732
+ */
733
+ public function xor(BigNumber|int|float|string $that) : BigInteger
734
+ {
735
+ $that = BigInteger::of($that);
736
+
737
+ return new BigInteger(Calculator::get()->xor($this->value, $that->value));
738
+ }
739
+
740
+ /**
741
+ * Returns the bitwise-not of this BigInteger.
742
+ */
743
+ public function not() : BigInteger
744
+ {
745
+ return $this->negated()->minus(1);
746
+ }
747
+
748
+ /**
749
+ * Returns the integer left shifted by a given number of bits.
750
+ */
751
+ public function shiftedLeft(int $distance) : BigInteger
752
+ {
753
+ if ($distance === 0) {
754
+ return $this;
755
+ }
756
+
757
+ if ($distance < 0) {
758
+ return $this->shiftedRight(- $distance);
759
+ }
760
+
761
+ return $this->multipliedBy(BigInteger::of(2)->power($distance));
762
+ }
763
+
764
+ /**
765
+ * Returns the integer right shifted by a given number of bits.
766
+ */
767
+ public function shiftedRight(int $distance) : BigInteger
768
+ {
769
+ if ($distance === 0) {
770
+ return $this;
771
+ }
772
+
773
+ if ($distance < 0) {
774
+ return $this->shiftedLeft(- $distance);
775
+ }
776
+
777
+ $operand = BigInteger::of(2)->power($distance);
778
+
779
+ if ($this->isPositiveOrZero()) {
780
+ return $this->quotient($operand);
781
+ }
782
+
783
+ return $this->dividedBy($operand, RoundingMode::UP);
784
+ }
785
+
786
+ /**
787
+ * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit.
788
+ *
789
+ * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation.
790
+ * Computes (ceil(log2(this < 0 ? -this : this+1))).
791
+ */
792
+ public function getBitLength() : int
793
+ {
794
+ if ($this->value === '0') {
795
+ return 0;
796
+ }
797
+
798
+ if ($this->isNegative()) {
799
+ return $this->abs()->minus(1)->getBitLength();
800
+ }
801
+
802
+ return \strlen($this->toBase(2));
803
+ }
804
+
805
+ /**
806
+ * Returns the index of the rightmost (lowest-order) one bit in this BigInteger.
807
+ *
808
+ * Returns -1 if this BigInteger contains no one bits.
809
+ */
810
+ public function getLowestSetBit() : int
811
+ {
812
+ $n = $this;
813
+ $bitLength = $this->getBitLength();
814
+
815
+ for ($i = 0; $i <= $bitLength; $i++) {
816
+ if ($n->isOdd()) {
817
+ return $i;
818
+ }
819
+
820
+ $n = $n->shiftedRight(1);
821
+ }
822
+
823
+ return -1;
824
+ }
825
+
826
+ /**
827
+ * Returns whether this number is even.
828
+ */
829
+ public function isEven() : bool
830
+ {
831
+ return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true);
832
+ }
833
+
834
+ /**
835
+ * Returns whether this number is odd.
836
+ */
837
+ public function isOdd() : bool
838
+ {
839
+ return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true);
840
+ }
841
+
842
+ /**
843
+ * Returns true if and only if the designated bit is set.
844
+ *
845
+ * Computes ((this & (1<<n)) != 0).
846
+ *
847
+ * @param int $n The bit to test, 0-based.
848
+ *
849
+ * @throws \InvalidArgumentException If the bit to test is negative.
850
+ */
851
+ public function testBit(int $n) : bool
852
+ {
853
+ if ($n < 0) {
854
+ throw new \InvalidArgumentException('The bit to test cannot be negative.');
855
+ }
856
+
857
+ return $this->shiftedRight($n)->isOdd();
858
+ }
859
+
860
+ public function compareTo(BigNumber|int|float|string $that) : int
861
+ {
862
+ $that = BigNumber::of($that);
863
+
864
+ if ($that instanceof BigInteger) {
865
+ return Calculator::get()->cmp($this->value, $that->value);
866
+ }
867
+
868
+ return - $that->compareTo($this);
869
+ }
870
+
871
+ public function getSign() : int
872
+ {
873
+ return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1);
874
+ }
875
+
876
+ public function toBigInteger() : BigInteger
877
+ {
878
+ return $this;
879
+ }
880
+
881
+ public function toBigDecimal() : BigDecimal
882
+ {
883
+ return self::newBigDecimal($this->value);
884
+ }
885
+
886
+ public function toBigRational() : BigRational
887
+ {
888
+ return self::newBigRational($this, BigInteger::one(), false);
889
+ }
890
+
891
+ public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
892
+ {
893
+ return $this->toBigDecimal()->toScale($scale, $roundingMode);
894
+ }
895
+
896
+ public function toInt() : int
897
+ {
898
+ $intValue = (int) $this->value;
899
+
900
+ if ($this->value !== (string) $intValue) {
901
+ throw IntegerOverflowException::toIntOverflow($this);
902
+ }
903
+
904
+ return $intValue;
905
+ }
906
+
907
+ public function toFloat() : float
908
+ {
909
+ return (float) $this->value;
910
+ }
911
+
912
+ /**
913
+ * Returns a string representation of this number in the given base.
914
+ *
915
+ * The output will always be lowercase for bases greater than 10.
916
+ *
917
+ * @throws \InvalidArgumentException If the base is out of range.
918
+ */
919
+ public function toBase(int $base) : string
920
+ {
921
+ if ($base === 10) {
922
+ return $this->value;
923
+ }
924
+
925
+ if ($base < 2 || $base > 36) {
926
+ throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base));
927
+ }
928
+
929
+ return Calculator::get()->toBase($this->value, $base);
930
+ }
931
+
932
+ /**
933
+ * Returns a string representation of this number in an arbitrary base with a custom alphabet.
934
+ *
935
+ * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers;
936
+ * a NegativeNumberException will be thrown when attempting to call this method on a negative number.
937
+ *
938
+ * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8.
939
+ *
940
+ * @throws NegativeNumberException If this number is negative.
941
+ * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars.
942
+ */
943
+ public function toArbitraryBase(string $alphabet) : string
944
+ {
945
+ $base = \strlen($alphabet);
946
+
947
+ if ($base < 2) {
948
+ throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.');
949
+ }
950
+
951
+ if ($this->value[0] === '-') {
952
+ throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.');
953
+ }
954
+
955
+ return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base);
956
+ }
957
+
958
+ /**
959
+ * Returns a string of bytes containing the binary representation of this BigInteger.
960
+ *
961
+ * The string is in big-endian byte-order: the most significant byte is in the zeroth element.
962
+ *
963
+ * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to
964
+ * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the
965
+ * number is negative.
966
+ *
967
+ * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit
968
+ * if `$signed` is true.
969
+ *
970
+ * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match.
971
+ *
972
+ * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit.
973
+ *
974
+ * @throws NegativeNumberException If $signed is false, and the number is negative.
975
+ */
976
+ public function toBytes(bool $signed = true) : string
977
+ {
978
+ if (! $signed && $this->isNegative()) {
979
+ throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.');
980
+ }
981
+
982
+ $hex = $this->abs()->toBase(16);
983
+
984
+ if (\strlen($hex) % 2 !== 0) {
985
+ $hex = '0' . $hex;
986
+ }
987
+
988
+ $baseHexLength = \strlen($hex);
989
+
990
+ if ($signed) {
991
+ if ($this->isNegative()) {
992
+ $bin = \hex2bin($hex);
993
+ assert($bin !== false);
994
+
995
+ $hex = \bin2hex(~$bin);
996
+ $hex = self::fromBase($hex, 16)->plus(1)->toBase(16);
997
+
998
+ $hexLength = \strlen($hex);
999
+
1000
+ if ($hexLength < $baseHexLength) {
1001
+ $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex;
1002
+ }
1003
+
1004
+ if ($hex[0] < '8') {
1005
+ $hex = 'FF' . $hex;
1006
+ }
1007
+ } else {
1008
+ if ($hex[0] >= '8') {
1009
+ $hex = '00' . $hex;
1010
+ }
1011
+ }
1012
+ }
1013
+
1014
+ return \hex2bin($hex);
1015
+ }
1016
+
1017
+ public function __toString() : string
1018
+ {
1019
+ return $this->value;
1020
+ }
1021
+
1022
+ /**
1023
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
1024
+ *
1025
+ * @internal
1026
+ *
1027
+ * @return array{value: string}
1028
+ */
1029
+ public function __serialize(): array
1030
+ {
1031
+ return ['value' => $this->value];
1032
+ }
1033
+
1034
+ /**
1035
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
1036
+ *
1037
+ * @internal
1038
+ * @psalm-suppress RedundantPropertyInitializationCheck
1039
+ *
1040
+ * @param array{value: string} $data
1041
+ *
1042
+ * @throws \LogicException
1043
+ */
1044
+ public function __unserialize(array $data): void
1045
+ {
1046
+ if (isset($this->value)) {
1047
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
1048
+ }
1049
+
1050
+ $this->value = $data['value'];
1051
+ }
1052
+
1053
+ /**
1054
+ * This method is required by interface Serializable and SHOULD NOT be accessed directly.
1055
+ *
1056
+ * @internal
1057
+ */
1058
+ public function serialize() : string
1059
+ {
1060
+ return $this->value;
1061
+ }
1062
+
1063
+ /**
1064
+ * This method is only here to implement interface Serializable and cannot be accessed directly.
1065
+ *
1066
+ * @internal
1067
+ * @psalm-suppress RedundantPropertyInitializationCheck
1068
+ *
1069
+ * @throws \LogicException
1070
+ */
1071
+ public function unserialize($value) : void
1072
+ {
1073
+ if (isset($this->value)) {
1074
+ throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
1075
+ }
1076
+
1077
+ $this->value = $value;
1078
+ }
1079
+ }