create-berna-stencil 2.4.0 → 2.4.2

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 (181) hide show
  1. package/.eleventy.js +1 -0
  2. package/README.md +1 -1
  3. package/_tools/modules/updateIncludes.js +16 -13
  4. package/_tools/res/templates/template.js +0 -8
  5. package/_tools/res/templates/template.ts +0 -8
  6. package/bin/create.js +1 -1
  7. package/docs/Javascript.md +3 -13
  8. package/package.json +64 -64
  9. package/src/backend/_core/vendor/composer/autoload_static.php +10 -10
  10. package/src/backend/_core/vendor/composer/installed.json +6 -6
  11. package/src/backend/_core/vendor/composer/installed.php +2 -2
  12. package/src/backend/_core/vendor/graham-campbell/result-type/LICENSE +21 -21
  13. package/src/backend/_core/vendor/graham-campbell/result-type/composer.json +33 -33
  14. package/src/backend/_core/vendor/graham-campbell/result-type/src/Error.php +121 -121
  15. package/src/backend/_core/vendor/graham-campbell/result-type/src/Result.php +69 -69
  16. package/src/backend/_core/vendor/graham-campbell/result-type/src/Success.php +120 -120
  17. package/src/backend/_core/vendor/phpoption/phpoption/LICENSE +200 -200
  18. package/src/backend/_core/vendor/phpoption/phpoption/composer.json +50 -50
  19. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -175
  20. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -136
  21. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -434
  22. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -169
  23. package/src/backend/_core/vendor/symfony/polyfill-ctype/Ctype.php +232 -232
  24. package/src/backend/_core/vendor/symfony/polyfill-ctype/LICENSE +19 -19
  25. package/src/backend/_core/vendor/symfony/polyfill-ctype/README.md +12 -12
  26. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap.php +50 -50
  27. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -46
  28. package/src/backend/_core/vendor/symfony/polyfill-ctype/composer.json +38 -38
  29. package/src/backend/_core/vendor/symfony/polyfill-mbstring/LICENSE +19 -19
  30. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -1077
  31. package/src/backend/_core/vendor/symfony/polyfill-mbstring/README.md +13 -13
  32. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -119
  33. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -1397
  34. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -5
  35. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -1489
  36. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -171
  37. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -167
  38. package/src/backend/_core/vendor/symfony/polyfill-mbstring/composer.json +39 -39
  39. package/src/backend/_core/vendor/symfony/polyfill-php80/LICENSE +19 -19
  40. package/src/backend/_core/vendor/symfony/polyfill-php80/Php80.php +115 -115
  41. package/src/backend/_core/vendor/symfony/polyfill-php80/PhpToken.php +106 -106
  42. package/src/backend/_core/vendor/symfony/polyfill-php80/README.md +25 -25
  43. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -31
  44. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -16
  45. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -20
  46. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -16
  47. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -16
  48. package/src/backend/_core/vendor/symfony/polyfill-php80/bootstrap.php +42 -42
  49. package/src/backend/_core/vendor/symfony/polyfill-php80/composer.json +37 -37
  50. package/src/backend/_core/vendor/vlucas/phpdotenv/LICENSE +30 -30
  51. package/src/backend/_core/vendor/vlucas/phpdotenv/composer.json +60 -60
  52. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -267
  53. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -12
  54. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -12
  55. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -12
  56. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -12
  57. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -12
  58. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -48
  59. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -20
  60. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -65
  61. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -59
  62. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -299
  63. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -58
  64. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -127
  65. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -53
  66. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -19
  67. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -88
  68. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -15
  69. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -89
  70. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -80
  71. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -88
  72. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -85
  73. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -110
  74. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -48
  75. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -64
  76. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -91
  77. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -17
  78. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -104
  79. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -88
  80. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -27
  81. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -107
  82. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -272
  83. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -51
  84. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -44
  85. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -81
  86. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -72
  87. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -141
  88. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -17
  89. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -37
  90. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -112
  91. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -108
  92. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Validator.php +207 -207
  93. package/src/frontend/data/site.json +43 -43
  94. package/src/frontend/js/modules/exampleModule.js +1 -5
  95. package/src/frontend/js/pages/404.js +3 -9
  96. package/src/frontend/js/pages/homepage.js +3 -9
  97. package/src/frontend/llms.njk +1 -1
  98. package/src/frontend/scss/modules/_buttons.scss +1 -0
  99. package/src/frontend/scss/modules/_global.scss +1 -1
  100. package/src/frontend/ts/modules/exampleModule.ts +1 -1
  101. package/src/frontend/ts/pages/404.ts +3 -9
  102. package/src/frontend/ts/pages/homepage.ts +3 -9
  103. package/src/backend/_core/vendor/graham-campbell/result-type/.gitattributes +0 -9
  104. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +0 -132
  105. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +0 -31
  106. package/src/backend/_core/vendor/graham-campbell/result-type/.github/FUNDING.yml +0 -2
  107. package/src/backend/_core/vendor/graham-campbell/result-type/.github/SECURITY.md +0 -14
  108. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/stale.yml +0 -11
  109. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/tests.yml +0 -40
  110. package/src/backend/_core/vendor/graham-campbell/result-type/CHANGELOG.md +0 -53
  111. package/src/backend/_core/vendor/graham-campbell/result-type/README.md +0 -42
  112. package/src/backend/_core/vendor/graham-campbell/result-type/phpunit.xml.dist +0 -13
  113. package/src/backend/_core/vendor/graham-campbell/result-type/tests/ResultTest.php +0 -95
  114. package/src/backend/_core/vendor/phpoption/phpoption/.gitattributes +0 -13
  115. package/src/backend/_core/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +0 -132
  116. package/src/backend/_core/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +0 -30
  117. package/src/backend/_core/vendor/phpoption/phpoption/.github/FUNDING.yml +0 -2
  118. package/src/backend/_core/vendor/phpoption/phpoption/.github/SECURITY.md +0 -14
  119. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/static.yml +0 -40
  120. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/tests.yml +0 -40
  121. package/src/backend/_core/vendor/phpoption/phpoption/Makefile +0 -17
  122. package/src/backend/_core/vendor/phpoption/phpoption/README.md +0 -201
  123. package/src/backend/_core/vendor/phpoption/phpoption/phpstan-baseline.neon +0 -44
  124. package/src/backend/_core/vendor/phpoption/phpoption/phpstan.neon.dist +0 -7
  125. package/src/backend/_core/vendor/phpoption/phpoption/phpunit.xml.dist +0 -13
  126. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +0 -72
  127. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +0 -357
  128. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +0 -153
  129. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +0 -166
  130. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +0 -194
  131. package/src/backend/_core/vendor/phpoption/phpoption/tests/bootstrap.php +0 -8
  132. package/src/backend/_core/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +0 -8
  133. package/src/backend/_core/vendor/vlucas/phpdotenv/.editorconfig +0 -15
  134. package/src/backend/_core/vendor/vlucas/phpdotenv/.gitattributes +0 -15
  135. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +0 -132
  136. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +0 -30
  137. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/FUNDING.yml +0 -2
  138. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/SECURITY.md +0 -14
  139. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/static.yml +0 -40
  140. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +0 -70
  141. package/src/backend/_core/vendor/vlucas/phpdotenv/Makefile +0 -17
  142. package/src/backend/_core/vendor/vlucas/phpdotenv/README.md +0 -370
  143. package/src/backend/_core/vendor/vlucas/phpdotenv/UPGRADING.md +0 -196
  144. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan-baseline.neon +0 -157
  145. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan.neon.dist +0 -7
  146. package/src/backend/_core/vendor/vlucas/phpdotenv/phpunit.xml.dist +0 -13
  147. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +0 -387
  148. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +0 -86
  149. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +0 -234
  150. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +0 -40
  151. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +0 -53
  152. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +0 -98
  153. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +0 -57
  154. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +0 -75
  155. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +0 -52
  156. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +0 -75
  157. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +0 -305
  158. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +0 -141
  159. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +0 -479
  160. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +0 -5
  161. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +0 -18
  162. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +0 -33
  163. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +0 -15
  164. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +0 -1
  165. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +0 -1
  166. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +0 -7
  167. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +0 -1
  168. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +0 -17
  169. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +0 -2
  170. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +0 -3
  171. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +0 -14
  172. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +0 -4
  173. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +0 -1
  174. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +0 -15
  175. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +0 -11
  176. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +0 -8
  177. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +0 -2
  178. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +0 -3
  179. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +0 -1
  180. package/src/backend/_core/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +0 -15
  181. package/src/backend/config.php +0 -19
