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,786 @@
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\MathException;
9
+ use Brick\Math\Exception\NegativeNumberException;
10
+ use Brick\Math\Internal\Calculator;
11
+
12
+ /**
13
+ * Immutable, arbitrary-precision signed decimal numbers.
14
+ *
15
+ * @psalm-immutable
16
+ */
17
+ final class BigDecimal extends BigNumber
18
+ {
19
+ /**
20
+ * The unscaled value of this decimal number.
21
+ *
22
+ * This is a string of digits with an optional leading minus sign.
23
+ * No leading zero must be present.
24
+ * No leading minus sign must be present if the value is 0.
25
+ */
26
+ private string $value;
27
+
28
+ /**
29
+ * The scale (number of digits after the decimal point) of this decimal number.
30
+ *
31
+ * This must be zero or more.
32
+ */
33
+ private int $scale;
34
+
35
+ /**
36
+ * Protected constructor. Use a factory method to obtain an instance.
37
+ *
38
+ * @param string $value The unscaled value, validated.
39
+ * @param int $scale The scale, validated.
40
+ */
41
+ protected function __construct(string $value, int $scale = 0)
42
+ {
43
+ $this->value = $value;
44
+ $this->scale = $scale;
45
+ }
46
+
47
+ /**
48
+ * Creates a BigDecimal of the given value.
49
+ *
50
+ * @throws MathException If the value cannot be converted to a BigDecimal.
51
+ *
52
+ * @psalm-pure
53
+ */
54
+ public static function of(BigNumber|int|float|string $value) : BigDecimal
55
+ {
56
+ return parent::of($value)->toBigDecimal();
57
+ }
58
+
59
+ /**
60
+ * Creates a BigDecimal from an unscaled value and a scale.
61
+ *
62
+ * Example: `(12345, 3)` will result in the BigDecimal `12.345`.
63
+ *
64
+ * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger.
65
+ * @param int $scale The scale of the number, positive or zero.
66
+ *
67
+ * @throws \InvalidArgumentException If the scale is negative.
68
+ *
69
+ * @psalm-pure
70
+ */
71
+ public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal
72
+ {
73
+ if ($scale < 0) {
74
+ throw new \InvalidArgumentException('The scale cannot be negative.');
75
+ }
76
+
77
+ return new BigDecimal((string) BigInteger::of($value), $scale);
78
+ }
79
+
80
+ /**
81
+ * Returns a BigDecimal representing zero, with a scale of zero.
82
+ *
83
+ * @psalm-pure
84
+ */
85
+ public static function zero() : BigDecimal
86
+ {
87
+ /**
88
+ * @psalm-suppress ImpureStaticVariable
89
+ * @var BigDecimal|null $zero
90
+ */
91
+ static $zero;
92
+
93
+ if ($zero === null) {
94
+ $zero = new BigDecimal('0');
95
+ }
96
+
97
+ return $zero;
98
+ }
99
+
100
+ /**
101
+ * Returns a BigDecimal representing one, with a scale of zero.
102
+ *
103
+ * @psalm-pure
104
+ */
105
+ public static function one() : BigDecimal
106
+ {
107
+ /**
108
+ * @psalm-suppress ImpureStaticVariable
109
+ * @var BigDecimal|null $one
110
+ */
111
+ static $one;
112
+
113
+ if ($one === null) {
114
+ $one = new BigDecimal('1');
115
+ }
116
+
117
+ return $one;
118
+ }
119
+
120
+ /**
121
+ * Returns a BigDecimal representing ten, with a scale of zero.
122
+ *
123
+ * @psalm-pure
124
+ */
125
+ public static function ten() : BigDecimal
126
+ {
127
+ /**
128
+ * @psalm-suppress ImpureStaticVariable
129
+ * @var BigDecimal|null $ten
130
+ */
131
+ static $ten;
132
+
133
+ if ($ten === null) {
134
+ $ten = new BigDecimal('10');
135
+ }
136
+
137
+ return $ten;
138
+ }
139
+
140
+ /**
141
+ * Returns the sum of this number and the given one.
142
+ *
143
+ * The result has a scale of `max($this->scale, $that->scale)`.
144
+ *
145
+ * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal.
146
+ *
147
+ * @throws MathException If the number is not valid, or is not convertible to a BigDecimal.
148
+ */
149
+ public function plus(BigNumber|int|float|string $that) : BigDecimal
150
+ {
151
+ $that = BigDecimal::of($that);
152
+
153
+ if ($that->value === '0' && $that->scale <= $this->scale) {
154
+ return $this;
155
+ }
156
+
157
+ if ($this->value === '0' && $this->scale <= $that->scale) {
158
+ return $that;
159
+ }
160
+
161
+ [$a, $b] = $this->scaleValues($this, $that);
162
+
163
+ $value = Calculator::get()->add($a, $b);
164
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
165
+
166
+ return new BigDecimal($value, $scale);
167
+ }
168
+
169
+ /**
170
+ * Returns the difference of this number and the given one.
171
+ *
172
+ * The result has a scale of `max($this->scale, $that->scale)`.
173
+ *
174
+ * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal.
175
+ *
176
+ * @throws MathException If the number is not valid, or is not convertible to a BigDecimal.
177
+ */
178
+ public function minus(BigNumber|int|float|string $that) : BigDecimal
179
+ {
180
+ $that = BigDecimal::of($that);
181
+
182
+ if ($that->value === '0' && $that->scale <= $this->scale) {
183
+ return $this;
184
+ }
185
+
186
+ [$a, $b] = $this->scaleValues($this, $that);
187
+
188
+ $value = Calculator::get()->sub($a, $b);
189
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
190
+
191
+ return new BigDecimal($value, $scale);
192
+ }
193
+
194
+ /**
195
+ * Returns the product of this number and the given one.
196
+ *
197
+ * The result has a scale of `$this->scale + $that->scale`.
198
+ *
199
+ * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal.
200
+ *
201
+ * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal.
202
+ */
203
+ public function multipliedBy(BigNumber|int|float|string $that) : BigDecimal
204
+ {
205
+ $that = BigDecimal::of($that);
206
+
207
+ if ($that->value === '1' && $that->scale === 0) {
208
+ return $this;
209
+ }
210
+
211
+ if ($this->value === '1' && $this->scale === 0) {
212
+ return $that;
213
+ }
214
+
215
+ $value = Calculator::get()->mul($this->value, $that->value);
216
+ $scale = $this->scale + $that->scale;
217
+
218
+ return new BigDecimal($value, $scale);
219
+ }
220
+
221
+ /**
222
+ * Returns the result of the division of this number by the given one, at the given scale.
223
+ *
224
+ * @param BigNumber|int|float|string $that The divisor.
225
+ * @param int|null $scale The desired scale, or null to use the scale of this number.
226
+ * @param int $roundingMode An optional rounding mode.
227
+ *
228
+ * @throws \InvalidArgumentException If the scale or rounding mode is invalid.
229
+ * @throws MathException If the number is invalid, is zero, or rounding was necessary.
230
+ */
231
+ public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
232
+ {
233
+ $that = BigDecimal::of($that);
234
+
235
+ if ($that->isZero()) {
236
+ throw DivisionByZeroException::divisionByZero();
237
+ }
238
+
239
+ if ($scale === null) {
240
+ $scale = $this->scale;
241
+ } elseif ($scale < 0) {
242
+ throw new \InvalidArgumentException('Scale cannot be negative.');
243
+ }
244
+
245
+ if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) {
246
+ return $this;
247
+ }
248
+
249
+ $p = $this->valueWithMinScale($that->scale + $scale);
250
+ $q = $that->valueWithMinScale($this->scale - $scale);
251
+
252
+ $result = Calculator::get()->divRound($p, $q, $roundingMode);
253
+
254
+ return new BigDecimal($result, $scale);
255
+ }
256
+
257
+ /**
258
+ * Returns the exact result of the division of this number by the given one.
259
+ *
260
+ * The scale of the result is automatically calculated to fit all the fraction digits.
261
+ *
262
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
263
+ *
264
+ * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero,
265
+ * or the result yields an infinite number of digits.
266
+ */
267
+ public function exactlyDividedBy(BigNumber|int|float|string $that) : BigDecimal
268
+ {
269
+ $that = BigDecimal::of($that);
270
+
271
+ if ($that->value === '0') {
272
+ throw DivisionByZeroException::divisionByZero();
273
+ }
274
+
275
+ [, $b] = $this->scaleValues($this, $that);
276
+
277
+ $d = \rtrim($b, '0');
278
+ $scale = \strlen($b) - \strlen($d);
279
+
280
+ $calculator = Calculator::get();
281
+
282
+ foreach ([5, 2] as $prime) {
283
+ for (;;) {
284
+ $lastDigit = (int) $d[-1];
285
+
286
+ if ($lastDigit % $prime !== 0) {
287
+ break;
288
+ }
289
+
290
+ $d = $calculator->divQ($d, (string) $prime);
291
+ $scale++;
292
+ }
293
+ }
294
+
295
+ return $this->dividedBy($that, $scale)->stripTrailingZeros();
296
+ }
297
+
298
+ /**
299
+ * Returns this number exponentiated to the given value.
300
+ *
301
+ * The result has a scale of `$this->scale * $exponent`.
302
+ *
303
+ * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000.
304
+ */
305
+ public function power(int $exponent) : BigDecimal
306
+ {
307
+ if ($exponent === 0) {
308
+ return BigDecimal::one();
309
+ }
310
+
311
+ if ($exponent === 1) {
312
+ return $this;
313
+ }
314
+
315
+ if ($exponent < 0 || $exponent > Calculator::MAX_POWER) {
316
+ throw new \InvalidArgumentException(\sprintf(
317
+ 'The exponent %d is not in the range 0 to %d.',
318
+ $exponent,
319
+ Calculator::MAX_POWER
320
+ ));
321
+ }
322
+
323
+ return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent);
324
+ }
325
+
326
+ /**
327
+ * Returns the quotient of the division of this number by this given one.
328
+ *
329
+ * The quotient has a scale of `0`.
330
+ *
331
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
332
+ *
333
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
334
+ */
335
+ public function quotient(BigNumber|int|float|string $that) : BigDecimal
336
+ {
337
+ $that = BigDecimal::of($that);
338
+
339
+ if ($that->isZero()) {
340
+ throw DivisionByZeroException::divisionByZero();
341
+ }
342
+
343
+ $p = $this->valueWithMinScale($that->scale);
344
+ $q = $that->valueWithMinScale($this->scale);
345
+
346
+ $quotient = Calculator::get()->divQ($p, $q);
347
+
348
+ return new BigDecimal($quotient, 0);
349
+ }
350
+
351
+ /**
352
+ * Returns the remainder of the division of this number by this given one.
353
+ *
354
+ * The remainder has a scale of `max($this->scale, $that->scale)`.
355
+ *
356
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
357
+ *
358
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
359
+ */
360
+ public function remainder(BigNumber|int|float|string $that) : BigDecimal
361
+ {
362
+ $that = BigDecimal::of($that);
363
+
364
+ if ($that->isZero()) {
365
+ throw DivisionByZeroException::divisionByZero();
366
+ }
367
+
368
+ $p = $this->valueWithMinScale($that->scale);
369
+ $q = $that->valueWithMinScale($this->scale);
370
+
371
+ $remainder = Calculator::get()->divR($p, $q);
372
+
373
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
374
+
375
+ return new BigDecimal($remainder, $scale);
376
+ }
377
+
378
+ /**
379
+ * Returns the quotient and remainder of the division of this number by the given one.
380
+ *
381
+ * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`.
382
+ *
383
+ * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal.
384
+ *
385
+ * @return BigDecimal[] An array containing the quotient and the remainder.
386
+ *
387
+ * @throws MathException If the divisor is not a valid decimal number, or is zero.
388
+ */
389
+ public function quotientAndRemainder(BigNumber|int|float|string $that) : array
390
+ {
391
+ $that = BigDecimal::of($that);
392
+
393
+ if ($that->isZero()) {
394
+ throw DivisionByZeroException::divisionByZero();
395
+ }
396
+
397
+ $p = $this->valueWithMinScale($that->scale);
398
+ $q = $that->valueWithMinScale($this->scale);
399
+
400
+ [$quotient, $remainder] = Calculator::get()->divQR($p, $q);
401
+
402
+ $scale = $this->scale > $that->scale ? $this->scale : $that->scale;
403
+
404
+ $quotient = new BigDecimal($quotient, 0);
405
+ $remainder = new BigDecimal($remainder, $scale);
406
+
407
+ return [$quotient, $remainder];
408
+ }
409
+
410
+ /**
411
+ * Returns the square root of this number, rounded down to the given number of decimals.
412
+ *
413
+ * @throws \InvalidArgumentException If the scale is negative.
414
+ * @throws NegativeNumberException If this number is negative.
415
+ */
416
+ public function sqrt(int $scale) : BigDecimal
417
+ {
418
+ if ($scale < 0) {
419
+ throw new \InvalidArgumentException('Scale cannot be negative.');
420
+ }
421
+
422
+ if ($this->value === '0') {
423
+ return new BigDecimal('0', $scale);
424
+ }
425
+
426
+ if ($this->value[0] === '-') {
427
+ throw new NegativeNumberException('Cannot calculate the square root of a negative number.');
428
+ }
429
+
430
+ $value = $this->value;
431
+ $addDigits = 2 * $scale - $this->scale;
432
+
433
+ if ($addDigits > 0) {
434
+ // add zeros
435
+ $value .= \str_repeat('0', $addDigits);
436
+ } elseif ($addDigits < 0) {
437
+ // trim digits
438
+ if (-$addDigits >= \strlen($this->value)) {
439
+ // requesting a scale too low, will always yield a zero result
440
+ return new BigDecimal('0', $scale);
441
+ }
442
+
443
+ $value = \substr($value, 0, $addDigits);
444
+ }
445
+
446
+ $value = Calculator::get()->sqrt($value);
447
+
448
+ return new BigDecimal($value, $scale);
449
+ }
450
+
451
+ /**
452
+ * Returns a copy of this BigDecimal with the decimal point moved $n places to the left.
453
+ */
454
+ public function withPointMovedLeft(int $n) : BigDecimal
455
+ {
456
+ if ($n === 0) {
457
+ return $this;
458
+ }
459
+
460
+ if ($n < 0) {
461
+ return $this->withPointMovedRight(-$n);
462
+ }
463
+
464
+ return new BigDecimal($this->value, $this->scale + $n);
465
+ }
466
+
467
+ /**
468
+ * Returns a copy of this BigDecimal with the decimal point moved $n places to the right.
469
+ */
470
+ public function withPointMovedRight(int $n) : BigDecimal
471
+ {
472
+ if ($n === 0) {
473
+ return $this;
474
+ }
475
+
476
+ if ($n < 0) {
477
+ return $this->withPointMovedLeft(-$n);
478
+ }
479
+
480
+ $value = $this->value;
481
+ $scale = $this->scale - $n;
482
+
483
+ if ($scale < 0) {
484
+ if ($value !== '0') {
485
+ $value .= \str_repeat('0', -$scale);
486
+ }
487
+ $scale = 0;
488
+ }
489
+
490
+ return new BigDecimal($value, $scale);
491
+ }
492
+
493
+ /**
494
+ * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part.
495
+ */
496
+ public function stripTrailingZeros() : BigDecimal
497
+ {
498
+ if ($this->scale === 0) {
499
+ return $this;
500
+ }
501
+
502
+ $trimmedValue = \rtrim($this->value, '0');
503
+
504
+ if ($trimmedValue === '') {
505
+ return BigDecimal::zero();
506
+ }
507
+
508
+ $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue);
509
+
510
+ if ($trimmableZeros === 0) {
511
+ return $this;
512
+ }
513
+
514
+ if ($trimmableZeros > $this->scale) {
515
+ $trimmableZeros = $this->scale;
516
+ }
517
+
518
+ $value = \substr($this->value, 0, -$trimmableZeros);
519
+ $scale = $this->scale - $trimmableZeros;
520
+
521
+ return new BigDecimal($value, $scale);
522
+ }
523
+
524
+ /**
525
+ * Returns the absolute value of this number.
526
+ */
527
+ public function abs() : BigDecimal
528
+ {
529
+ return $this->isNegative() ? $this->negated() : $this;
530
+ }
531
+
532
+ /**
533
+ * Returns the negated value of this number.
534
+ */
535
+ public function negated() : BigDecimal
536
+ {
537
+ return new BigDecimal(Calculator::get()->neg($this->value), $this->scale);
538
+ }
539
+
540
+ public function compareTo(BigNumber|int|float|string $that) : int
541
+ {
542
+ $that = BigNumber::of($that);
543
+
544
+ if ($that instanceof BigInteger) {
545
+ $that = $that->toBigDecimal();
546
+ }
547
+
548
+ if ($that instanceof BigDecimal) {
549
+ [$a, $b] = $this->scaleValues($this, $that);
550
+
551
+ return Calculator::get()->cmp($a, $b);
552
+ }
553
+
554
+ return - $that->compareTo($this);
555
+ }
556
+
557
+ public function getSign() : int
558
+ {
559
+ return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1);
560
+ }
561
+
562
+ public function getUnscaledValue() : BigInteger
563
+ {
564
+ return self::newBigInteger($this->value);
565
+ }
566
+
567
+ public function getScale() : int
568
+ {
569
+ return $this->scale;
570
+ }
571
+
572
+ /**
573
+ * Returns a string representing the integral part of this decimal number.
574
+ *
575
+ * Example: `-123.456` => `-123`.
576
+ */
577
+ public function getIntegralPart() : string
578
+ {
579
+ if ($this->scale === 0) {
580
+ return $this->value;
581
+ }
582
+
583
+ $value = $this->getUnscaledValueWithLeadingZeros();
584
+
585
+ return \substr($value, 0, -$this->scale);
586
+ }
587
+
588
+ /**
589
+ * Returns a string representing the fractional part of this decimal number.
590
+ *
591
+ * If the scale is zero, an empty string is returned.
592
+ *
593
+ * Examples: `-123.456` => '456', `123` => ''.
594
+ */
595
+ public function getFractionalPart() : string
596
+ {
597
+ if ($this->scale === 0) {
598
+ return '';
599
+ }
600
+
601
+ $value = $this->getUnscaledValueWithLeadingZeros();
602
+
603
+ return \substr($value, -$this->scale);
604
+ }
605
+
606
+ /**
607
+ * Returns whether this decimal number has a non-zero fractional part.
608
+ */
609
+ public function hasNonZeroFractionalPart() : bool
610
+ {
611
+ return $this->getFractionalPart() !== \str_repeat('0', $this->scale);
612
+ }
613
+
614
+ public function toBigInteger() : BigInteger
615
+ {
616
+ $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0);
617
+
618
+ return self::newBigInteger($zeroScaleDecimal->value);
619
+ }
620
+
621
+ public function toBigDecimal() : BigDecimal
622
+ {
623
+ return $this;
624
+ }
625
+
626
+ public function toBigRational() : BigRational
627
+ {
628
+ $numerator = self::newBigInteger($this->value);
629
+ $denominator = self::newBigInteger('1' . \str_repeat('0', $this->scale));
630
+
631
+ return self::newBigRational($numerator, $denominator, false);
632
+ }
633
+
634
+ public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal
635
+ {
636
+ if ($scale === $this->scale) {
637
+ return $this;
638
+ }
639
+
640
+ return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode);
641
+ }
642
+
643
+ public function toInt() : int
644
+ {
645
+ return $this->toBigInteger()->toInt();
646
+ }
647
+
648
+ public function toFloat() : float
649
+ {
650
+ return (float) (string) $this;
651
+ }
652
+
653
+ public function __toString() : string
654
+ {
655
+ if ($this->scale === 0) {
656
+ return $this->value;
657
+ }
658
+
659
+ $value = $this->getUnscaledValueWithLeadingZeros();
660
+
661
+ return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale);
662
+ }
663
+
664
+ /**
665
+ * This method is required for serializing the object and SHOULD NOT be accessed directly.
666
+ *
667
+ * @internal
668
+ *
669
+ * @return array{value: string, scale: int}
670
+ */
671
+ public function __serialize(): array
672
+ {
673
+ return ['value' => $this->value, 'scale' => $this->scale];
674
+ }
675
+
676
+ /**
677
+ * This method is only here to allow unserializing the object and cannot be accessed directly.
678
+ *
679
+ * @internal
680
+ * @psalm-suppress RedundantPropertyInitializationCheck
681
+ *
682
+ * @param array{value: string, scale: int} $data
683
+ *
684
+ * @throws \LogicException
685
+ */
686
+ public function __unserialize(array $data): void
687
+ {
688
+ if (isset($this->value)) {
689
+ throw new \LogicException('__unserialize() is an internal function, it must not be called directly.');
690
+ }
691
+
692
+ $this->value = $data['value'];
693
+ $this->scale = $data['scale'];
694
+ }
695
+
696
+ /**
697
+ * This method is required by interface Serializable and SHOULD NOT be accessed directly.
698
+ *
699
+ * @internal
700
+ */
701
+ public function serialize() : string
702
+ {
703
+ return $this->value . ':' . $this->scale;
704
+ }
705
+
706
+ /**
707
+ * This method is only here to implement interface Serializable and cannot be accessed directly.
708
+ *
709
+ * @internal
710
+ * @psalm-suppress RedundantPropertyInitializationCheck
711
+ *
712
+ * @throws \LogicException
713
+ */
714
+ public function unserialize($value) : void
715
+ {
716
+ if (isset($this->value)) {
717
+ throw new \LogicException('unserialize() is an internal function, it must not be called directly.');
718
+ }
719
+
720
+ [$value, $scale] = \explode(':', $value);
721
+
722
+ $this->value = $value;
723
+ $this->scale = (int) $scale;
724
+ }
725
+
726
+ /**
727
+ * Puts the internal values of the given decimal numbers on the same scale.
728
+ *
729
+ * @return array{string, string} The scaled integer values of $x and $y.
730
+ */
731
+ private function scaleValues(BigDecimal $x, BigDecimal $y) : array
732
+ {
733
+ $a = $x->value;
734
+ $b = $y->value;
735
+
736
+ if ($b !== '0' && $x->scale > $y->scale) {
737
+ $b .= \str_repeat('0', $x->scale - $y->scale);
738
+ } elseif ($a !== '0' && $x->scale < $y->scale) {
739
+ $a .= \str_repeat('0', $y->scale - $x->scale);
740
+ }
741
+
742
+ return [$a, $b];
743
+ }
744
+
745
+ private function valueWithMinScale(int $scale) : string
746
+ {
747
+ $value = $this->value;
748
+
749
+ if ($this->value !== '0' && $scale > $this->scale) {
750
+ $value .= \str_repeat('0', $scale - $this->scale);
751
+ }
752
+
753
+ return $value;
754
+ }
755
+
756
+ /**
757
+ * Adds leading zeros if necessary to the unscaled value to represent the full decimal number.
758
+ */
759
+ private function getUnscaledValueWithLeadingZeros() : string
760
+ {
761
+ $value = $this->value;
762
+ $targetLength = $this->scale + 1;
763
+ $negative = ($value[0] === '-');
764
+ $length = \strlen($value);
765
+
766
+ if ($negative) {
767
+ $length--;
768
+ }
769
+
770
+ if ($length >= $targetLength) {
771
+ return $this->value;
772
+ }
773
+
774
+ if ($negative) {
775
+ $value = \substr($value, 1);
776
+ }
777
+
778
+ $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT);
779
+
780
+ if ($negative) {
781
+ $value = '-' . $value;
782
+ }
783
+
784
+ return $value;
785
+ }
786
+ }