create-berna-stencil 2.0.13 → 2.0.15

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 (168) hide show
  1. package/README.md +1 -1
  2. package/_tools/res/templates/template.njk +1 -1
  3. package/bin/create.js +46 -39
  4. package/docs/Creating pages.md +20 -0
  5. package/package.json +1 -1
  6. package/src/backend/_core/vendor/composer/autoload_static.php +10 -10
  7. package/src/backend/_core/vendor/composer/installed.json +6 -6
  8. package/src/backend/_core/vendor/composer/installed.php +2 -2
  9. package/src/backend/_core/vendor/graham-campbell/result-type/LICENSE +21 -21
  10. package/src/backend/_core/vendor/graham-campbell/result-type/composer.json +33 -33
  11. package/src/backend/_core/vendor/graham-campbell/result-type/src/Error.php +121 -121
  12. package/src/backend/_core/vendor/graham-campbell/result-type/src/Result.php +69 -69
  13. package/src/backend/_core/vendor/graham-campbell/result-type/src/Success.php +120 -120
  14. package/src/backend/_core/vendor/phpoption/phpoption/LICENSE +200 -200
  15. package/src/backend/_core/vendor/phpoption/phpoption/composer.json +50 -50
  16. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -175
  17. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -136
  18. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -434
  19. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -169
  20. package/src/backend/_core/vendor/symfony/polyfill-ctype/Ctype.php +232 -232
  21. package/src/backend/_core/vendor/symfony/polyfill-ctype/LICENSE +19 -19
  22. package/src/backend/_core/vendor/symfony/polyfill-ctype/README.md +12 -12
  23. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap.php +50 -50
  24. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -46
  25. package/src/backend/_core/vendor/symfony/polyfill-ctype/composer.json +38 -38
  26. package/src/backend/_core/vendor/symfony/polyfill-mbstring/LICENSE +19 -19
  27. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -1077
  28. package/src/backend/_core/vendor/symfony/polyfill-mbstring/README.md +13 -13
  29. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -119
  30. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -1397
  31. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -5
  32. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -1489
  33. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -171
  34. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -167
  35. package/src/backend/_core/vendor/symfony/polyfill-mbstring/composer.json +39 -39
  36. package/src/backend/_core/vendor/symfony/polyfill-php80/LICENSE +19 -19
  37. package/src/backend/_core/vendor/symfony/polyfill-php80/Php80.php +115 -115
  38. package/src/backend/_core/vendor/symfony/polyfill-php80/PhpToken.php +106 -106
  39. package/src/backend/_core/vendor/symfony/polyfill-php80/README.md +25 -25
  40. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -31
  41. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -16
  42. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -20
  43. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -16
  44. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -16
  45. package/src/backend/_core/vendor/symfony/polyfill-php80/bootstrap.php +42 -42
  46. package/src/backend/_core/vendor/symfony/polyfill-php80/composer.json +37 -37
  47. package/src/backend/_core/vendor/vlucas/phpdotenv/LICENSE +30 -30
  48. package/src/backend/_core/vendor/vlucas/phpdotenv/composer.json +60 -60
  49. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -267
  50. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -12
  51. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -12
  52. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -12
  53. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -12
  54. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -12
  55. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -48
  56. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -20
  57. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -65
  58. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -59
  59. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -299
  60. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -58
  61. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -127
  62. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -53
  63. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -19
  64. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -88
  65. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -15
  66. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -89
  67. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -80
  68. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -88
  69. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -85
  70. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -110
  71. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -48
  72. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -64
  73. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -91
  74. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -17
  75. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -104
  76. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -88
  77. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -27
  78. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -107
  79. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -272
  80. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -51
  81. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -44
  82. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -81
  83. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -72
  84. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -141
  85. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -17
  86. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -37
  87. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -112
  88. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -108
  89. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Validator.php +207 -207
  90. package/src/backend/_core/vendor/graham-campbell/result-type/.gitattributes +0 -9
  91. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +0 -132
  92. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +0 -31
  93. package/src/backend/_core/vendor/graham-campbell/result-type/.github/FUNDING.yml +0 -2
  94. package/src/backend/_core/vendor/graham-campbell/result-type/.github/SECURITY.md +0 -14
  95. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/stale.yml +0 -11
  96. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/tests.yml +0 -40
  97. package/src/backend/_core/vendor/graham-campbell/result-type/CHANGELOG.md +0 -53
  98. package/src/backend/_core/vendor/graham-campbell/result-type/README.md +0 -42
  99. package/src/backend/_core/vendor/graham-campbell/result-type/phpunit.xml.dist +0 -13
  100. package/src/backend/_core/vendor/graham-campbell/result-type/tests/ResultTest.php +0 -95
  101. package/src/backend/_core/vendor/phpoption/phpoption/.gitattributes +0 -13
  102. package/src/backend/_core/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +0 -132
  103. package/src/backend/_core/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +0 -30
  104. package/src/backend/_core/vendor/phpoption/phpoption/.github/FUNDING.yml +0 -2
  105. package/src/backend/_core/vendor/phpoption/phpoption/.github/SECURITY.md +0 -14
  106. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/static.yml +0 -40
  107. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/tests.yml +0 -40
  108. package/src/backend/_core/vendor/phpoption/phpoption/Makefile +0 -17
  109. package/src/backend/_core/vendor/phpoption/phpoption/README.md +0 -201
  110. package/src/backend/_core/vendor/phpoption/phpoption/phpstan-baseline.neon +0 -44
  111. package/src/backend/_core/vendor/phpoption/phpoption/phpstan.neon.dist +0 -7
  112. package/src/backend/_core/vendor/phpoption/phpoption/phpunit.xml.dist +0 -13
  113. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +0 -72
  114. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +0 -357
  115. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +0 -153
  116. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +0 -166
  117. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +0 -194
  118. package/src/backend/_core/vendor/phpoption/phpoption/tests/bootstrap.php +0 -8
  119. package/src/backend/_core/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +0 -8
  120. package/src/backend/_core/vendor/vlucas/phpdotenv/.editorconfig +0 -15
  121. package/src/backend/_core/vendor/vlucas/phpdotenv/.gitattributes +0 -15
  122. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +0 -132
  123. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +0 -30
  124. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/FUNDING.yml +0 -2
  125. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/SECURITY.md +0 -14
  126. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/static.yml +0 -40
  127. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +0 -70
  128. package/src/backend/_core/vendor/vlucas/phpdotenv/Makefile +0 -17
  129. package/src/backend/_core/vendor/vlucas/phpdotenv/README.md +0 -370
  130. package/src/backend/_core/vendor/vlucas/phpdotenv/UPGRADING.md +0 -196
  131. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan-baseline.neon +0 -157
  132. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan.neon.dist +0 -7
  133. package/src/backend/_core/vendor/vlucas/phpdotenv/phpunit.xml.dist +0 -13
  134. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +0 -387
  135. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +0 -86
  136. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +0 -234
  137. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +0 -40
  138. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +0 -53
  139. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +0 -98
  140. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +0 -57
  141. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +0 -75
  142. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +0 -52
  143. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +0 -75
  144. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +0 -305
  145. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +0 -141
  146. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +0 -479
  147. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +0 -5
  148. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +0 -18
  149. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +0 -33
  150. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +0 -15
  151. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +0 -1
  152. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +0 -1
  153. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +0 -7
  154. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +0 -1
  155. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +0 -17
  156. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +0 -2
  157. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +0 -3
  158. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +0 -14
  159. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +0 -4
  160. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +0 -1
  161. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +0 -15
  162. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +0 -11
  163. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +0 -8
  164. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +0 -2
  165. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +0 -3
  166. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +0 -1
  167. package/src/backend/_core/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +0 -15
  168. package/src/backend/config.php +0 -19
@@ -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
+ }