create-berna-stencil 2.0.9 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/bin/create.js +2 -1
  2. package/package.json +1 -1
  3. package/src/backend/_core/vendor/composer/autoload_static.php +10 -10
  4. package/src/backend/_core/vendor/composer/installed.json +6 -6
  5. package/src/backend/_core/vendor/composer/installed.php +2 -2
  6. package/src/backend/_core/vendor/graham-campbell/result-type/.gitattributes +9 -0
  7. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
  8. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
  9. package/src/backend/_core/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
  10. package/src/backend/_core/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
  11. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/stale.yml +11 -0
  12. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
  13. package/src/backend/_core/vendor/graham-campbell/result-type/CHANGELOG.md +53 -0
  14. package/src/backend/_core/vendor/graham-campbell/result-type/LICENSE +21 -21
  15. package/src/backend/_core/vendor/graham-campbell/result-type/README.md +42 -0
  16. package/src/backend/_core/vendor/graham-campbell/result-type/composer.json +33 -33
  17. package/src/backend/_core/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
  18. package/src/backend/_core/vendor/graham-campbell/result-type/src/Error.php +121 -121
  19. package/src/backend/_core/vendor/graham-campbell/result-type/src/Result.php +69 -69
  20. package/src/backend/_core/vendor/graham-campbell/result-type/src/Success.php +120 -120
  21. package/src/backend/_core/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
  22. package/src/backend/_core/vendor/phpoption/phpoption/.gitattributes +13 -0
  23. package/src/backend/_core/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
  24. package/src/backend/_core/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
  25. package/src/backend/_core/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
  26. package/src/backend/_core/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
  27. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/static.yml +40 -0
  28. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
  29. package/src/backend/_core/vendor/phpoption/phpoption/LICENSE +200 -200
  30. package/src/backend/_core/vendor/phpoption/phpoption/Makefile +17 -0
  31. package/src/backend/_core/vendor/phpoption/phpoption/README.md +201 -0
  32. package/src/backend/_core/vendor/phpoption/phpoption/composer.json +50 -50
  33. package/src/backend/_core/vendor/phpoption/phpoption/phpstan-baseline.neon +44 -0
  34. package/src/backend/_core/vendor/phpoption/phpoption/phpstan.neon.dist +7 -0
  35. package/src/backend/_core/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
  36. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -175
  37. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -136
  38. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -434
  39. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -169
  40. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +72 -0
  41. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +357 -0
  42. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
  43. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +166 -0
  44. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
  45. package/src/backend/_core/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
  46. package/src/backend/_core/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
  47. package/src/backend/_core/vendor/symfony/polyfill-ctype/Ctype.php +232 -232
  48. package/src/backend/_core/vendor/symfony/polyfill-ctype/LICENSE +19 -19
  49. package/src/backend/_core/vendor/symfony/polyfill-ctype/README.md +12 -12
  50. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap.php +50 -50
  51. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -46
  52. package/src/backend/_core/vendor/symfony/polyfill-ctype/composer.json +38 -38
  53. package/src/backend/_core/vendor/symfony/polyfill-mbstring/LICENSE +19 -19
  54. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -1077
  55. package/src/backend/_core/vendor/symfony/polyfill-mbstring/README.md +13 -13
  56. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -119
  57. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -1397
  58. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -5
  59. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -1489
  60. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -171
  61. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -167
  62. package/src/backend/_core/vendor/symfony/polyfill-mbstring/composer.json +39 -39
  63. package/src/backend/_core/vendor/symfony/polyfill-php80/LICENSE +19 -19
  64. package/src/backend/_core/vendor/symfony/polyfill-php80/Php80.php +115 -115
  65. package/src/backend/_core/vendor/symfony/polyfill-php80/PhpToken.php +106 -106
  66. package/src/backend/_core/vendor/symfony/polyfill-php80/README.md +25 -25
  67. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -31
  68. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -16
  69. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -20
  70. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -16
  71. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -16
  72. package/src/backend/_core/vendor/symfony/polyfill-php80/bootstrap.php +42 -42
  73. package/src/backend/_core/vendor/symfony/polyfill-php80/composer.json +37 -37
  74. package/src/backend/_core/vendor/vlucas/phpdotenv/.editorconfig +15 -0
  75. package/src/backend/_core/vendor/vlucas/phpdotenv/.gitattributes +15 -0
  76. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
  77. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
  78. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
  79. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
  80. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/static.yml +40 -0
  81. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
  82. package/src/backend/_core/vendor/vlucas/phpdotenv/LICENSE +30 -30
  83. package/src/backend/_core/vendor/vlucas/phpdotenv/Makefile +17 -0
  84. package/src/backend/_core/vendor/vlucas/phpdotenv/README.md +370 -0
  85. package/src/backend/_core/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
  86. package/src/backend/_core/vendor/vlucas/phpdotenv/composer.json +60 -60
  87. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan-baseline.neon +157 -0
  88. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
  89. package/src/backend/_core/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
  90. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -267
  91. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -12
  92. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -12
  93. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -12
  94. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -12
  95. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -12
  96. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -48
  97. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -20
  98. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -65
  99. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -59
  100. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -299
  101. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -58
  102. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -127
  103. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -53
  104. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -19
  105. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -88
  106. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -15
  107. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -89
  108. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -80
  109. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -88
  110. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -85
  111. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -110
  112. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -48
  113. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -64
  114. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -91
  115. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -17
  116. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -104
  117. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -88
  118. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -27
  119. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -107
  120. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -272
  121. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -51
  122. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -44
  123. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -81
  124. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -72
  125. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -141
  126. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -17
  127. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -37
  128. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -112
  129. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -108
  130. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Validator.php +207 -207
  131. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
  132. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
  133. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
  134. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
  135. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
  136. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
  137. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
  138. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
  139. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
  140. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
  141. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
  142. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
  143. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
  144. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
  145. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
  146. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
  147. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
  148. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
  149. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
  150. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
  151. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
  152. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
  153. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
  154. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
  155. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
  156. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
  157. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
  158. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
  159. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
  160. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
  161. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
  162. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
  163. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
  164. package/src/backend/_core/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +15 -0
  165. package/src/backend/config.php +19 -0
  166. package/src/frontend/data/site.json +43 -43
