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,669 @@
1
+ <?php
2
+
3
+ namespace Firebase\JWT;
4
+
5
+ use ArrayAccess;
6
+ use DateTime;
7
+ use DomainException;
8
+ use Exception;
9
+ use InvalidArgumentException;
10
+ use OpenSSLAsymmetricKey;
11
+ use OpenSSLCertificate;
12
+ use stdClass;
13
+ use UnexpectedValueException;
14
+
15
+ /**
16
+ * JSON Web Token implementation, based on this spec:
17
+ * https://tools.ietf.org/html/rfc7519
18
+ *
19
+ * PHP version 5
20
+ *
21
+ * @category Authentication
22
+ * @package Authentication_JWT
23
+ * @author Neuman Vong <neuman@twilio.com>
24
+ * @author Anant Narayanan <anant@php.net>
25
+ * @license http://opensource.org/licenses/BSD-3-Clause 3-clause BSD
26
+ * @link https://github.com/firebase/php-jwt
27
+ */
28
+ class JWT
29
+ {
30
+ private const ASN1_INTEGER = 0x02;
31
+ private const ASN1_SEQUENCE = 0x10;
32
+ private const ASN1_BIT_STRING = 0x03;
33
+
34
+ /**
35
+ * When checking nbf, iat or expiration times,
36
+ * we want to provide some extra leeway time to
37
+ * account for clock skew.
38
+ *
39
+ * @var int
40
+ */
41
+ public static $leeway = 0;
42
+
43
+ /**
44
+ * Allow the current timestamp to be specified.
45
+ * Useful for fixing a value within unit testing.
46
+ * Will default to PHP time() value if null.
47
+ *
48
+ * @var ?int
49
+ */
50
+ public static $timestamp = null;
51
+
52
+ /**
53
+ * @var array<string, string[]>
54
+ */
55
+ public static $supported_algs = [
56
+ 'ES384' => ['openssl', 'SHA384'],
57
+ 'ES256' => ['openssl', 'SHA256'],
58
+ 'ES256K' => ['openssl', 'SHA256'],
59
+ 'HS256' => ['hash_hmac', 'SHA256'],
60
+ 'HS384' => ['hash_hmac', 'SHA384'],
61
+ 'HS512' => ['hash_hmac', 'SHA512'],
62
+ 'RS256' => ['openssl', 'SHA256'],
63
+ 'RS384' => ['openssl', 'SHA384'],
64
+ 'RS512' => ['openssl', 'SHA512'],
65
+ 'EdDSA' => ['sodium_crypto', 'EdDSA'],
66
+ ];
67
+
68
+ /**
69
+ * Decodes a JWT string into a PHP object.
70
+ *
71
+ * @param string $jwt The JWT
72
+ * @param Key|ArrayAccess<string,Key>|array<string,Key> $keyOrKeyArray The Key or associative array of key IDs
73
+ * (kid) to Key objects.
74
+ * If the algorithm used is asymmetric, this is
75
+ * the public key.
76
+ * Each Key object contains an algorithm and
77
+ * matching key.
78
+ * Supported algorithms are 'ES384','ES256',
79
+ * 'HS256', 'HS384', 'HS512', 'RS256', 'RS384'
80
+ * and 'RS512'.
81
+ * @param stdClass $headers Optional. Populates stdClass with headers.
82
+ *
83
+ * @return stdClass The JWT's payload as a PHP object
84
+ *
85
+ * @throws InvalidArgumentException Provided key/key-array was empty or malformed
86
+ * @throws DomainException Provided JWT is malformed
87
+ * @throws UnexpectedValueException Provided JWT was invalid
88
+ * @throws SignatureInvalidException Provided JWT was invalid because the signature verification failed
89
+ * @throws BeforeValidException Provided JWT is trying to be used before it's eligible as defined by 'nbf'
90
+ * @throws BeforeValidException Provided JWT is trying to be used before it's been created as defined by 'iat'
91
+ * @throws ExpiredException Provided JWT has since expired, as defined by the 'exp' claim
92
+ *
93
+ * @uses jsonDecode
94
+ * @uses urlsafeB64Decode
95
+ */
96
+ public static function decode(
97
+ string $jwt,
98
+ $keyOrKeyArray,
99
+ stdClass &$headers = null
100
+ ): stdClass {
101
+ // Validate JWT
102
+ $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp;
103
+
104
+ if (empty($keyOrKeyArray)) {
105
+ throw new InvalidArgumentException('Key may not be empty');
106
+ }
107
+ $tks = \explode('.', $jwt);
108
+ if (\count($tks) !== 3) {
109
+ throw new UnexpectedValueException('Wrong number of segments');
110
+ }
111
+ list($headb64, $bodyb64, $cryptob64) = $tks;
112
+ $headerRaw = static::urlsafeB64Decode($headb64);
113
+ if (null === ($header = static::jsonDecode($headerRaw))) {
114
+ throw new UnexpectedValueException('Invalid header encoding');
115
+ }
116
+ if ($headers !== null) {
117
+ $headers = $header;
118
+ }
119
+ $payloadRaw = static::urlsafeB64Decode($bodyb64);
120
+ if (null === ($payload = static::jsonDecode($payloadRaw))) {
121
+ throw new UnexpectedValueException('Invalid claims encoding');
122
+ }
123
+ if (\is_array($payload)) {
124
+ // prevent PHP Fatal Error in edge-cases when payload is empty array
125
+ $payload = (object) $payload;
126
+ }
127
+ if (!$payload instanceof stdClass) {
128
+ throw new UnexpectedValueException('Payload must be a JSON object');
129
+ }
130
+ $sig = static::urlsafeB64Decode($cryptob64);
131
+ if (empty($header->alg)) {
132
+ throw new UnexpectedValueException('Empty algorithm');
133
+ }
134
+ if (empty(static::$supported_algs[$header->alg])) {
135
+ throw new UnexpectedValueException('Algorithm not supported');
136
+ }
137
+
138
+ $key = self::getKey($keyOrKeyArray, property_exists($header, 'kid') ? $header->kid : null);
139
+
140
+ // Check the algorithm
141
+ if (!self::constantTimeEquals($key->getAlgorithm(), $header->alg)) {
142
+ // See issue #351
143
+ throw new UnexpectedValueException('Incorrect key for this algorithm');
144
+ }
145
+ if (\in_array($header->alg, ['ES256', 'ES256K', 'ES384'], true)) {
146
+ // OpenSSL expects an ASN.1 DER sequence for ES256/ES256K/ES384 signatures
147
+ $sig = self::signatureToDER($sig);
148
+ }
149
+ if (!self::verify("{$headb64}.{$bodyb64}", $sig, $key->getKeyMaterial(), $header->alg)) {
150
+ throw new SignatureInvalidException('Signature verification failed');
151
+ }
152
+
153
+ // Check the nbf if it is defined. This is the time that the
154
+ // token can actually be used. If it's not yet that time, abort.
155
+ if (isset($payload->nbf) && floor($payload->nbf) > ($timestamp + static::$leeway)) {
156
+ $ex = new BeforeValidException(
157
+ 'Cannot handle token with nbf prior to ' . \date(DateTime::ISO8601, (int) $payload->nbf)
158
+ );
159
+ $ex->setPayload($payload);
160
+ throw $ex;
161
+ }
162
+
163
+ // Check that this token has been created before 'now'. This prevents
164
+ // using tokens that have been created for later use (and haven't
165
+ // correctly used the nbf claim).
166
+ if (!isset($payload->nbf) && isset($payload->iat) && floor($payload->iat) > ($timestamp + static::$leeway)) {
167
+ $ex = new BeforeValidException(
168
+ 'Cannot handle token with iat prior to ' . \date(DateTime::ISO8601, (int) $payload->iat)
169
+ );
170
+ $ex->setPayload($payload);
171
+ throw $ex;
172
+ }
173
+
174
+ // Check if this token has expired.
175
+ if (isset($payload->exp) && ($timestamp - static::$leeway) >= $payload->exp) {
176
+ $ex = new ExpiredException('Expired token');
177
+ $ex->setPayload($payload);
178
+ throw $ex;
179
+ }
180
+
181
+ return $payload;
182
+ }
183
+
184
+ /**
185
+ * Converts and signs a PHP array into a JWT string.
186
+ *
187
+ * @param array<mixed> $payload PHP array
188
+ * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key.
189
+ * @param string $alg Supported algorithms are 'ES384','ES256', 'ES256K', 'HS256',
190
+ * 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
191
+ * @param string $keyId
192
+ * @param array<string, string> $head An array with header elements to attach
193
+ *
194
+ * @return string A signed JWT
195
+ *
196
+ * @uses jsonEncode
197
+ * @uses urlsafeB64Encode
198
+ */
199
+ public static function encode(
200
+ array $payload,
201
+ $key,
202
+ string $alg,
203
+ string $keyId = null,
204
+ array $head = null
205
+ ): string {
206
+ $header = ['typ' => 'JWT'];
207
+ if (isset($head) && \is_array($head)) {
208
+ $header = \array_merge($header, $head);
209
+ }
210
+ $header['alg'] = $alg;
211
+ if ($keyId !== null) {
212
+ $header['kid'] = $keyId;
213
+ }
214
+ $segments = [];
215
+ $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($header));
216
+ $segments[] = static::urlsafeB64Encode((string) static::jsonEncode($payload));
217
+ $signing_input = \implode('.', $segments);
218
+
219
+ $signature = static::sign($signing_input, $key, $alg);
220
+ $segments[] = static::urlsafeB64Encode($signature);
221
+
222
+ return \implode('.', $segments);
223
+ }
224
+
225
+ /**
226
+ * Sign a string with a given key and algorithm.
227
+ *
228
+ * @param string $msg The message to sign
229
+ * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key.
230
+ * @param string $alg Supported algorithms are 'EdDSA', 'ES384', 'ES256', 'ES256K', 'HS256',
231
+ * 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512'
232
+ *
233
+ * @return string An encrypted message
234
+ *
235
+ * @throws DomainException Unsupported algorithm or bad key was specified
236
+ */
237
+ public static function sign(
238
+ string $msg,
239
+ $key,
240
+ string $alg
241
+ ): string {
242
+ if (empty(static::$supported_algs[$alg])) {
243
+ throw new DomainException('Algorithm not supported');
244
+ }
245
+ list($function, $algorithm) = static::$supported_algs[$alg];
246
+ switch ($function) {
247
+ case 'hash_hmac':
248
+ if (!\is_string($key)) {
249
+ throw new InvalidArgumentException('key must be a string when using hmac');
250
+ }
251
+ return \hash_hmac($algorithm, $msg, $key, true);
252
+ case 'openssl':
253
+ $signature = '';
254
+ $success = \openssl_sign($msg, $signature, $key, $algorithm); // @phpstan-ignore-line
255
+ if (!$success) {
256
+ throw new DomainException('OpenSSL unable to sign data');
257
+ }
258
+ if ($alg === 'ES256' || $alg === 'ES256K') {
259
+ $signature = self::signatureFromDER($signature, 256);
260
+ } elseif ($alg === 'ES384') {
261
+ $signature = self::signatureFromDER($signature, 384);
262
+ }
263
+ return $signature;
264
+ case 'sodium_crypto':
265
+ if (!\function_exists('sodium_crypto_sign_detached')) {
266
+ throw new DomainException('libsodium is not available');
267
+ }
268
+ if (!\is_string($key)) {
269
+ throw new InvalidArgumentException('key must be a string when using EdDSA');
270
+ }
271
+ try {
272
+ // The last non-empty line is used as the key.
273
+ $lines = array_filter(explode("\n", $key));
274
+ $key = base64_decode((string) end($lines));
275
+ if (\strlen($key) === 0) {
276
+ throw new DomainException('Key cannot be empty string');
277
+ }
278
+ return sodium_crypto_sign_detached($msg, $key);
279
+ } catch (Exception $e) {
280
+ throw new DomainException($e->getMessage(), 0, $e);
281
+ }
282
+ }
283
+
284
+ throw new DomainException('Algorithm not supported');
285
+ }
286
+
287
+ /**
288
+ * Verify a signature with the message, key and method. Not all methods
289
+ * are symmetric, so we must have a separate verify and sign method.
290
+ *
291
+ * @param string $msg The original message (header and body)
292
+ * @param string $signature The original signature
293
+ * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial For Ed*, ES*, HS*, a string key works. for RS*, must be an instance of OpenSSLAsymmetricKey
294
+ * @param string $alg The algorithm
295
+ *
296
+ * @return bool
297
+ *
298
+ * @throws DomainException Invalid Algorithm, bad key, or OpenSSL failure
299
+ */
300
+ private static function verify(
301
+ string $msg,
302
+ string $signature,
303
+ $keyMaterial,
304
+ string $alg
305
+ ): bool {
306
+ if (empty(static::$supported_algs[$alg])) {
307
+ throw new DomainException('Algorithm not supported');
308
+ }
309
+
310
+ list($function, $algorithm) = static::$supported_algs[$alg];
311
+ switch ($function) {
312
+ case 'openssl':
313
+ $success = \openssl_verify($msg, $signature, $keyMaterial, $algorithm); // @phpstan-ignore-line
314
+ if ($success === 1) {
315
+ return true;
316
+ }
317
+ if ($success === 0) {
318
+ return false;
319
+ }
320
+ // returns 1 on success, 0 on failure, -1 on error.
321
+ throw new DomainException(
322
+ 'OpenSSL error: ' . \openssl_error_string()
323
+ );
324
+ case 'sodium_crypto':
325
+ if (!\function_exists('sodium_crypto_sign_verify_detached')) {
326
+ throw new DomainException('libsodium is not available');
327
+ }
328
+ if (!\is_string($keyMaterial)) {
329
+ throw new InvalidArgumentException('key must be a string when using EdDSA');
330
+ }
331
+ try {
332
+ // The last non-empty line is used as the key.
333
+ $lines = array_filter(explode("\n", $keyMaterial));
334
+ $key = base64_decode((string) end($lines));
335
+ if (\strlen($key) === 0) {
336
+ throw new DomainException('Key cannot be empty string');
337
+ }
338
+ if (\strlen($signature) === 0) {
339
+ throw new DomainException('Signature cannot be empty string');
340
+ }
341
+ return sodium_crypto_sign_verify_detached($signature, $msg, $key);
342
+ } catch (Exception $e) {
343
+ throw new DomainException($e->getMessage(), 0, $e);
344
+ }
345
+ case 'hash_hmac':
346
+ default:
347
+ if (!\is_string($keyMaterial)) {
348
+ throw new InvalidArgumentException('key must be a string when using hmac');
349
+ }
350
+ $hash = \hash_hmac($algorithm, $msg, $keyMaterial, true);
351
+ return self::constantTimeEquals($hash, $signature);
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Decode a JSON string into a PHP object.
357
+ *
358
+ * @param string $input JSON string
359
+ *
360
+ * @return mixed The decoded JSON string
361
+ *
362
+ * @throws DomainException Provided string was invalid JSON
363
+ */
364
+ public static function jsonDecode(string $input)
365
+ {
366
+ $obj = \json_decode($input, false, 512, JSON_BIGINT_AS_STRING);
367
+
368
+ if ($errno = \json_last_error()) {
369
+ self::handleJsonError($errno);
370
+ } elseif ($obj === null && $input !== 'null') {
371
+ throw new DomainException('Null result with non-null input');
372
+ }
373
+ return $obj;
374
+ }
375
+
376
+ /**
377
+ * Encode a PHP array into a JSON string.
378
+ *
379
+ * @param array<mixed> $input A PHP array
380
+ *
381
+ * @return string JSON representation of the PHP array
382
+ *
383
+ * @throws DomainException Provided object could not be encoded to valid JSON
384
+ */
385
+ public static function jsonEncode(array $input): string
386
+ {
387
+ if (PHP_VERSION_ID >= 50400) {
388
+ $json = \json_encode($input, \JSON_UNESCAPED_SLASHES);
389
+ } else {
390
+ // PHP 5.3 only
391
+ $json = \json_encode($input);
392
+ }
393
+ if ($errno = \json_last_error()) {
394
+ self::handleJsonError($errno);
395
+ } elseif ($json === 'null') {
396
+ throw new DomainException('Null result with non-null input');
397
+ }
398
+ if ($json === false) {
399
+ throw new DomainException('Provided object could not be encoded to valid JSON');
400
+ }
401
+ return $json;
402
+ }
403
+
404
+ /**
405
+ * Decode a string with URL-safe Base64.
406
+ *
407
+ * @param string $input A Base64 encoded string
408
+ *
409
+ * @return string A decoded string
410
+ *
411
+ * @throws InvalidArgumentException invalid base64 characters
412
+ */
413
+ public static function urlsafeB64Decode(string $input): string
414
+ {
415
+ return \base64_decode(self::convertBase64UrlToBase64($input));
416
+ }
417
+
418
+ /**
419
+ * Convert a string in the base64url (URL-safe Base64) encoding to standard base64.
420
+ *
421
+ * @param string $input A Base64 encoded string with URL-safe characters (-_ and no padding)
422
+ *
423
+ * @return string A Base64 encoded string with standard characters (+/) and padding (=), when
424
+ * needed.
425
+ *
426
+ * @see https://www.rfc-editor.org/rfc/rfc4648
427
+ */
428
+ public static function convertBase64UrlToBase64(string $input): string
429
+ {
430
+ $remainder = \strlen($input) % 4;
431
+ if ($remainder) {
432
+ $padlen = 4 - $remainder;
433
+ $input .= \str_repeat('=', $padlen);
434
+ }
435
+ return \strtr($input, '-_', '+/');
436
+ }
437
+
438
+ /**
439
+ * Encode a string with URL-safe Base64.
440
+ *
441
+ * @param string $input The string you want encoded
442
+ *
443
+ * @return string The base64 encode of what you passed in
444
+ */
445
+ public static function urlsafeB64Encode(string $input): string
446
+ {
447
+ return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_'));
448
+ }
449
+
450
+
451
+ /**
452
+ * Determine if an algorithm has been provided for each Key
453
+ *
454
+ * @param Key|ArrayAccess<string,Key>|array<string,Key> $keyOrKeyArray
455
+ * @param string|null $kid
456
+ *
457
+ * @throws UnexpectedValueException
458
+ *
459
+ * @return Key
460
+ */
461
+ private static function getKey(
462
+ $keyOrKeyArray,
463
+ ?string $kid
464
+ ): Key {
465
+ if ($keyOrKeyArray instanceof Key) {
466
+ return $keyOrKeyArray;
467
+ }
468
+
469
+ if (empty($kid) && $kid !== '0') {
470
+ throw new UnexpectedValueException('"kid" empty, unable to lookup correct key');
471
+ }
472
+
473
+ if ($keyOrKeyArray instanceof CachedKeySet) {
474
+ // Skip "isset" check, as this will automatically refresh if not set
475
+ return $keyOrKeyArray[$kid];
476
+ }
477
+
478
+ if (!isset($keyOrKeyArray[$kid])) {
479
+ throw new UnexpectedValueException('"kid" invalid, unable to lookup correct key');
480
+ }
481
+
482
+ return $keyOrKeyArray[$kid];
483
+ }
484
+
485
+ /**
486
+ * @param string $left The string of known length to compare against
487
+ * @param string $right The user-supplied string
488
+ * @return bool
489
+ */
490
+ public static function constantTimeEquals(string $left, string $right): bool
491
+ {
492
+ if (\function_exists('hash_equals')) {
493
+ return \hash_equals($left, $right);
494
+ }
495
+ $len = \min(self::safeStrlen($left), self::safeStrlen($right));
496
+
497
+ $status = 0;
498
+ for ($i = 0; $i < $len; $i++) {
499
+ $status |= (\ord($left[$i]) ^ \ord($right[$i]));
500
+ }
501
+ $status |= (self::safeStrlen($left) ^ self::safeStrlen($right));
502
+
503
+ return ($status === 0);
504
+ }
505
+
506
+ /**
507
+ * Helper method to create a JSON error.
508
+ *
509
+ * @param int $errno An error number from json_last_error()
510
+ *
511
+ * @throws DomainException
512
+ *
513
+ * @return void
514
+ */
515
+ private static function handleJsonError(int $errno): void
516
+ {
517
+ $messages = [
518
+ JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
519
+ JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON',
520
+ JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
521
+ JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
522
+ JSON_ERROR_UTF8 => 'Malformed UTF-8 characters' //PHP >= 5.3.3
523
+ ];
524
+ throw new DomainException(
525
+ isset($messages[$errno])
526
+ ? $messages[$errno]
527
+ : 'Unknown JSON error: ' . $errno
528
+ );
529
+ }
530
+
531
+ /**
532
+ * Get the number of bytes in cryptographic strings.
533
+ *
534
+ * @param string $str
535
+ *
536
+ * @return int
537
+ */
538
+ private static function safeStrlen(string $str): int
539
+ {
540
+ if (\function_exists('mb_strlen')) {
541
+ return \mb_strlen($str, '8bit');
542
+ }
543
+ return \strlen($str);
544
+ }
545
+
546
+ /**
547
+ * Convert an ECDSA signature to an ASN.1 DER sequence
548
+ *
549
+ * @param string $sig The ECDSA signature to convert
550
+ * @return string The encoded DER object
551
+ */
552
+ private static function signatureToDER(string $sig): string
553
+ {
554
+ // Separate the signature into r-value and s-value
555
+ $length = max(1, (int) (\strlen($sig) / 2));
556
+ list($r, $s) = \str_split($sig, $length);
557
+
558
+ // Trim leading zeros
559
+ $r = \ltrim($r, "\x00");
560
+ $s = \ltrim($s, "\x00");
561
+
562
+ // Convert r-value and s-value from unsigned big-endian integers to
563
+ // signed two's complement
564
+ if (\ord($r[0]) > 0x7f) {
565
+ $r = "\x00" . $r;
566
+ }
567
+ if (\ord($s[0]) > 0x7f) {
568
+ $s = "\x00" . $s;
569
+ }
570
+
571
+ return self::encodeDER(
572
+ self::ASN1_SEQUENCE,
573
+ self::encodeDER(self::ASN1_INTEGER, $r) .
574
+ self::encodeDER(self::ASN1_INTEGER, $s)
575
+ );
576
+ }
577
+
578
+ /**
579
+ * Encodes a value into a DER object.
580
+ *
581
+ * @param int $type DER tag
582
+ * @param string $value the value to encode
583
+ *
584
+ * @return string the encoded object
585
+ */
586
+ private static function encodeDER(int $type, string $value): string
587
+ {
588
+ $tag_header = 0;
589
+ if ($type === self::ASN1_SEQUENCE) {
590
+ $tag_header |= 0x20;
591
+ }
592
+
593
+ // Type
594
+ $der = \chr($tag_header | $type);
595
+
596
+ // Length
597
+ $der .= \chr(\strlen($value));
598
+
599
+ return $der . $value;
600
+ }
601
+
602
+ /**
603
+ * Encodes signature from a DER object.
604
+ *
605
+ * @param string $der binary signature in DER format
606
+ * @param int $keySize the number of bits in the key
607
+ *
608
+ * @return string the signature
609
+ */
610
+ private static function signatureFromDER(string $der, int $keySize): string
611
+ {
612
+ // OpenSSL returns the ECDSA signatures as a binary ASN.1 DER SEQUENCE
613
+ list($offset, $_) = self::readDER($der);
614
+ list($offset, $r) = self::readDER($der, $offset);
615
+ list($offset, $s) = self::readDER($der, $offset);
616
+
617
+ // Convert r-value and s-value from signed two's compliment to unsigned
618
+ // big-endian integers
619
+ $r = \ltrim($r, "\x00");
620
+ $s = \ltrim($s, "\x00");
621
+
622
+ // Pad out r and s so that they are $keySize bits long
623
+ $r = \str_pad($r, $keySize / 8, "\x00", STR_PAD_LEFT);
624
+ $s = \str_pad($s, $keySize / 8, "\x00", STR_PAD_LEFT);
625
+
626
+ return $r . $s;
627
+ }
628
+
629
+ /**
630
+ * Reads binary DER-encoded data and decodes into a single object
631
+ *
632
+ * @param string $der the binary data in DER format
633
+ * @param int $offset the offset of the data stream containing the object
634
+ * to decode
635
+ *
636
+ * @return array{int, string|null} the new offset and the decoded object
637
+ */
638
+ private static function readDER(string $der, int $offset = 0): array
639
+ {
640
+ $pos = $offset;
641
+ $size = \strlen($der);
642
+ $constructed = (\ord($der[$pos]) >> 5) & 0x01;
643
+ $type = \ord($der[$pos++]) & 0x1f;
644
+
645
+ // Length
646
+ $len = \ord($der[$pos++]);
647
+ if ($len & 0x80) {
648
+ $n = $len & 0x1f;
649
+ $len = 0;
650
+ while ($n-- && $pos < $size) {
651
+ $len = ($len << 8) | \ord($der[$pos++]);
652
+ }
653
+ }
654
+
655
+ // Value
656
+ if ($type === self::ASN1_BIT_STRING) {
657
+ $pos++; // Skip the first contents octet (padding indicator)
658
+ $data = \substr($der, $pos, $len - 1);
659
+ $pos += $len - 1;
660
+ } elseif (!$constructed) {
661
+ $data = \substr($der, $pos, $len);
662
+ $pos += $len;
663
+ } else {
664
+ $data = null;
665
+ }
666
+
667
+ return [$pos, $data];
668
+ }
669
+ }
@@ -0,0 +1,20 @@
1
+ <?php
2
+ namespace Firebase\JWT;
3
+
4
+ interface JWTExceptionWithPayloadInterface
5
+ {
6
+ /**
7
+ * Get the payload that caused this exception.
8
+ *
9
+ * @return object
10
+ */
11
+ public function getPayload(): object;
12
+
13
+ /**
14
+ * Get the payload that caused this exception.
15
+ *
16
+ * @param object $payload
17
+ * @return void
18
+ */
19
+ public function setPayload(object $payload): void;
20
+ }