create-berna-stencil 1.0.8 → 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 (378) hide show
  1. package/.eleventy.js +3 -1
  2. package/.env.example +8 -0
  3. package/.gitignore +2 -1
  4. package/README.md +1 -5
  5. package/bin/create.js +2 -1
  6. package/package.json +71 -70
  7. package/src/.htaccess +18 -0
  8. package/src/api/.htaccess +12 -0
  9. package/src/api/composer.json +6 -0
  10. package/src/api/composer.lock +574 -0
  11. package/src/api/endpoints/protected/secret.php +16 -0
  12. package/src/api/endpoints/protected/send-mail.php +75 -0
  13. package/src/api/endpoints/public/ping.php +16 -0
  14. package/src/api/index.php +95 -0
  15. package/src/api/init.php +43 -0
  16. package/src/api/modules/Response.php +37 -0
  17. package/src/api/vendor/autoload.php +22 -0
  18. package/src/api/vendor/composer/ClassLoader.php +579 -0
  19. package/src/api/vendor/composer/InstalledVersions.php +396 -0
  20. package/src/api/vendor/composer/LICENSE +21 -0
  21. package/src/api/vendor/composer/autoload_classmap.php +15 -0
  22. package/src/api/vendor/composer/autoload_files.php +12 -0
  23. package/src/api/vendor/composer/autoload_namespaces.php +9 -0
  24. package/src/api/vendor/composer/autoload_psr4.php +16 -0
  25. package/src/api/vendor/composer/autoload_real.php +50 -0
  26. package/src/api/vendor/composer/autoload_static.php +86 -0
  27. package/src/api/vendor/composer/installed.json +582 -0
  28. package/src/api/vendor/composer/installed.php +86 -0
  29. package/src/api/vendor/composer/platform_check.php +25 -0
  30. package/src/api/vendor/graham-campbell/result-type/.gitattributes +9 -0
  31. package/src/api/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
  32. package/src/api/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
  33. package/src/api/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
  34. package/src/api/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
  35. package/src/api/vendor/graham-campbell/result-type/.github/workflows/stale.yml +11 -0
  36. package/src/api/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
  37. package/src/api/vendor/graham-campbell/result-type/CHANGELOG.md +53 -0
  38. package/src/api/vendor/graham-campbell/result-type/LICENSE +21 -0
  39. package/src/api/vendor/graham-campbell/result-type/README.md +42 -0
  40. package/src/api/vendor/graham-campbell/result-type/composer.json +33 -0
  41. package/src/api/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
  42. package/src/api/vendor/graham-campbell/result-type/src/Error.php +121 -0
  43. package/src/api/vendor/graham-campbell/result-type/src/Result.php +69 -0
  44. package/src/api/vendor/graham-campbell/result-type/src/Success.php +120 -0
  45. package/src/api/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
  46. package/src/api/vendor/phpmailer/phpmailer/.codecov.yml +21 -0
  47. package/src/api/vendor/phpmailer/phpmailer/.editorconfig +15 -0
  48. package/src/api/vendor/phpmailer/phpmailer/.gitattributes +17 -0
  49. package/src/api/vendor/phpmailer/phpmailer/.github/FUNDING.yml +6 -0
  50. package/src/api/vendor/phpmailer/phpmailer/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
  51. package/src/api/vendor/phpmailer/phpmailer/.github/actions/build-docs/Dockerfile +15 -0
  52. package/src/api/vendor/phpmailer/phpmailer/.github/actions/build-docs/entrypoint.sh +5 -0
  53. package/src/api/vendor/phpmailer/phpmailer/.github/dependabot.yml +21 -0
  54. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/docs.yaml +30 -0
  55. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/scorecards.yml +61 -0
  56. package/src/api/vendor/phpmailer/phpmailer/.github/workflows/tests.yml +237 -0
  57. package/src/api/vendor/phpmailer/phpmailer/.phan/config.php +41 -0
  58. package/src/api/vendor/phpmailer/phpmailer/COMMITMENT +46 -0
  59. package/src/api/vendor/phpmailer/phpmailer/LICENSE +502 -0
  60. package/src/api/vendor/phpmailer/phpmailer/README.md +232 -0
  61. package/src/api/vendor/phpmailer/phpmailer/SECURITY.md +37 -0
  62. package/src/api/vendor/phpmailer/phpmailer/SMTPUTF8.md +48 -0
  63. package/src/api/vendor/phpmailer/phpmailer/UPGRADING.md +125 -0
  64. package/src/api/vendor/phpmailer/phpmailer/VERSION +1 -0
  65. package/src/api/vendor/phpmailer/phpmailer/changelog.md +1122 -0
  66. package/src/api/vendor/phpmailer/phpmailer/composer.json +84 -0
  67. package/src/api/vendor/phpmailer/phpmailer/docs/README.md +9 -0
  68. package/src/api/vendor/phpmailer/phpmailer/examples/DKIM_gen_keys.phps +81 -0
  69. package/src/api/vendor/phpmailer/phpmailer/examples/DKIM_sign.phps +46 -0
  70. package/src/api/vendor/phpmailer/phpmailer/examples/README.md +96 -0
  71. package/src/api/vendor/phpmailer/phpmailer/examples/azure_xoauth2.phps +126 -0
  72. package/src/api/vendor/phpmailer/phpmailer/examples/callback.phps +76 -0
  73. package/src/api/vendor/phpmailer/phpmailer/examples/contactform-ajax.phps +146 -0
  74. package/src/api/vendor/phpmailer/phpmailer/examples/contactform.phps +95 -0
  75. package/src/api/vendor/phpmailer/phpmailer/examples/contents.html +17 -0
  76. package/src/api/vendor/phpmailer/phpmailer/examples/contentsutf8.html +23 -0
  77. package/src/api/vendor/phpmailer/phpmailer/examples/exceptions.phps +40 -0
  78. package/src/api/vendor/phpmailer/phpmailer/examples/extending.phps +72 -0
  79. package/src/api/vendor/phpmailer/phpmailer/examples/gmail.phps +106 -0
  80. package/src/api/vendor/phpmailer/phpmailer/examples/gmail_xoauth.phps +121 -0
  81. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.afdesign +0 -0
  82. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.png +0 -0
  83. package/src/api/vendor/phpmailer/phpmailer/examples/images/PHPMailer card logo.svg +209 -0
  84. package/src/api/vendor/phpmailer/phpmailer/examples/images/phpmailer.png +0 -0
  85. package/src/api/vendor/phpmailer/phpmailer/examples/images/phpmailer_mini.png +0 -0
  86. package/src/api/vendor/phpmailer/phpmailer/examples/mail.phps +35 -0
  87. package/src/api/vendor/phpmailer/phpmailer/examples/mailing_list.phps +96 -0
  88. package/src/api/vendor/phpmailer/phpmailer/examples/pop_before_smtp.phps +60 -0
  89. package/src/api/vendor/phpmailer/phpmailer/examples/send_file_upload.phps +60 -0
  90. package/src/api/vendor/phpmailer/phpmailer/examples/send_multiple_file_upload.phps +60 -0
  91. package/src/api/vendor/phpmailer/phpmailer/examples/sendmail.phps +37 -0
  92. package/src/api/vendor/phpmailer/phpmailer/examples/sendoauth2.phps +100 -0
  93. package/src/api/vendor/phpmailer/phpmailer/examples/simple_contact_form.phps +102 -0
  94. package/src/api/vendor/phpmailer/phpmailer/examples/smime_signed_mail.phps +99 -0
  95. package/src/api/vendor/phpmailer/phpmailer/examples/smtp.phps +62 -0
  96. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_check.phps +60 -0
  97. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_low_memory.phps +117 -0
  98. package/src/api/vendor/phpmailer/phpmailer/examples/smtp_no_auth.phps +53 -0
  99. package/src/api/vendor/phpmailer/phpmailer/examples/ssl_options.phps +81 -0
  100. package/src/api/vendor/phpmailer/phpmailer/get_oauth_token.php +182 -0
  101. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php +26 -0
  102. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php +27 -0
  103. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-as.php +35 -0
  104. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php +27 -0
  105. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php +27 -0
  106. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php +27 -0
  107. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php +27 -0
  108. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-bn.php +35 -0
  109. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php +27 -0
  110. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +28 -0
  111. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php +39 -0
  112. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php +28 -0
  113. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php +33 -0
  114. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php +37 -0
  115. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php +38 -0
  116. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php +28 -0
  117. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php +28 -0
  118. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php +27 -0
  119. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php +27 -0
  120. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php +36 -0
  121. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php +27 -0
  122. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php +27 -0
  123. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php +35 -0
  124. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php +27 -0
  125. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php +27 -0
  126. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php +27 -0
  127. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php +31 -0
  128. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php +28 -0
  129. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php +37 -0
  130. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php +27 -0
  131. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php +27 -0
  132. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ku.php +27 -0
  133. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php +27 -0
  134. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php +27 -0
  135. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php +27 -0
  136. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-mn.php +27 -0
  137. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php +27 -0
  138. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php +37 -0
  139. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php +38 -0
  140. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php +33 -0
  141. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php +34 -0
  142. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php +38 -0
  143. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php +33 -0
  144. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php +36 -0
  145. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-si.php +34 -0
  146. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +30 -0
  147. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php +36 -0
  148. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php +28 -0
  149. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php +28 -0
  150. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php +27 -0
  151. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php +28 -0
  152. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php +38 -0
  153. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php +28 -0
  154. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-ur.php +30 -0
  155. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php +27 -0
  156. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php +29 -0
  157. package/src/api/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php +36 -0
  158. package/src/api/vendor/phpmailer/phpmailer/phpcs.xml.dist +52 -0
  159. package/src/api/vendor/phpmailer/phpmailer/phpdoc.dist.xml +20 -0
  160. package/src/api/vendor/phpmailer/phpmailer/phpunit.xml.dist +36 -0
  161. package/src/api/vendor/phpmailer/phpmailer/src/DSNConfigurator.php +245 -0
  162. package/src/api/vendor/phpmailer/phpmailer/src/Exception.php +40 -0
  163. package/src/api/vendor/phpmailer/phpmailer/src/OAuth.php +139 -0
  164. package/src/api/vendor/phpmailer/phpmailer/src/OAuthTokenProvider.php +44 -0
  165. package/src/api/vendor/phpmailer/phpmailer/src/PHPMailer.php +5525 -0
  166. package/src/api/vendor/phpmailer/phpmailer/src/POP3.php +470 -0
  167. package/src/api/vendor/phpmailer/phpmailer/src/SMTP.php +1617 -0
  168. package/src/api/vendor/phpmailer/phpmailer/test/DebugLogTestListener.php +47 -0
  169. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/FileIsAccessibleTest/accessible.txt +1 -0
  170. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/FileIsAccessibleTest/inaccessible.txt +1 -0
  171. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-fr.php +10 -0
  172. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-nl.php +10 -0
  173. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xa_scri_cc.php +9 -0
  174. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xb_scri.php +9 -0
  175. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xc_cc.php +9 -0
  176. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xd_cc.php +9 -0
  177. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xd_scri.php +9 -0
  178. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xe.php +9 -0
  179. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-xx.php +9 -0
  180. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-yy.php +16 -0
  181. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-yz.php +16 -0
  182. package/src/api/vendor/phpmailer/phpmailer/test/Fixtures/LocalizationTest/phpmailer.lang-zz.php +20 -0
  183. package/src/api/vendor/phpmailer/phpmailer/test/Language/TranslationCompletenessTest.php +97 -0
  184. package/src/api/vendor/phpmailer/phpmailer/test/OAuth/OAuthTest.php +76 -0
  185. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddEmbeddedImageTest.php +178 -0
  186. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddStringAttachmentTest.php +147 -0
  187. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddStringEmbeddedImageTest.php +161 -0
  188. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AddrFormatTest.php +70 -0
  189. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/AuthCRAMMD5Test.php +48 -0
  190. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/CustomHeaderTest.php +285 -0
  191. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DKIMTest.php +258 -0
  192. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DKIMWithoutExceptionsTest.php +46 -0
  193. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/DSNConfiguratorTest.php +221 -0
  194. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/EncodeQTest.php +110 -0
  195. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/EncodeStringTest.php +135 -0
  196. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/FileIsAccessibleTest.php +103 -0
  197. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/FilenameToTypeTest.php +74 -0
  198. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/GenerateIdTest.php +75 -0
  199. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/GetLastMessageIDTest.php +110 -0
  200. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/HasLineLongerThanMaxTest.php +158 -0
  201. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/Html2TextTest.php +231 -0
  202. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ICalTest.php +126 -0
  203. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/IsPermittedPathTest.php +108 -0
  204. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/IsValidHostTest.php +107 -0
  205. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/LocalizationTest.php +505 -0
  206. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MailTransportTest.php +261 -0
  207. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MbPathinfoTest.php +171 -0
  208. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/MimeTypesTest.php +70 -0
  209. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/NormalizeBreaksTest.php +111 -0
  210. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/PHPMailerTest.php +1388 -0
  211. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ParseAddressesTest.php +321 -0
  212. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/PunyencodeAddressTest.php +141 -0
  213. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/QuotedStringTest.php +70 -0
  214. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ReplyToGetSetClearTest.php +444 -0
  215. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetErrorTest.php +154 -0
  216. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetFromTest.php +202 -0
  217. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetTest.php +81 -0
  218. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/SetWordWrapTest.php +120 -0
  219. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/Utf8CharBoundaryTest.php +66 -0
  220. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ValidateAddressCustomValidatorTest.php +116 -0
  221. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/ValidateAddressTest.php +485 -0
  222. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/WrapTextTest.php +125 -0
  223. package/src/api/vendor/phpmailer/phpmailer/test/PHPMailer/XMailerTest.php +75 -0
  224. package/src/api/vendor/phpmailer/phpmailer/test/POP3/PopBeforeSmtpTest.php +139 -0
  225. package/src/api/vendor/phpmailer/phpmailer/test/PreSendTestCase.php +46 -0
  226. package/src/api/vendor/phpmailer/phpmailer/test/Security/DenialOfServiceVectorsTest.php +52 -0
  227. package/src/api/vendor/phpmailer/phpmailer/test/SendTestCase.php +126 -0
  228. package/src/api/vendor/phpmailer/phpmailer/test/TestCase.php +392 -0
  229. package/src/api/vendor/phpmailer/phpmailer/test/fakepopserver.sh +126 -0
  230. package/src/api/vendor/phpmailer/phpmailer/test/fakesendmail.sh +22 -0
  231. package/src/api/vendor/phpmailer/phpmailer/test/runfakepopserver.sh +12 -0
  232. package/src/api/vendor/phpmailer/phpmailer/test/testbootstrap-dist.php +8 -0
  233. package/src/api/vendor/phpmailer/phpmailer/test/validators.php +12 -0
  234. package/src/api/vendor/phpoption/phpoption/.gitattributes +13 -0
  235. package/src/api/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
  236. package/src/api/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
  237. package/src/api/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
  238. package/src/api/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
  239. package/src/api/vendor/phpoption/phpoption/.github/workflows/static.yml +40 -0
  240. package/src/api/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
  241. package/src/api/vendor/phpoption/phpoption/LICENSE +201 -0
  242. package/src/api/vendor/phpoption/phpoption/Makefile +17 -0
  243. package/src/api/vendor/phpoption/phpoption/README.md +201 -0
  244. package/src/api/vendor/phpoption/phpoption/composer.json +50 -0
  245. package/src/api/vendor/phpoption/phpoption/phpstan-baseline.neon +44 -0
  246. package/src/api/vendor/phpoption/phpoption/phpstan.neon.dist +7 -0
  247. package/src/api/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
  248. package/src/api/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -0
  249. package/src/api/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -0
  250. package/src/api/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -0
  251. package/src/api/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -0
  252. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +72 -0
  253. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +357 -0
  254. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
  255. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +166 -0
  256. package/src/api/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
  257. package/src/api/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
  258. package/src/api/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
  259. package/src/api/vendor/symfony/polyfill-ctype/Ctype.php +232 -0
  260. package/src/api/vendor/symfony/polyfill-ctype/LICENSE +19 -0
  261. package/src/api/vendor/symfony/polyfill-ctype/README.md +12 -0
  262. package/src/api/vendor/symfony/polyfill-ctype/bootstrap.php +50 -0
  263. package/src/api/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -0
  264. package/src/api/vendor/symfony/polyfill-ctype/composer.json +38 -0
  265. package/src/api/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
  266. package/src/api/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -0
  267. package/src/api/vendor/symfony/polyfill-mbstring/README.md +13 -0
  268. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
  269. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -0
  270. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
  271. package/src/api/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -0
  272. package/src/api/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -0
  273. package/src/api/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
  274. package/src/api/vendor/symfony/polyfill-mbstring/composer.json +39 -0
  275. package/src/api/vendor/symfony/polyfill-php80/LICENSE +19 -0
  276. package/src/api/vendor/symfony/polyfill-php80/Php80.php +115 -0
  277. package/src/api/vendor/symfony/polyfill-php80/PhpToken.php +106 -0
  278. package/src/api/vendor/symfony/polyfill-php80/README.md +25 -0
  279. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -0
  280. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -0
  281. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -0
  282. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -0
  283. package/src/api/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -0
  284. package/src/api/vendor/symfony/polyfill-php80/bootstrap.php +42 -0
  285. package/src/api/vendor/symfony/polyfill-php80/composer.json +37 -0
  286. package/src/api/vendor/vlucas/phpdotenv/.editorconfig +15 -0
  287. package/src/api/vendor/vlucas/phpdotenv/.gitattributes +15 -0
  288. package/src/api/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
  289. package/src/api/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
  290. package/src/api/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
  291. package/src/api/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
  292. package/src/api/vendor/vlucas/phpdotenv/.github/workflows/static.yml +40 -0
  293. package/src/api/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
  294. package/src/api/vendor/vlucas/phpdotenv/LICENSE +30 -0
  295. package/src/api/vendor/vlucas/phpdotenv/Makefile +17 -0
  296. package/src/api/vendor/vlucas/phpdotenv/README.md +370 -0
  297. package/src/api/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
  298. package/src/api/vendor/vlucas/phpdotenv/composer.json +60 -0
  299. package/src/api/vendor/vlucas/phpdotenv/phpstan-baseline.neon +157 -0
  300. package/src/api/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
  301. package/src/api/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
  302. package/src/api/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -0
  303. package/src/api/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -0
  304. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -0
  305. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -0
  306. package/src/api/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -0
  307. package/src/api/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -0
  308. package/src/api/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -0
  309. package/src/api/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -0
  310. package/src/api/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -0
  311. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -0
  312. package/src/api/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -0
  313. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -0
  314. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -0
  315. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -0
  316. package/src/api/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -0
  317. package/src/api/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -0
  318. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -0
  319. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -0
  320. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -0
  321. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -0
  322. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -0
  323. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -0
  324. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -0
  325. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -0
  326. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -0
  327. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -0
  328. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -0
  329. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -0
  330. package/src/api/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -0
  331. package/src/api/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -0
  332. package/src/api/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -0
  333. package/src/api/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -0
  334. package/src/api/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -0
  335. package/src/api/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -0
  336. package/src/api/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -0
  337. package/src/api/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -0
  338. package/src/api/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -0
  339. package/src/api/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -0
  340. package/src/api/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -0
  341. package/src/api/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -0
  342. package/src/api/vendor/vlucas/phpdotenv/src/Validator.php +207 -0
  343. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
  344. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
  345. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
  346. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
  347. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
  348. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
  349. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
  350. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
  351. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
  352. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
  353. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
  354. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
  355. package/src/api/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
  356. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
  357. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
  358. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
  359. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
  360. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
  361. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
  362. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
  363. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
  364. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
  365. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
  366. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
  367. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
  368. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
  369. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
  370. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
  371. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
  372. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
  373. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
  374. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
  375. package/src/api/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
  376. package/src/api/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +15 -0
  377. package/src/api/configExample.php +0 -28
  378. package/src/api/sendEmail.php +0 -131
