diff --git a/.gitignore b/.gitignore
index d285a20..0b82d85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
/vendor
/vendor-bin/*/vendor
+/tests/coverage
+/tests/.phpunit.result.cache
\ No newline at end of file
diff --git a/RoboFile.php b/RoboFile.php
new file mode 100644
index 0000000..d1a5750
--- /dev/null
+++ b/RoboFile.php
@@ -0,0 +1,146 @@
+runTests(escapeshellarg(\PHP_BINARY), "typical", $args);
+ }
+
+ /** Runs the full test suite
+ *
+ * This includes pedantic tests which may help to identify problems.
+ * See help for the "test" task for more details.
+ */
+ public function testFull(array $args): Result {
+ return $this->runTests(escapeshellarg(\PHP_BINARY), "full", $args);
+ }
+
+ /**
+ * Runs a quick subset of the test suite
+ *
+ * See help for the "test" task for more details.
+ */
+ public function testQuick(array $args): Result {
+ return $this->runTests(escapeshellarg(\PHP_BINARY), "quick", $args);
+ }
+
+ /** Produces a code coverage report
+ *
+ * By default this task produces an HTML-format coverage report in
+ * tests/coverage/. Additional reports may be produced by passing
+ * arguments to this task as one would to PHPUnit.
+ *
+ * Robo first tries to use pcov and will fall back first to xdebug then
+ * phpdbg. Neither pcov nor xdebug need to be enabled to be used; they
+ * only need to be present in the extension load path to be used.
+ */
+ public function coverage(array $args): Result {
+ // run tests with code coverage reporting enabled
+ $exec = $this->findCoverageEngine();
+ return $this->runTests($exec, "coverage", array_merge(["--coverage-html", BASE_TEST."coverage"], $args));
+ }
+
+ /** Produces a code coverage report, with redundant tests
+ *
+ * Depending on the environment, some tests that normally provide
+ * coverage may be skipped, while working alternatives are normally
+ * suppressed for reasons of time. This coverage report will try to
+ * run all tests which may cover code.
+ *
+ * See also help for the "coverage" task for more details.
+ */
+ public function coverageFull(array $args): Result {
+ // run tests with code coverage reporting enabled
+ $exec = $this->findCoverageEngine();
+ return $this->runTests($exec, "typical", array_merge(["--coverage-html", BASE_TEST."coverage"], $args));
+ }
+
+ /** Runs the coding standards fixer */
+ public function clean($opts = ['demo|d' => false]): Result {
+ $t = $this->taskExec(norm(BASE."vendor/bin/php-cs-fixer"));
+ $t->arg("fix");
+ if ($opts['demo']) {
+ $t->args("--dry-run", "--diff")->option("--diff-format", "udiff");
+ }
+ return $t->run();
+ }
+
+ protected function findCoverageEngine(): string {
+ $dir = rtrim(ini_get("extension_dir"), "/").\DIRECTORY_SEPARATOR;
+ $ext = IS_WIN ? "dll" : (IS_MAC ? "dylib" : "so");
+ $php = escapeshellarg(\PHP_BINARY);
+ $code = escapeshellarg(BASE."lib");
+ if (extension_loaded("pcov")) {
+ return "$php -d pcov.enabled=1 -d pcov.directory=$code";
+ } elseif (extension_loaded("xdebug")) {
+ return $php;
+ } elseif (file_exists($dir."pcov.$ext")) {
+ return "$php -d extension=pcov.$ext -d pcov.enabled=1 -d pcov.directory=$code";
+ } elseif (file_exists($dir."pcov.$ext")) {
+ return "$php -d zend_extension=xdebug.$ext";
+ } else {
+ if (IS_WIN) {
+ $dbg = dirname(\PHP_BINARY)."\\phpdbg.exe";
+ $dbg = file_exists($dbg) ? $dbg : "";
+ } else {
+ $dbg = trim(`which phpdbg 2>/dev/null`);
+ }
+ if ($dbg) {
+ return escapeshellarg($dbg)." -qrr";
+ } else {
+ return $php;
+ }
+ }
+ }
+
+ protected function blackhole(bool $all = false): string {
+ $hole = IS_WIN ? "nul" : "/dev/null";
+ return $all ? ">$hole 2>&1" : "2>$hole";
+ }
+
+ protected function runTests(string $executor, string $set, array $args) : Result {
+ switch ($set) {
+ case "typical":
+ $set = ["--exclude-group", "optional"];
+ break;
+ case "quick":
+ $set = ["--exclude-group", "optional,slow"];
+ break;
+ case "coverage":
+ $set = ["--exclude-group", "optional,coverageOptional"];
+ break;
+ case "full":
+ $set = [];
+ break;
+ default:
+ throw new \Exception;
+ }
+ $execpath = norm(BASE."vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit");
+ $confpath = realpath(BASE_TEST."phpunit.dist.xml") ?: norm(BASE_TEST."phpunit.xml");
+ //$this->taskServer(8000)->host("localhost")->dir(BASE_TEST."docroot")->rawArg("-n")->arg(BASE_TEST."server.php")->rawArg($this->blackhole())->background()->run();
+ return $this->taskExec($executor)->option("-d", "zend.assertions=1")->arg($execpath)->option("-c", $confpath)->args(array_merge($set, $args))->run();
+ }
+}
diff --git a/composer.json b/composer.json
index 5f9a3f7..6138df8 100644
--- a/composer.json
+++ b/composer.json
@@ -26,5 +26,10 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.3"
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "JKingWeb\\Lax\\TestCase\\": "tests/cases/"
+ }
}
}
diff --git a/lib/Exception.php b/lib/Exception.php
new file mode 100644
index 0000000..8110f32
--- /dev/null
+++ b/lib/Exception.php
@@ -0,0 +1,10 @@
+ */
+class TestJSON extends \PHPUnit\Framework\TestCase {
+ /** @dataProvider provideJSONFeedVersion1 */
+ public function testJSONFeedVersion1($input, string $type, $output): void {
+ if (is_array($input)) {
+ $input = json_encode($input);
+ } elseif (!is_string($input)) {
+ throw new \Exception("Test input is invalid");
+ }
+ if ($output instanceof \Exception) {
+ $this->expectExceptionObject($output);
+ new Feed($input, $type);
+ } else {
+ $this->assertTrue(false);
+ }
+ }
+
+ public function provideJSONFeedVersion1(): iterable {
+ foreach (new \GlobIterator(__DIR__."/*.json", \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::KEY_AS_FILENAME) as $file => $path) {
+ foreach (json_decode(file_get_contents($path), true) as $index => $test) {
+ if (isset($test['exception'])) {
+ $class = "\JKingWeb\Lax\Parser\Exception" . $test['exception'][0];
+ $test['output'] = new $class($test['exception'][1] ?? "");
+ }
+ yield "$file #$index: {$test['description']}" => [
+ $test['input'],
+ $test['type'] ?? "",
+ $test['output'],
+ ];
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/JSON/failures.json b/tests/cases/JSON/failures.json
new file mode 100644
index 0000000..56d6002
--- /dev/null
+++ b/tests/cases/JSON/failures.json
@@ -0,0 +1,42 @@
+[
+ {
+ "description": "Not valid JSON 1",
+ "input": "{",
+ "exception": ["Syntax", "notJSON"]
+ },
+ {
+ "description": "Not valid JSON 2",
+ "input": "",
+ "exception": ["Syntax", "notJSON"]
+ },
+ {
+ "description": "Not a JSON feed 1",
+ "input": {},
+ "exception": ["Semantics", "notAFeed"]
+ },
+ {
+ "description": "Not a JSON feed 2",
+ "input": {"version": "https://example.com/"},
+ "exception": ["Semantics", "notAFeed"]
+ },
+ {
+ "description": "Unknown version 1",
+ "input": {"version": "https://jsonfeed.org/version/"},
+ "exception": ["Semantics", "unknownVersion"]
+ },
+ {
+ "description": "Unknown version 2",
+ "input": {"version": "https://jsonfeed.org/version/2"},
+ "exception": ["Semantics", "unknownVersion"]
+ },
+ {
+ "description": "Unknown version 3",
+ "input": {"version": "https://jsonfeed.org/version/11"},
+ "exception": ["Semantics", "unknownVersion"]
+ },
+ {
+ "description": "Unknown version 4",
+ "input": {"version": "https://jsonfeed.org/version/1.1"},
+ "exception": ["Semantics", "unknownVersion"]
+ }
+]
\ No newline at end of file
diff --git a/tests/phpunit.dist.xml b/tests/phpunit.dist.xml
new file mode 100644
index 0000000..4a6d9ff
--- /dev/null
+++ b/tests/phpunit.dist.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+ ../lib
+
+
+
+
+
+ cases/JSON
+
+
+
diff --git a/vendor-bin/robo/composer.json b/vendor-bin/robo/composer.json
new file mode 100644
index 0000000..4528263
--- /dev/null
+++ b/vendor-bin/robo/composer.json
@@ -0,0 +1,5 @@
+{
+ "require-dev": {
+ "consolidation/robo": "^2.0"
+ }
+}
diff --git a/vendor-bin/robo/composer.lock b/vendor-bin/robo/composer.lock
new file mode 100644
index 0000000..0a4cd1e
--- /dev/null
+++ b/vendor-bin/robo/composer.lock
@@ -0,0 +1,1402 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "152a2d2d7508cb6a8e6c1e367af45b04",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "consolidation/annotated-command",
+ "version": "4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/consolidation/annotated-command.git",
+ "reference": "33e472d3cceb0f22a527d13ccfa3f76c4d21c178"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/33e472d3cceb0f22a527d13ccfa3f76c4d21c178",
+ "reference": "33e472d3cceb0f22a527d13ccfa3f76c4d21c178",
+ "shasum": ""
+ },
+ "require": {
+ "consolidation/output-formatters": "^4.1",
+ "php": ">=7.1.3",
+ "psr/log": "^1|^2",
+ "symfony/console": "^4|^5",
+ "symfony/event-dispatcher": "^4|^5",
+ "symfony/finder": "^4|^5"
+ },
+ "require-dev": {
+ "g1a/composer-test-scenarios": "^3",
+ "php-coveralls/php-coveralls": "^1",
+ "phpunit/phpunit": "^6",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "type": "library",
+ "extra": {
+ "scenarios": {
+ "symfony4": {
+ "require": {
+ "symfony/console": "^4.0"
+ }
+ }
+ },
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Consolidation\\AnnotatedCommand\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Greg Anderson",
+ "email": "greg.1.anderson@greenknowe.org"
+ }
+ ],
+ "description": "Initialize Symfony Console commands from annotated command class methods.",
+ "time": "2020-02-07T03:35:30+00:00"
+ },
+ {
+ "name": "consolidation/config",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/consolidation/config.git",
+ "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+ "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+ "shasum": ""
+ },
+ "require": {
+ "dflydev/dot-access-data": "^1.1.0",
+ "grasmash/expander": "^1",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "g1a/composer-test-scenarios": "^3",
+ "php-coveralls/php-coveralls": "^1",
+ "phpunit/phpunit": "^5",
+ "squizlabs/php_codesniffer": "2.*",
+ "symfony/console": "^2.5|^3|^4",
+ "symfony/yaml": "^2.8.11|^3|^4"
+ },
+ "suggest": {
+ "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader"
+ },
+ "type": "library",
+ "extra": {
+ "scenarios": {
+ "symfony4": {
+ "require-dev": {
+ "symfony/console": "^4.0"
+ },
+ "config": {
+ "platform": {
+ "php": "7.1.3"
+ }
+ }
+ },
+ "symfony2": {
+ "require-dev": {
+ "symfony/console": "^2.8",
+ "symfony/event-dispatcher": "^2.8",
+ "phpunit/phpunit": "^4.8.36"
+ },
+ "remove": [
+ "php-coveralls/php-coveralls"
+ ],
+ "config": {
+ "platform": {
+ "php": "5.4.8"
+ }
+ }
+ }
+ },
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Consolidation\\Config\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Greg Anderson",
+ "email": "greg.1.anderson@greenknowe.org"
+ }
+ ],
+ "description": "Provide configuration services for a commandline tool.",
+ "time": "2019-03-03T19:37:04+00:00"
+ },
+ {
+ "name": "consolidation/log",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/consolidation/log.git",
+ "reference": "446f804476db4f73957fa4bcb66ab2facf5397ff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/consolidation/log/zipball/446f804476db4f73957fa4bcb66ab2facf5397ff",
+ "reference": "446f804476db4f73957fa4bcb66ab2facf5397ff",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.5",
+ "psr/log": "^1.0",
+ "symfony/console": "^4|^5"
+ },
+ "require-dev": {
+ "g1a/composer-test-scenarios": "^3",
+ "php-coveralls/php-coveralls": "^1",
+ "phpunit/phpunit": "^6",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Consolidation\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Greg Anderson",
+ "email": "greg.1.anderson@greenknowe.org"
+ }
+ ],
+ "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.",
+ "time": "2020-02-07T01:22:27+00:00"
+ },
+ {
+ "name": "consolidation/output-formatters",
+ "version": "4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/consolidation/output-formatters.git",
+ "reference": "eae721c3a916707c40d4390efbf48d4c799709cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/eae721c3a916707c40d4390efbf48d4c799709cc",
+ "reference": "eae721c3a916707c40d4390efbf48d4c799709cc",
+ "shasum": ""
+ },
+ "require": {
+ "dflydev/dot-access-data": "^1.1.0",
+ "php": ">=7.1.3",
+ "symfony/console": "^4|^5",
+ "symfony/finder": "^4|^5"
+ },
+ "require-dev": {
+ "g1a/composer-test-scenarios": "^3",
+ "php-coveralls/php-coveralls": "^1",
+ "phpunit/phpunit": "^6",
+ "squizlabs/php_codesniffer": "^3",
+ "symfony/var-dumper": "^4",
+ "symfony/yaml": "^4",
+ "victorjonsson/markdowndocs": "^1.3"
+ },
+ "suggest": {
+ "symfony/var-dumper": "For using the var_dump formatter"
+ },
+ "type": "library",
+ "extra": {
+ "scenarios": {
+ "symfony4": {
+ "require": {
+ "symfony/console": "^4.0"
+ }
+ }
+ },
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Consolidation\\OutputFormatters\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Greg Anderson",
+ "email": "greg.1.anderson@greenknowe.org"
+ }
+ ],
+ "description": "Format text by applying transformations provided by plug-in formatters.",
+ "time": "2020-02-07T03:22:30+00:00"
+ },
+ {
+ "name": "consolidation/robo",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/consolidation/Robo.git",
+ "reference": "7bbc66f9485736e64df6fc946bee1b1deb722667"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/consolidation/Robo/zipball/7bbc66f9485736e64df6fc946bee1b1deb722667",
+ "reference": "7bbc66f9485736e64df6fc946bee1b1deb722667",
+ "shasum": ""
+ },
+ "require": {
+ "consolidation/annotated-command": "^4.1",
+ "consolidation/config": "^1.2.1",
+ "consolidation/log": "^1.1.1|^2",
+ "consolidation/output-formatters": "^4.1",
+ "consolidation/self-update": "^1.1.5",
+ "grasmash/yaml-expander": "^1.4",
+ "league/container": "^2.4.1",
+ "php": ">=7.1.3",
+ "symfony/console": "^4.4.3",
+ "symfony/event-dispatcher": "^4.4.3",
+ "symfony/filesystem": "^4.4.3",
+ "symfony/finder": "^4.4.3",
+ "symfony/process": "^4.4.3"
+ },
+ "conflict": {
+ "codegyre/robo": "*"
+ },
+ "require-dev": {
+ "g1a/composer-test-scenarios": "^3",
+ "natxet/cssmin": "3.0.4",
+ "patchwork/jsqueeze": "^2",
+ "pear/archive_tar": "^1.4.4",
+ "php-coveralls/php-coveralls": "^1",
+ "phpdocumentor/reflection-docblock": "^4.3.2",
+ "phpunit/phpunit": "^6.5.14",
+ "squizlabs/php_codesniffer": "^3"
+ },
+ "suggest": {
+ "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch",
+ "natxet/cssmin": "For minifying CSS files in taskMinify",
+ "patchwork/jsqueeze": "For minifying JS files in taskMinify",
+ "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively."
+ },
+ "bin": [
+ "robo"
+ ],
+ "type": "library",
+ "extra": {
+ "scenarios": {
+ "php71": {
+ "require": {
+ "phpunit/phpunit": "^6",
+ "nikic/php-parser": "^2"
+ },
+ "remove": [
+ "codeception/phpunit-wrapper"
+ ],
+ "config": {
+ "platform": {
+ "php": "7.1.3"
+ }
+ }
+ }
+ },
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Robo\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Davert",
+ "email": "davert.php@resend.cc"
+ }
+ ],
+ "description": "Modern task runner",
+ "time": "2020-02-19T01:58:49+00:00"
+ },
+ {
+ "name": "consolidation/self-update",
+ "version": "1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/consolidation/self-update.git",
+ "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
+ "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0",
+ "symfony/console": "^2.8|^3|^4",
+ "symfony/filesystem": "^2.5|^3|^4"
+ },
+ "bin": [
+ "scripts/release"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "SelfUpdate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Greg Anderson",
+ "email": "greg.1.anderson@greenknowe.org"
+ },
+ {
+ "name": "Alexander Menk",
+ "email": "menk@mestrona.net"
+ }
+ ],
+ "description": "Provides a self:update command for Symfony Console applications.",
+ "time": "2018-10-28T01:52:03+00:00"
+ },
+ {
+ "name": "container-interop/container-interop",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/container-interop/container-interop.git",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "shasum": ""
+ },
+ "require": {
+ "psr/container": "^1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Interop\\Container\\": "src/Interop/Container/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
+ "homepage": "https://github.com/container-interop/container-interop",
+ "abandoned": "psr/container",
+ "time": "2017-02-14T19:40:03+00:00"
+ },
+ {
+ "name": "dflydev/dot-access-data",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+ "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a",
+ "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Dflydev\\DotAccessData": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dragonfly Development Inc.",
+ "email": "info@dflydev.com",
+ "homepage": "http://dflydev.com"
+ },
+ {
+ "name": "Beau Simensen",
+ "email": "beau@dflydev.com",
+ "homepage": "http://beausimensen.com"
+ },
+ {
+ "name": "Carlos Frutos",
+ "email": "carlos@kiwing.it",
+ "homepage": "https://github.com/cfrutos"
+ }
+ ],
+ "description": "Given a deep data structure, access data by dot notation.",
+ "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+ "keywords": [
+ "access",
+ "data",
+ "dot",
+ "notation"
+ ],
+ "time": "2017-01-20T21:14:22+00:00"
+ },
+ {
+ "name": "grasmash/expander",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/grasmash/expander.git",
+ "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/grasmash/expander/zipball/95d6037344a4be1dd5f8e0b0b2571a28c397578f",
+ "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f",
+ "shasum": ""
+ },
+ "require": {
+ "dflydev/dot-access-data": "^1.1.0",
+ "php": ">=5.4"
+ },
+ "require-dev": {
+ "greg-1-anderson/composer-test-scenarios": "^1",
+ "phpunit/phpunit": "^4|^5.5.4",
+ "satooshi/php-coveralls": "^1.0.2|dev-master",
+ "squizlabs/php_codesniffer": "^2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Grasmash\\Expander\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Grasmick"
+ }
+ ],
+ "description": "Expands internal property references in PHP arrays file.",
+ "time": "2017-12-21T22:14:55+00:00"
+ },
+ {
+ "name": "grasmash/yaml-expander",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/grasmash/yaml-expander.git",
+ "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1",
+ "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1",
+ "shasum": ""
+ },
+ "require": {
+ "dflydev/dot-access-data": "^1.1.0",
+ "php": ">=5.4",
+ "symfony/yaml": "^2.8.11|^3|^4"
+ },
+ "require-dev": {
+ "greg-1-anderson/composer-test-scenarios": "^1",
+ "phpunit/phpunit": "^4.8|^5.5.4",
+ "satooshi/php-coveralls": "^1.0.2|dev-master",
+ "squizlabs/php_codesniffer": "^2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Grasmash\\YamlExpander\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Grasmick"
+ }
+ ],
+ "description": "Expands internal property references in a yaml file.",
+ "time": "2017-12-16T16:06:03+00:00"
+ },
+ {
+ "name": "league/container",
+ "version": "2.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/container.git",
+ "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0",
+ "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0",
+ "shasum": ""
+ },
+ "require": {
+ "container-interop/container-interop": "^1.2",
+ "php": "^5.4.0 || ^7.0"
+ },
+ "provide": {
+ "container-interop/container-interop-implementation": "^1.2",
+ "psr/container-implementation": "^1.0"
+ },
+ "replace": {
+ "orno/di": "~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Container\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Phil Bennett",
+ "email": "philipobenito@gmail.com",
+ "homepage": "http://www.philipobenito.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "A fast and intuitive dependency injection container.",
+ "homepage": "https://github.com/thephpleague/container",
+ "keywords": [
+ "container",
+ "dependency",
+ "di",
+ "injection",
+ "league",
+ "provider",
+ "service"
+ ],
+ "time": "2017-05-10T09:20:27+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
+ "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2019-11-01T11:05:21+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v4.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "f512001679f37e6a042b51897ed24a2f05eba656"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/f512001679f37e6a042b51897ed24a2f05eba656",
+ "reference": "f512001679f37e6a042b51897ed24a2f05eba656",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/event-dispatcher": "<4.3|>=5",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<3.3"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^3.4|^4.0|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+ "symfony/event-dispatcher": "^4.3",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^3.4|^4.0|^5.0",
+ "symfony/var-dumper": "^4.3|^5.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-01-25T12:44:29+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v4.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b",
+ "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/event-dispatcher-contracts": "^1.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "1.1"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^3.4|^4.0|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+ "symfony/expression-language": "^3.4|^4.0|^5.0",
+ "symfony/http-foundation": "^3.4|^4.0|^5.0",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/stopwatch": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-01-10T21:54:01+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v1.1.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+ "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "psr/event-dispatcher": "",
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-09-17T09:54:03+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v4.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/266c9540b475f26122b61ef8b23dd9198f5d1cfd",
+ "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-01-21T08:20:44+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v4.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "3a50be43515590faf812fbd7708200aabc327ec3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3",
+ "reference": "3a50be43515590faf812fbd7708200aabc327ec3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-01-04T13:00:46+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
+ "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.14-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "time": "2020-01-13T11:15:53+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2",
+ "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.14-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2020-01-13T11:15:53+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675",
+ "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.14-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2020-01-13T11:15:53+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v4.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/f5697ab4cb14a5deed7473819e63141bf5352c36",
+ "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-01-09T09:50:08+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "144c5e51266b281231e947b51223ba14acf1a749"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
+ "reference": "144c5e51266b281231e947b51223ba14acf1a749",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-11-18T17:27:11+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v4.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "cd014e425b3668220adb865f53bff64b3ad21767"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/cd014e425b3668220adb865f53bff64b3ad21767",
+ "reference": "cd014e425b3668220adb865f53bff64b3ad21767",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "symfony/console": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2020-01-21T11:12:16+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": []
+}