@@ -0,0 +1,194 @@
1
+ <?php
2
+
3
+ namespace PhpOption\Tests;
4
+
5
+ use PhpOption\None;
6
+ use PhpOption\Option;
7
+ use PhpOption\Some;
8
+ use PHPUnit\Framework\TestCase;
9
+
10
+ class SomeTest extends TestCase
11
+ {
12
+ public function testGet(): void
13
+ {
14
+ $some = new Some('foo');
15
+ self::assertSame('foo', $some->get());
16
+ self::assertSame('foo', $some->getOrElse(null));
17
+ self::assertSame('foo', $some->getOrCall('does_not_exist'));
18
+ self::assertSame('foo', $some->getOrThrow(new \RuntimeException('Not found')));
19
+ self::assertFalse($some->isEmpty());
20
+ }
21
+
22
+ public function testCreate(): void
23
+ {
24
+ $some = Some::create('foo');
25
+ self::assertSame('foo', $some->get());
26
+ self::assertSame('foo', $some->getOrElse(null));
27
+ self::assertSame('foo', $some->getOrCall('does_not_exist'));
28
+ self::assertSame('foo', $some->getOrThrow(new \RuntimeException('Not found')));
29
+ self::assertFalse($some->isEmpty());
30
+ }
31
+
32
+ public function testOrElse(): void
33
+ {
34
+ $some = Some::create('foo');
35
+ self::assertSame($some, $some->orElse(None::create()));
36
+ self::assertSame($some, $some->orElse(Some::create('bar')));
37
+ }
38
+
39
+ public function testifDefined(): void
40
+ {
41
+ $called = false;
42
+ $self = $this;
43
+ $some = new Some('foo');
44
+ $some->ifDefined(function ($v) use (&$called, $self) {
45
+ $called = true;
46
+ $self->assertSame('foo', $v);
47
+ });
48
+ self::assertTrue($called);
49
+ }
50
+
51
+ public function testForAll(): void
52
+ {
53
+ $called = false;
54
+ $self = $this;
55
+ $some = new Some('foo');
56
+ self::assertSame($some, $some->forAll(function ($v) use (&$called, $self) {
57
+ $called = true;
58
+ $self->assertSame('foo', $v);
59
+ }));
60
+ self::assertTrue($called);
61
+ }
62
+
63
+ public function testMap(): void
64
+ {
65
+ $some = new Some('foo');
66
+ self::assertSame('o', $some->map(function ($v) {
67
+ return substr($v, 1, 1);
68
+ })->get());
69
+ }
70
+
71
+ public function testFlatMap(): void
72
+ {
73
+ $repo = new Repository(['foo']);
74
+
75
+ self::assertSame(['name' => 'foo'], $repo->getLastRegisteredUsername()
76
+ ->flatMap([$repo, 'getUser'])
77
+ ->getOrCall([$repo, 'getDefaultUser']));
78
+ }
79
+
80
+ public function testFilter(): void
81
+ {
82
+ $some = new Some('foo');
83
+
84
+ self::assertInstanceOf(None::class, $some->filter(function ($v) {
85
+ return 0 === strlen($v);
86
+ }));
87
+ self::assertSame($some, $some->filter(function ($v) {
88
+ return strlen($v) > 0;
89
+ }));
90
+ }
91
+
92
+ public function testFilterNot(): void
93
+ {
94
+ $some = new Some('foo');
95
+
96
+ self::assertInstanceOf(None::class, $some->filterNot(function ($v) {
97
+ return strlen($v) > 0;
98
+ }));
99
+ self::assertSame($some, $some->filterNot(function ($v) {
100
+ return strlen($v) === 0;
101
+ }));
102
+ }
103
+
104
+ public function testSelect(): void
105
+ {
106
+ $some = new Some('foo');
107
+
108
+ self::assertSame($some, $some->select('foo'));
109
+ self::assertInstanceOf(None::class, $some->select('bar'));
110
+ self::assertInstanceOf(None::class, $some->select(true));
111
+ }
112
+
113
+ public function testReject(): void
114
+ {
115
+ $some = new Some('foo');
116
+
117
+ self::assertSame($some, $some->reject(null));
118
+ self::assertSame($some, $some->reject(true));
119
+ self::assertInstanceOf(None::class, $some->reject('foo'));
120
+ }
121
+
122
+ public function testFoldLeftRight(): void
123
+ {
124
+ $some = new Some(5);
125
+
126
+ $testObj = $this;
127
+ self::assertSame(6, $some->foldLeft(1, function ($a, $b) use ($testObj) {
128
+ $testObj->assertSame(1, $a);
129
+ $testObj->assertSame(5, $b);
130
+
131
+ return $a + $b;
132
+ }));
133
+
134
+ self::assertSame(6, $some->foldRight(1, function ($a, $b) use ($testObj) {
135
+ $testObj->assertSame(1, $b);
136
+ $testObj->assertSame(5, $a);
137
+
138
+ return $a + $b;
139
+ }));
140
+ }
141
+
142
+ public function testForeach(): void
143
+ {
144
+ $some = new Some('foo');
145
+
146
+ $called = 0;
147
+ $extractedValue = null;
148
+ foreach ($some as $value) {
149
+ $extractedValue = $value;
150
+ $called++;
151
+ }
152
+
153
+ self::assertSame('foo', $extractedValue);
154
+ self::assertSame(1, $called);
155
+ }
156
+ }
157
+
158
+ // For the interested reader of these tests, we have gone some great lengths
159
+ // to come up with a non-contrived example that might also be used in the
160
+ // real-world, and not only for testing purposes :)
161
+ class Repository
162
+ {
163
+ private $users;
164
+
165
+ public function __construct(array $users = [])
166
+ {
167
+ $this->users = $users;
168
+ }
169
+
170
+ // A fast ID lookup, probably cached, sometimes we might not need the entire user.
171
+ public function getLastRegisteredUsername(): Option
172
+ {
173
+ if (empty($this->users)) {
174
+ return None::create();
175
+ }
176
+
177
+ return new Some(end($this->users));
178
+ }
179
+
180
+ // Returns a user object (we will live with an array here).
181
+ public function getUser($name): Option
182
+ {
183
+ if (in_array($name, $this->users, true)) {
184
+ return new Some(['name' => $name]);
185
+ }
186
+
187
+ return None::create();
188
+ }
189
+
190
+ public function getDefaultUser(): array
191
+ {
192
+ return ['name' => 'muhuhu'];
193
+ }
194
+ }
@@ -0,0 +1,8 @@
1
+ <?php
2
+
3
+ if (!is_file($autoloadFile = __DIR__.'/../vendor/autoload.php')) {
4
+ echo 'Could not find "vendor/autoload.php". Did you forget to run "composer install --dev"?'.PHP_EOL;
5
+ exit(1);
6
+ }
7
+
8
+ require_once $autoloadFile;
@@ -0,0 +1,8 @@
1
+ {
2
+ "require": {
3
+ "phpstan/phpstan": "2.1.33"
4
+ },
5
+ "config": {
6
+ "preferred-install": "dist"
7
+ }
8
+ }
@@ -1,232 +1,232 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Ctype;
13
-
14
- /**
15
- * Ctype implementation through regex.
16
- *
17
- * @internal
18
- *
19
- * @author Gert de Pagter <BackEndTea@gmail.com>
20
- */
21
- final class Ctype
22
- {
23
- /**
24
- * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
25
- *
26
- * @see https://php.net/ctype-alnum
27
- *
28
- * @param mixed $text
29
- *
30
- * @return bool
31
- */
32
- public static function ctype_alnum($text)
33
- {
34
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
35
-
36
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
37
- }
38
-
39
- /**
40
- * Returns TRUE if every character in text is a letter, FALSE otherwise.
41
- *
42
- * @see https://php.net/ctype-alpha
43
- *
44
- * @param mixed $text
45
- *
46
- * @return bool
47
- */
48
- public static function ctype_alpha($text)
49
- {
50
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
51
-
52
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
53
- }
54
-
55
- /**
56
- * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
57
- *
58
- * @see https://php.net/ctype-cntrl
59
- *
60
- * @param mixed $text
61
- *
62
- * @return bool
63
- */
64
- public static function ctype_cntrl($text)
65
- {
66
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
67
-
68
- return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
69
- }
70
-
71
- /**
72
- * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
73
- *
74
- * @see https://php.net/ctype-digit
75
- *
76
- * @param mixed $text
77
- *
78
- * @return bool
79
- */
80
- public static function ctype_digit($text)
81
- {
82
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
83
-
84
- return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
85
- }
86
-
87
- /**
88
- * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
89
- *
90
- * @see https://php.net/ctype-graph
91
- *
92
- * @param mixed $text
93
- *
94
- * @return bool
95
- */
96
- public static function ctype_graph($text)
97
- {
98
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
99
-
100
- return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
101
- }
102
-
103
- /**
104
- * Returns TRUE if every character in text is a lowercase letter.
105
- *
106
- * @see https://php.net/ctype-lower
107
- *
108
- * @param mixed $text
109
- *
110
- * @return bool
111
- */
112
- public static function ctype_lower($text)
113
- {
114
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
115
-
116
- return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
117
- }
118
-
119
- /**
120
- * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
121
- *
122
- * @see https://php.net/ctype-print
123
- *
124
- * @param mixed $text
125
- *
126
- * @return bool
127
- */
128
- public static function ctype_print($text)
129
- {
130
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
131
-
132
- return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
133
- }
134
-
135
- /**
136
- * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
137
- *
138
- * @see https://php.net/ctype-punct
139
- *
140
- * @param mixed $text
141
- *
142
- * @return bool
143
- */
144
- public static function ctype_punct($text)
145
- {
146
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
147
-
148
- return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
149
- }
150
-
151
- /**
152
- * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
153
- *
154
- * @see https://php.net/ctype-space
155
- *
156
- * @param mixed $text
157
- *
158
- * @return bool
159
- */
160
- public static function ctype_space($text)
161
- {
162
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
163
-
164
- return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
165
- }
166
-
167
- /**
168
- * Returns TRUE if every character in text is an uppercase letter.
169
- *
170
- * @see https://php.net/ctype-upper
171
- *
172
- * @param mixed $text
173
- *
174
- * @return bool
175
- */
176
- public static function ctype_upper($text)
177
- {
178
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
179
-
180
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
181
- }
182
-
183
- /**
184
- * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
185
- *
186
- * @see https://php.net/ctype-xdigit
187
- *
188
- * @param mixed $text
189
- *
190
- * @return bool
191
- */
192
- public static function ctype_xdigit($text)
193
- {
194
- $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
195
-
196
- return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
197
- }
198
-
199
- /**
200
- * Converts integers to their char versions according to normal ctype behaviour, if needed.
201
- *
202
- * If an integer between -128 and 255 inclusive is provided,
203
- * it is interpreted as the ASCII value of a single character
204
- * (negative values have 256 added in order to allow characters in the Extended ASCII range).
205
- * Any other integer is interpreted as a string containing the decimal digits of the integer.
206
- *
207
- * @param mixed $int
208
- * @param string $function
209
- *
210
- * @return mixed
211
- */
212
- private static function convert_int_to_char_for_ctype($int, $function)
213
- {
214
- if (\PHP_VERSION_ID >= 80100 && !\is_string($int)) {
215
- @trigger_error($function.'(): Argument of type '.get_debug_type($int).' will be interpreted as string in the future', \E_USER_DEPRECATED);
216
- }
217
-
218
- if (!\is_int($int)) {
219
- return $int;
220
- }
221
-
222
- if ($int < -128 || $int > 255) {
223
- return (string) $int;
224
- }
225
-
226
- if ($int < 0) {
227
- $int += 256;
228
- }
229
-
230
- return \chr($int);
231
- }
232
- }
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Symfony\Polyfill\Ctype;
13
+
14
+ /**
15
+ * Ctype implementation through regex.
16
+ *
17
+ * @internal
18
+ *
19
+ * @author Gert de Pagter <BackEndTea@gmail.com>
20
+ */
21
+ final class Ctype
22
+ {
23
+ /**
24
+ * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
25
+ *
26
+ * @see https://php.net/ctype-alnum
27
+ *
28
+ * @param mixed $text
29
+ *
30
+ * @return bool
31
+ */
32
+ public static function ctype_alnum($text)
33
+ {
34
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
35
+
36
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
37
+ }
38
+
39
+ /**
40
+ * Returns TRUE if every character in text is a letter, FALSE otherwise.
41
+ *
42
+ * @see https://php.net/ctype-alpha
43
+ *
44
+ * @param mixed $text
45
+ *
46
+ * @return bool
47
+ */
48
+ public static function ctype_alpha($text)
49
+ {
50
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
51
+
52
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
53
+ }
54
+
55
+ /**
56
+ * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
57
+ *
58
+ * @see https://php.net/ctype-cntrl
59
+ *
60
+ * @param mixed $text
61
+ *
62
+ * @return bool
63
+ */
64
+ public static function ctype_cntrl($text)
65
+ {
66
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
67
+
68
+ return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
69
+ }
70
+
71
+ /**
72
+ * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
73
+ *
74
+ * @see https://php.net/ctype-digit
75
+ *
76
+ * @param mixed $text
77
+ *
78
+ * @return bool
79
+ */
80
+ public static function ctype_digit($text)
81
+ {
82
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
83
+
84
+ return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
85
+ }
86
+
87
+ /**
88
+ * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
89
+ *
90
+ * @see https://php.net/ctype-graph
91
+ *
92
+ * @param mixed $text
93
+ *
94
+ * @return bool
95
+ */
96
+ public static function ctype_graph($text)
97
+ {
98
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
99
+
100
+ return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
101
+ }
102
+
103
+ /**
104
+ * Returns TRUE if every character in text is a lowercase letter.
105
+ *
106
+ * @see https://php.net/ctype-lower
107
+ *
108
+ * @param mixed $text
109
+ *
110
+ * @return bool
111
+ */
112
+ public static function ctype_lower($text)
113
+ {
114
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
115
+
116
+ return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
117
+ }
118
+
119
+ /**
120
+ * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
121
+ *
122
+ * @see https://php.net/ctype-print
123
+ *
124
+ * @param mixed $text
125
+ *
126
+ * @return bool
127
+ */
128
+ public static function ctype_print($text)
129
+ {
130
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
131
+
132
+ return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
133
+ }
134
+
135
+ /**
136
+ * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
137
+ *
138
+ * @see https://php.net/ctype-punct
139
+ *
140
+ * @param mixed $text
141
+ *
142
+ * @return bool
143
+ */
144
+ public static function ctype_punct($text)
145
+ {
146
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
147
+
148
+ return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
149
+ }
150
+
151
+ /**
152
+ * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
153
+ *
154
+ * @see https://php.net/ctype-space
155
+ *
156
+ * @param mixed $text
157
+ *
158
+ * @return bool
159
+ */
160
+ public static function ctype_space($text)
161
+ {
162
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
163
+
164
+ return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
165
+ }
166
+
167
+ /**
168
+ * Returns TRUE if every character in text is an uppercase letter.
169
+ *
170
+ * @see https://php.net/ctype-upper
171
+ *
172
+ * @param mixed $text
173
+ *
174
+ * @return bool
175
+ */
176
+ public static function ctype_upper($text)
177
+ {
178
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
179
+
180
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
181
+ }
182
+
183
+ /**
184
+ * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
185
+ *
186
+ * @see https://php.net/ctype-xdigit
187
+ *
188
+ * @param mixed $text
189
+ *
190
+ * @return bool
191
+ */
192
+ public static function ctype_xdigit($text)
193
+ {
194
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
195
+
196
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
197
+ }
198
+
199
+ /**
200
+ * Converts integers to their char versions according to normal ctype behaviour, if needed.
201
+ *
202
+ * If an integer between -128 and 255 inclusive is provided,
203
+ * it is interpreted as the ASCII value of a single character
204
+ * (negative values have 256 added in order to allow characters in the Extended ASCII range).
205
+ * Any other integer is interpreted as a string containing the decimal digits of the integer.
206
+ *
207
+ * @param mixed $int
208
+ * @param string $function
209
+ *
210
+ * @return mixed
211
+ */
212
+ private static function convert_int_to_char_for_ctype($int, $function)
213
+ {
214
+ if (\PHP_VERSION_ID >= 80100 && !\is_string($int)) {
215
+ @trigger_error($function.'(): Argument of type '.get_debug_type($int).' will be interpreted as string in the future', \E_USER_DEPRECATED);
216
+ }
217
+
218
+ if (!\is_int($int)) {
219
+ return $int;
220
+ }
221
+
222
+ if ($int < -128 || $int > 255) {
223
+ return (string) $int;
224
+ }
225
+
226
+ if ($int < 0) {
227
+ $int += 256;
228
+ }
229
+
230
+ return \chr($int);
231
+ }
232
+ }