create-berna-stencil 1.0.9 → 1.0.10

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 (365) hide show
  1. package/.env.example +8 -0
  2. package/.gitignore +2 -1
  3. package/README.md +1 -5
  4. package/bin/create.js +2 -1
  5. package/package.json +71 -70
  6. package/src/api/vendor/autoload.php +22 -22
  7. package/src/api/vendor/composer/ClassLoader.php +579 -579
  8. package/src/api/vendor/composer/InstalledVersions.php +396 -396
  9. package/src/api/vendor/composer/LICENSE +21 -21
  10. package/src/api/vendor/composer/autoload_classmap.php +15 -15
  11. package/src/api/vendor/composer/autoload_files.php +12 -12
  12. package/src/api/vendor/composer/autoload_namespaces.php +9 -9
  13. package/src/api/vendor/composer/autoload_psr4.php +16 -16
  14. package/src/api/vendor/composer/autoload_real.php +50 -50
  15. package/src/api/vendor/composer/autoload_static.php +86 -86
  16. package/src/api/vendor/composer/installed.json +582 -582
  17. package/src/api/vendor/composer/installed.php +86 -86
  18. package/src/api/vendor/composer/platform_check.php +25 -25
  19. package/src/api/vendor/graham-campbell/result-type/.gitattributes +9 -0
  20. package/src/api/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
  21. package/src/api/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
  22. package/src/api/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
  23. package/src/api/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
  24. package/src/api/vendor/graham-campbell/result-type/.github/workflows/stale.yml +11 -0
  25. package/src/api/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
  26. package/src/api/vendor/graham-campbell/result-type/CHANGELOG.md +53 -0
  27. package/src/api/vendor/graham-campbell/result-type/LICENSE +21 -0
  28. package/src/api/vendor/graham-campbell/result-type/README.md +42 -0
  29. package/src/api/vendor/graham-campbell/result-type/composer.json +33 -0
  30. package/src/api/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
  31. package/src/api/vendor/graham-campbell/result-type/src/Error.php +121 -0
  32. package/src/api/vendor/graham-campbell/result-type/src/Result.php +69 -0
  33. package/src/api/vendor/graham-campbell/result-type/src/Success.php +120 -0
  34. package/src/api/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
  35. package/src/api/vendor/phpmailer/phpmailer/.codecov.yml +21 -0
  36. package/src/api/vendor/phpmailer/phpmailer/.editorconfig +15 -0
  37. package/src/api/vendor/phpmailer/phpmailer/.gitattributes +17 -0
  38. package/src/api/vendor/phpmailer/phpmailer/.github/FUNDING.yml +6 -0
  39. package/src/api/vendor/phpmailer/phpmailer/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
  40. package/src/api/vendor/phpmailer/phpmailer/.github/actions/build-docs/Dockerfile +15 -0
  41. package/src/api/vendor/phpmailer/phpmailer/.github/actions/build-docs/entrypoint.sh +5 -0
  42. package/src/api/vendor/phpmailer/phpmailer/.github/dependabot.yml +21 -0
  43. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/docs.yaml +30 -0
  44. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/scorecards.yml +61 -0
  45. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/tests.yml +237 -0
  46. package/src/api/vendor/phpmailer/phpmailer/.phan/config.php +41 -0
  47. package/src/api/vendor/phpmailer/phpmailer/COMMITMENT +46 -0
  48. package/src/api/vendor/phpmailer/phpmailer/LICENSE +502 -0
  49. package/src/api/vendor/phpmailer/phpmailer/README.md +232 -0
  50. package/src/api/vendor/phpmailer/phpmailer/SECURITY.md +37 -0
  51. package/src/api/vendor/phpmailer/phpmailer/SMTPUTF8.md +48 -0
  52. package/src/api/vendor/phpmailer/phpmailer/UPGRADING.md +125 -0
  53. package/src/api/vendor/phpmailer/phpmailer/VERSION +1 -0
  54. package/src/api/vendor/phpmailer/phpmailer/changelog.md +1122 -0
  55. package/src/api/vendor/phpmailer/phpmailer/composer.json +84 -0
  56. package/src/api/vendor/phpmailer/phpmailer/docs/README.md +9 -0
  57. package/src/api/vendor/phpmailer/phpmailer/examples/DKIM_gen_keys.phps +81 -0
  58. package/src/api/vendor/phpmailer/phpmailer/examples/DKIM_sign.phps +46 -0
  59. package/src/api/vendor/phpmailer/phpmailer/examples/README.md +96 -0
  60. package/src/api/vendor/phpmailer/phpmailer/examples/azure_xoauth2.phps +126 -0
  61. package/src/api/vendor/phpmailer/phpmailer/examples/callback.phps +76 -0
  62. package/src/api/vendor/phpmailer/phpmailer/examples/contactform-ajax.phps +146 -0
  63. package/src/api/vendor/phpmailer/phpmailer/examples/contactform.phps +95 -0
  64. package/src/api/vendor/phpmailer/phpmailer/examples/contents.html +17 -0
  65. package/src/api/vendor/phpmailer/phpmailer/examples/contentsutf8.html +23 -0
  66. package/src/api/vendor/phpmailer/phpmailer/examples/exceptions.phps +40 -0
  67. package/src/api/vendor/phpmailer/phpmailer/examples/extending.phps +72 -0
  68. package/src/api/vendor/phpmailer/phpmailer/examples/gmail.phps +106 -0
  69. package/src/api/vendor/phpmailer/phpmailer/examples/gmail_xoauth.phps +121 -0
  70. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.afdesign +0 -0
  71. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.png +0 -0
  72. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.svg +209 -0
  73. package/src/api/vendor/phpmailer/phpmailer/examples/images/phpmailer.png +0 -0
  74. package/src/api/vendor/phpmailer/phpmailer/examples/images/phpmailer_mini.png +0 -0
  75. package/src/api/vendor/phpmailer/phpmailer/examples/mail.phps +35 -0
  76. package/src/api/vendor/phpmailer/phpmailer/examples/mailing_list.phps +96 -0
  77. package/src/api/vendor/phpmailer/phpmailer/examples/pop_before_smtp.phps +60 -0
  78. package/src/api/vendor/phpmailer/phpmailer/examples/send_file_upload.phps +60 -0
  79. package/src/api/vendor/phpmailer/phpmailer/examples/send_multiple_file_upload.phps +60 -0
  80. package/src/api/vendor/phpmailer/phpmailer/examples/sendmail.phps +37 -0
  81. package/src/api/vendor/phpmailer/phpmailer/examples/sendoauth2.phps +100 -0
  82. package/src/api/vendor/phpmailer/phpmailer/examples/simple_contact_form.phps +102 -0
  83. package/src/api/vendor/phpmailer/phpmailer/examples/smime_signed_mail.phps +99 -0
  84. package/src/api/vendor/phpmailer/phpmailer/examples/smtp.phps +62 -0
  85. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_check.phps +60 -0
  86. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_low_memory.phps +117 -0
  87. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_no_auth.phps +53 -0
  88. package/src/api/vendor/phpmailer/phpmailer/examples/ssl_options.phps +81 -0
  89. package/src/api/vendor/phpmailer/phpmailer/get_oauth_token.php +182 -0
  90. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php +26 -0
  91. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php +27 -0
  92. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php +35 -0
  93. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php +27 -0
  94. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php +27 -0
  95. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php +27 -0
  96. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php +27 -0
  97. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php +35 -0
  98. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php +27 -0
  99. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +28 -0
  100. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php +39 -0
  101. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php +28 -0
  102. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php +33 -0
  103. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php +37 -0
  104. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php +38 -0
  105. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php +28 -0
  106. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php +28 -0
  107. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php +27 -0
  108. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php +27 -0
  109. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php +36 -0
  110. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php +27 -0
  111. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php +27 -0
  112. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php +35 -0
  113. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +27 -0
  114. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php +27 -0
  115. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php +27 -0
  116. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php +31 -0
  117. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +28 -0
  118. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php +37 -0
  119. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php +27 -0
  120. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php +27 -0
  121. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php +27 -0
  122. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php +27 -0
  123. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php +27 -0
  124. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php +27 -0
  125. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php +27 -0
  126. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php +27 -0
  127. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php +37 -0
  128. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php +38 -0
  129. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php +33 -0
  130. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php +34 -0
  131. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php +38 -0
  132. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php +33 -0
  133. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php +36 -0
  134. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php +34 -0
  135. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +30 -0
  136. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php +36 -0
  137. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php +28 -0
  138. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php +28 -0
  139. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php +27 -0
  140. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php +28 -0
  141. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +38 -0
  142. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php +28 -0
  143. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php +30 -0
  144. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php +27 -0
  145. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php +29 -0
  146. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php +36 -0
  147. package/src/api/vendor/phpmailer/phpmailer/phpcs.xml.dist +52 -0
  148. package/src/api/vendor/phpmailer/phpmailer/phpdoc.dist.xml +20 -0
  149. package/src/api/vendor/phpmailer/phpmailer/phpunit.xml.dist +36 -0
  150. package/src/api/vendor/phpmailer/phpmailer/src/DSNConfigurator.php +245 -0
  151. package/src/api/vendor/phpmailer/phpmailer/src/Exception.php +40 -0
  152. package/src/api/vendor/phpmailer/phpmailer/src/OAuth.php +139 -0
  153. package/src/api/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php +44 -0
  154. package/src/api/vendor/phpmailer/phpmailer/src/PHPMailer.php +5525 -0
  155. package/src/api/vendor/phpmailer/phpmailer/src/POP3.php +470 -0
  156. package/src/api/vendor/phpmailer/phpmailer/src/SMTP.php +1617 -0
  157. package/src/api/vendor/phpmailer/phpmailer/test/DebugLogTestListener.php +47 -0
  158. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/FileIsAccessibleTest/accessible.txt +1 -0
  159. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/FileIsAccessibleTest/inaccessible.txt +1 -0
  160. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-fr.php +10 -0
  161. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-nl.php +10 -0
  162. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xa_scri_cc.php +9 -0
  163. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xb_scri.php +9 -0
  164. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xc_cc.php +9 -0
  165. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xd_cc.php +9 -0
  166. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xd_scri.php +9 -0
  167. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xe.php +9 -0
  168. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xx.php +9 -0
  169. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-yy.php +16 -0
  170. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-yz.php +16 -0
  171. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-zz.php +20 -0
  172. package/src/api/vendor/phpmailer/phpmailer/test/Language/TranslationCompletenessTest.php +97 -0
  173. package/src/api/vendor/phpmailer/phpmailer/test/OAuth/OAuthTest.php +76 -0
  174. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddEmbeddedImageTest.php +178 -0
  175. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddStringAttachmentTest.php +147 -0
  176. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddStringEmbeddedImageTest.php +161 -0
  177. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddrFormatTest.php +70 -0
  178. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AuthCRAMMD5Test.php +48 -0
  179. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/CustomHeaderTest.php +285 -0
  180. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DKIMTest.php +258 -0
  181. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DKIMWithoutExceptionsTest.php +46 -0
  182. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DSNConfiguratorTest.php +221 -0
  183. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/EncodeQTest.php +110 -0
  184. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/EncodeStringTest.php +135 -0
  185. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/FileIsAccessibleTest.php +103 -0
  186. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/FilenameToTypeTest.php +74 -0
  187. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/GenerateIdTest.php +75 -0
  188. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/GetLastMessageIDTest.php +110 -0
  189. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/HasLineLongerThanMaxTest.php +158 -0
  190. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/Html2TextTest.php +231 -0
  191. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ICalTest.php +126 -0
  192. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/IsPermittedPathTest.php +108 -0
  193. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/IsValidHostTest.php +107 -0
  194. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/LocalizationTest.php +505 -0
  195. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MailTransportTest.php +261 -0
  196. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MbPathinfoTest.php +171 -0
  197. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MimeTypesTest.php +70 -0
  198. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/NormalizeBreaksTest.php +111 -0
  199. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/PHPMailerTest.php +1388 -0
  200. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ParseAddressesTest.php +321 -0
  201. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/PunyencodeAddressTest.php +141 -0
  202. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/QuotedStringTest.php +70 -0
  203. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ReplyToGetSetClearTest.php +444 -0
  204. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetErrorTest.php +154 -0
  205. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetFromTest.php +202 -0
  206. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetTest.php +81 -0
  207. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetWordWrapTest.php +120 -0
  208. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/Utf8CharBoundaryTest.php +66 -0
  209. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ValidateAddressCustomValidatorTest.php +116 -0
  210. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ValidateAddressTest.php +485 -0
  211. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/WrapTextTest.php +125 -0
  212. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/XMailerTest.php +75 -0
  213. package/src/api/vendor/phpmailer/phpmailer/test/POP3/PopBeforeSmtpTest.php +139 -0
  214. package/src/api/vendor/phpmailer/phpmailer/test/PreSendTestCase.php +46 -0
  215. package/src/api/vendor/phpmailer/phpmailer/test/Security/DenialOfServiceVectorsTest.php +52 -0
  216. package/src/api/vendor/phpmailer/phpmailer/test/SendTestCase.php +126 -0
  217. package/src/api/vendor/phpmailer/phpmailer/test/TestCase.php +392 -0
  218. package/src/api/vendor/phpmailer/phpmailer/test/fakepopserver.sh +126 -0
  219. package/src/api/vendor/phpmailer/phpmailer/test/fakesendmail.sh +22 -0
  220. package/src/api/vendor/phpmailer/phpmailer/test/runfakepopserver.sh +12 -0
  221. package/src/api/vendor/phpmailer/phpmailer/test/testbootstrap-dist.php +8 -0
  222. package/src/api/vendor/phpmailer/phpmailer/test/validators.php +12 -0
  223. package/src/api/vendor/phpoption/phpoption/.gitattributes +13 -0
  224. package/src/api/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
  225. package/src/api/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
  226. package/src/api/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
  227. package/src/api/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
  228. package/src/api/vendor/phpoption/phpoption/.github/workflows/static.yml +40 -0
  229. package/src/api/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
  230. package/src/api/vendor/phpoption/phpoption/LICENSE +201 -0
  231. package/src/api/vendor/phpoption/phpoption/Makefile +17 -0
  232. package/src/api/vendor/phpoption/phpoption/README.md +201 -0
  233. package/src/api/vendor/phpoption/phpoption/composer.json +50 -0
  234. package/src/api/vendor/phpoption/phpoption/phpstan-baseline.neon +44 -0
  235. package/src/api/vendor/phpoption/phpoption/phpstan.neon.dist +7 -0
  236. package/src/api/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
  237. package/src/api/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -0
  238. package/src/api/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -0
  239. package/src/api/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -0
  240. package/src/api/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -0
  241. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +72 -0
  242. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +357 -0
  243. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
  244. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +166 -0
  245. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
  246. package/src/api/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
  247. package/src/api/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
  248. package/src/api/vendor/symfony/polyfill-ctype/Ctype.php +232 -0
  249. package/src/api/vendor/symfony/polyfill-ctype/LICENSE +19 -0
  250. package/src/api/vendor/symfony/polyfill-ctype/README.md +12 -0
  251. package/src/api/vendor/symfony/polyfill-ctype/bootstrap.php +50 -0
  252. package/src/api/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -0
  253. package/src/api/vendor/symfony/polyfill-ctype/composer.json +38 -0
  254. package/src/api/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
  255. package/src/api/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -0
  256. package/src/api/vendor/symfony/polyfill-mbstring/README.md +13 -0
  257. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
  258. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -0
  259. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
  260. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -0
  261. package/src/api/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -0
  262. package/src/api/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
  263. package/src/api/vendor/symfony/polyfill-mbstring/composer.json +39 -0
  264. package/src/api/vendor/symfony/polyfill-php80/LICENSE +19 -0
  265. package/src/api/vendor/symfony/polyfill-php80/Php80.php +115 -0
  266. package/src/api/vendor/symfony/polyfill-php80/PhpToken.php +106 -0
  267. package/src/api/vendor/symfony/polyfill-php80/README.md +25 -0
  268. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -0
  269. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -0
  270. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -0
  271. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -0
  272. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -0
  273. package/src/api/vendor/symfony/polyfill-php80/bootstrap.php +42 -0
  274. package/src/api/vendor/symfony/polyfill-php80/composer.json +37 -0
  275. package/src/api/vendor/vlucas/phpdotenv/.editorconfig +15 -0
  276. package/src/api/vendor/vlucas/phpdotenv/.gitattributes +15 -0
  277. package/src/api/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
  278. package/src/api/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
  279. package/src/api/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
  280. package/src/api/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
  281. package/src/api/vendor/vlucas/phpdotenv/.github/workflows/static.yml +40 -0
  282. package/src/api/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
  283. package/src/api/vendor/vlucas/phpdotenv/LICENSE +30 -0
  284. package/src/api/vendor/vlucas/phpdotenv/Makefile +17 -0
  285. package/src/api/vendor/vlucas/phpdotenv/README.md +370 -0
  286. package/src/api/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
  287. package/src/api/vendor/vlucas/phpdotenv/composer.json +60 -0
  288. package/src/api/vendor/vlucas/phpdotenv/phpstan-baseline.neon +157 -0
  289. package/src/api/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
  290. package/src/api/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
  291. package/src/api/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -0
  292. package/src/api/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -0
  293. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -0
  294. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -0
  295. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -0
  296. package/src/api/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -0
  297. package/src/api/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -0
  298. package/src/api/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -0
  299. package/src/api/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -0
  300. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -0
  301. package/src/api/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -0
  302. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -0
  303. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -0
  304. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -0
  305. package/src/api/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -0
  306. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -0
  307. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -0
  308. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -0
  309. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -0
  310. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -0
  311. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -0
  312. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -0
  313. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -0
  314. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -0
  315. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -0
  316. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -0
  317. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -0
  318. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -0
  319. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -0
  320. package/src/api/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -0
  321. package/src/api/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -0
  322. package/src/api/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -0
  323. package/src/api/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -0
  324. package/src/api/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -0
  325. package/src/api/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -0
  326. package/src/api/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -0
  327. package/src/api/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -0
  328. package/src/api/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -0
  329. package/src/api/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -0
  330. package/src/api/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -0
  331. package/src/api/vendor/vlucas/phpdotenv/src/Validator.php +207 -0
  332. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
  333. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
  334. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
  335. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
  336. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
  337. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
  338. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
  339. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
  340. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
  341. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
  342. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
  343. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
  344. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
  345. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
  346. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
  347. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
  348. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
  349. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
  350. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
  351. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
  352. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
  353. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
  354. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
  355. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
  356. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
  357. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
  358. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
  359. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
  360. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
  361. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
  362. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
  363. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
  364. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
  365. package/src/api/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +15 -0