@@ -1,207 +1,207 @@
1
- <?php
2
-
3
- declare(strict_types=1);
4
-
5
- namespace Dotenv;
6
-
7
- use Dotenv\Exception\ValidationException;
8
- use Dotenv\Repository\RepositoryInterface;
9
- use Dotenv\Util\Regex;
10
- use Dotenv\Util\Str;
11
-
12
- class Validator
13
- {
14
- /**
15
- * The environment repository instance.
16
- *
17
- * @var \Dotenv\Repository\RepositoryInterface
18
- */
19
- private $repository;
20
-
21
- /**
22
- * The variables to validate.
23
- *
24
- * @var string[]
25
- */
26
- private $variables;
27
-
28
- /**
29
- * Create a new validator instance.
30
- *
31
- * @param \Dotenv\Repository\RepositoryInterface $repository
32
- * @param string[] $variables
33
- *
34
- * @return void
35
- */
36
- public function __construct(RepositoryInterface $repository, array $variables)
37
- {
38
- $this->repository = $repository;
39
- $this->variables = $variables;
40
- }
41
-
42
- /**
43
- * Assert that each variable is present.
44
- *
45
- * @throws \Dotenv\Exception\ValidationException
46
- *
47
- * @return \Dotenv\Validator
48
- */
49
- public function required()
50
- {
51
- return $this->assert(
52
- static function (?string $value) {
53
- return $value !== null;
54
- },
55
- 'is missing'
56
- );
57
- }
58
-
59
- /**
60
- * Assert that each variable is not empty.
61
- *
62
- * @throws \Dotenv\Exception\ValidationException
63
- *
64
- * @return \Dotenv\Validator
65
- */
66
- public function notEmpty()
67
- {
68
- return $this->assertNullable(
69
- static function (string $value) {
70
- return Str::len(\trim($value)) > 0;
71
- },
72
- 'is empty'
73
- );
74
- }
75
-
76
- /**
77
- * Assert that each specified variable is an integer.
78
- *
79
- * @throws \Dotenv\Exception\ValidationException
80
- *
81
- * @return \Dotenv\Validator
82
- */
83
- public function isInteger()
84
- {
85
- return $this->assertNullable(
86
- static function (string $value) {
87
- return \ctype_digit($value);
88
- },
89
- 'is not an integer'
90
- );
91
- }
92
-
93
- /**
94
- * Assert that each specified variable is a boolean.
95
- *
96
- * @throws \Dotenv\Exception\ValidationException
97
- *
98
- * @return \Dotenv\Validator
99
- */
100
- public function isBoolean()
101
- {
102
- return $this->assertNullable(
103
- static function (string $value) {
104
- if ($value === '') {
105
- return false;
106
- }
107
-
108
- return \filter_var($value, \FILTER_VALIDATE_BOOLEAN, \FILTER_NULL_ON_FAILURE) !== null;
109
- },
110
- 'is not a boolean'
111
- );
112
- }
113
-
114
- /**
115
- * Assert that each variable is amongst the given choices.
116
- *
117
- * @param string[] $choices
118
- *
119
- * @throws \Dotenv\Exception\ValidationException
120
- *
121
- * @return \Dotenv\Validator
122
- */
123
- public function allowedValues(array $choices)
124
- {
125
- return $this->assertNullable(
126
- static function (string $value) use ($choices) {
127
- return \in_array($value, $choices, true);
128
- },
129
- \sprintf('is not one of [%s]', \implode(', ', $choices))
130
- );
131
- }
132
-
133
- /**
134
- * Assert that each variable matches the given regular expression.
135
- *
136
- * @param string $regex
137
- *
138
- * @throws \Dotenv\Exception\ValidationException
139
- *
140
- * @return \Dotenv\Validator
141
- */
142
- public function allowedRegexValues(string $regex)
143
- {
144
- return $this->assertNullable(
145
- static function (string $value) use ($regex) {
146
- return Regex::matches($regex, $value)->success()->getOrElse(false);
147
- },
148
- \sprintf('does not match "%s"', $regex)
149
- );
150
- }
151
-
152
- /**
153
- * Assert that the callback returns true for each variable.
154
- *
155
- * @param callable(?string):bool $callback
156
- * @param string $message
157
- *
158
- * @throws \Dotenv\Exception\ValidationException
159
- *
160
- * @return \Dotenv\Validator
161
- */
162
- public function assert(callable $callback, string $message)
163
- {
164
- $failing = [];
165
-
166
- foreach ($this->variables as $variable) {
167
- if ($callback($this->repository->get($variable)) === false) {
168
- $failing[] = \sprintf('%s %s', $variable, $message);
169
- }
170
- }
171
-
172
- if (\count($failing) > 0) {
173
- throw new ValidationException(\sprintf(
174
- 'One or more environment variables failed assertions: %s.',
175
- \implode(', ', $failing)
176
- ));
177
- }
178
-
179
- return $this;
180
- }
181
-
182
- /**
183
- * Assert that the callback returns true for each variable.
184
- *
185
- * Skip checking null variable values.
186
- *
187
- * @param callable(string):bool $callback
188
- * @param string $message
189
- *
190
- * @throws \Dotenv\Exception\ValidationException
191
- *
192
- * @return \Dotenv\Validator
193
- */
194
- public function assertNullable(callable $callback, string $message)
195
- {
196
- return $this->assert(
197
- static function (?string $value) use ($callback) {
198
- if ($value === null) {
199
- return true;
200
- }
201
-
202
- return $callback($value);
203
- },
204
- $message
205
- );
206
- }
207
- }
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dotenv;
6
+
7
+ use Dotenv\Exception\ValidationException;
8
+ use Dotenv\Repository\RepositoryInterface;
9
+ use Dotenv\Util\Regex;
10
+ use Dotenv\Util\Str;
11
+
12
+ class Validator
13
+ {
14
+ /**
15
+ * The environment repository instance.
16
+ *
17
+ * @var \Dotenv\Repository\RepositoryInterface
18
+ */
19
+ private $repository;
20
+
21
+ /**
22
+ * The variables to validate.
23
+ *
24
+ * @var string[]
25
+ */
26
+ private $variables;
27
+
28
+ /**
29
+ * Create a new validator instance.
30
+ *
31
+ * @param \Dotenv\Repository\RepositoryInterface $repository
32
+ * @param string[] $variables
33
+ *
34
+ * @return void
35
+ */
36
+ public function __construct(RepositoryInterface $repository, array $variables)
37
+ {
38
+ $this->repository = $repository;
39
+ $this->variables = $variables;
40
+ }
41
+
42
+ /**
43
+ * Assert that each variable is present.
44
+ *
45
+ * @throws \Dotenv\Exception\ValidationException
46
+ *
47
+ * @return \Dotenv\Validator
48
+ */
49
+ public function required()
50
+ {
51
+ return $this->assert(
52
+ static function (?string $value) {
53
+ return $value !== null;
54
+ },
55
+ 'is missing'
56
+ );
57
+ }
58
+
59
+ /**
60
+ * Assert that each variable is not empty.
61
+ *
62
+ * @throws \Dotenv\Exception\ValidationException
63
+ *
64
+ * @return \Dotenv\Validator
65
+ */
66
+ public function notEmpty()
67
+ {
68
+ return $this->assertNullable(
69
+ static function (string $value) {
70
+ return Str::len(\trim($value)) > 0;
71
+ },
72
+ 'is empty'
73
+ );
74
+ }
75
+
76
+ /**
77
+ * Assert that each specified variable is an integer.
78
+ *
79
+ * @throws \Dotenv\Exception\ValidationException
80
+ *
81
+ * @return \Dotenv\Validator
82
+ */
83
+ public function isInteger()
84
+ {
85
+ return $this->assertNullable(
86
+ static function (string $value) {
87
+ return \ctype_digit($value);
88
+ },
89
+ 'is not an integer'
90
+ );
91
+ }
92
+
93
+ /**
94
+ * Assert that each specified variable is a boolean.
95
+ *
96
+ * @throws \Dotenv\Exception\ValidationException
97
+ *
98
+ * @return \Dotenv\Validator
99
+ */
100
+ public function isBoolean()
101
+ {
102
+ return $this->assertNullable(
103
+ static function (string $value) {
104
+ if ($value === '') {
105
+ return false;
106
+ }
107
+
108
+ return \filter_var($value, \FILTER_VALIDATE_BOOLEAN, \FILTER_NULL_ON_FAILURE) !== null;
109
+ },
110
+ 'is not a boolean'
111
+ );
112
+ }
113
+
114
+ /**
115
+ * Assert that each variable is amongst the given choices.
116
+ *
117
+ * @param string[] $choices
118
+ *
119
+ * @throws \Dotenv\Exception\ValidationException
120
+ *
121
+ * @return \Dotenv\Validator
122
+ */
123
+ public function allowedValues(array $choices)
124
+ {
125
+ return $this->assertNullable(
126
+ static function (string $value) use ($choices) {
127
+ return \in_array($value, $choices, true);
128
+ },
129
+ \sprintf('is not one of [%s]', \implode(', ', $choices))
130
+ );
131
+ }
132
+
133
+ /**
134
+ * Assert that each variable matches the given regular expression.
135
+ *
136
+ * @param string $regex
137
+ *
138
+ * @throws \Dotenv\Exception\ValidationException
139
+ *
140
+ * @return \Dotenv\Validator
141
+ */
142
+ public function allowedRegexValues(string $regex)
143
+ {
144
+ return $this->assertNullable(
145
+ static function (string $value) use ($regex) {
146
+ return Regex::matches($regex, $value)->success()->getOrElse(false);
147
+ },
148
+ \sprintf('does not match "%s"', $regex)
149
+ );
150
+ }
151
+
152
+ /**
153
+ * Assert that the callback returns true for each variable.
154
+ *
155
+ * @param callable(?string):bool $callback
156
+ * @param string $message
157
+ *
158
+ * @throws \Dotenv\Exception\ValidationException
159
+ *
160
+ * @return \Dotenv\Validator
161
+ */
162
+ public function assert(callable $callback, string $message)
163
+ {
164
+ $failing = [];
165
+
166
+ foreach ($this->variables as $variable) {
167
+ if ($callback($this->repository->get($variable)) === false) {
168
+ $failing[] = \sprintf('%s %s', $variable, $message);
169
+ }
170
+ }
171
+
172
+ if (\count($failing) > 0) {
173
+ throw new ValidationException(\sprintf(
174
+ 'One or more environment variables failed assertions: %s.',
175
+ \implode(', ', $failing)
176
+ ));
177
+ }
178
+
179
+ return $this;
180
+ }
181
+
182
+ /**
183
+ * Assert that the callback returns true for each variable.
184
+ *
185
+ * Skip checking null variable values.
186
+ *
187
+ * @param callable(string):bool $callback
188
+ * @param string $message
189
+ *
190
+ * @throws \Dotenv\Exception\ValidationException
191
+ *
192
+ * @return \Dotenv\Validator
193
+ */
194
+ public function assertNullable(callable $callback, string $message)
195
+ {
196
+ return $this->assert(
197
+ static function (?string $value) use ($callback) {
198
+ if ($value === null) {
199
+ return true;
200
+ }
201
+
202
+ return $callback($value);
203
+ },
204
+ $message
205
+ );
206
+ }
207
+ }
@@ -1,44 +1,44 @@
1
- {
2
- "site_name": "Site name",
3
- "title": "Site title",
4
- "description": "Site description",
5
- "keywords": "keyword1, keyword2, keyword3",
6
- "domain": "yoursite.com",
7
- "url": "https://yoursite.com",
8
- "lang": "en",
9
- "author": "Name and surname",
10
- "data_bs_theme": "dark",
11
- "favicon": "/assets/brand/favicon.svg",
12
- "logo": "/assets/brand/logo.svg",
13
- "copyright": {
14
- "year": "2026",
15
- "text": "Copyright text"
16
- },
17
- "legal": {
18
- "privacy": "",
19
- "cookie": "",
20
- "cookieControls": "",
21
- "terms": ""
22
- },
23
- "pages": {
24
- "404": {
25
- "seo": {
26
- "title": "404 - Not found"
27
- },
28
- "cdn": {
29
- "css": [],
30
- "js": []
31
- }
32
- },
33
- "homepage": {
34
- "seo": {
35
- "title": "Homepage",
36
- "description": "Description"
37
- },
38
- "cdn": {
39
- "css": [],
40
- "js": []
41
- }
42
- }
43
- }
1
+ {
2
+ "site_name": "Site name",
3
+ "title": "Site title",
4
+ "description": "Site description",
5
+ "keywords": "keyword1, keyword2, keyword3",
6
+ "domain": "yoursite.com",
7
+ "url": "https://yoursite.com",
8
+ "lang": "en",
9
+ "author": "Name and surname",
10
+ "data_bs_theme": "dark",
11
+ "favicon": "/assets/brand/favicon.svg",
12
+ "logo": "/assets/brand/logo.svg",
13
+ "copyright": {
14
+ "year": "2026",
15
+ "text": "Copyright text"
16
+ },
17
+ "legal": {
18
+ "privacy": "",
19
+ "cookie": "",
20
+ "cookieControls": "",
21
+ "terms": ""
22
+ },
23
+ "pages": {
24
+ "404": {
25
+ "seo": {
26
+ "title": "404 - Not found"
27
+ },
28
+ "cdn": {
29
+ "css": [],
30
+ "js": []
31
+ }
32
+ },
33
+ "homepage": {
34
+ "seo": {
35
+ "title": "Homepage",
36
+ "description": "Description"
37
+ },
38
+ "cdn": {
39
+ "css": [],
40
+ "js": []
41
+ }
42
+ }
43
+ }
44
44
  }
@@ -1,7 +1,3 @@
1
- //==========================
2
- // EXAMPLE MODULE
3
- //==========================
4
-
5
1
  export function initExampleModule() {
6
- // Example module logic
2
+ // Module logic here
7
3
  }
@@ -1,13 +1,7 @@
1
- //===========================
2
- // JAVASCRIPT MODULES IMPORTS
3
- //===========================
4
-
5
1
  // import { initExampleModule } from '../modules/exampleModule.js';
6
2
 
7
- //==========================
8
- // PAGE CUSTOM JAVASCRIPT
9
- //==========================
10
-
11
3
  document.addEventListener("DOMContentLoaded", () => {
12
4
  // initExampleModule();
13
- });
5
+ });
6
+
7
+ // Page logic here
@@ -1,13 +1,7 @@
1
- //===========================
2
- // JAVASCRIPT MODULES IMPORTS
3
- //===========================
4
-
5
1
  // import { initExampleModule } from '../modules/exampleModule.js';
