create-berna-stencil 1.0.46 → 1.0.48

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 (185) hide show
  1. package/_tools/res/templates/template.scss +6 -0
  2. package/bin/create.js +2 -1
  3. package/docs/Assistant CLI.md +36 -0
  4. package/docs/Components.md +63 -0
  5. package/docs/Creating pages.md +46 -0
  6. package/docs/Head and SEO.md +44 -0
  7. package/docs/Javascript.md +53 -0
  8. package/docs/Styling with SCSS.md +114 -0
  9. package/package.json +3 -15
  10. package/src/backend/_core/vendor/composer/autoload_static.php +10 -10
  11. package/src/backend/_core/vendor/composer/installed.json +6 -6
  12. package/src/backend/_core/vendor/composer/installed.php +2 -2
  13. package/src/backend/_core/vendor/graham-campbell/result-type/LICENSE +21 -21
  14. package/src/backend/_core/vendor/graham-campbell/result-type/composer.json +33 -33
  15. package/src/backend/_core/vendor/graham-campbell/result-type/src/Error.php +121 -121
  16. package/src/backend/_core/vendor/graham-campbell/result-type/src/Result.php +69 -69
  17. package/src/backend/_core/vendor/graham-campbell/result-type/src/Success.php +120 -120
  18. package/src/backend/_core/vendor/phpoption/phpoption/LICENSE +200 -200
  19. package/src/backend/_core/vendor/phpoption/phpoption/composer.json +50 -50
  20. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -175
  21. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -136
  22. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -434
  23. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -169
  24. package/src/backend/_core/vendor/symfony/polyfill-ctype/Ctype.php +232 -232
  25. package/src/backend/_core/vendor/symfony/polyfill-ctype/LICENSE +19 -19
  26. package/src/backend/_core/vendor/symfony/polyfill-ctype/README.md +12 -12
  27. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap.php +50 -50
  28. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -46
  29. package/src/backend/_core/vendor/symfony/polyfill-ctype/composer.json +38 -38
  30. package/src/backend/_core/vendor/symfony/polyfill-mbstring/LICENSE +19 -19
  31. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -1077
  32. package/src/backend/_core/vendor/symfony/polyfill-mbstring/README.md +13 -13
  33. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -119
  34. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -1397
  35. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -5
  36. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -1489
  37. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -171
  38. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -167
  39. package/src/backend/_core/vendor/symfony/polyfill-mbstring/composer.json +39 -39
  40. package/src/backend/_core/vendor/symfony/polyfill-php80/LICENSE +19 -19
  41. package/src/backend/_core/vendor/symfony/polyfill-php80/Php80.php +115 -115
  42. package/src/backend/_core/vendor/symfony/polyfill-php80/PhpToken.php +106 -106
  43. package/src/backend/_core/vendor/symfony/polyfill-php80/README.md +25 -25
  44. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -31
  45. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -16
  46. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -20
  47. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -16
  48. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -16
  49. package/src/backend/_core/vendor/symfony/polyfill-php80/bootstrap.php +42 -42
  50. package/src/backend/_core/vendor/symfony/polyfill-php80/composer.json +37 -37
  51. package/src/backend/_core/vendor/vlucas/phpdotenv/LICENSE +30 -30
  52. package/src/backend/_core/vendor/vlucas/phpdotenv/composer.json +60 -60
  53. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -267
  54. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -12
  55. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -12
  56. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -12
  57. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -12
  58. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -12
  59. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -48
  60. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -20
  61. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -65
  62. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -59
  63. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -299
  64. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -58
  65. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -127
  66. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -53
  67. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -19
  68. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -88
  69. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -15
  70. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -89
  71. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -80
  72. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -88
  73. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -85
  74. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -110
  75. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -48
  76. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -64
  77. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -91
  78. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -17
  79. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -104
  80. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -88
  81. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -27
  82. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -107
  83. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -272
  84. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -51
  85. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -44
  86. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -81
  87. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -72
  88. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -141
  89. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -17
  90. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -37
  91. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -112
  92. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -108
  93. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Validator.php +207 -207
  94. package/src/backend/api/protected/subfolder/example-protected.php +0 -4
  95. package/src/backend/api/public/example-public.php +0 -4
  96. package/src/frontend/components/layouts/includes.njk +0 -3
  97. package/src/frontend/data/site.json +0 -10
  98. package/src/frontend/scss/modules/_root.scss +2 -4
  99. package/src/frontend/scss/modules/frameworks/_bootstrap.scss +0 -1
  100. package/src/frontend/scss/modules/frameworks/_bulma.scss +0 -1
  101. package/src/frontend/scss/modules/frameworks/_foundation.scss +0 -1
  102. package/src/frontend/scss/modules/frameworks/_uikit.scss +0 -1
  103. package/src/frontend/scss/pages/404.scss +3 -1
  104. package/src/frontend/scss/pages/homepage.scss +3 -1
  105. package/src/backend/_core/vendor/graham-campbell/result-type/.gitattributes +0 -9
  106. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +0 -132
  107. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +0 -31
  108. package/src/backend/_core/vendor/graham-campbell/result-type/.github/FUNDING.yml +0 -2
  109. package/src/backend/_core/vendor/graham-campbell/result-type/.github/SECURITY.md +0 -14
  110. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/stale.yml +0 -11
  111. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/tests.yml +0 -40
  112. package/src/backend/_core/vendor/graham-campbell/result-type/CHANGELOG.md +0 -53
  113. package/src/backend/_core/vendor/graham-campbell/result-type/README.md +0 -42
  114. package/src/backend/_core/vendor/graham-campbell/result-type/phpunit.xml.dist +0 -13
  115. package/src/backend/_core/vendor/graham-campbell/result-type/tests/ResultTest.php +0 -95
  116. package/src/backend/_core/vendor/phpoption/phpoption/.gitattributes +0 -13
  117. package/src/backend/_core/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +0 -132
  118. package/src/backend/_core/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +0 -30
  119. package/src/backend/_core/vendor/phpoption/phpoption/.github/FUNDING.yml +0 -2
  120. package/src/backend/_core/vendor/phpoption/phpoption/.github/SECURITY.md +0 -14
  121. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/static.yml +0 -40
  122. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/tests.yml +0 -40
  123. package/src/backend/_core/vendor/phpoption/phpoption/Makefile +0 -17
  124. package/src/backend/_core/vendor/phpoption/phpoption/README.md +0 -201
  125. package/src/backend/_core/vendor/phpoption/phpoption/phpstan-baseline.neon +0 -44
  126. package/src/backend/_core/vendor/phpoption/phpoption/phpstan.neon.dist +0 -7
  127. package/src/backend/_core/vendor/phpoption/phpoption/phpunit.xml.dist +0 -13
  128. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +0 -72
  129. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +0 -357
  130. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +0 -153
  131. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +0 -166
  132. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +0 -194
  133. package/src/backend/_core/vendor/phpoption/phpoption/tests/bootstrap.php +0 -8
  134. package/src/backend/_core/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +0 -8
  135. package/src/backend/_core/vendor/vlucas/phpdotenv/.editorconfig +0 -15
  136. package/src/backend/_core/vendor/vlucas/phpdotenv/.gitattributes +0 -15
  137. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +0 -132
  138. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +0 -30
  139. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/FUNDING.yml +0 -2
  140. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/SECURITY.md +0 -14
  141. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/static.yml +0 -40
  142. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +0 -70
  143. package/src/backend/_core/vendor/vlucas/phpdotenv/Makefile +0 -17
  144. package/src/backend/_core/vendor/vlucas/phpdotenv/README.md +0 -370
  145. package/src/backend/_core/vendor/vlucas/phpdotenv/UPGRADING.md +0 -196
  146. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan-baseline.neon +0 -157
  147. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan.neon.dist +0 -7
  148. package/src/backend/_core/vendor/vlucas/phpdotenv/phpunit.xml.dist +0 -13
  149. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +0 -387
  150. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +0 -86
  151. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +0 -234
  152. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +0 -40
  153. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +0 -53
  154. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +0 -98
  155. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +0 -57
  156. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +0 -75
  157. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +0 -52
  158. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +0 -75
  159. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +0 -305
  160. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +0 -141
  161. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +0 -479
  162. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +0 -5
  163. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +0 -18
  164. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +0 -33
  165. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +0 -15
  166. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +0 -1
  167. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +0 -1
  168. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +0 -7
  169. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +0 -1
  170. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +0 -17
  171. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +0 -2
  172. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +0 -3
  173. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +0 -14
  174. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +0 -4
  175. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +0 -1
  176. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +0 -15
  177. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +0 -11
  178. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +0 -8
  179. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +0 -2
  180. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +0 -3
  181. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +0 -1
  182. package/src/backend/_core/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +0 -15
  183. package/src/frontend/_routes/example-page.njk +0 -9
  184. package/src/frontend/js/pages/examplePage.js +0 -19
  185. package/src/frontend/scss/pages/examplePage.scss +0 -17