@@ -0,0 +1,357 @@
1
+ <?php
2
+
3
+ namespace PhpOption\Tests;
4
+
5
+ use PhpOption\LazyOption;
6
+ use PhpOption\None;
7
+ use PhpOption\Option;
8
+ use PhpOption\Some;
9
+ use PHPUnit\Framework\TestCase;
10
+
11
+ class LazyOptionTest extends TestCase
12
+ {
13
+ private static function createSubject($default = null): object
14
+ {
15
+ return new class ($default) {
16
+ private $default;
17
+
18
+ public function __construct($default)
19
+ {
20
+ $this->default = $default;
21
+ }
22
+
23
+ public function execute($v = null): Option
24
+ {
25
+ return Option::fromValue($v ?? $this->default);
26
+ }
27
+ };
28
+ }
29
+
30
+ private static function createInvalidSubject(): object
31
+ {
32
+ return new class {
33
+ public function execute($v = null)
34
+ {
35
+ return null;
36
+ }
37
+ };
38
+ }
39
+
40
+ public function testGetWithArgumentsAndConstructor(): void
41
+ {
42
+ $some = LazyOption::create([self::createSubject(), 'execute'], ['foo']);
43
+
44
+ self::assertSame('foo', $some->get());
45
+ self::assertSame('foo', $some->getOrElse(null));
46
+ self::assertSame('foo', $some->getOrCall('does_not_exist'));
47
+ self::assertSame('foo', $some->getOrThrow(new \RuntimeException('does_not_exist')));
48
+ self::assertFalse($some->isEmpty());
49
+ }
50
+
51
+ public function testGetWithArgumentsAndCreate(): void
52
+ {
53
+ $some = new LazyOption([self::createSubject(), 'execute'], ['foo']);
54
+
55
+ self::assertSame('foo', $some->get());
56
+ self::assertSame('foo', $some->getOrElse(null));
57
+ self::assertSame('foo', $some->getOrCall('does_not_exist'));
58
+ self::assertSame('foo', $some->getOrThrow(new \RuntimeException('does_not_exist')));
59
+ self::assertFalse($some->isEmpty());
60
+ }
61
+
62
+ public function testGetWithoutArgumentsAndConstructor(): void
63
+ {
64
+ $some = new LazyOption([self::createSubject('foo'), 'execute']);
65
+
66
+ self::assertSame('foo', $some->get());
67
+ self::assertSame('foo', $some->getOrElse(null));
68
+ self::assertSame('foo', $some->getOrCall('does_not_exist'));
69
+ self::assertSame('foo', $some->getOrThrow(new \RuntimeException('does_not_exist')));
70
+ self::assertFalse($some->isEmpty());
71
+ }
72
+
73
+ public function testGetWithoutArgumentsAndCreate(): void
74
+ {
75
+ $option = LazyOption::create([self::createSubject('foo'), 'execute']);
76
+
77
+ self::assertTrue($option->isDefined());
78
+ self::assertFalse($option->isEmpty());
79
+ self::assertSame('foo', $option->get());
80
+ self::assertSame('foo', $option->getOrElse(null));
81
+ self::assertSame('foo', $option->getOrCall('does_not_exist'));
82
+ self::assertSame('foo', $option->getOrThrow(new \RuntimeException('does_not_exist')));
83
+ }
84
+
85
+ public function testCallbackReturnsNull(): void
86
+ {
87
+ if (method_exists($this, 'expectException')) {
88
+ $this->expectException('RuntimeException');
89
+ $this->expectExceptionMessage('None has no value');
90
+ } else {
91
+ $this->setExpectedException('RuntimeException', 'None has no value');
92
+ }
93
+
94
+ $option = LazyOption::create([self::createSubject(), 'execute']);
95
+
96
+ self::assertFalse($option->isDefined());
97
+ self::assertTrue($option->isEmpty());
98
+ self::assertSame('alt', $option->getOrElse('alt'));
99
+ self::assertSame('alt', $option->getOrCall(function () {
100
+ return 'alt';
101
+ }));
102
+
103
+ $option->get();
104
+ }
105
+
106
+ public function testExceptionIsThrownIfCallbackReturnsNonOption(): void
107
+ {
108
+ $option = LazyOption::create([self::createInvalidSubject(), 'execute']);
109
+
110
+ if (method_exists($this, 'expectException')) {
111
+ $this->expectException('RuntimeException');
112
+ $this->expectExceptionMessage('Expected instance of PhpOption\Option');
113
+ } else {
114
+ $this->setExpectedException('RuntimeException', 'Expected instance of PhpOption\Option');
115
+ }
116
+
117
+ $option->isDefined();
118
+ }
119
+
120
+ public function testInvalidCallbackAndConstructor(): void
121
+ {
122
+ if (method_exists($this, 'expectException')) {
123
+ $this->expectException('InvalidArgumentException');
124
+ $this->expectExceptionMessage('Invalid callback given');
125
+ } else {
126
+ $this->setExpectedException('InvalidArgumentException', 'Invalid callback given');
127
+ }
128
+
129
+ new LazyOption('invalidCallback');
130
+ }
131
+
132
+ public function testInvalidCallbackAndCreate(): void
133
+ {
134
+ if (method_exists($this, 'expectException')) {
135
+ $this->expectException('InvalidArgumentException');
136
+ $this->expectExceptionMessage('Invalid callback given');
137
+ } else {
138
+ $this->setExpectedException('InvalidArgumentException', 'Invalid callback given');
139
+ }
140
+
141
+ LazyOption::create('invalidCallback');
142
+ }
143
+
144
+ public function testifDefined(): void
145
+ {
146
+ $called = false;
147
+ $self = $this;
148
+ LazyOption::fromValue('foo')->ifDefined(function ($v) use (&$called, $self) {
149
+ $called = true;
150
+ $self->assertSame('foo', $v);
151
+ });
152
+ self::assertTrue($called);
153
+ }
154
+
155
+ public function testForAll(): void
156
+ {
157
+ $called = false;
158
+ $self = $this;
159
+ self::assertInstanceOf(Some::class, LazyOption::fromValue('foo')->forAll(function ($v) use (&$called, $self) {
160
+ $called = true;
161
+ $self->assertSame('foo', $v);
162
+ }));
163
+ self::assertTrue($called);
164
+ }
165
+
166
+ public function testOrElse(): void
167
+ {
168
+ $some = Some::create('foo');
169
+ $lazy = LazyOption::create(function () use ($some) {
170
+ return $some;
171
+ });
172
+ self::assertSame($some, $lazy->orElse(None::create()));
173
+ self::assertSame($some, $lazy->orElse(Some::create('bar')));
174
+ }
175
+
176
+ public function testFoldLeftRight(): void
177
+ {
178
+ $callback = function () {
179
+ };
180
+
181
+ // Use TestOption as a concrete implementation to test with
182
+ $option = self::createPartialMock(TestOption::class, ['foldLeft', 'foldRight']);
183
+ $option->expects(self::once())
184
+ ->method('foldLeft')
185
+ ->with(5, $callback)
186
+ ->willReturn(6);
187
+ $lazyOption = new LazyOption(function () use ($option) {
188
+ return $option;
189
+ });
190
+ self::assertSame(6, $lazyOption->foldLeft(5, $callback));
191
+
192
+ $option->expects(self::once())
193
+ ->method('foldRight')
194
+ ->with(5, $callback)
195
+ ->willReturn(6);
196
+ $lazyOption = new LazyOption(function () use ($option) {
197
+ return $option;
198
+ });
199
+ self::assertSame(6, $lazyOption->foldRight(5, $callback));
200
+ }
201
+ }
202
+
203
+ class TestOption extends Option
204
+ {
205
+ private $value;
206
+
207
+ public function __construct($value = null)
208
+ {
209
+ $this->value = $value;
210
+ }
211
+
212
+ public function get()
213
+ {
214
+ return $this->value;
215
+ }
216
+
217
+ public function getOrElse($default)
218
+ {
219
+ if ($this->isDefined()) {
220
+ return $this->value;
221
+ }
222
+
223
+ return $default;
224
+ }
225
+
226
+ public function getOrCall($callable)
227
+ {
228
+ if ($this->isDefined()) {
229
+ return $this->value;
230
+ }
231
+
232
+ return call_user_func($callable);
233
+ }
234
+
235
+ public function getOrThrow(\Exception $ex)
236
+ {
237
+ if ($this->isDefined()) {
238
+ return $this->value;
239
+ }
240
+
241
+ throw $ex;
242
+ }
243
+
244
+ public function isEmpty()
245
+ {
246
+ return $this->value === null;
247
+ }
248
+
249
+ public function isDefined()
250
+ {
251
+ return $this->value !== null;
252
+ }
253
+
254
+ public function orElse(Option $else)
255
+ {
256
+ if ($this->isDefined()) {
257
+ return $this;
258
+ }
259
+
260
+ return $else;
261
+ }
262
+
263
+ public function ifDefined($callable)
264
+ {
265
+ if ($this->isDefined()) {
266
+ call_user_func($callable, $this->value);
267
+ }
268
+ }
269
+
270
+ public function forAll($callable)
271
+ {
272
+ if ($this->isDefined()) {
273
+ call_user_func($callable, $this->value);
274
+ }
275
+ }
276
+
277
+ public function map($callable)
278
+ {
279
+ if ($this->isDefined()) {
280
+ return new self(call_user_func($callable, $this->value));
281
+ }
282
+
283
+ return $this;
284
+ }
285
+
286
+ public function flatMap($callable)
287
+ {
288
+ if ($this->isDefined()) {
289
+ return call_user_func($callable, $this->value);
290
+ }
291
+
292
+ return $this;
293
+ }
294
+
295
+ public function filter($callable)
296
+ {
297
+ if ($this->isDefined() && call_user_func($callable, $this->value)) {
298
+ return $this;
299
+ }
300
+
301
+ return None::create();
302
+ }
303
+
304
+ public function filterNot($callable)
305
+ {
306
+ if ($this->isDefined() && !call_user_func($callable, $this->value)) {
307
+ return $this;
308
+ }
309
+
310
+ return None::create();
311
+ }
312
+
313
+ public function select($value)
314
+ {
315
+ if ($this->isDefined() && $this->value === $value) {
316
+ return $this;
317
+ }
318
+
319
+ return None::create();
320
+ }
321
+
322
+ public function reject($value)
323
+ {
324
+ if ($this->isDefined() && $this->value !== $value) {
325
+ return $this;
326
+ }
327
+
328
+ return None::create();
329
+ }
330
+
331
+ public function foldLeft($initialValue, $callable)
332
+ {
333
+ if ($this->isDefined()) {
334
+ return call_user_func($callable, $initialValue, $this->value);
335
+ }
336
+
337
+ return $initialValue;
338
+ }
339
+
340
+ public function foldRight($initialValue, $callable)
341
+ {
342
+ if ($this->isDefined()) {
343
+ return call_user_func($callable, $this->value, $initialValue);
344
+ }
345
+
346
+ return $initialValue;
347
+ }
348
+
349
+ public function getIterator(): \Traversable
350
+ {
351
+ if ($this->isDefined()) {
352
+ return new \ArrayIterator([$this->value]);
353
+ }
354
+
355
+ return new \ArrayIterator([]);
356
+ }
357
+ }
@@ -0,0 +1,153 @@
1
+ <?php
2
+
3
+ namespace PhpOption\Tests;
4
+
5
+ use PhpOption\None;
6
+ use PhpOption\Some;
7
+ use PHPUnit\Framework\TestCase;
8
+
9
+ class NoneTest extends TestCase
10
+ {
11
+ public function testGet(): void
12
+ {
13
+ if (method_exists($this, 'expectException')) {
14
+ $this->expectException('RuntimeException');
15
+ } else {
16
+ $this->setExpectedException('RuntimeException');
17
+ }
18
+
19
+ $none = None::create();
20
+ $none->get();
21
+ }
22
+
23
+ public function testGetOrElse(): void
24
+ {
25
+ $none = None::create();
26
+ self::assertSame('foo', $none->getOrElse('foo'));
27
+ }
28
+
29
+ public function testGetOrCall(): void
30
+ {
31
+ $none = None::create();
32
+ self::assertSame('foo', $none->getOrCall(function () {
33
+ return 'foo';
34
+ }));
35
+ }
36
+
37
+ public function testGetOrThrow(): void
38
+ {
39
+ if (method_exists($this, 'expectException')) {
40
+ $this->expectException('RuntimeException');
41
+ $this->expectExceptionMessage('Not Found!');
42
+ } else {
43
+ $this->setExpectedException('RuntimeException', 'Not Found!');
44
+ }
45
+
46
+ None::create()->getOrThrow(new \RuntimeException('Not Found!'));
47
+ }
48
+
49
+ public function testIsEmpty(): void
50
+ {
51
+ $none = None::create();
52
+ self::assertTrue($none->isEmpty());
53
+ }
54
+
55
+ public function testOrElse(): void
56
+ {
57
+ $option = Some::create('foo');
58
+ self::assertSame($option, None::create()->orElse($option));
59
+ }
60
+
61
+ public function testifDefined(): void
62
+ {
63
+ $none = None::create();
64
+
65
+ self::assertNull($none->ifDefined(function () {
66
+ throw new \LogicException('Should never be called.');
67
+ }));
68
+ }
69
+
70
+ public function testForAll(): void
71
+ {
72
+ $none = None::create();
73
+
74
+ self::assertSame($none, $none->forAll(function () {
75
+ throw new \LogicException('Should never be called.');
76
+ }));
77
+ }
78
+
79
+ public function testMap(): void
80
+ {
81
+ $none = None::create();
82
+
83
+ self::assertSame($none, $none->map(function () {
84
+ throw new \LogicException('Should not be called.');
85
+ }));
86
+ }
87
+
88
+ public function testFlatMap(): void
89
+ {
90
+ $none = None::create();
91
+
92
+ self::assertSame($none, $none->flatMap(function () {
93
+ throw new \LogicException('Should not be called.');
94
+ }));
95
+ }
96
+
97
+ public function testFilter(): void
98
+ {
99
+ $none = None::create();
100
+
101
+ self::assertSame($none, $none->filter(function () {
102
+ throw new \LogicException('Should not be called.');
103
+ }));
104
+ }
105
+
106
+ public function testFilterNot(): void
107
+ {
108
+ $none = None::create();
109
+
110
+ self::assertSame($none, $none->filterNot(function () {
111
+ throw new \LogicException('Should not be called.');
112
+ }));
113
+ }
114
+
115
+ public function testSelect(): void
116
+ {
117
+ $none = None::create();
118
+
119
+ self::assertSame($none, $none->select(null));
120
+ }
121
+
122
+ public function testReject(): void
123
+ {
124
+ $none = None::create();
125
+
126
+ self::assertSame($none, $none->reject(null));
127
+ }
128
+
129
+ public function testForeach(): void
130
+ {
131
+ $none = None::create();
132
+
133
+ $called = 0;
134
+ foreach ($none as $value) {
135
+ $called++;
136
+ }
137
+
138
+ self::assertSame(0, $called);
139
+ }
140
+
141
+ public function testFoldLeftRight(): void
142
+ {
143
+ $none = None::create();
144
+
145
+ self::assertSame(1, $none->foldLeft(1, function () {
146
+ $this->fail();
147
+ }));
148
+
149
+ self::assertSame(1, $none->foldRight(1, function () {
150
+ $this->fail();
151
+ }));
152
+ }
153
+ }
@@ -0,0 +1,166 @@
1
+ <?php
2
+
3
+ namespace PhpOption\Tests;
4
+
5
+ use ArrayAccess;
6
+ use LogicException;
7
+ use PhpOption\LazyOption;
8
+ use PhpOption\None;
9
+ use PhpOption\Option;
10
+ use PhpOption\Some;
11
+ use PHPUnit\Framework\TestCase;
12
+
13
+ class OptionTest extends TestCase
14
+ {
15
+ public function testfromValueWithDefaultNoneValue(): void
16
+ {
17
+ self::assertInstanceOf(None::class, Option::fromValue(null));
18
+ self::assertInstanceOf(Some::class, Option::fromValue('value'));
19
+ }
20
+
21
+ public function testFromValueWithFalseNoneValue(): void
22
+ {
23
+ self::assertInstanceOf(None::class, Option::fromValue(false, false));
24
+ self::assertInstanceOf(Some::class, Option::fromValue('value', false));
25
+ self::assertInstanceOf(Some::class, Option::fromValue(null, false));
26
+ }
27
+
28
+ public function testFromArraysValue(): void
29
+ {
30
+ self::assertEquals(None::create(), Option::fromArraysValue('foo', 'bar'));
31
+ self::assertEquals(None::create(), Option::fromArraysValue(null, 'bar'));
32
+ self::assertEquals(None::create(), Option::fromArraysValue(['foo' => 'bar'], 'baz'));
33
+ self::assertEquals(None::create(), Option::fromArraysValue(['foo' => null], 'foo'));
34
+ self::assertEquals(None::create(), Option::fromArraysValue(['foo' => 'bar'], null));
35
+ self::assertEquals(new Some('foo'), Option::fromArraysValue(['foo' => 'foo'], 'foo'));
36
+ self::assertEquals(new Some('foo'), Option::fromArraysValue([13 => 'foo'], 13));
37
+
38
+ $object = new SomeArrayObject();
39
+ $object['foo'] = 'foo';
40
+ self::assertEquals(new Some('foo'), Option::fromArraysValue($object, 'foo'));
41
+
42
+ $object = new SomeArrayObject();
43
+ $object[13] = 'foo';
44
+ self::assertEquals(new Some('foo'), Option::fromArraysValue($object, 13));
45
+ }
46
+
47
+ public function testFromReturn(): void
48
+ {
49
+ $null = function () {
50
+ };
51
+ $false = function () {
52
+ return false;
53
+ };
54
+ $some = function () {
55
+ return 'foo';
56
+ };
57
+
58
+ self::assertTrue(Option::fromReturn($null)->isEmpty());
59
+ self::assertFalse(Option::fromReturn($false)->isEmpty());
60
+ self::assertTrue(Option::fromReturn($false, [], false)->isEmpty());
61
+ self::assertTrue(Option::fromReturn($some)->isDefined());
62
+ self::assertFalse(Option::fromReturn($some, [], 'foo')->isDefined());
63
+ }
64
+
65
+ public function testOrElse(): void
66
+ {
67
+ $a = new Some('a');
68
+ $b = new Some('b');
69
+
70
+ self::assertSame('a', $a->orElse($b)->get());
71
+ }
72
+
73
+ public function testOrElseWithNoneAsFirst(): void
74
+ {
75
+ $a = None::create();
76
+ $b = new Some('b');
77
+
78
+ self::assertSame('b', $a->orElse($b)->get());
79
+ }
80
+
81
+ public function testOrElseWithLazyOptions(): void
82
+ {
83
+ $throws = function () {
84
+ throw new LogicException('Should never be called.');
85
+ };
86
+
87
+ $a = new Some('a');
88
+ $b = new LazyOption($throws);
89
+
90
+ self::assertSame('a', $a->orElse($b)->get());
91
+ }
92
+
93
+ public function testOrElseWithMultipleAlternatives(): void
94
+ {
95
+ $throws = new LazyOption(function () {
96
+ throw new LogicException('Should never be called.');
97
+ });
98
+ $returns = new LazyOption(function () {
99
+ return new Some('foo');
100
+ });
101
+
102
+ $a = None::create();
103
+
104
+ self::assertSame('foo', $a->orElse($returns)->orElse($throws)->get());
105
+ }
106
+
107
+ public function testLift(): void
108
+ {
109
+ $f = function ($a, $b) {
110
+ return $a + $b;
111
+ };
112
+
113
+ $fL = Option::lift($f);
114
+
115
+ $a = new Some(1);
116
+ $b = new Some(5);
117
+ $n = None::create();
118
+
119
+ self::assertSame(6, $fL($a, $b)->get());
120
+ self::assertSame(6, $fL($b, $a)->get());
121
+ self::assertSame($n, $fL($a, $n));
122
+ self::assertSame($n, $fL($n, $a));
123
+ self::assertSame($n, $fL($n, $n));
124
+ }
125
+
126
+ public function testLiftDegenerate(): void
127
+ {
128
+ $f = function () {
129
+ };
130
+
131
+ $fL1 = Option::lift($f);
132
+ $fL2 = Option::lift($f, false);
133
+
134
+ self::assertEquals(None::create(), $fL1());
135
+ self::assertEquals(Some::create(null), $fL2());
136
+ }
137
+ }
138
+
139
+ class SomeArrayObject implements ArrayAccess
140
+ {
141
+ private $data = [];
142
+
143
+ #[\ReturnTypeWillChange]
144
+ public function offsetExists($offset)
145
+ {
146
+ return isset($this->data[$offset]);
147
+ }
148
+
149
+ #[\ReturnTypeWillChange]
150
+ public function offsetGet($offset)
151
+ {
152
+ return $this->data[$offset];
153
+ }
154
+
155
+ #[\ReturnTypeWillChange]
156
+ public function offsetSet($offset, $value)
157
+ {
158
+ $this->data[$offset] = $value;
159
+ }
160
+
161
+ #[\ReturnTypeWillChange]
162
+ public function offsetUnset($offset)
163
+ {
164
+ unset($this->data[$offset]);
165
+ }
166
+ }