6
2
 
7
- //==========================
8
- // PAGE CUSTOM JAVASCRIPT
9
- //==========================
10
-
11
3
  document.addEventListener("DOMContentLoaded", () => {
12
4
  // initExampleModule();
13
- });
5
+ });
6
+
7
+ // Page logic here
@@ -15,4 +15,4 @@ Built by {{ site.author }} — {{ site.url }}
15
15
  ## Notes
16
16
 
17
17
  - Language: {{ site.lang }}
18
- - All content may be used for AI inde xing unless otherwise stated
18
+ - All content may be used for AI indexing unless otherwise stated
@@ -10,6 +10,7 @@
10
10
  border-radius: 12px;
11
11
  padding: 8px 20px;
12
12
  transition: background 0.2s, color 0.2s;
13
+ background-color: #2E7253;
13
14
 
14
15
  &:hover {
15
16
  background: #42b883;
@@ -36,9 +36,9 @@
36
36
  }
37
37
 
38
38
  body {
39
- min-height: 100svh;
40
39
  display: flex;
41
40
  flex-direction: column;
41
+ min-height: 100svh;
42
42
  }
43
43
 
44
44
  main {
@@ -1,3 +1,3 @@
1
1
  export function initExampleModule(): void {
2
- // Example module logic
2
+ // Module logic here
3
3
  }
@@ -1,13 +1,7 @@
1
- //===========================
2
- // TYPESCRIPT MODULES IMPORTS
3
- //===========================
4
-
5
1
  // import { initExampleModule } from '../modules/exampleModule';
6
2
 
7
- //==========================
8
- // PAGE CUSTOM TYPESCRIPT
9
- //==========================
10
-
11
3
  document.addEventListener("DOMContentLoaded", (): void => {
12
4
  // initExampleModule();
13
- });
5
+ });
6
+
7
+ // Page logic here
@@ -1,13 +1,7 @@
1
- //===========================
2
- // TYPESCRIPT MODULES IMPORTS
3
- //===========================
4
-
5
1
  // import { initExampleModule } from '../modules/exampleModule';
6
2
 
7
- //==========================
8
- // PAGE CUSTOM TYPESCRIPT
9
- //==========================
10
-
11
3
  document.addEventListener("DOMContentLoaded", (): void => {
12
4
  // initExampleModule();
13
- });
5
+ });
6
+
7
+ // Page logic here
@@ -1,9 +0,0 @@
1
- * text=auto
2
-
3
- /tests export-ignore
4
- /.gitattributes export-ignore
5
- /.github export-ignore
6
- /.gitignore export-ignore
7
- /phpunit.xml.dist export-ignore
8
- /CHANGELOG.md export-ignore
9
- /README.md export-ignore