@@ -1,272 +1,272 @@
1
- <?php
2
-
3
- declare(strict_types=1);
4
-
5
- namespace Dotenv\Repository;
6
-
7
- use Dotenv\Repository\Adapter\AdapterInterface;
8
- use Dotenv\Repository\Adapter\EnvConstAdapter;
9
- use Dotenv\Repository\Adapter\GuardedWriter;
10
- use Dotenv\Repository\Adapter\ImmutableWriter;
11
- use Dotenv\Repository\Adapter\MultiReader;
12
- use Dotenv\Repository\Adapter\MultiWriter;
13
- use Dotenv\Repository\Adapter\ReaderInterface;
14
- use Dotenv\Repository\Adapter\ServerConstAdapter;
15
- use Dotenv\Repository\Adapter\WriterInterface;
16
- use InvalidArgumentException;
17
- use PhpOption\Some;
18
- use ReflectionClass;
19
-
20
- final class RepositoryBuilder
21
- {
22
- /**
23
- * The set of default adapters.
24
- */
25
- private const DEFAULT_ADAPTERS = [
26
- ServerConstAdapter::class,
27
- EnvConstAdapter::class,
28
- ];
29
-
30
- /**
31
- * The set of readers to use.
32
- *
33
- * @var \Dotenv\Repository\Adapter\ReaderInterface[]
34
- */
35
- private $readers;
36
-
37
- /**
38
- * The set of writers to use.
39
- *
40
- * @var \Dotenv\Repository\Adapter\WriterInterface[]
41
- */
42
- private $writers;
43
-
44
- /**
45
- * Are we immutable?
46
- *
47
- * @var bool
48
- */
49
- private $immutable;
50
-
51
- /**
52
- * The variable name allow list.
53
- *
54
- * @var string[]|null
55
- */
56
- private $allowList;
57
-
58
- /**
59
- * Create a new repository builder instance.
60
- *
61
- * @param \Dotenv\Repository\Adapter\ReaderInterface[] $readers
62
- * @param \Dotenv\Repository\Adapter\WriterInterface[] $writers
63
- * @param bool $immutable
64
- * @param string[]|null $allowList
65
- *
66
- * @return void
67
- */
68
- private function __construct(array $readers = [], array $writers = [], bool $immutable = false, ?array $allowList = null)
69
- {
70
- $this->readers = $readers;
71
- $this->writers = $writers;
72
- $this->immutable = $immutable;
73
- $this->allowList = $allowList;
74
- }
75
-
76
- /**
77
- * Create a new repository builder instance with no adapters added.
78
- *
79
- * @return \Dotenv\Repository\RepositoryBuilder
80
- */
81
- public static function createWithNoAdapters()
82
- {
83
- return new self();
84
- }
85
-
86
- /**
87
- * Create a new repository builder instance with the default adapters added.
88
- *
89
- * @return \Dotenv\Repository\RepositoryBuilder
90
- */
91
- public static function createWithDefaultAdapters()
92
- {
93
- $adapters = \iterator_to_array(self::defaultAdapters());
94
-
95
- return new self($adapters, $adapters);
96
- }
97
-
98
- /**
99
- * Return the array of default adapters.
100
- *
101
- * @return \Generator<\Dotenv\Repository\Adapter\AdapterInterface>
102
- */
103
- private static function defaultAdapters()
104
- {
105
- foreach (self::DEFAULT_ADAPTERS as $adapter) {
106
- $instance = $adapter::create();
107
- if ($instance->isDefined()) {
108
- yield $instance->get();
109
- }
110
- }
111
- }
112
-
113
- /**
114
- * Determine if the given name if of an adapterclass.
115
- *
116
- * @param string $name
117
- *
118
- * @return bool
119
- */
120
- private static function isAnAdapterClass(string $name)
121
- {
122
- if (!\class_exists($name)) {
123
- return false;
124
- }
125
-
126
- return (new ReflectionClass($name))->implementsInterface(AdapterInterface::class);
127
- }
128
-
129
- /**
130
- * Creates a repository builder with the given reader added.
131
- *
132
- * Accepts either a reader instance, or a class-string for an adapter. If
133
- * the adapter is not supported, then we silently skip adding it.
134
- *
135
- * @param \Dotenv\Repository\Adapter\ReaderInterface|string $reader
136
- *
137
- * @throws \InvalidArgumentException
138
- *
139
- * @return \Dotenv\Repository\RepositoryBuilder
140
- */
141
- public function addReader($reader)
142
- {
143
- if (!(\is_string($reader) && self::isAnAdapterClass($reader)) && !($reader instanceof ReaderInterface)) {
144
- throw new InvalidArgumentException(
145
- \sprintf(
146
- 'Expected either an instance of %s or a class-string implementing %s',
147
- ReaderInterface::class,
148
- AdapterInterface::class
149
- )
150
- );
151
- }
152
-
153
- $optional = Some::create($reader)->flatMap(static function ($reader) {
154
- return \is_string($reader) ? $reader::create() : Some::create($reader);
155
- });
156
-
157
- $readers = \array_merge($this->readers, \iterator_to_array($optional));
158
-
159
- return new self($readers, $this->writers, $this->immutable, $this->allowList);
160
- }
161
-
162
- /**
163
- * Creates a repository builder with the given writer added.
164
- *
165
- * Accepts either a writer instance, or a class-string for an adapter. If
166
- * the adapter is not supported, then we silently skip adding it.
167
- *
168
- * @param \Dotenv\Repository\Adapter\WriterInterface|string $writer
169
- *
170
- * @throws \InvalidArgumentException
171
- *
172
- * @return \Dotenv\Repository\RepositoryBuilder
173
- */
174
- public function addWriter($writer)
175
- {
176
- if (!(\is_string($writer) && self::isAnAdapterClass($writer)) && !($writer instanceof WriterInterface)) {
177
- throw new InvalidArgumentException(
178
- \sprintf(
179
- 'Expected either an instance of %s or a class-string implementing %s',
180
- WriterInterface::class,
181
- AdapterInterface::class
182
- )
183
- );
184
- }
185
-
186
- $optional = Some::create($writer)->flatMap(static function ($writer) {
187
- return \is_string($writer) ? $writer::create() : Some::create($writer);
188
- });
189
-
190
- $writers = \array_merge($this->writers, \iterator_to_array($optional));
191
-
192
- return new self($this->readers, $writers, $this->immutable, $this->allowList);
193
- }
194
-
195
- /**
196
- * Creates a repository builder with the given adapter added.
197
- *
198
- * Accepts either an adapter instance, or a class-string for an adapter. If
199
- * the adapter is not supported, then we silently skip adding it. We will
200
- * add the adapter as both a reader and a writer.
201
- *
202
- * @param \Dotenv\Repository\Adapter\WriterInterface|string $adapter
203
- *
204
- * @throws \InvalidArgumentException
205
- *
206
- * @return \Dotenv\Repository\RepositoryBuilder
207
- */
208
- public function addAdapter($adapter)
209
- {
210
- if (!(\is_string($adapter) && self::isAnAdapterClass($adapter)) && !($adapter instanceof AdapterInterface)) {
211
- throw new InvalidArgumentException(
212
- \sprintf(
213
- 'Expected either an instance of %s or a class-string implementing %s',
214
- WriterInterface::class,
215
- AdapterInterface::class
216
- )
217
- );
218
- }
219
-
220
- $optional = Some::create($adapter)->flatMap(static function ($adapter) {
221
- return \is_string($adapter) ? $adapter::create() : Some::create($adapter);
222
- });
223
-
224
- $readers = \array_merge($this->readers, \iterator_to_array($optional));
225
- $writers = \array_merge($this->writers, \iterator_to_array($optional));
226
-
227
- return new self($readers, $writers, $this->immutable, $this->allowList);
228
- }
229
-
230
- /**
231
- * Creates a repository builder with mutability enabled.
232
- *
233
- * @return \Dotenv\Repository\RepositoryBuilder
234
- */
235
- public function immutable()
236
- {
237
- return new self($this->readers, $this->writers, true, $this->allowList);
238
- }
239
-
240
- /**
241
- * Creates a repository builder with the given allow list.
242
- *
243
- * @param string[]|null $allowList
244
- *
245
- * @return \Dotenv\Repository\RepositoryBuilder
246
- */
247
- public function allowList(?array $allowList = null)
248
- {
249
- return new self($this->readers, $this->writers, $this->immutable, $allowList);
250
- }
251
-
252
- /**
253
- * Creates a new repository instance.
254
- *
255
- * @return \Dotenv\Repository\RepositoryInterface
256
- */
257
- public function make()
258
- {
259
- $reader = new MultiReader($this->readers);
260
- $writer = new MultiWriter($this->writers);
261
-
262
- if ($this->immutable) {
263
- $writer = new ImmutableWriter($writer, $reader);
264
- }
265
-
266
- if ($this->allowList !== null) {
267
- $writer = new GuardedWriter($writer, $this->allowList);
268
- }
269
-
270
- return new AdapterRepository($reader, $writer);
271
- }
272
- }
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dotenv\Repository;
6
+
7
+ use Dotenv\Repository\Adapter\AdapterInterface;
8
+ use Dotenv\Repository\Adapter\EnvConstAdapter;
9
+ use Dotenv\Repository\Adapter\GuardedWriter;
10
+ use Dotenv\Repository\Adapter\ImmutableWriter;
11
+ use Dotenv\Repository\Adapter\MultiReader;
12
+ use Dotenv\Repository\Adapter\MultiWriter;
13
+ use Dotenv\Repository\Adapter\ReaderInterface;
14
+ use Dotenv\Repository\Adapter\ServerConstAdapter;
15
+ use Dotenv\Repository\Adapter\WriterInterface;
16
+ use InvalidArgumentException;
17
+ use PhpOption\Some;
18
+ use ReflectionClass;
19
+
20
+ final class RepositoryBuilder
21
+ {
22
+ /**
23
+ * The set of default adapters.
24
+ */
25
+ private const DEFAULT_ADAPTERS = [
26
+ ServerConstAdapter::class,
27
+ EnvConstAdapter::class,
28
+ ];
29
+
30
+ /**
31
+ * The set of readers to use.
32
+ *
33
+ * @var \Dotenv\Repository\Adapter\ReaderInterface[]
34
+ */
35
+ private $readers;
36
+
37
+ /**
38
+ * The set of writers to use.
39
+ *
40
+ * @var \Dotenv\Repository\Adapter\WriterInterface[]
41
+ */
42
+ private $writers;
43
+
44
+ /**
45
+ * Are we immutable?
46
+ *
47
+ * @var bool
48
+ */
49
+ private $immutable;
50
+
51
+ /**
52
+ * The variable name allow list.
53
+ *
54
+ * @var string[]|null
55
+ */
56
+ private $allowList;
57
+
58
+ /**
59
+ * Create a new repository builder instance.
60
+ *
61
+ * @param \Dotenv\Repository\Adapter\ReaderInterface[] $readers
62
+ * @param \Dotenv\Repository\Adapter\WriterInterface[] $writers
63
+ * @param bool $immutable
64
+ * @param string[]|null $allowList
65
+ *
66
+ * @return void
67
+ */
68
+ private function __construct(array $readers = [], array $writers = [], bool $immutable = false, ?array $allowList = null)
69
+ {
70
+ $this->readers = $readers;
71
+ $this->writers = $writers;
72
+ $this->immutable = $immutable;
73
+ $this->allowList = $allowList;
74
+ }
75
+
76
+ /**
77
+ * Create a new repository builder instance with no adapters added.
78
+ *
79
+ * @return \Dotenv\Repository\RepositoryBuilder
80
+ */
81
+ public static function createWithNoAdapters()
82
+ {
83
+ return new self();
84
+ }
85
+
86
+ /**
87
+ * Create a new repository builder instance with the default adapters added.
88
+ *
89
+ * @return \Dotenv\Repository\RepositoryBuilder
90
+ */
91
+ public static function createWithDefaultAdapters()
92
+ {
93
+ $adapters = \iterator_to_array(self::defaultAdapters());
94
+
95
+ return new self($adapters, $adapters);
96
+ }
97
+
98
+ /**
99
+ * Return the array of default adapters.
100
+ *
101
+ * @return \Generator<\Dotenv\Repository\Adapter\AdapterInterface>
102
+ */
103
+ private static function defaultAdapters()
104
+ {
105
+ foreach (self::DEFAULT_ADAPTERS as $adapter) {
106
+ $instance = $adapter::create();
107
+ if ($instance->isDefined()) {
108
+ yield $instance->get();
109
+ }
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Determine if the given name if of an adapterclass.
115
+ *
116
+ * @param string $name
117
+ *
118
+ * @return bool
119
+ */
120
+ private static function isAnAdapterClass(string $name)
121
+ {
122
+ if (!\class_exists($name)) {
123
+ return false;
124
+ }
125
+
126
+ return (new ReflectionClass($name))->implementsInterface(AdapterInterface::class);
127
+ }
128
+
129
+ /**
130
+ * Creates a repository builder with the given reader added.
131
+ *
132
+ * Accepts either a reader instance, or a class-string for an adapter. If
133
+ * the adapter is not supported, then we silently skip adding it.
134
+ *
135
+ * @param \Dotenv\Repository\Adapter\ReaderInterface|string $reader
136
+ *
137
+ * @throws \InvalidArgumentException
138
+ *
139
+ * @return \Dotenv\Repository\RepositoryBuilder
140
+ */
141
+ public function addReader($reader)
142
+ {
143
+ if (!(\is_string($reader) && self::isAnAdapterClass($reader)) && !($reader instanceof ReaderInterface)) {
144
+ throw new InvalidArgumentException(
145
+ \sprintf(
146
+ 'Expected either an instance of %s or a class-string implementing %s',
147
+ ReaderInterface::class,
148
+ AdapterInterface::class
149
+ )
150
+ );
151
+ }
152
+
153
+ $optional = Some::create($reader)->flatMap(static function ($reader) {
154
+ return \is_string($reader) ? $reader::create() : Some::create($reader);
155
+ });
156
+
157
+ $readers = \array_merge($this->readers, \iterator_to_array($optional));
158
+
159
+ return new self($readers, $this->writers, $this->immutable, $this->allowList);
160
+ }
161
+
162
+ /**
163
+ * Creates a repository builder with the given writer added.
164
+ *
165
+ * Accepts either a writer instance, or a class-string for an adapter. If
166
+ * the adapter is not supported, then we silently skip adding it.
167
+ *
168
+ * @param \Dotenv\Repository\Adapter\WriterInterface|string $writer
169
+ *
170
+ * @throws \InvalidArgumentException
171
+ *
172
+ * @return \Dotenv\Repository\RepositoryBuilder
173
+ */
174
+ public function addWriter($writer)
175
+ {
176
+ if (!(\is_string($writer) && self::isAnAdapterClass($writer)) && !($writer instanceof WriterInterface)) {
177
+ throw new InvalidArgumentException(
178
+ \sprintf(
179
+ 'Expected either an instance of %s or a class-string implementing %s',
180
+ WriterInterface::class,
181
+ AdapterInterface::class
182
+ )
183
+ );
184
+ }
185
+
186
+ $optional = Some::create($writer)->flatMap(static function ($writer) {
187
+ return \is_string($writer) ? $writer::create() : Some::create($writer);
188
+ });
189
+
190
+ $writers = \array_merge($this->writers, \iterator_to_array($optional));
191
+
192
+ return new self($this->readers, $writers, $this->immutable, $this->allowList);
193
+ }
194
+
195
+ /**
196
+ * Creates a repository builder with the given adapter added.
197
+ *
198
+ * Accepts either an adapter instance, or a class-string for an adapter. If
199
+ * the adapter is not supported, then we silently skip adding it. We will
200
+ * add the adapter as both a reader and a writer.
201
+ *
202
+ * @param \Dotenv\Repository\Adapter\WriterInterface|string $adapter
203
+ *
204
+ * @throws \InvalidArgumentException
205
+ *
206
+ * @return \Dotenv\Repository\RepositoryBuilder
207
+ */
208
+ public function addAdapter($adapter)
209
+ {
210
+ if (!(\is_string($adapter) && self::isAnAdapterClass($adapter)) && !($adapter instanceof AdapterInterface)) {
211
+ throw new InvalidArgumentException(
212
+ \sprintf(
213
+ 'Expected either an instance of %s or a class-string implementing %s',
214
+ WriterInterface::class,
215
+ AdapterInterface::class
216
+ )
217
+ );
218
+ }
219
+
220
+ $optional = Some::create($adapter)->flatMap(static function ($adapter) {
221
+ return \is_string($adapter) ? $adapter::create() : Some::create($adapter);
222
+ });
223
+
224
+ $readers = \array_merge($this->readers, \iterator_to_array($optional));
225
+ $writers = \array_merge($this->writers, \iterator_to_array($optional));
226
+
227
+ return new self($readers, $writers, $this->immutable, $this->allowList);
228
+ }
229
+
230
+ /**
231
+ * Creates a repository builder with mutability enabled.
232
+ *
233
+ * @return \Dotenv\Repository\RepositoryBuilder
234
+ */
235
+ public function immutable()
236
+ {
237
+ return new self($this->readers, $this->writers, true, $this->allowList);
238
+ }
239
+
240
+ /**
241
+ * Creates a repository builder with the given allow list.
242
+ *
243
+ * @param string[]|null $allowList
244
+ *
245
+ * @return \Dotenv\Repository\RepositoryBuilder
246
+ */
247
+ public function allowList(?array $allowList = null)
248
+ {
249
+ return new self($this->readers, $this->writers, $this->immutable, $allowList);
250
+ }
251
+
252
+ /**
253
+ * Creates a new repository instance.
254
+ *
255
+ * @return \Dotenv\Repository\RepositoryInterface
256
+ */
257
+ public function make()
258
+ {
259
+ $reader = new MultiReader($this->readers);
260
+ $writer = new MultiWriter($this->writers);
261
+
262
+ if ($this->immutable) {
263
+ $writer = new ImmutableWriter($writer, $reader);
264
+ }
265
+
266
+ if ($this->allowList !== null) {
267
+ $writer = new GuardedWriter($writer, $this->allowList);
268
+ }
269
+
270
+ return new AdapterRepository($reader, $writer);
271
+ }
272
+ }
@@ -1,51 +1,51 @@
1
- <?php
2
-
3
- declare(strict_types=1);
4
-
5
- namespace Dotenv\Repository;
6
-
7
- interface RepositoryInterface
8
- {
9
- /**
10
- * Determine if the given environment variable is defined.
11
- *
12
- * @param string $name
13
- *
14
- * @return bool
15
- */
16
- public function has(string $name);
17
-
18
- /**
19
- * Get an environment variable.
20
- *
21
- * @param string $name
22
- *
23
- * @throws \InvalidArgumentException
24
- *
25
- * @return string|null
26
- */
27
- public function get(string $name);
28
-
29
- /**
30
- * Set an environment variable.
31
- *
32
- * @param string $name
33
- * @param string $value
34
- *
35
- * @throws \InvalidArgumentException
36
- *
37
- * @return bool
38
- */
39
- public function set(string $name, string $value);
40
-
41
- /**
42
- * Clear an environment variable.
43
- *
44
- * @param string $name
45
- *
46
- * @throws \InvalidArgumentException
47
- *
48
- * @return bool
49
- */
50
- public function clear(string $name);
51
- }
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Dotenv\Repository;
6
+
7
+ interface RepositoryInterface
8
+ {
9
+ /**
10
+ * Determine if the given environment variable is defined.
11
+ *
12
+ * @param string $name
13
+ *
14
+ * @return bool
15
+ */
16
+ public function has(string $name);
17
+
18
+ /**
19
+ * Get an environment variable.
20
+ *
21
+ * @param string $name
22
+ *
23
+ * @throws \InvalidArgumentException
24
+ *
25
+ * @return string|null
26
+ */
27
+ public function get(string $name);
28
+
29
+ /**
30
+ * Set an environment variable.
31
+ *
32
+ * @param string $name
33
+ * @param string $value
34
+ *
35
+ * @throws \InvalidArgumentException
36
+ *
37
+ * @return bool
38
+ */
39
+ public function set(string $name, string $value);
40
+
41
+ /**
42
+ * Clear an environment variable.
43
+ *
44
+ * @param string $name
45
+ *
46
+ * @throws \InvalidArgumentException
47
+ *
48
+ * @return bool
49
+ */
50
+ public function clear(string $name);
51
+ }