@@ -0,0 +1,479 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dotenv\Tests;
6
+
7
+ use Dotenv\Dotenv;
8
+ use Dotenv\Exception\ValidationException;
9
+ use Dotenv\Repository\Adapter\ArrayAdapter;
10
+ use Dotenv\Repository\RepositoryBuilder;
11
+ use PHPUnit\Framework\TestCase;
12
+
13
+ final class ValidatorTest extends TestCase
14
+ {
15
+ /**
16
+ * @var string
17
+ */
18
+ private static $folder;
19
+
20
+ /**
21
+ * @beforeClass
22
+ *
23
+ * @return void
24
+ */
25
+ public static function setFolder()
26
+ {
27
+ self::$folder = \dirname(__DIR__).'/fixtures/env';
28
+ }
29
+
30
+ /**
31
+ * @param string $name
32
+ *
33
+ * @return array{\Dotenv\Repository\RepositoryInterface,\Dotenv\Dotenv}
34
+ */
35
+ public static function createArrayDotenv(string $name = '.env')
36
+ {
37
+ $repository = RepositoryBuilder::createWithNoAdapters()->addAdapter(ArrayAdapter::class)->make();
38
+
39
+ return [$repository, Dotenv::create($repository, self::$folder, $name)];
40
+ }
41
+
42
+ /**
43
+ * @doesNotPerformAssertions
44
+ */
45
+ public function testDotenvRequiredStringEnvironmentVars()
46
+ {
47
+ $dotenv = self::createArrayDotenv()[1];
48
+ $dotenv->load();
49
+ $dotenv->required('FOO');
50
+ }
51
+
52
+ /**
53
+ * @doesNotPerformAssertions
54
+ */
55
+ public function testDotenvAllowedValues()
56
+ {
57
+ $dotenv = self::createArrayDotenv()[1];
58
+ $dotenv->load();
59
+ $dotenv->required('FOO')->allowedValues(['bar', 'baz']);
60
+ }
61
+
62
+ /**
63
+ * @doesNotPerformAssertions
64
+ */
65
+ public function testDotenvAllowedValuesIfPresent()
66
+ {
67
+ $dotenv = self::createArrayDotenv()[1];
68
+ $dotenv->load();
69
+ $dotenv->ifPresent('FOO')->allowedValues(['bar', 'baz']);
70
+ }
71
+
72
+ /**
73
+ * @doesNotPerformAssertions
74
+ */
75
+ public function testDotenvAllowedValuesIfNotPresent()
76
+ {
77
+ $dotenv = self::createArrayDotenv()[1];
78
+ $dotenv->load();
79
+ $dotenv->ifPresent('FOOQWERTYOOOOOO')->allowedValues(['bar', 'baz']);
80
+ }
81
+
82
+ public function testDotenvProhibitedValues()
83
+ {
84
+ $dotenv = self::createArrayDotenv()[1];
85
+ $dotenv->load();
86
+
87
+ $this->expectException(ValidationException::class);
88
+ $this->expectExceptionMessage('One or more environment variables failed assertions: FOO is not one of [buzz, buz].');
89
+
90
+ $dotenv->required('FOO')->allowedValues(['buzz', 'buz']);
91
+ }
92
+
93
+ public function testDotenvProhibitedValuesIfPresent()
94
+ {
95
+ $dotenv = self::createArrayDotenv()[1];
96
+ $dotenv->load();
97
+
98
+ $this->expectException(ValidationException::class);
99
+ $this->expectExceptionMessage('One or more environment variables failed assertions: FOO is not one of [buzz, buz].');
100
+
101
+ $dotenv->ifPresent('FOO')->allowedValues(['buzz', 'buz']);
102
+ }
103
+
104
+ public function testDotenvRequiredThrowsRuntimeException()
105
+ {
106
+ [$repo, $dotenv] = self::createArrayDotenv();
107
+
108
+ $dotenv->load();
109
+
110
+ self::assertFalse($repo->has('FOOX'));
111
+ self::assertFalse($repo->has('NOPE'));
112
+
113
+ $this->expectException(ValidationException::class);
114
+ $this->expectExceptionMessage('One or more environment variables failed assertions: FOOX is missing, NOPE is missing.');
115
+
116
+ $dotenv->required(['FOOX', 'NOPE']);
117
+ }
118
+
119
+ /**
120
+ * @doesNotPerformAssertions
121
+ */
122
+ public function testDotenvRequiredArrayEnvironmentVars()
123
+ {
124
+ $dotenv = self::createArrayDotenv()[1];
125
+ $dotenv->load();
126
+ $dotenv->required(['FOO', 'BAR']);
127
+ }
128
+
129
+ public function testDotenvAssertions()
130
+ {
131
+ [$repo, $dotenv] = self::createArrayDotenv('assertions.env');
132
+
133
+ $dotenv->load();
134
+
135
+ self::assertSame('val1', $repo->get('ASSERTVAR1'));
136
+ self::assertSame('', $repo->get('ASSERTVAR2'));
137
+ self::assertSame('val3 ', $repo->get('ASSERTVAR3'));
138
+ self::assertSame('0', $repo->get('ASSERTVAR4'));
139
+ self::assertSame('#foo', $repo->get('ASSERTVAR5'));
140
+ self::assertSame("val1\nval2", $repo->get('ASSERTVAR6'));
141
+ self::assertSame("\nval3", $repo->get('ASSERTVAR7'));
142
+ self::assertSame("val3\n", $repo->get('ASSERTVAR8'));
143
+
144
+ $dotenv->required([
145
+ 'ASSERTVAR1',
146
+ 'ASSERTVAR2',
147
+ 'ASSERTVAR3',
148
+ 'ASSERTVAR4',
149
+ 'ASSERTVAR5',
150
+ 'ASSERTVAR6',
151
+ 'ASSERTVAR7',
152
+ 'ASSERTVAR8',
153
+ 'ASSERTVAR9',
154
+ ]);
155
+
156
+ $dotenv->required([
157
+ 'ASSERTVAR1',
158
+ 'ASSERTVAR3',
159
+ 'ASSERTVAR4',
160
+ 'ASSERTVAR5',
161
+ 'ASSERTVAR6',
162
+ 'ASSERTVAR7',
163
+ 'ASSERTVAR8',
164
+ ])->notEmpty();
165
+
166
+ $dotenv->required([
167
+ 'ASSERTVAR1',
168
+ 'ASSERTVAR4',
169
+ 'ASSERTVAR5',
170
+ ])->notEmpty()->allowedValues(['0', 'val1', '#foo']);
171
+ }
172
+
173
+ public function testDotenvEmptyThrowsRuntimeException()
174
+ {
175
+ $dotenv = self::createArrayDotenv('assertions.env')[1];
176
+ $dotenv->load();
177
+
178
+ $this->expectException(ValidationException::class);
179
+ $this->expectExceptionMessage('One or more environment variables failed assertions: ASSERTVAR2 is empty.');
180
+
181
+ $dotenv->required('ASSERTVAR2')->notEmpty();
182
+ }
183
+
184
+ /**
185
+ * @doesNotPerformAssertions
186
+ */
187
+ public function testDotenvEmptyWhenNotPresent()
188
+ {
189
+ $dotenv = self::createArrayDotenv('assertions.env')[1];
190
+ $dotenv->load();
191
+ $dotenv->ifPresent('ASSERTVAR2_NO_SUCH_VARIABLE')->notEmpty();
192
+ }
193
+
194
+ public function testDotenvStringOfSpacesConsideredEmpty()
195
+ {
196
+ $dotenv = self::createArrayDotenv('assertions.env')[1];
197
+ $dotenv->load();
198
+
199
+ $this->expectException(ValidationException::class);
200
+ $this->expectExceptionMessage('One or more environment variables failed assertions: ASSERTVAR9 is empty.');
201
+
202
+ $dotenv->required('ASSERTVAR9')->notEmpty();
203
+ }
204
+
205
+ /**
206
+ * List of valid boolean values in fixtures/env/booleans.env.
207
+ *
208
+ * @return string[][]
209
+ */
210
+ public static function validBooleanValuesDataProvider()
211
+ {
212
+ return [
213
+ ['VALID_EXPLICIT_LOWERCASE_TRUE'],
214
+ ['VALID_EXPLICIT_LOWERCASE_FALSE'],
215
+ ['VALID_EXPLICIT_UPPERCASE_TRUE'],
216
+ ['VALID_EXPLICIT_UPPERCASE_FALSE'],
217
+ ['VALID_EXPLICIT_MIXEDCASE_TRUE'],
218
+ ['VALID_EXPLICIT_MIXEDCASE_FALSE'],
219
+
220
+ ['VALID_NUMBER_TRUE'],
221
+ ['VALID_NUMBER_FALSE'],
222
+
223
+ ['VALID_ONOFF_LOWERCASE_TRUE'],
224
+ ['VALID_ONOFF_LOWERCASE_FALSE'],
225
+ ['VALID_ONOFF_UPPERCASE_TRUE'],
226
+ ['VALID_ONOFF_UPPERCASE_FALSE'],
227
+ ['VALID_ONOFF_MIXEDCASE_TRUE'],
228
+ ['VALID_ONOFF_MIXEDCASE_FALSE'],
229
+
230
+ ['VALID_YESNO_LOWERCASE_TRUE'],
231
+ ['VALID_YESNO_LOWERCASE_FALSE'],
232
+ ['VALID_YESNO_UPPERCASE_TRUE'],
233
+ ['VALID_YESNO_UPPERCASE_FALSE'],
234
+ ['VALID_YESNO_MIXEDCASE_TRUE'],
235
+ ['VALID_YESNO_MIXEDCASE_FALSE'],
236
+ ];
237
+ }
238
+
239
+ /**
240
+ * @dataProvider validBooleanValuesDataProvider
241
+ * @doesNotPerformAssertions
242
+ */
243
+ public function testCanValidateBooleans(string $boolean)
244
+ {
245
+ $dotenv = Dotenv::createImmutable(self::$folder, 'booleans.env');
246
+ $dotenv->load();
247
+ $dotenv->required($boolean)->isBoolean();
248
+ }
249
+
250
+ /**
251
+ * @dataProvider validBooleanValuesDataProvider
252
+ * @doesNotPerformAssertions
253
+ */
254
+ public function testCanValidateBooleansIfPresent(string $boolean)
255
+ {
256
+ $dotenv = Dotenv::createImmutable(self::$folder, 'booleans.env');
257
+ $dotenv->load();
258
+ $dotenv->ifPresent($boolean)->isBoolean();
259
+ }
260
+
261
+ /**
262
+ * List of non-boolean values in fixtures/env/booleans.env.
263
+ *
264
+ * @return string[][]
265
+ */
266
+ public static function invalidBooleanValuesDataProvider()
267
+ {
268
+ return [
269
+ ['INVALID_SOMETHING'],
270
+ ['INVALID_EMPTY'],
271
+ ['INVALID_EMPTY_STRING'],
272
+ ['INVALID_NULL'],
273
+ ['INVALID_NUMBER_POSITIVE'],
274
+ ['INVALID_NUMBER_NEGATIVE'],
275
+ ['INVALID_MINUS'],
276
+ ['INVALID_TILDA'],
277
+ ['INVALID_EXCLAMATION'],
278
+ ];
279
+ }
280
+
281
+ /**
282
+ * @dataProvider invalidBooleanValuesDataProvider
283
+ */
284
+ public function testCanInvalidateNonBooleans(string $boolean)
285
+ {
286
+ $dotenv = Dotenv::createImmutable(self::$folder, 'booleans.env');
287
+ $dotenv->load();
288
+
289
+ $this->expectException(ValidationException::class);
290
+ $this->expectExceptionMessage('One or more environment variables failed assertions: INVALID_');
291
+
292
+ $dotenv->required($boolean)->isBoolean();
293
+ }
294
+
295
+ /**
296
+ * @dataProvider invalidBooleanValuesDataProvider
297
+ */
298
+ public function testCanInvalidateNonBooleansIfPresent(string $boolean)
299
+ {
300
+ $dotenv = Dotenv::createImmutable(self::$folder, 'booleans.env');
301
+ $dotenv->load();
302
+
303
+ $this->expectException(ValidationException::class);
304
+ $this->expectExceptionMessage('One or more environment variables failed assertions: INVALID_');
305
+
306
+ $dotenv->ifPresent($boolean)->isBoolean();
307
+ }
308
+
309
+ public function testCanInvalidateBooleanNonExist()
310
+ {
311
+ $dotenv = Dotenv::createImmutable(self::$folder, 'booleans.env');
312
+ $dotenv->load();
313
+
314
+ $this->expectException(ValidationException::class);
315
+ $this->expectExceptionMessage('One or more environment variables failed assertions: VAR_DOES_NOT_EXIST_234782462764');
316
+
317
+ $dotenv->required(['VAR_DOES_NOT_EXIST_234782462764'])->isBoolean();
318
+ }
319
+
320
+ /**
321
+ * @doesNotPerformAssertions
322
+ */
323
+ public function testIfPresentBooleanNonExist()
324
+ {
325
+ $dotenv = Dotenv::createImmutable(self::$folder, 'booleans.env');
326
+ $dotenv->load();
327
+ $dotenv->ifPresent(['VAR_DOES_NOT_EXIST_234782462764'])->isBoolean();
328
+ }
329
+
330
+ /**
331
+ * List of valid integer values in fixtures/env/integers.env.
332
+ *
333
+ * @return string[][]
334
+ */
335
+ public static function validIntegerValuesDataProvider()
336
+ {
337
+ return [
338
+ ['VALID_ZERO'],
339
+ ['VALID_ONE'],
340
+ ['VALID_TWO'],
341
+ ['VALID_LARGE'],
342
+ ['VALID_HUGE'],
343
+ ];
344
+ }
345
+
346
+ /**
347
+ * @dataProvider validIntegerValuesDataProvider
348
+ * @doesNotPerformAssertions
349
+ */
350
+ public function testCanValidateIntegers(string $integer)
351
+ {
352
+ $dotenv = Dotenv::createImmutable(self::$folder, 'integers.env');
353
+ $dotenv->load();
354
+ $dotenv->required($integer)->isInteger();
355
+ }
356
+
357
+ /**
358
+ * @dataProvider validIntegerValuesDataProvider
359
+ * @doesNotPerformAssertions
360
+ */
361
+ public function testCanValidateIntegersIfPresent(string $integer)
362
+ {
363
+ $dotenv = Dotenv::createImmutable(self::$folder, 'integers.env');
364
+ $dotenv->load();
365
+ $dotenv->ifPresent($integer)->isInteger();
366
+ }
367
+
368
+ /**
369
+ * List of non-integer values in fixtures/env/integers.env.
370
+ *
371
+ * @return string[][]
372
+ */
373
+ public static function invalidIntegerValuesDataProvider()
374
+ {
375
+ return [
376
+ ['INVALID_SOMETHING'],
377
+ ['INVALID_EMPTY'],
378
+ ['INVALID_EMPTY_STRING'],
379
+ ['INVALID_NULL'],
380
+ ['INVALID_NEGATIVE'],
381
+ ['INVALID_MINUS'],
382
+ ['INVALID_TILDA'],
383
+ ['INVALID_EXCLAMATION'],
384
+ ['INVALID_SPACES'],
385
+ ['INVALID_COMMAS'],
386
+ ];
387
+ }
388
+
389
+ /**
390
+ * @dataProvider invalidIntegerValuesDataProvider
391
+ */
392
+ public function testCanInvalidateNonIntegers(string $integer)
393
+ {
394
+ $dotenv = Dotenv::createImmutable(self::$folder, 'integers.env');
395
+ $dotenv->load();
396
+
397
+ $this->expectException(ValidationException::class);
398
+ $this->expectExceptionMessage('One or more environment variables failed assertions: INVALID_');
399
+
400
+ $dotenv->required($integer)->isInteger();
401
+ }
402
+
403
+ /**
404
+ * @dataProvider invalidIntegerValuesDataProvider
405
+ */
406
+ public function testCanInvalidateNonIntegersIfExist(string $integer)
407
+ {
408
+ $dotenv = Dotenv::createImmutable(self::$folder, 'integers.env');
409
+ $dotenv->load();
410
+
411
+ $this->expectException(ValidationException::class);
412
+ $this->expectExceptionMessage('One or more environment variables failed assertions: INVALID_');
413
+
414
+ $dotenv->ifPresent($integer)->isInteger();
415
+ }
416
+
417
+ public function testCanInvalidateIntegerNonExist()
418
+ {
419
+ $dotenv = Dotenv::createImmutable(self::$folder, 'integers.env');
420
+ $dotenv->load();
421
+
422
+ $this->expectException(ValidationException::class);
423
+ $this->expectExceptionMessage('One or more environment variables failed assertions: VAR_DOES_NOT_EXIST_234782462764');
424
+
425
+ $dotenv->required(['VAR_DOES_NOT_EXIST_234782462764'])->isInteger();
426
+ }
427
+
428
+ /**
429
+ * @doesNotPerformAssertions
430
+ */
431
+ public function testIfPresentIntegerNonExist()
432
+ {
433
+ $dotenv = Dotenv::createImmutable(self::$folder, 'integers.env');
434
+ $dotenv->load();
435
+ $dotenv->ifPresent(['VAR_DOES_NOT_EXIST_234782462764'])->isInteger();
436
+ }
437
+
438
+ /**
439
+ * @doesNotPerformAssertions
440
+ */
441
+ public function testDotenvRegexMatchPass()
442
+ {
443
+ $dotenv = Dotenv::createImmutable(self::$folder);
444
+ $dotenv->load();
445
+ $dotenv->required('FOO')->allowedRegexValues('([[:lower:]]{3})');
446
+ }
447
+
448
+ public function testDotenvRegexMatchFail()
449
+ {
450
+ $dotenv = Dotenv::createImmutable(self::$folder);
451
+ $dotenv->load();
452
+
453
+ $this->expectException(ValidationException::class);
454
+ $this->expectExceptionMessage('One or more environment variables failed assertions: FOO does not match "/^([[:lower:]]{1})$/".');
455
+
456
+ $dotenv->required('FOO')->allowedRegexValues('/^([[:lower:]]{1})$/');
457
+ }
458
+
459
+ public function testDotenvRegexMatchError()
460
+ {
461
+ $dotenv = Dotenv::createImmutable(self::$folder);
462
+ $dotenv->load();
463
+
464
+ $this->expectException(ValidationException::class);
465
+ $this->expectExceptionMessage('One or more environment variables failed assertions: FOO does not match "/([[:lower:]{1{".');
466
+
467
+ $dotenv->required('FOO')->allowedRegexValues('/([[:lower:]{1{');
468
+ }
469
+
470
+ /**
471
+ * @doesNotPerformAssertions
472
+ */
473
+ public function testDotenvRegexMatchNotPresent()
474
+ {
475
+ $dotenv = Dotenv::createImmutable(self::$folder);
476
+ $dotenv->load();
477
+ $dotenv->ifPresent('FOOOOOOOOOOO')->allowedRegexValues('([[:lower:]]{3})');
478
+ }
479
+ }
@@ -0,0 +1,5 @@
1
+ FOO=bar
2
+ BAR=baz
3
+ SPACED="with spaces"
4
+
5
+ NULL=
@@ -0,0 +1,18 @@
1
+ ASSERTVAR1=val1
2
+
3
+ ASSERTVAR2=""
4
+
5
+ ASSERTVAR3="val3 "
6
+ ASSERTVAR4="0" # empty looking value
7
+ ASSERTVAR5="#foo"
8
+ ASSERTVAR6="val1
9
+ val2"
10
+ ASSERTVAR7="
11
+ val3" #
12
+
13
+
14
+ ASSERTVAR8="val3
15
+ "
16
+ ASSERTVAR9="
17
+
18
+ "
@@ -0,0 +1,33 @@
1
+ VALID_EXPLICIT_LOWERCASE_TRUE=true
2
+ VALID_EXPLICIT_LOWERCASE_FALSE=false
3
+ VALID_EXPLICIT_UPPERCASE_TRUE=TRUE
4
+ VALID_EXPLICIT_UPPERCASE_FALSE=FALSE
5
+ VALID_EXPLICIT_MIXEDCASE_TRUE=True
6
+ VALID_EXPLICIT_MIXEDCASE_FALSE=False
7
+
8
+ VALID_NUMBER_TRUE=1
9
+ VALID_NUMBER_FALSE=0
10
+
11
+ VALID_ONOFF_LOWERCASE_TRUE=on
12
+ VALID_ONOFF_LOWERCASE_FALSE=off
13
+ VALID_ONOFF_UPPERCASE_TRUE=ON
14
+ VALID_ONOFF_UPPERCASE_FALSE=OFF
15
+ VALID_ONOFF_MIXEDCASE_TRUE=On
16
+ VALID_ONOFF_MIXEDCASE_FALSE=Off
17
+
18
+ VALID_YESNO_LOWERCASE_TRUE=yes
19
+ VALID_YESNO_LOWERCASE_FALSE=no
20
+ VALID_YESNO_UPPERCASE_TRUE=YES
21
+ VALID_YESNO_UPPERCASE_FALSE=NO
22
+ VALID_YESNO_MIXEDCASE_TRUE=Yes
23
+ VALID_YESNO_MIXEDCASE_FALSE=No
24
+
25
+ INVALID_SOMETHING=something
26
+ INVALID_EMPTY=
27
+ INVALID_EMPTY_STRING=""
28
+ INVALID_NULL=null
29
+ INVALID_NUMBER_POSITIVE=2
30
+ INVALID_NUMBER_NEGATIVE=-2
31
+ INVALID_MINUS=-
32
+ INVALID_TILDA=~
33
+ INVALID_EXCLAMATION=!
@@ -0,0 +1,15 @@
1
+ # This is a comment
2
+ CFOO=bar
3
+ #CBAR=baz
4
+ #CZOO=goo # a comment on a commented row
5
+ CSPACED="with spaces" # this is a comment
6
+ CQUOTES="a value with a # character" # this is a comment
7
+ CQUOTESWITHQUOTE="a value with a # character & a quote \" character inside quotes" # " this is a comment
8
+ EMPTY= # comment with empty variable
9
+ EMPTY2=# comment with empty variable
10
+ FOOO=foo# comment with no space
11
+ BOOLEAN=yes # (yes, no)
12
+
13
+ CNULL=
14
+
15
+ ## this is a comment ##
@@ -0,0 +1,7 @@
1
+ export EFOO="bar"
2
+ export EBAR = "baz"
3
+ export ESPACED="with spaces"
4
+ export "EDQUOTED" = 123
5
+ export 'ESQUOTED' = 456
6
+
7
+ export ENULL=""
@@ -0,0 +1,17 @@
1
+ VALID_ZERO=0
2
+ VALID_ONE=1
3
+ VALID_TWO=2
4
+
5
+ VALID_LARGE=99999999
6
+ VALID_HUGE=99999999999999999999999999999999
7
+
8
+ INVALID_SOMETHING=something
9
+ INVALID_EMPTY=
10
+ INVALID_EMPTY_STRING=""
11
+ INVALID_NULL=null
12
+ INVALID_NEGATIVE=-2
13
+ INVALID_MINUS=-
14
+ INVALID_TILDA=~
15
+ INVALID_EXCLAMATION=!
16
+ INVALID_SPACES=" 123"
17
+ INVALID_COMMAS="123,123"
@@ -0,0 +1,2 @@
1
+ LARGE='111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
2
+ HUGE='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
@@ -0,0 +1,3 @@
1
+ MB1="Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě"
2
+ MB2=行内支付
3
+ APP_ENV=🚀
@@ -0,0 +1,14 @@
1
+ TEST="test
2
+ test\"test\"
3
+ test"
4
+
5
+ TEST_ND="test\ntest"
6
+ TEST_NS='test\ntest'
7
+
8
+ TEST_EQD="https://vision.googleapis.com/v1/images:annotate?key="
9
+ TEST_EQS='https://vision.googleapis.com/v1/images:annotate?key='
10
+
11
+ BASE64_ENCODED_MULTILINE="qS1zCzMVVUJWQShokv6YVYi+ruKSC/bHV7GmEiyVkLaBWJHNVHCHsgTksEBsy8wJ
12
+ uwycAvR07ZyOJJed4XTRMKnKp1/v+6UATpWzkIjZXytK+pD+XlZimUHTx3uiDcmU
13
+ jhQX1wWSxHDqrSWxeIJiTD+BuUyId8FzmXQ3TcBydJ474tmOU2F492ubk3LAiZ18
14
+ mhiRGoshXAOSbS/P3+RZi4bDeNE/No4="
@@ -0,0 +1,4 @@
1
+ MULTI1=foo
2
+ MULTI2=${MULTI1}
3
+ MULTI1=bar
4
+
@@ -0,0 +1,15 @@
1
+ NVAR1="Hellō"
2
+ NVAR2="World!"
3
+ NVAR3="{$NVAR1} {$NVAR2}"
4
+ NVAR4="${NVAR1} ${NVAR2}"
5
+ NVAR5="$NVAR1 {NVAR2}"
6
+ N.VAR6="Special Value"
7
+ NVAR7="${N.VAR6}"
8
+ NVAR8=""
9
+ NVAR9="${NVAR8}"
10
+ NVAR10="${NVAR888}"
11
+ NVAR11="NVAR1"
12
+ NVAR12="${${NVAR11}}"
13
+ NVAR13='${${NVAR11}}'
14
+ NVAR14='${NVAR1} ${NVAR2}'
15
+ NVAR15="\${NVAR1} \${NVAR2}"
@@ -0,0 +1,11 @@
1
+ QFOO="bar"
2
+ QBAR="baz"
3
+ QSPACED="with spaces"
4
+ QEQUALS="pgsql:host=localhost;dbname=test"
5
+
6
+ QNULL=""
7
+ QWHITESPACE = "no space"
8
+
9
+ QESCAPED="test some escaped characters like a quote (\") or maybe a backslash (\\)"
10
+ QSLASH="iiiiviiiixiiiiviiii\\n"
11
+ SQSLASH='iiiiviiiixiiiiviiii\\n'
@@ -0,0 +1,8 @@
1
+ SPVAR1="$a6^C7k%zs+e^.jvjXk"
2
+ SPVAR2="?BUty3koaV3%GA*hMAwH}B"
3
+ SPVAR3="jdgEB4{QgEC]HL))&GcXxokB+wqoN+j>xkV7K?m$r"
4
+ SPVAR4="22222:22#2^{"
5
+ SPVAR5="test some escaped characters like a quote \" or maybe a backslash \\" # not escaped
6
+ SPVAR6=secret!@#
7
+ SPVAR7='secret!@#'
8
+ SPVAR8="secret!@#"