├── .gitignore
├── CONTRIBUTING.md
├── composer.json
├── src
└── IndieLogin
│ └── Client.php
├── example.php
├── README.md
└── composer.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor/
2 | .DS_Store
3 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | By contributing to this project, you agree to irrevocably release your contributions under the same licenses as this project. See README.md for more details.
2 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "indielogin/client",
3 | "description": "IndieLogin Client Library",
4 | "require": {
5 | "php": ">7.2.0",
6 | "indieauth/client": "^1.1"
7 | },
8 | "license": "Apache-2.0",
9 | "authors": [
10 | {
11 | "name": "Aaron Parecki",
12 | "homepage": "https://aaronparecki.com"
13 | }
14 | ],
15 | "autoload": {
16 | "psr-0": {
17 | "IndieLogin": "src/"
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/IndieLogin/Client.php:
--------------------------------------------------------------------------------
1 |
6 |
10 | Error: ".htmlspecialchars($_GET['error'])."";
23 | echo "".htmlspecialchars($_GET['error_description'])."
";
24 | die();
25 | }
26 |
27 | if(!isset($_GET['code'])) {
28 | $url = IndieLogin\Client::normalizeMeURL($_POST['url']);
29 |
30 | list($authorizationURL, $error) = IndieLogin\Client::begin($_POST['url']);
31 |
32 | echo 'continue to authorize';
33 | die();
34 | }
35 |
36 | list($user, $error) = IndieLogin\Client::complete($_GET);
37 |
38 | echo '';
39 | print_r($user);
40 | if($error) {
41 | echo "Error:\n";
42 | print_r($error);
43 | }
44 | echo '';
45 |
46 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | IndieLogin Client
2 | =================
3 |
4 | This is a helper library to use with services like IndieLogin.com. That service provides an API that works very similar to the [IndieAuth](https://indieauth.net) protocol, but can authenticate users with a number of different methods, including IndieAuth, email, PGP keys, GitHub and Twitter.
5 |
6 | When users log in with this library, it will first check their website for an authorization endpoint and do an IndieAuth flow directly if found. Otherwise, it will redirect them to the configured server to authenticate there.
7 |
8 |
9 | Usage
10 | -----
11 |
12 | ### Create a Login Form
13 |
14 | You'll first need to create a login form to prompt the user to enter their website address. This might look something like the HTML below.
15 |
16 | ```html
17 |
21 | ```
22 |
23 | ### Begin the Login Flow
24 |
25 | In the `login.php` file, you'll need to initialize the session, and tell this library to discover the user's endpoints. If everything succeeds, the library will return a URL that you can use to redirect the user to begin the flow.
26 |
27 | The example below will have some really basic error handling, which you'll probably want to replace with something nicer looking.
28 |
29 | Example `login.php` file:
30 |
31 | ```php
32 | Error: ".$error['error']."";
89 | echo "".$error['error_description']."
";
90 | } else {
91 | // Login succeeded!
92 | // The library will return the user's profile URL in the property "me"
93 | // It will also return the full response from the authorization or token endpoint, as well as debug info
94 | echo "URL: ".$response['me']."
";
95 |
96 | // The full parsed response from the endpoint will be available as:
97 | // $response['response']
98 |
99 | // The raw response:
100 | // $response['raw_response']
101 |
102 | // The HTTP response code:
103 | // $response['response_code']
104 |
105 | // You'll probably want to save the user's URL in the session
106 | $_SESSION['user'] = $user['me'];
107 | }
108 | ```
109 |
110 | License
111 | -------
112 |
113 | Copyright 2013-2020 by Aaron Parecki and contributors
114 |
115 | Available under the MIT and Apache 2.0 licenses. See LICENSE.txt
116 |
117 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "3a7c30b2c223948d679e8df50488288f",
8 | "packages": [
9 | {
10 | "name": "doctrine/instantiator",
11 | "version": "1.4.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/doctrine/instantiator.git",
15 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
20 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "php": "^7.1 || ^8.0"
25 | },
26 | "require-dev": {
27 | "doctrine/coding-standard": "^8.0",
28 | "ext-pdo": "*",
29 | "ext-phar": "*",
30 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
31 | "phpstan/phpstan": "^0.12",
32 | "phpstan/phpstan-phpunit": "^0.12",
33 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
34 | },
35 | "type": "library",
36 | "autoload": {
37 | "psr-4": {
38 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
39 | }
40 | },
41 | "notification-url": "https://packagist.org/downloads/",
42 | "license": [
43 | "MIT"
44 | ],
45 | "authors": [
46 | {
47 | "name": "Marco Pivetta",
48 | "email": "ocramius@gmail.com",
49 | "homepage": "https://ocramius.github.io/"
50 | }
51 | ],
52 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
53 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
54 | "keywords": [
55 | "constructor",
56 | "instantiate"
57 | ],
58 | "funding": [
59 | {
60 | "url": "https://www.doctrine-project.org/sponsorship.html",
61 | "type": "custom"
62 | },
63 | {
64 | "url": "https://www.patreon.com/phpdoctrine",
65 | "type": "patreon"
66 | },
67 | {
68 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
69 | "type": "tidelift"
70 | }
71 | ],
72 | "time": "2020-11-10T18:47:58+00:00"
73 | },
74 | {
75 | "name": "indieauth/client",
76 | "version": "1.1.4",
77 | "source": {
78 | "type": "git",
79 | "url": "https://github.com/indieweb/indieauth-client-php.git",
80 | "reference": "d5b3320cf28f8c6e0f4eb45955288f518d7489f1"
81 | },
82 | "dist": {
83 | "type": "zip",
84 | "url": "https://api.github.com/repos/indieweb/indieauth-client-php/zipball/d5b3320cf28f8c6e0f4eb45955288f518d7489f1",
85 | "reference": "d5b3320cf28f8c6e0f4eb45955288f518d7489f1",
86 | "shasum": ""
87 | },
88 | "require": {
89 | "indieweb/representative-h-card": "^0.1.2",
90 | "mf2/mf2": ">=0.3.2",
91 | "p3k/http": ">=0.1.6",
92 | "php": ">5.6.0"
93 | },
94 | "require-dev": {
95 | "phpunit/phpunit": "4.8.*"
96 | },
97 | "type": "library",
98 | "autoload": {
99 | "psr-0": {
100 | "IndieAuth": "src/"
101 | }
102 | },
103 | "notification-url": "https://packagist.org/downloads/",
104 | "license": [
105 | "Apache-2.0"
106 | ],
107 | "authors": [
108 | {
109 | "name": "Aaron Parecki",
110 | "homepage": "https://aaronparecki.com"
111 | }
112 | ],
113 | "description": "IndieAuth Client Library",
114 | "funding": [
115 | {
116 | "url": "https://opencollective.com/indieweb",
117 | "type": "opencollective"
118 | }
119 | ],
120 | "time": "2020-11-27T17:00:33+00:00"
121 | },
122 | {
123 | "name": "indieweb/link-rel-parser",
124 | "version": "0.1.3",
125 | "source": {
126 | "type": "git",
127 | "url": "https://github.com/indieweb/link-rel-parser-php.git",
128 | "reference": "295420e4f16d9a9d262a3c25a7a583794428f055"
129 | },
130 | "dist": {
131 | "type": "zip",
132 | "url": "https://api.github.com/repos/indieweb/link-rel-parser-php/zipball/295420e4f16d9a9d262a3c25a7a583794428f055",
133 | "reference": "295420e4f16d9a9d262a3c25a7a583794428f055",
134 | "shasum": ""
135 | },
136 | "require": {
137 | "php": ">=5.3.0"
138 | },
139 | "type": "library",
140 | "autoload": {
141 | "files": [
142 | "src/IndieWeb/link_rel_parser.php"
143 | ]
144 | },
145 | "notification-url": "https://packagist.org/downloads/",
146 | "license": [
147 | "Apache-2.0"
148 | ],
149 | "authors": [
150 | {
151 | "name": "Aaron Parecki",
152 | "homepage": "http://aaronparecki.com"
153 | },
154 | {
155 | "name": "Tantek Çelik",
156 | "homepage": "http://tantek.com"
157 | }
158 | ],
159 | "description": "Parse rel values from HTTP headers",
160 | "homepage": "https://github.com/indieweb/link-rel-parser-php",
161 | "keywords": [
162 | "http",
163 | "indieweb",
164 | "microformats2"
165 | ],
166 | "time": "2017-01-11T17:14:49+00:00"
167 | },
168 | {
169 | "name": "indieweb/representative-h-card",
170 | "version": "0.1.2",
171 | "source": {
172 | "type": "git",
173 | "url": "https://github.com/indieweb/representative-h-card-php.git",
174 | "reference": "b70b01bd0dd7f2a940602137335dbf46ab6e2e38"
175 | },
176 | "dist": {
177 | "type": "zip",
178 | "url": "https://api.github.com/repos/indieweb/representative-h-card-php/zipball/b70b01bd0dd7f2a940602137335dbf46ab6e2e38",
179 | "reference": "b70b01bd0dd7f2a940602137335dbf46ab6e2e38",
180 | "shasum": ""
181 | },
182 | "require": {
183 | "php": ">=5.4"
184 | },
185 | "require-dev": {
186 | "mf2/mf2": "0.2.*",
187 | "phpunit/phpunit": "*"
188 | },
189 | "type": "library",
190 | "autoload": {
191 | "files": [
192 | "src/mf2/representative-h-card.php"
193 | ]
194 | },
195 | "notification-url": "https://packagist.org/downloads/",
196 | "license": [
197 | "Apache-2.0"
198 | ],
199 | "authors": [
200 | {
201 | "name": "Aaron Parecki",
202 | "homepage": "http://aaronparecki.com"
203 | }
204 | ],
205 | "keywords": [
206 | "h-card",
207 | "indieweb",
208 | "mf2",
209 | "microformats"
210 | ],
211 | "time": "2015-12-23T18:11:19+00:00"
212 | },
213 | {
214 | "name": "mf2/mf2",
215 | "version": "0.4.6",
216 | "source": {
217 | "type": "git",
218 | "url": "https://github.com/microformats/php-mf2.git",
219 | "reference": "00b70ee7eb7f5b0585b1bd467f6c9cbd75055d23"
220 | },
221 | "dist": {
222 | "type": "zip",
223 | "url": "https://api.github.com/repos/microformats/php-mf2/zipball/00b70ee7eb7f5b0585b1bd467f6c9cbd75055d23",
224 | "reference": "00b70ee7eb7f5b0585b1bd467f6c9cbd75055d23",
225 | "shasum": ""
226 | },
227 | "require": {
228 | "php": ">=5.4.0"
229 | },
230 | "require-dev": {
231 | "mf2/tests": "@dev",
232 | "phpdocumentor/phpdocumentor": "v2.8.4",
233 | "phpunit/phpunit": "4.8.*"
234 | },
235 | "suggest": {
236 | "barnabywalters/mf-cleaner": "To more easily handle the canonical data php-mf2 gives you",
237 | "masterminds/html5": "Alternative HTML parser for PHP, for better HTML5 support."
238 | },
239 | "bin": [
240 | "bin/fetch-mf2",
241 | "bin/parse-mf2"
242 | ],
243 | "type": "library",
244 | "autoload": {
245 | "files": [
246 | "Mf2/Parser.php"
247 | ]
248 | },
249 | "notification-url": "https://packagist.org/downloads/",
250 | "license": [
251 | "CC0-1.0"
252 | ],
253 | "authors": [
254 | {
255 | "name": "Barnaby Walters",
256 | "homepage": "http://waterpigs.co.uk"
257 | }
258 | ],
259 | "description": "A pure, generic microformats2 parser — makes HTML as easy to consume as a JSON API",
260 | "keywords": [
261 | "html",
262 | "microformats",
263 | "microformats 2",
264 | "parser",
265 | "semantic"
266 | ],
267 | "time": "2018-08-24T14:47:04+00:00"
268 | },
269 | {
270 | "name": "p3k/http",
271 | "version": "0.1.11",
272 | "source": {
273 | "type": "git",
274 | "url": "https://github.com/aaronpk/p3k-http.git",
275 | "reference": "24d28287e0c5606aa45b23c6e3c17628d89468f7"
276 | },
277 | "dist": {
278 | "type": "zip",
279 | "url": "https://api.github.com/repos/aaronpk/p3k-http/zipball/24d28287e0c5606aa45b23c6e3c17628d89468f7",
280 | "reference": "24d28287e0c5606aa45b23c6e3c17628d89468f7",
281 | "shasum": ""
282 | },
283 | "require": {
284 | "indieweb/link-rel-parser": "0.1.*",
285 | "mf2/mf2": ">=0.3.2"
286 | },
287 | "type": "library",
288 | "autoload": {
289 | "psr-4": {
290 | "p3k\\": "src/p3k"
291 | }
292 | },
293 | "notification-url": "https://packagist.org/downloads/",
294 | "license": [
295 | "MIT"
296 | ],
297 | "authors": [
298 | {
299 | "name": "Aaron Parecki",
300 | "homepage": "https://aaronparecki.com"
301 | }
302 | ],
303 | "description": "A simple wrapper API around the PHP curl functions",
304 | "homepage": "https://github.com/aaronpk/p3k-http",
305 | "time": "2020-02-19T03:00:09+00:00"
306 | },
307 | {
308 | "name": "phpdocumentor/reflection-common",
309 | "version": "2.2.0",
310 | "source": {
311 | "type": "git",
312 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
313 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
314 | },
315 | "dist": {
316 | "type": "zip",
317 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
318 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
319 | "shasum": ""
320 | },
321 | "require": {
322 | "php": "^7.2 || ^8.0"
323 | },
324 | "type": "library",
325 | "extra": {
326 | "branch-alias": {
327 | "dev-2.x": "2.x-dev"
328 | }
329 | },
330 | "autoload": {
331 | "psr-4": {
332 | "phpDocumentor\\Reflection\\": "src/"
333 | }
334 | },
335 | "notification-url": "https://packagist.org/downloads/",
336 | "license": [
337 | "MIT"
338 | ],
339 | "authors": [
340 | {
341 | "name": "Jaap van Otterdijk",
342 | "email": "opensource@ijaap.nl"
343 | }
344 | ],
345 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
346 | "homepage": "http://www.phpdoc.org",
347 | "keywords": [
348 | "FQSEN",
349 | "phpDocumentor",
350 | "phpdoc",
351 | "reflection",
352 | "static analysis"
353 | ],
354 | "time": "2020-06-27T09:03:43+00:00"
355 | },
356 | {
357 | "name": "phpdocumentor/reflection-docblock",
358 | "version": "5.2.2",
359 | "source": {
360 | "type": "git",
361 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
362 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
363 | },
364 | "dist": {
365 | "type": "zip",
366 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
367 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
368 | "shasum": ""
369 | },
370 | "require": {
371 | "ext-filter": "*",
372 | "php": "^7.2 || ^8.0",
373 | "phpdocumentor/reflection-common": "^2.2",
374 | "phpdocumentor/type-resolver": "^1.3",
375 | "webmozart/assert": "^1.9.1"
376 | },
377 | "require-dev": {
378 | "mockery/mockery": "~1.3.2"
379 | },
380 | "type": "library",
381 | "extra": {
382 | "branch-alias": {
383 | "dev-master": "5.x-dev"
384 | }
385 | },
386 | "autoload": {
387 | "psr-4": {
388 | "phpDocumentor\\Reflection\\": "src"
389 | }
390 | },
391 | "notification-url": "https://packagist.org/downloads/",
392 | "license": [
393 | "MIT"
394 | ],
395 | "authors": [
396 | {
397 | "name": "Mike van Riel",
398 | "email": "me@mikevanriel.com"
399 | },
400 | {
401 | "name": "Jaap van Otterdijk",
402 | "email": "account@ijaap.nl"
403 | }
404 | ],
405 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
406 | "time": "2020-09-03T19:13:55+00:00"
407 | },
408 | {
409 | "name": "phpdocumentor/type-resolver",
410 | "version": "1.4.0",
411 | "source": {
412 | "type": "git",
413 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
414 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
415 | },
416 | "dist": {
417 | "type": "zip",
418 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
419 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
420 | "shasum": ""
421 | },
422 | "require": {
423 | "php": "^7.2 || ^8.0",
424 | "phpdocumentor/reflection-common": "^2.0"
425 | },
426 | "require-dev": {
427 | "ext-tokenizer": "*"
428 | },
429 | "type": "library",
430 | "extra": {
431 | "branch-alias": {
432 | "dev-1.x": "1.x-dev"
433 | }
434 | },
435 | "autoload": {
436 | "psr-4": {
437 | "phpDocumentor\\Reflection\\": "src"
438 | }
439 | },
440 | "notification-url": "https://packagist.org/downloads/",
441 | "license": [
442 | "MIT"
443 | ],
444 | "authors": [
445 | {
446 | "name": "Mike van Riel",
447 | "email": "me@mikevanriel.com"
448 | }
449 | ],
450 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
451 | "time": "2020-09-17T18:55:26+00:00"
452 | },
453 | {
454 | "name": "phpspec/prophecy",
455 | "version": "v1.10.3",
456 | "source": {
457 | "type": "git",
458 | "url": "https://github.com/phpspec/prophecy.git",
459 | "reference": "451c3cd1418cf640de218914901e51b064abb093"
460 | },
461 | "dist": {
462 | "type": "zip",
463 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
464 | "reference": "451c3cd1418cf640de218914901e51b064abb093",
465 | "shasum": ""
466 | },
467 | "require": {
468 | "doctrine/instantiator": "^1.0.2",
469 | "php": "^5.3|^7.0",
470 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
471 | "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
472 | "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
473 | },
474 | "require-dev": {
475 | "phpspec/phpspec": "^2.5 || ^3.2",
476 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
477 | },
478 | "type": "library",
479 | "extra": {
480 | "branch-alias": {
481 | "dev-master": "1.10.x-dev"
482 | }
483 | },
484 | "autoload": {
485 | "psr-4": {
486 | "Prophecy\\": "src/Prophecy"
487 | }
488 | },
489 | "notification-url": "https://packagist.org/downloads/",
490 | "license": [
491 | "MIT"
492 | ],
493 | "authors": [
494 | {
495 | "name": "Konstantin Kudryashov",
496 | "email": "ever.zet@gmail.com",
497 | "homepage": "http://everzet.com"
498 | },
499 | {
500 | "name": "Marcello Duarte",
501 | "email": "marcello.duarte@gmail.com"
502 | }
503 | ],
504 | "description": "Highly opinionated mocking framework for PHP 5.3+",
505 | "homepage": "https://github.com/phpspec/prophecy",
506 | "keywords": [
507 | "Double",
508 | "Dummy",
509 | "fake",
510 | "mock",
511 | "spy",
512 | "stub"
513 | ],
514 | "time": "2020-03-05T15:02:03+00:00"
515 | },
516 | {
517 | "name": "phpunit/php-code-coverage",
518 | "version": "2.2.4",
519 | "source": {
520 | "type": "git",
521 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
522 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
523 | },
524 | "dist": {
525 | "type": "zip",
526 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
527 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
528 | "shasum": ""
529 | },
530 | "require": {
531 | "php": ">=5.3.3",
532 | "phpunit/php-file-iterator": "~1.3",
533 | "phpunit/php-text-template": "~1.2",
534 | "phpunit/php-token-stream": "~1.3",
535 | "sebastian/environment": "^1.3.2",
536 | "sebastian/version": "~1.0"
537 | },
538 | "require-dev": {
539 | "ext-xdebug": ">=2.1.4",
540 | "phpunit/phpunit": "~4"
541 | },
542 | "suggest": {
543 | "ext-dom": "*",
544 | "ext-xdebug": ">=2.2.1",
545 | "ext-xmlwriter": "*"
546 | },
547 | "type": "library",
548 | "extra": {
549 | "branch-alias": {
550 | "dev-master": "2.2.x-dev"
551 | }
552 | },
553 | "autoload": {
554 | "classmap": [
555 | "src/"
556 | ]
557 | },
558 | "notification-url": "https://packagist.org/downloads/",
559 | "license": [
560 | "BSD-3-Clause"
561 | ],
562 | "authors": [
563 | {
564 | "name": "Sebastian Bergmann",
565 | "email": "sb@sebastian-bergmann.de",
566 | "role": "lead"
567 | }
568 | ],
569 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
570 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
571 | "keywords": [
572 | "coverage",
573 | "testing",
574 | "xunit"
575 | ],
576 | "time": "2015-10-06T15:47:00+00:00"
577 | },
578 | {
579 | "name": "phpunit/php-file-iterator",
580 | "version": "1.4.5",
581 | "source": {
582 | "type": "git",
583 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
584 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
585 | },
586 | "dist": {
587 | "type": "zip",
588 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
589 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
590 | "shasum": ""
591 | },
592 | "require": {
593 | "php": ">=5.3.3"
594 | },
595 | "type": "library",
596 | "extra": {
597 | "branch-alias": {
598 | "dev-master": "1.4.x-dev"
599 | }
600 | },
601 | "autoload": {
602 | "classmap": [
603 | "src/"
604 | ]
605 | },
606 | "notification-url": "https://packagist.org/downloads/",
607 | "license": [
608 | "BSD-3-Clause"
609 | ],
610 | "authors": [
611 | {
612 | "name": "Sebastian Bergmann",
613 | "email": "sb@sebastian-bergmann.de",
614 | "role": "lead"
615 | }
616 | ],
617 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
618 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
619 | "keywords": [
620 | "filesystem",
621 | "iterator"
622 | ],
623 | "time": "2017-11-27T13:52:08+00:00"
624 | },
625 | {
626 | "name": "phpunit/php-text-template",
627 | "version": "1.2.1",
628 | "source": {
629 | "type": "git",
630 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
631 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
632 | },
633 | "dist": {
634 | "type": "zip",
635 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
636 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
637 | "shasum": ""
638 | },
639 | "require": {
640 | "php": ">=5.3.3"
641 | },
642 | "type": "library",
643 | "autoload": {
644 | "classmap": [
645 | "src/"
646 | ]
647 | },
648 | "notification-url": "https://packagist.org/downloads/",
649 | "license": [
650 | "BSD-3-Clause"
651 | ],
652 | "authors": [
653 | {
654 | "name": "Sebastian Bergmann",
655 | "email": "sebastian@phpunit.de",
656 | "role": "lead"
657 | }
658 | ],
659 | "description": "Simple template engine.",
660 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
661 | "keywords": [
662 | "template"
663 | ],
664 | "time": "2015-06-21T13:50:34+00:00"
665 | },
666 | {
667 | "name": "phpunit/php-timer",
668 | "version": "1.0.9",
669 | "source": {
670 | "type": "git",
671 | "url": "https://github.com/sebastianbergmann/php-timer.git",
672 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
673 | },
674 | "dist": {
675 | "type": "zip",
676 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
677 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
678 | "shasum": ""
679 | },
680 | "require": {
681 | "php": "^5.3.3 || ^7.0"
682 | },
683 | "require-dev": {
684 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
685 | },
686 | "type": "library",
687 | "extra": {
688 | "branch-alias": {
689 | "dev-master": "1.0-dev"
690 | }
691 | },
692 | "autoload": {
693 | "classmap": [
694 | "src/"
695 | ]
696 | },
697 | "notification-url": "https://packagist.org/downloads/",
698 | "license": [
699 | "BSD-3-Clause"
700 | ],
701 | "authors": [
702 | {
703 | "name": "Sebastian Bergmann",
704 | "email": "sb@sebastian-bergmann.de",
705 | "role": "lead"
706 | }
707 | ],
708 | "description": "Utility class for timing",
709 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
710 | "keywords": [
711 | "timer"
712 | ],
713 | "time": "2017-02-26T11:10:40+00:00"
714 | },
715 | {
716 | "name": "phpunit/php-token-stream",
717 | "version": "1.4.12",
718 | "source": {
719 | "type": "git",
720 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
721 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
722 | },
723 | "dist": {
724 | "type": "zip",
725 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
726 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
727 | "shasum": ""
728 | },
729 | "require": {
730 | "ext-tokenizer": "*",
731 | "php": ">=5.3.3"
732 | },
733 | "require-dev": {
734 | "phpunit/phpunit": "~4.2"
735 | },
736 | "type": "library",
737 | "extra": {
738 | "branch-alias": {
739 | "dev-master": "1.4-dev"
740 | }
741 | },
742 | "autoload": {
743 | "classmap": [
744 | "src/"
745 | ]
746 | },
747 | "notification-url": "https://packagist.org/downloads/",
748 | "license": [
749 | "BSD-3-Clause"
750 | ],
751 | "authors": [
752 | {
753 | "name": "Sebastian Bergmann",
754 | "email": "sebastian@phpunit.de"
755 | }
756 | ],
757 | "description": "Wrapper around PHP's tokenizer extension.",
758 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
759 | "keywords": [
760 | "tokenizer"
761 | ],
762 | "abandoned": true,
763 | "time": "2017-12-04T08:55:13+00:00"
764 | },
765 | {
766 | "name": "phpunit/phpunit",
767 | "version": "4.8.36",
768 | "source": {
769 | "type": "git",
770 | "url": "https://github.com/sebastianbergmann/phpunit.git",
771 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
772 | },
773 | "dist": {
774 | "type": "zip",
775 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
776 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
777 | "shasum": ""
778 | },
779 | "require": {
780 | "ext-dom": "*",
781 | "ext-json": "*",
782 | "ext-pcre": "*",
783 | "ext-reflection": "*",
784 | "ext-spl": "*",
785 | "php": ">=5.3.3",
786 | "phpspec/prophecy": "^1.3.1",
787 | "phpunit/php-code-coverage": "~2.1",
788 | "phpunit/php-file-iterator": "~1.4",
789 | "phpunit/php-text-template": "~1.2",
790 | "phpunit/php-timer": "^1.0.6",
791 | "phpunit/phpunit-mock-objects": "~2.3",
792 | "sebastian/comparator": "~1.2.2",
793 | "sebastian/diff": "~1.2",
794 | "sebastian/environment": "~1.3",
795 | "sebastian/exporter": "~1.2",
796 | "sebastian/global-state": "~1.0",
797 | "sebastian/version": "~1.0",
798 | "symfony/yaml": "~2.1|~3.0"
799 | },
800 | "suggest": {
801 | "phpunit/php-invoker": "~1.1"
802 | },
803 | "bin": [
804 | "phpunit"
805 | ],
806 | "type": "library",
807 | "extra": {
808 | "branch-alias": {
809 | "dev-master": "4.8.x-dev"
810 | }
811 | },
812 | "autoload": {
813 | "classmap": [
814 | "src/"
815 | ]
816 | },
817 | "notification-url": "https://packagist.org/downloads/",
818 | "license": [
819 | "BSD-3-Clause"
820 | ],
821 | "authors": [
822 | {
823 | "name": "Sebastian Bergmann",
824 | "email": "sebastian@phpunit.de",
825 | "role": "lead"
826 | }
827 | ],
828 | "description": "The PHP Unit Testing framework.",
829 | "homepage": "https://phpunit.de/",
830 | "keywords": [
831 | "phpunit",
832 | "testing",
833 | "xunit"
834 | ],
835 | "time": "2017-06-21T08:07:12+00:00"
836 | },
837 | {
838 | "name": "phpunit/phpunit-mock-objects",
839 | "version": "2.3.8",
840 | "source": {
841 | "type": "git",
842 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
843 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
844 | },
845 | "dist": {
846 | "type": "zip",
847 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
848 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
849 | "shasum": ""
850 | },
851 | "require": {
852 | "doctrine/instantiator": "^1.0.2",
853 | "php": ">=5.3.3",
854 | "phpunit/php-text-template": "~1.2",
855 | "sebastian/exporter": "~1.2"
856 | },
857 | "require-dev": {
858 | "phpunit/phpunit": "~4.4"
859 | },
860 | "suggest": {
861 | "ext-soap": "*"
862 | },
863 | "type": "library",
864 | "extra": {
865 | "branch-alias": {
866 | "dev-master": "2.3.x-dev"
867 | }
868 | },
869 | "autoload": {
870 | "classmap": [
871 | "src/"
872 | ]
873 | },
874 | "notification-url": "https://packagist.org/downloads/",
875 | "license": [
876 | "BSD-3-Clause"
877 | ],
878 | "authors": [
879 | {
880 | "name": "Sebastian Bergmann",
881 | "email": "sb@sebastian-bergmann.de",
882 | "role": "lead"
883 | }
884 | ],
885 | "description": "Mock Object library for PHPUnit",
886 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
887 | "keywords": [
888 | "mock",
889 | "xunit"
890 | ],
891 | "abandoned": true,
892 | "time": "2015-10-02T06:51:40+00:00"
893 | },
894 | {
895 | "name": "sebastian/comparator",
896 | "version": "1.2.4",
897 | "source": {
898 | "type": "git",
899 | "url": "https://github.com/sebastianbergmann/comparator.git",
900 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
901 | },
902 | "dist": {
903 | "type": "zip",
904 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
905 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
906 | "shasum": ""
907 | },
908 | "require": {
909 | "php": ">=5.3.3",
910 | "sebastian/diff": "~1.2",
911 | "sebastian/exporter": "~1.2 || ~2.0"
912 | },
913 | "require-dev": {
914 | "phpunit/phpunit": "~4.4"
915 | },
916 | "type": "library",
917 | "extra": {
918 | "branch-alias": {
919 | "dev-master": "1.2.x-dev"
920 | }
921 | },
922 | "autoload": {
923 | "classmap": [
924 | "src/"
925 | ]
926 | },
927 | "notification-url": "https://packagist.org/downloads/",
928 | "license": [
929 | "BSD-3-Clause"
930 | ],
931 | "authors": [
932 | {
933 | "name": "Jeff Welch",
934 | "email": "whatthejeff@gmail.com"
935 | },
936 | {
937 | "name": "Volker Dusch",
938 | "email": "github@wallbash.com"
939 | },
940 | {
941 | "name": "Bernhard Schussek",
942 | "email": "bschussek@2bepublished.at"
943 | },
944 | {
945 | "name": "Sebastian Bergmann",
946 | "email": "sebastian@phpunit.de"
947 | }
948 | ],
949 | "description": "Provides the functionality to compare PHP values for equality",
950 | "homepage": "http://www.github.com/sebastianbergmann/comparator",
951 | "keywords": [
952 | "comparator",
953 | "compare",
954 | "equality"
955 | ],
956 | "time": "2017-01-29T09:50:25+00:00"
957 | },
958 | {
959 | "name": "sebastian/diff",
960 | "version": "1.4.3",
961 | "source": {
962 | "type": "git",
963 | "url": "https://github.com/sebastianbergmann/diff.git",
964 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
965 | },
966 | "dist": {
967 | "type": "zip",
968 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
969 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
970 | "shasum": ""
971 | },
972 | "require": {
973 | "php": "^5.3.3 || ^7.0"
974 | },
975 | "require-dev": {
976 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
977 | },
978 | "type": "library",
979 | "extra": {
980 | "branch-alias": {
981 | "dev-master": "1.4-dev"
982 | }
983 | },
984 | "autoload": {
985 | "classmap": [
986 | "src/"
987 | ]
988 | },
989 | "notification-url": "https://packagist.org/downloads/",
990 | "license": [
991 | "BSD-3-Clause"
992 | ],
993 | "authors": [
994 | {
995 | "name": "Kore Nordmann",
996 | "email": "mail@kore-nordmann.de"
997 | },
998 | {
999 | "name": "Sebastian Bergmann",
1000 | "email": "sebastian@phpunit.de"
1001 | }
1002 | ],
1003 | "description": "Diff implementation",
1004 | "homepage": "https://github.com/sebastianbergmann/diff",
1005 | "keywords": [
1006 | "diff"
1007 | ],
1008 | "time": "2017-05-22T07:24:03+00:00"
1009 | },
1010 | {
1011 | "name": "sebastian/environment",
1012 | "version": "1.3.8",
1013 | "source": {
1014 | "type": "git",
1015 | "url": "https://github.com/sebastianbergmann/environment.git",
1016 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
1017 | },
1018 | "dist": {
1019 | "type": "zip",
1020 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
1021 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
1022 | "shasum": ""
1023 | },
1024 | "require": {
1025 | "php": "^5.3.3 || ^7.0"
1026 | },
1027 | "require-dev": {
1028 | "phpunit/phpunit": "^4.8 || ^5.0"
1029 | },
1030 | "type": "library",
1031 | "extra": {
1032 | "branch-alias": {
1033 | "dev-master": "1.3.x-dev"
1034 | }
1035 | },
1036 | "autoload": {
1037 | "classmap": [
1038 | "src/"
1039 | ]
1040 | },
1041 | "notification-url": "https://packagist.org/downloads/",
1042 | "license": [
1043 | "BSD-3-Clause"
1044 | ],
1045 | "authors": [
1046 | {
1047 | "name": "Sebastian Bergmann",
1048 | "email": "sebastian@phpunit.de"
1049 | }
1050 | ],
1051 | "description": "Provides functionality to handle HHVM/PHP environments",
1052 | "homepage": "http://www.github.com/sebastianbergmann/environment",
1053 | "keywords": [
1054 | "Xdebug",
1055 | "environment",
1056 | "hhvm"
1057 | ],
1058 | "time": "2016-08-18T05:49:44+00:00"
1059 | },
1060 | {
1061 | "name": "sebastian/exporter",
1062 | "version": "1.2.2",
1063 | "source": {
1064 | "type": "git",
1065 | "url": "https://github.com/sebastianbergmann/exporter.git",
1066 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
1067 | },
1068 | "dist": {
1069 | "type": "zip",
1070 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
1071 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
1072 | "shasum": ""
1073 | },
1074 | "require": {
1075 | "php": ">=5.3.3",
1076 | "sebastian/recursion-context": "~1.0"
1077 | },
1078 | "require-dev": {
1079 | "ext-mbstring": "*",
1080 | "phpunit/phpunit": "~4.4"
1081 | },
1082 | "type": "library",
1083 | "extra": {
1084 | "branch-alias": {
1085 | "dev-master": "1.3.x-dev"
1086 | }
1087 | },
1088 | "autoload": {
1089 | "classmap": [
1090 | "src/"
1091 | ]
1092 | },
1093 | "notification-url": "https://packagist.org/downloads/",
1094 | "license": [
1095 | "BSD-3-Clause"
1096 | ],
1097 | "authors": [
1098 | {
1099 | "name": "Jeff Welch",
1100 | "email": "whatthejeff@gmail.com"
1101 | },
1102 | {
1103 | "name": "Volker Dusch",
1104 | "email": "github@wallbash.com"
1105 | },
1106 | {
1107 | "name": "Bernhard Schussek",
1108 | "email": "bschussek@2bepublished.at"
1109 | },
1110 | {
1111 | "name": "Sebastian Bergmann",
1112 | "email": "sebastian@phpunit.de"
1113 | },
1114 | {
1115 | "name": "Adam Harvey",
1116 | "email": "aharvey@php.net"
1117 | }
1118 | ],
1119 | "description": "Provides the functionality to export PHP variables for visualization",
1120 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
1121 | "keywords": [
1122 | "export",
1123 | "exporter"
1124 | ],
1125 | "time": "2016-06-17T09:04:28+00:00"
1126 | },
1127 | {
1128 | "name": "sebastian/global-state",
1129 | "version": "1.1.1",
1130 | "source": {
1131 | "type": "git",
1132 | "url": "https://github.com/sebastianbergmann/global-state.git",
1133 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
1134 | },
1135 | "dist": {
1136 | "type": "zip",
1137 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
1138 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
1139 | "shasum": ""
1140 | },
1141 | "require": {
1142 | "php": ">=5.3.3"
1143 | },
1144 | "require-dev": {
1145 | "phpunit/phpunit": "~4.2"
1146 | },
1147 | "suggest": {
1148 | "ext-uopz": "*"
1149 | },
1150 | "type": "library",
1151 | "extra": {
1152 | "branch-alias": {
1153 | "dev-master": "1.0-dev"
1154 | }
1155 | },
1156 | "autoload": {
1157 | "classmap": [
1158 | "src/"
1159 | ]
1160 | },
1161 | "notification-url": "https://packagist.org/downloads/",
1162 | "license": [
1163 | "BSD-3-Clause"
1164 | ],
1165 | "authors": [
1166 | {
1167 | "name": "Sebastian Bergmann",
1168 | "email": "sebastian@phpunit.de"
1169 | }
1170 | ],
1171 | "description": "Snapshotting of global state",
1172 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
1173 | "keywords": [
1174 | "global state"
1175 | ],
1176 | "time": "2015-10-12T03:26:01+00:00"
1177 | },
1178 | {
1179 | "name": "sebastian/recursion-context",
1180 | "version": "1.0.5",
1181 | "source": {
1182 | "type": "git",
1183 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
1184 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
1185 | },
1186 | "dist": {
1187 | "type": "zip",
1188 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
1189 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
1190 | "shasum": ""
1191 | },
1192 | "require": {
1193 | "php": ">=5.3.3"
1194 | },
1195 | "require-dev": {
1196 | "phpunit/phpunit": "~4.4"
1197 | },
1198 | "type": "library",
1199 | "extra": {
1200 | "branch-alias": {
1201 | "dev-master": "1.0.x-dev"
1202 | }
1203 | },
1204 | "autoload": {
1205 | "classmap": [
1206 | "src/"
1207 | ]
1208 | },
1209 | "notification-url": "https://packagist.org/downloads/",
1210 | "license": [
1211 | "BSD-3-Clause"
1212 | ],
1213 | "authors": [
1214 | {
1215 | "name": "Jeff Welch",
1216 | "email": "whatthejeff@gmail.com"
1217 | },
1218 | {
1219 | "name": "Sebastian Bergmann",
1220 | "email": "sebastian@phpunit.de"
1221 | },
1222 | {
1223 | "name": "Adam Harvey",
1224 | "email": "aharvey@php.net"
1225 | }
1226 | ],
1227 | "description": "Provides functionality to recursively process PHP variables",
1228 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1229 | "time": "2016-10-03T07:41:43+00:00"
1230 | },
1231 | {
1232 | "name": "sebastian/version",
1233 | "version": "1.0.6",
1234 | "source": {
1235 | "type": "git",
1236 | "url": "https://github.com/sebastianbergmann/version.git",
1237 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
1238 | },
1239 | "dist": {
1240 | "type": "zip",
1241 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
1242 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
1243 | "shasum": ""
1244 | },
1245 | "type": "library",
1246 | "autoload": {
1247 | "classmap": [
1248 | "src/"
1249 | ]
1250 | },
1251 | "notification-url": "https://packagist.org/downloads/",
1252 | "license": [
1253 | "BSD-3-Clause"
1254 | ],
1255 | "authors": [
1256 | {
1257 | "name": "Sebastian Bergmann",
1258 | "email": "sebastian@phpunit.de",
1259 | "role": "lead"
1260 | }
1261 | ],
1262 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1263 | "homepage": "https://github.com/sebastianbergmann/version",
1264 | "time": "2015-06-21T13:59:46+00:00"
1265 | },
1266 | {
1267 | "name": "symfony/polyfill-ctype",
1268 | "version": "v1.20.0",
1269 | "source": {
1270 | "type": "git",
1271 | "url": "https://github.com/symfony/polyfill-ctype.git",
1272 | "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
1273 | },
1274 | "dist": {
1275 | "type": "zip",
1276 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
1277 | "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
1278 | "shasum": ""
1279 | },
1280 | "require": {
1281 | "php": ">=7.1"
1282 | },
1283 | "suggest": {
1284 | "ext-ctype": "For best performance"
1285 | },
1286 | "type": "library",
1287 | "extra": {
1288 | "branch-alias": {
1289 | "dev-main": "1.20-dev"
1290 | },
1291 | "thanks": {
1292 | "name": "symfony/polyfill",
1293 | "url": "https://github.com/symfony/polyfill"
1294 | }
1295 | },
1296 | "autoload": {
1297 | "psr-4": {
1298 | "Symfony\\Polyfill\\Ctype\\": ""
1299 | },
1300 | "files": [
1301 | "bootstrap.php"
1302 | ]
1303 | },
1304 | "notification-url": "https://packagist.org/downloads/",
1305 | "license": [
1306 | "MIT"
1307 | ],
1308 | "authors": [
1309 | {
1310 | "name": "Gert de Pagter",
1311 | "email": "BackEndTea@gmail.com"
1312 | },
1313 | {
1314 | "name": "Symfony Community",
1315 | "homepage": "https://symfony.com/contributors"
1316 | }
1317 | ],
1318 | "description": "Symfony polyfill for ctype functions",
1319 | "homepage": "https://symfony.com",
1320 | "keywords": [
1321 | "compatibility",
1322 | "ctype",
1323 | "polyfill",
1324 | "portable"
1325 | ],
1326 | "funding": [
1327 | {
1328 | "url": "https://symfony.com/sponsor",
1329 | "type": "custom"
1330 | },
1331 | {
1332 | "url": "https://github.com/fabpot",
1333 | "type": "github"
1334 | },
1335 | {
1336 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1337 | "type": "tidelift"
1338 | }
1339 | ],
1340 | "time": "2020-10-23T14:02:19+00:00"
1341 | },
1342 | {
1343 | "name": "symfony/yaml",
1344 | "version": "v3.4.46",
1345 | "source": {
1346 | "type": "git",
1347 | "url": "https://github.com/symfony/yaml.git",
1348 | "reference": "88289caa3c166321883f67fe5130188ebbb47094"
1349 | },
1350 | "dist": {
1351 | "type": "zip",
1352 | "url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094",
1353 | "reference": "88289caa3c166321883f67fe5130188ebbb47094",
1354 | "shasum": ""
1355 | },
1356 | "require": {
1357 | "php": "^5.5.9|>=7.0.8",
1358 | "symfony/polyfill-ctype": "~1.8"
1359 | },
1360 | "conflict": {
1361 | "symfony/console": "<3.4"
1362 | },
1363 | "require-dev": {
1364 | "symfony/console": "~3.4|~4.0"
1365 | },
1366 | "suggest": {
1367 | "symfony/console": "For validating YAML files using the lint command"
1368 | },
1369 | "type": "library",
1370 | "autoload": {
1371 | "psr-4": {
1372 | "Symfony\\Component\\Yaml\\": ""
1373 | },
1374 | "exclude-from-classmap": [
1375 | "/Tests/"
1376 | ]
1377 | },
1378 | "notification-url": "https://packagist.org/downloads/",
1379 | "license": [
1380 | "MIT"
1381 | ],
1382 | "authors": [
1383 | {
1384 | "name": "Fabien Potencier",
1385 | "email": "fabien@symfony.com"
1386 | },
1387 | {
1388 | "name": "Symfony Community",
1389 | "homepage": "https://symfony.com/contributors"
1390 | }
1391 | ],
1392 | "description": "Symfony Yaml Component",
1393 | "homepage": "https://symfony.com",
1394 | "funding": [
1395 | {
1396 | "url": "https://symfony.com/sponsor",
1397 | "type": "custom"
1398 | },
1399 | {
1400 | "url": "https://github.com/fabpot",
1401 | "type": "github"
1402 | },
1403 | {
1404 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1405 | "type": "tidelift"
1406 | }
1407 | ],
1408 | "time": "2020-10-24T10:57:07+00:00"
1409 | },
1410 | {
1411 | "name": "webmozart/assert",
1412 | "version": "1.9.1",
1413 | "source": {
1414 | "type": "git",
1415 | "url": "https://github.com/webmozart/assert.git",
1416 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
1417 | },
1418 | "dist": {
1419 | "type": "zip",
1420 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
1421 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
1422 | "shasum": ""
1423 | },
1424 | "require": {
1425 | "php": "^5.3.3 || ^7.0 || ^8.0",
1426 | "symfony/polyfill-ctype": "^1.8"
1427 | },
1428 | "conflict": {
1429 | "phpstan/phpstan": "<0.12.20",
1430 | "vimeo/psalm": "<3.9.1"
1431 | },
1432 | "require-dev": {
1433 | "phpunit/phpunit": "^4.8.36 || ^7.5.13"
1434 | },
1435 | "type": "library",
1436 | "autoload": {
1437 | "psr-4": {
1438 | "Webmozart\\Assert\\": "src/"
1439 | }
1440 | },
1441 | "notification-url": "https://packagist.org/downloads/",
1442 | "license": [
1443 | "MIT"
1444 | ],
1445 | "authors": [
1446 | {
1447 | "name": "Bernhard Schussek",
1448 | "email": "bschussek@gmail.com"
1449 | }
1450 | ],
1451 | "description": "Assertions to validate method input/output with nice error messages.",
1452 | "keywords": [
1453 | "assert",
1454 | "check",
1455 | "validate"
1456 | ],
1457 | "time": "2020-07-08T17:02:28+00:00"
1458 | }
1459 | ],
1460 | "packages-dev": [],
1461 | "aliases": [],
1462 | "minimum-stability": "stable",
1463 | "stability-flags": [],
1464 | "prefer-stable": false,
1465 | "prefer-lowest": false,
1466 | "platform": {
1467 | "php": ">7.2.0"
1468 | },
1469 | "platform-dev": [],
1470 | "plugin-api-version": "1.1.0"
1471 | }
1472 |
--------------------------------------------------------------------------------