├── .editorconfig
├── .github
├── ISSUE_TEMPLATE.md
└── PULL_REQUEST_TEMPLATE.md
├── CHANGELOG.md
├── CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── composer.json
├── composer.lock
├── resources
└── img
│ ├── bulk-ok.png
│ ├── bulk-with-errors.png
│ ├── email-ok.png
│ ├── email-with-error.png
│ └── url-ok.png
└── src
├── FileHelper.php
├── GoogleMarkupHelper.php
├── GoogleStructuredDataTestTool.php
├── GoogleStructuredDataTestToolServiceProvider.php
├── MailHelper.php
├── config
├── .env.example
├── laravel-env-validator.example.php
└── laravel-google-structured-data-testing-tool.php
└── views
└── mail.blade.php
/.editorconfig:
--------------------------------------------------------------------------------
1 | ; This file is for unifying the coding style for different editors and IDEs.
2 | ; More information at http://editorconfig.org
3 |
4 | root = true
5 |
6 | [*]
7 | charset = utf-8
8 | indent_size = 4
9 | indent_style = space
10 | end_of_line = lf
11 | insert_final_newline = true
12 | trim_trailing_whitespace = true
13 |
14 | [*.md]
15 | trim_trailing_whitespace = false
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Please prefix your issue with one of the following: **[BUG]** **[PROPOSAL]** **[QUESTION]**.
2 |
3 | **In raising this issue, I confirm the following (please check boxes):**
4 |
5 | - [ ] I have read and understood the [contributors guide]().
6 | - [ ] I have checked the pull requests tab for existing solutions/implementations to my issue/suggestion.
7 | - [ ] I have checked that the bug-fix I am reporting can be replicated.
8 |
9 | ---
10 |
11 | ### Description of the problem
12 | ...
13 |
14 | ### Steps to reproduce
15 | ...
16 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | Please prefix your pull request with one of the following: **[FEATURE]** **[FIX]** **[IMPROVEMENT]**.
2 |
3 | **In raising this pull request, I confirm the following (please check boxes):**
4 |
5 | - [ ] I have read and understood the [contributors guide]().
6 | - [ ] I have checked that another pull request for this purpose does not exist.
7 | - [ ] I have considered, and confirmed that this submission will be valuable to others.
8 | - [ ] I have added tests to prove that the code in this PR works.
9 |
10 | ---
11 |
12 | ### Description
13 | ...
14 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All Notable changes to `laravel-google-structured-data-testing-tool` will be documented in this file
4 |
5 | ## 1.1.1 - 2018-08-02
6 |
7 | - Add a sleep so google doesn't think we are spam. thanks to mwight4.
8 | - Make Email not use a language setting in the links to google. Thanks to mwight4.
9 | - Fix english.
10 |
11 |
12 | ## 1.1.0 - 2018-08-02
13 |
14 | - Fix for Laravel 5.4+ : app->share is deprecated, use app->singleton instead.
15 |
16 | ## 1.0.0 - 2016-11-01
17 |
18 | - Initial release
19 |
--------------------------------------------------------------------------------
/CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Code of Conduct
2 |
3 | As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
4 |
5 | We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
6 |
7 | Examples of unacceptable behavior by participants include:
8 |
9 | * The use of sexualized language or imagery
10 | * Personal attacks
11 | * Trolling or insulting/derogatory comments
12 | * Public or private harassment
13 | * Publishing other's private information, such as physical or electronic addresses, without explicit permission
14 | * Other unethical or unprofessional conduct.
15 |
16 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
17 |
18 | This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community in a direct capacity. Personal views, beliefs and values of individuals do not necessarily reflect those of the organisation or affiliated individuals and organisations.
19 |
20 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
21 |
22 | This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
23 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Contributions are **welcome** and will be fully **credited**.
4 |
5 | Please read and understand the contribution guide before creating an issue or pull request.
6 |
7 | ## Etiquette
8 |
9 | This project is open source, and as such, the maintainers give their free time to build and maintain the source code
10 | held within. They make the code freely available in the hope that it will be of use to other developers. It would be
11 | extremely unfair for them to suffer abuse or anger for their hard work.
12 |
13 | Please be considerate towards maintainers when raising issues or presenting pull requests. Let's show the
14 | world that developers are civilized and selfless people.
15 |
16 | It's the duty of the maintainer to ensure that all submissions to the project are of sufficient
17 | quality to benefit the project. Many developers have different skillsets, strengths, and weaknesses. Respect the maintainer's decision, and do not be upset or abusive if your submission is not used.
18 |
19 | ## Viability
20 |
21 | When requesting or submitting new features, first consider whether it might be useful to others. Open
22 | source projects are used by many developers, who may have entirely different needs to your own. Think about
23 | whether or not your feature is likely to be used by other users of the project.
24 |
25 | ## Procedure
26 |
27 | Before filing an issue:
28 |
29 | - Attempt to replicate the problem, to ensure that it wasn't a coincidental incident.
30 | - Check to make sure your feature suggestion isn't already present within the project.
31 | - Check the pull requests tab to ensure that the bug doesn't have a fix in progress.
32 | - Check the pull requests tab to ensure that the feature isn't already in progress.
33 |
34 | Before submitting a pull request:
35 |
36 | - Check the codebase to ensure that your feature doesn't already exist.
37 | - Check the pull requests to ensure that another person hasn't already submitted the feature or fix.
38 |
39 | ## Requirements
40 |
41 | If the project maintainer has any additional requirements, you will find them listed here.
42 |
43 | - **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer).
44 |
45 | - **Add tests!** - Your patch won't be accepted if it doesn't have tests.
46 |
47 | - **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
48 |
49 | - **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option.
50 |
51 | - **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
52 |
53 | - **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.
54 |
55 | **Happy coding**!
56 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | # The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Padosoft (https://www.padosoft.com)
4 |
5 | > Permission is hereby granted, free of charge, to any person obtaining a copy
6 | > of this software and associated documentation files (the "Software"), to deal
7 | > in the Software without restriction, including without limitation the rights
8 | > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | > copies of the Software, and to permit persons to whom the Software is
10 | > furnished to do so, subject to the following conditions:
11 | >
12 | > The above copyright notice and this permission notice shall be included in
13 | > all copies or substantial portions of the Software.
14 | >
15 | > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | > THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Laravel Package for testing Schema.org markup or other structured data formats with google structured data testing tool undocumented API.
2 |
3 | [](https://packagist.org/packages/padosoft/laravel-google-structured-data-testing-tool)
4 | [](LICENSE.md)
5 | [](https://travis-ci.org/padosoft/laravel-google-structured-data-testing-tool)
6 | [](https://scrutinizer-ci.com/g/padosoft/laravel-google-structured-data-testing-tool)
7 | [](https://packagist.org/packages/padosoft/laravel-google-structured-data-testing-tool)
8 | [](https://insight.sensiolabs.com/projects/3a39da13-6f5f-4041-9700-81e8c1f2e387)
9 |
10 | This package provides a series of commands to automate and bulk check of Schema.org markup or other structured data formats with google structured data testing tool undocumented API that I found.
11 | Google already provides a good tool for testing markup data using the Search Console in Webmaster Tools.
12 | But how can I test markup data if you want to programmatically test your web site urls or a bulk set of urls?
13 | You can't do this with google wmt.
14 | This package try to resolve these problems.
15 |
16 | ## WARNING
17 | Note: This is an undocumented Google API. I found it when I interacted with Google’s Structured Data Testing Tool and Google Chrome debug console,
18 | thus there is no warranty that the API remains public or that the API changes make the package unusable.
19 |
20 | Table of Contents
21 | =================
22 |
23 | * [Laravel Package for testing Schema.org markup or other structured data formats with google structured data testing tool undocumented API.](#laravel-package-for-testing-schemaorg-markup-or-other-structured-data-formats-with-google-structured-data-testing-tool-undocumented-api)
24 | * [WARNING](#warning)
25 | * [Requires](#requires)
26 | * [Installation](#installation)
27 | * [USAGE](#usage)
28 | * [EXAMPLE:](#example)
29 | * [SCHEDULE COMMAND](#schedule-command)
30 | * [SCREENSHOOTS](#screenshoots)
31 | * [Change log](#change-log)
32 | * [Testing](#testing)
33 | * [Contributing](#contributing)
34 | * [Security](#security)
35 | * [Credits](#credits)
36 | * [About Padosoft](#about-padosoft)
37 | * [License](#license)
38 |
39 | ## Requires
40 |
41 | - php: >=7.0.0
42 | - illuminate/support: ^5.0
43 | - illuminate/http: ^5.0
44 | - padosoft/support": ^1.9
45 |
46 | ## Installation
47 |
48 | You can install the package via composer:
49 | ``` bash
50 | $ composer require padosoft/laravel-google-structured-data-testing-tool
51 | ```
52 | You must install this service provider.
53 |
54 | ``` php
55 | // config/app.php
56 | 'provider' => [
57 | ...
58 | Padosoft\Laravel\Google\StructuredDataTestingTool\GoogleStructuredDataTestToolServiceProvider::class,
59 | ...
60 | ];
61 | ```
62 | You don't need to register the command in app/Console/Kernel.php, because it provides by GoogleStructuredDataTestToolServiceProvider register() method.
63 |
64 | You can publish the config file of this package with this command:
65 | ``` bash
66 | php artisan vendor:publish --provider="Padosoft\Laravel\Google\StructuredDataTestingTool\GoogleStructuredDataTestToolServiceProvider"
67 | ```
68 | The following config file will be published in `config/laravel-google-structured-data-testing-tool.php`
69 | ``` php
70 | return array(
71 | 'mailSubjectSuccess' => env(
72 | 'STRUCTURED_DATA_TESTING_TOOL_SUBJECT_SUCCESS',
73 | '[google-structured-data-testing-tool]: Ok - markup data is ok.'
74 | ),
75 | 'mailSubjetcAlarm' => env(
76 | 'STRUCTURED_DATA_TESTING_TOOL_SUBJECT_ALARM',
77 | '[google-structured-data-testing-tool]: Alarm - markup data error detected.'
78 | ),
79 | 'mailFrom' => env('STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM', 'info@example.com'),
80 | 'mailFromName' => env('STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM_NAME', 'Info Example'),
81 | 'mailViewName' => env('STRUCTURED_DATA_TESTING_TOOL_MAIL_VIEW_NAME', 'laravel-google-structured-data-testing-tool::mail'),
82 | 'logFilePath' => env('STRUCTURED_DATA_TESTING_TOOL_LOG_FILE_PATH', storage_path() . '/logs/laravel-google-structured-data-testing-tool.log')
83 | );
84 | ```
85 |
86 | In your app config folder you can copy from src/config/.env.example the settings for yours .env file used in laravel-google-structured-data-testing-tool.php.
87 | If you use mathiasgrimm/laravel-env-validator
88 | in src/config folder you'll find an example for validate the env settings.
89 |
90 |
91 | ## USAGE
92 |
93 | When the installation is done you can easily run command to print help:
94 | ```bash
95 | php artisan google-markup:test https://www.padosoft.com
96 | ```
97 |
98 | The `google-markup:test` command check the structured data and schema.org markup in the given site https://www.padosoft.com
99 |
100 | You can also pass the path of url txt (a file with one url per line) as an argument:
101 | `php google-markup:test /path/to/my/url.txt`
102 | so you can check multiple site/url (bulk) in one command!
103 |
104 | By default, the command displays the result in console, but you can also
105 | send an html email by using the `--mail`option:
106 | ```bash
107 | php google-markup:test https://www.padosoft.com --mail=mymail@mydomain.me
108 | ```
109 | ### EXAMPLE:
110 |
111 | Here is a basic example to check composer.lock into these dir:
112 | ```bash
113 | php artisan google-markup:test https://www.padosoft.com
114 | ```
115 | Here is an example to send output report to mail:
116 | ```bash
117 | php artisan google-markup:test https://www.padosoft.com --mail=mymail@mydomain
118 | ```
119 | Here is an example to ignore two urls for markup error (if command found any markup error into these dir, write it into output but the email subject isn't set to ALERT):
120 | ```bash
121 | php artisan google-markup:test /path/to/my/url.txt --mail=mymail@mydomain --whitelist="https://www.padosoft.com,https://blog.padosoft.it"
122 | ```
123 |
124 | ## SCHEDULE COMMAND
125 |
126 | You can schedule a daily (or weekly etc..) report easly, by adding this line into `schedule` method in `app/Console/Kernel.php` :
127 | ```php
128 | // app/console/Kernel.php
129 |
130 | protected function schedule(Schedule $schedule)
131 | {
132 | ...
133 | $schedule->command('google-markup:test "/path/to/my/url.txt" --mail=mymail@mydomain')
134 | ->daily()
135 | ->withoutOverlapping()
136 | ->sendOutputTo(Config::get('laravel-google-structured-data-testing-tool.logFilePath'));
137 | }
138 | ```
139 |
140 | ## SCREENSHOOTS
141 |
142 | OUTPUT CONSOLE WITH ONE URL TEST:
143 | 
144 |
145 | OUTPUT CONSOLE BULK CHECK OK:
146 | 
147 |
148 | OUTPUT CONSOLE BULK CHECK WITH ERRORS:
149 | 
150 |
151 | EMAIL VIEW:
152 | 
153 |
154 | EMAIL VIEW WITH ERRORS:
155 | 
156 |
157 |
158 | ## Change log
159 |
160 | Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.
161 |
162 | ## Testing
163 |
164 | ``` bash
165 | $ composer test
166 | ```
167 |
168 | ## Contributing
169 |
170 | Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
171 |
172 | ## Security
173 |
174 | If you discover any security related issues, please email instead of using the issue tracker.
175 |
176 | ## Credits
177 | - [Lorenzo Padovani](https://github.com/lopadova)
178 | - [All Contributors](../../contributors)
179 |
180 | ## About Padosoft
181 | Padosoft (https://www.padosoft.com) is a software house based in Florence, Italy. Specialized in E-commerce and web sites.
182 |
183 | ## License
184 |
185 | The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
186 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "padosoft/laravel-google-structured-data-testing-tool",
3 | "description": "Laravel Laravel Package for testing Schema.org markup or other structured data formats with google structured data testing tool undocumented API.",
4 | "keywords": [
5 | "padosoft",
6 | "laravel-google-structured-data-testing-tool",
7 | "schema.org",
8 | "Structured Data",
9 | "markup",
10 | "google",
11 | "Google Structured Data Testing Tool",
12 | "API"
13 | ],
14 | "homepage": "https://github.com/padosoft/laravel-google-structured-data-testing-tool",
15 | "license": "MIT",
16 | "authors": [
17 | {
18 | "name": "Lorenzo Padovani",
19 | "email": "helpdesk@padosoft.com",
20 | "homepage": "https://www.padosoft.com",
21 | "role": "Developer"
22 | }
23 | ],
24 | "require": {
25 | "php" : ">=7.0.0",
26 | "illuminate/support": "^5.0",
27 | "illuminate/console": "~5.0",
28 | "tightenco/mailthief": "0.*",
29 | "padosoft/support": "^1.9"
30 | },
31 | "require-dev": {
32 | "orchestra/testbench": "^3.2",
33 | "phpunit/phpunit": "^5.0",
34 | "mockery/mockery": "^0.9.5",
35 | "padosoft/laravel-test": "^2.0",
36 | "padosoft/test": "^0.2"
37 | },
38 | "autoload": {
39 | "psr-4": {
40 | "Padosoft\\Laravel\\Google\\StructuredDataTestingTool\\": "src"
41 | }
42 | },
43 | "autoload-dev": {
44 | "psr-4": {
45 | "Padosoft\\Laravel\\Google\\StructuredDataTestingTool\\Test\\": "tests"
46 | }
47 | },
48 | "scripts": {
49 | "test": "vendor/bin/phpunit"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/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": "097255eade0815bd8daf1c83c89ac78b",
8 | "packages": [
9 | {
10 | "name": "doctrine/inflector",
11 | "version": "v1.3.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/doctrine/inflector.git",
15 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
20 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "php": "^7.1"
25 | },
26 | "require-dev": {
27 | "phpunit/phpunit": "^6.2"
28 | },
29 | "type": "library",
30 | "extra": {
31 | "branch-alias": {
32 | "dev-master": "1.3.x-dev"
33 | }
34 | },
35 | "autoload": {
36 | "psr-4": {
37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
38 | }
39 | },
40 | "notification-url": "https://packagist.org/downloads/",
41 | "license": [
42 | "MIT"
43 | ],
44 | "authors": [
45 | {
46 | "name": "Roman Borschel",
47 | "email": "roman@code-factory.org"
48 | },
49 | {
50 | "name": "Benjamin Eberlei",
51 | "email": "kontakt@beberlei.de"
52 | },
53 | {
54 | "name": "Guilherme Blanco",
55 | "email": "guilhermeblanco@gmail.com"
56 | },
57 | {
58 | "name": "Jonathan Wage",
59 | "email": "jonwage@gmail.com"
60 | },
61 | {
62 | "name": "Johannes Schmitt",
63 | "email": "schmittjoh@gmail.com"
64 | }
65 | ],
66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.",
67 | "homepage": "http://www.doctrine-project.org",
68 | "keywords": [
69 | "inflection",
70 | "pluralize",
71 | "singularize",
72 | "string"
73 | ],
74 | "time": "2018-01-09T20:05:19+00:00"
75 | },
76 | {
77 | "name": "erusev/parsedown",
78 | "version": "1.7.1",
79 | "source": {
80 | "type": "git",
81 | "url": "https://github.com/erusev/parsedown.git",
82 | "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1"
83 | },
84 | "dist": {
85 | "type": "zip",
86 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1",
87 | "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1",
88 | "shasum": ""
89 | },
90 | "require": {
91 | "ext-mbstring": "*",
92 | "php": ">=5.3.0"
93 | },
94 | "require-dev": {
95 | "phpunit/phpunit": "^4.8.35"
96 | },
97 | "type": "library",
98 | "autoload": {
99 | "psr-0": {
100 | "Parsedown": ""
101 | }
102 | },
103 | "notification-url": "https://packagist.org/downloads/",
104 | "license": [
105 | "MIT"
106 | ],
107 | "authors": [
108 | {
109 | "name": "Emanuil Rusev",
110 | "email": "hello@erusev.com",
111 | "homepage": "http://erusev.com"
112 | }
113 | ],
114 | "description": "Parser for Markdown.",
115 | "homepage": "http://parsedown.org",
116 | "keywords": [
117 | "markdown",
118 | "parser"
119 | ],
120 | "time": "2018-03-08T01:11:30+00:00"
121 | },
122 | {
123 | "name": "laravel/framework",
124 | "version": "v5.4.36",
125 | "source": {
126 | "type": "git",
127 | "url": "https://github.com/laravel/framework.git",
128 | "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9"
129 | },
130 | "dist": {
131 | "type": "zip",
132 | "url": "https://api.github.com/repos/laravel/framework/zipball/1062a22232071c3e8636487c86ec1ae75681bbf9",
133 | "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9",
134 | "shasum": ""
135 | },
136 | "require": {
137 | "doctrine/inflector": "~1.1",
138 | "erusev/parsedown": "~1.6",
139 | "ext-mbstring": "*",
140 | "ext-openssl": "*",
141 | "league/flysystem": "~1.0",
142 | "monolog/monolog": "~1.11",
143 | "mtdowling/cron-expression": "~1.0",
144 | "nesbot/carbon": "~1.20",
145 | "paragonie/random_compat": "~1.4|~2.0",
146 | "php": ">=5.6.4",
147 | "ramsey/uuid": "~3.0",
148 | "swiftmailer/swiftmailer": "~5.4",
149 | "symfony/console": "~3.2",
150 | "symfony/debug": "~3.2",
151 | "symfony/finder": "~3.2",
152 | "symfony/http-foundation": "~3.2",
153 | "symfony/http-kernel": "~3.2",
154 | "symfony/process": "~3.2",
155 | "symfony/routing": "~3.2",
156 | "symfony/var-dumper": "~3.2",
157 | "tijsverkoyen/css-to-inline-styles": "~2.2",
158 | "vlucas/phpdotenv": "~2.2"
159 | },
160 | "replace": {
161 | "illuminate/auth": "self.version",
162 | "illuminate/broadcasting": "self.version",
163 | "illuminate/bus": "self.version",
164 | "illuminate/cache": "self.version",
165 | "illuminate/config": "self.version",
166 | "illuminate/console": "self.version",
167 | "illuminate/container": "self.version",
168 | "illuminate/contracts": "self.version",
169 | "illuminate/cookie": "self.version",
170 | "illuminate/database": "self.version",
171 | "illuminate/encryption": "self.version",
172 | "illuminate/events": "self.version",
173 | "illuminate/exception": "self.version",
174 | "illuminate/filesystem": "self.version",
175 | "illuminate/hashing": "self.version",
176 | "illuminate/http": "self.version",
177 | "illuminate/log": "self.version",
178 | "illuminate/mail": "self.version",
179 | "illuminate/notifications": "self.version",
180 | "illuminate/pagination": "self.version",
181 | "illuminate/pipeline": "self.version",
182 | "illuminate/queue": "self.version",
183 | "illuminate/redis": "self.version",
184 | "illuminate/routing": "self.version",
185 | "illuminate/session": "self.version",
186 | "illuminate/support": "self.version",
187 | "illuminate/translation": "self.version",
188 | "illuminate/validation": "self.version",
189 | "illuminate/view": "self.version",
190 | "tightenco/collect": "self.version"
191 | },
192 | "require-dev": {
193 | "aws/aws-sdk-php": "~3.0",
194 | "doctrine/dbal": "~2.5",
195 | "mockery/mockery": "~0.9.4",
196 | "pda/pheanstalk": "~3.0",
197 | "phpunit/phpunit": "~5.7",
198 | "predis/predis": "~1.0",
199 | "symfony/css-selector": "~3.2",
200 | "symfony/dom-crawler": "~3.2"
201 | },
202 | "suggest": {
203 | "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).",
204 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).",
205 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).",
206 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).",
207 | "laravel/tinker": "Required to use the tinker console command (~1.0).",
208 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
209 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).",
210 | "nexmo/client": "Required to use the Nexmo transport (~1.0).",
211 | "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
212 | "predis/predis": "Required to use the redis cache and queue drivers (~1.0).",
213 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
214 | "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).",
215 | "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).",
216 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)."
217 | },
218 | "type": "library",
219 | "extra": {
220 | "branch-alias": {
221 | "dev-master": "5.4-dev"
222 | }
223 | },
224 | "autoload": {
225 | "files": [
226 | "src/Illuminate/Foundation/helpers.php",
227 | "src/Illuminate/Support/helpers.php"
228 | ],
229 | "psr-4": {
230 | "Illuminate\\": "src/Illuminate/"
231 | }
232 | },
233 | "notification-url": "https://packagist.org/downloads/",
234 | "license": [
235 | "MIT"
236 | ],
237 | "authors": [
238 | {
239 | "name": "Taylor Otwell",
240 | "email": "taylor@laravel.com"
241 | }
242 | ],
243 | "description": "The Laravel Framework.",
244 | "homepage": "https://laravel.com",
245 | "keywords": [
246 | "framework",
247 | "laravel"
248 | ],
249 | "time": "2017-08-30T09:26:16+00:00"
250 | },
251 | {
252 | "name": "league/flysystem",
253 | "version": "1.0.45",
254 | "source": {
255 | "type": "git",
256 | "url": "https://github.com/thephpleague/flysystem.git",
257 | "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6"
258 | },
259 | "dist": {
260 | "type": "zip",
261 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a99f94e63b512d75f851b181afcdf0ee9ebef7e6",
262 | "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6",
263 | "shasum": ""
264 | },
265 | "require": {
266 | "php": ">=5.5.9"
267 | },
268 | "conflict": {
269 | "league/flysystem-sftp": "<1.0.6"
270 | },
271 | "require-dev": {
272 | "ext-fileinfo": "*",
273 | "phpspec/phpspec": "^3.4",
274 | "phpunit/phpunit": "^5.7"
275 | },
276 | "suggest": {
277 | "ext-fileinfo": "Required for MimeType",
278 | "ext-ftp": "Allows you to use FTP server storage",
279 | "ext-openssl": "Allows you to use FTPS server storage",
280 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
281 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
282 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
283 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
284 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
285 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
286 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
287 | "league/flysystem-webdav": "Allows you to use WebDAV storage",
288 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
289 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
290 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
291 | },
292 | "type": "library",
293 | "extra": {
294 | "branch-alias": {
295 | "dev-master": "1.1-dev"
296 | }
297 | },
298 | "autoload": {
299 | "psr-4": {
300 | "League\\Flysystem\\": "src/"
301 | }
302 | },
303 | "notification-url": "https://packagist.org/downloads/",
304 | "license": [
305 | "MIT"
306 | ],
307 | "authors": [
308 | {
309 | "name": "Frank de Jonge",
310 | "email": "info@frenky.net"
311 | }
312 | ],
313 | "description": "Filesystem abstraction: Many filesystems, one API.",
314 | "keywords": [
315 | "Cloud Files",
316 | "WebDAV",
317 | "abstraction",
318 | "aws",
319 | "cloud",
320 | "copy.com",
321 | "dropbox",
322 | "file systems",
323 | "files",
324 | "filesystem",
325 | "filesystems",
326 | "ftp",
327 | "rackspace",
328 | "remote",
329 | "s3",
330 | "sftp",
331 | "storage"
332 | ],
333 | "time": "2018-05-07T08:44:23+00:00"
334 | },
335 | {
336 | "name": "monolog/monolog",
337 | "version": "1.23.0",
338 | "source": {
339 | "type": "git",
340 | "url": "https://github.com/Seldaek/monolog.git",
341 | "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
342 | },
343 | "dist": {
344 | "type": "zip",
345 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
346 | "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
347 | "shasum": ""
348 | },
349 | "require": {
350 | "php": ">=5.3.0",
351 | "psr/log": "~1.0"
352 | },
353 | "provide": {
354 | "psr/log-implementation": "1.0.0"
355 | },
356 | "require-dev": {
357 | "aws/aws-sdk-php": "^2.4.9 || ^3.0",
358 | "doctrine/couchdb": "~1.0@dev",
359 | "graylog2/gelf-php": "~1.0",
360 | "jakub-onderka/php-parallel-lint": "0.9",
361 | "php-amqplib/php-amqplib": "~2.4",
362 | "php-console/php-console": "^3.1.3",
363 | "phpunit/phpunit": "~4.5",
364 | "phpunit/phpunit-mock-objects": "2.3.0",
365 | "ruflin/elastica": ">=0.90 <3.0",
366 | "sentry/sentry": "^0.13",
367 | "swiftmailer/swiftmailer": "^5.3|^6.0"
368 | },
369 | "suggest": {
370 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
371 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
372 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
373 | "ext-mongo": "Allow sending log messages to a MongoDB server",
374 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
375 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
376 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
377 | "php-console/php-console": "Allow sending log messages to Google Chrome",
378 | "rollbar/rollbar": "Allow sending log messages to Rollbar",
379 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
380 | "sentry/sentry": "Allow sending log messages to a Sentry server"
381 | },
382 | "type": "library",
383 | "extra": {
384 | "branch-alias": {
385 | "dev-master": "2.0.x-dev"
386 | }
387 | },
388 | "autoload": {
389 | "psr-4": {
390 | "Monolog\\": "src/Monolog"
391 | }
392 | },
393 | "notification-url": "https://packagist.org/downloads/",
394 | "license": [
395 | "MIT"
396 | ],
397 | "authors": [
398 | {
399 | "name": "Jordi Boggiano",
400 | "email": "j.boggiano@seld.be",
401 | "homepage": "http://seld.be"
402 | }
403 | ],
404 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
405 | "homepage": "http://github.com/Seldaek/monolog",
406 | "keywords": [
407 | "log",
408 | "logging",
409 | "psr-3"
410 | ],
411 | "time": "2017-06-19T01:22:40+00:00"
412 | },
413 | {
414 | "name": "mtdowling/cron-expression",
415 | "version": "v1.2.1",
416 | "source": {
417 | "type": "git",
418 | "url": "https://github.com/mtdowling/cron-expression.git",
419 | "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad"
420 | },
421 | "dist": {
422 | "type": "zip",
423 | "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad",
424 | "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad",
425 | "shasum": ""
426 | },
427 | "require": {
428 | "php": ">=5.3.2"
429 | },
430 | "require-dev": {
431 | "phpunit/phpunit": "~4.0|~5.0"
432 | },
433 | "type": "library",
434 | "autoload": {
435 | "psr-4": {
436 | "Cron\\": "src/Cron/"
437 | }
438 | },
439 | "notification-url": "https://packagist.org/downloads/",
440 | "license": [
441 | "MIT"
442 | ],
443 | "authors": [
444 | {
445 | "name": "Michael Dowling",
446 | "email": "mtdowling@gmail.com",
447 | "homepage": "https://github.com/mtdowling"
448 | }
449 | ],
450 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
451 | "keywords": [
452 | "cron",
453 | "schedule"
454 | ],
455 | "time": "2017-01-23T04:29:33+00:00"
456 | },
457 | {
458 | "name": "nesbot/carbon",
459 | "version": "1.32.0",
460 | "source": {
461 | "type": "git",
462 | "url": "https://github.com/briannesbitt/Carbon.git",
463 | "reference": "64563e2b9f69e4db1b82a60e81efa327a30ff343"
464 | },
465 | "dist": {
466 | "type": "zip",
467 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/64563e2b9f69e4db1b82a60e81efa327a30ff343",
468 | "reference": "64563e2b9f69e4db1b82a60e81efa327a30ff343",
469 | "shasum": ""
470 | },
471 | "require": {
472 | "php": ">=5.3.9",
473 | "symfony/translation": "~2.6 || ~3.0 || ~4.0"
474 | },
475 | "require-dev": {
476 | "friendsofphp/php-cs-fixer": "~2",
477 | "phpunit/phpunit": "^4.8.35 || ^5.7"
478 | },
479 | "type": "library",
480 | "extra": {
481 | "laravel": {
482 | "providers": [
483 | "Carbon\\Laravel\\ServiceProvider"
484 | ]
485 | }
486 | },
487 | "autoload": {
488 | "psr-4": {
489 | "": "src/"
490 | }
491 | },
492 | "notification-url": "https://packagist.org/downloads/",
493 | "license": [
494 | "MIT"
495 | ],
496 | "authors": [
497 | {
498 | "name": "Brian Nesbitt",
499 | "email": "brian@nesbot.com",
500 | "homepage": "http://nesbot.com"
501 | }
502 | ],
503 | "description": "A simple API extension for DateTime.",
504 | "homepage": "http://carbon.nesbot.com",
505 | "keywords": [
506 | "date",
507 | "datetime",
508 | "time"
509 | ],
510 | "time": "2018-07-05T06:59:26+00:00"
511 | },
512 | {
513 | "name": "padosoft/support",
514 | "version": "1.17.4",
515 | "source": {
516 | "type": "git",
517 | "url": "https://github.com/padosoft/support.git",
518 | "reference": "0d145316e0a4f4f45ebe31c6619cd89c072d4eb4"
519 | },
520 | "dist": {
521 | "type": "zip",
522 | "url": "https://api.github.com/repos/padosoft/support/zipball/0d145316e0a4f4f45ebe31c6619cd89c072d4eb4",
523 | "reference": "0d145316e0a4f4f45ebe31c6619cd89c072d4eb4",
524 | "shasum": ""
525 | },
526 | "require": {
527 | "nesbot/carbon": "^1.21",
528 | "php": ">=7.0.0"
529 | },
530 | "require-dev": {
531 | "phpunit/phpunit": "^5.0"
532 | },
533 | "type": "library",
534 | "autoload": {
535 | "psr-4": {
536 | "Padosoft\\Support\\": "src"
537 | },
538 | "files": [
539 | "src/array.php",
540 | "src/constants.php",
541 | "src/datetime.php",
542 | "src/helpers.php",
543 | "src/ip.php",
544 | "src/reflection.php",
545 | "src/sanitize.php",
546 | "src/string.php",
547 | "src/validation.php",
548 | "src/xml.php"
549 | ]
550 | },
551 | "notification-url": "https://packagist.org/downloads/",
552 | "license": [
553 | "MIT"
554 | ],
555 | "authors": [
556 | {
557 | "name": "Lorenzo Padovani",
558 | "email": "helpdesk@padosoft.com",
559 | "homepage": "https://www.padosoft.com",
560 | "role": "Developer"
561 | }
562 | ],
563 | "description": "agnostic helpers to use as foundation in packages and other project",
564 | "homepage": "https://github.com/padosoft/support",
565 | "keywords": [
566 | "helpers",
567 | "padosoft",
568 | "support"
569 | ],
570 | "time": "2018-04-18T07:55:26+00:00"
571 | },
572 | {
573 | "name": "paragonie/random_compat",
574 | "version": "v2.0.17",
575 | "source": {
576 | "type": "git",
577 | "url": "https://github.com/paragonie/random_compat.git",
578 | "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d"
579 | },
580 | "dist": {
581 | "type": "zip",
582 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d",
583 | "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d",
584 | "shasum": ""
585 | },
586 | "require": {
587 | "php": ">=5.2.0"
588 | },
589 | "require-dev": {
590 | "phpunit/phpunit": "4.*|5.*"
591 | },
592 | "suggest": {
593 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
594 | },
595 | "type": "library",
596 | "autoload": {
597 | "files": [
598 | "lib/random.php"
599 | ]
600 | },
601 | "notification-url": "https://packagist.org/downloads/",
602 | "license": [
603 | "MIT"
604 | ],
605 | "authors": [
606 | {
607 | "name": "Paragon Initiative Enterprises",
608 | "email": "security@paragonie.com",
609 | "homepage": "https://paragonie.com"
610 | }
611 | ],
612 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
613 | "keywords": [
614 | "csprng",
615 | "polyfill",
616 | "pseudorandom",
617 | "random"
618 | ],
619 | "time": "2018-07-04T16:31:37+00:00"
620 | },
621 | {
622 | "name": "psr/log",
623 | "version": "1.0.2",
624 | "source": {
625 | "type": "git",
626 | "url": "https://github.com/php-fig/log.git",
627 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
628 | },
629 | "dist": {
630 | "type": "zip",
631 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
632 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
633 | "shasum": ""
634 | },
635 | "require": {
636 | "php": ">=5.3.0"
637 | },
638 | "type": "library",
639 | "extra": {
640 | "branch-alias": {
641 | "dev-master": "1.0.x-dev"
642 | }
643 | },
644 | "autoload": {
645 | "psr-4": {
646 | "Psr\\Log\\": "Psr/Log/"
647 | }
648 | },
649 | "notification-url": "https://packagist.org/downloads/",
650 | "license": [
651 | "MIT"
652 | ],
653 | "authors": [
654 | {
655 | "name": "PHP-FIG",
656 | "homepage": "http://www.php-fig.org/"
657 | }
658 | ],
659 | "description": "Common interface for logging libraries",
660 | "homepage": "https://github.com/php-fig/log",
661 | "keywords": [
662 | "log",
663 | "psr",
664 | "psr-3"
665 | ],
666 | "time": "2016-10-10T12:19:37+00:00"
667 | },
668 | {
669 | "name": "ramsey/uuid",
670 | "version": "3.8.0",
671 | "source": {
672 | "type": "git",
673 | "url": "https://github.com/ramsey/uuid.git",
674 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3"
675 | },
676 | "dist": {
677 | "type": "zip",
678 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
679 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
680 | "shasum": ""
681 | },
682 | "require": {
683 | "paragonie/random_compat": "^1.0|^2.0|9.99.99",
684 | "php": "^5.4 || ^7.0",
685 | "symfony/polyfill-ctype": "^1.8"
686 | },
687 | "replace": {
688 | "rhumsaa/uuid": "self.version"
689 | },
690 | "require-dev": {
691 | "codeception/aspect-mock": "^1.0 | ~2.0.0",
692 | "doctrine/annotations": "~1.2.0",
693 | "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0",
694 | "ircmaxell/random-lib": "^1.1",
695 | "jakub-onderka/php-parallel-lint": "^0.9.0",
696 | "mockery/mockery": "^0.9.9",
697 | "moontoast/math": "^1.1",
698 | "php-mock/php-mock-phpunit": "^0.3|^1.1",
699 | "phpunit/phpunit": "^4.7|^5.0|^6.5",
700 | "squizlabs/php_codesniffer": "^2.3"
701 | },
702 | "suggest": {
703 | "ext-ctype": "Provides support for PHP Ctype functions",
704 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
705 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
706 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
707 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
708 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
709 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
710 | },
711 | "type": "library",
712 | "extra": {
713 | "branch-alias": {
714 | "dev-master": "3.x-dev"
715 | }
716 | },
717 | "autoload": {
718 | "psr-4": {
719 | "Ramsey\\Uuid\\": "src/"
720 | }
721 | },
722 | "notification-url": "https://packagist.org/downloads/",
723 | "license": [
724 | "MIT"
725 | ],
726 | "authors": [
727 | {
728 | "name": "Marijn Huizendveld",
729 | "email": "marijn.huizendveld@gmail.com"
730 | },
731 | {
732 | "name": "Thibaud Fabre",
733 | "email": "thibaud@aztech.io"
734 | },
735 | {
736 | "name": "Ben Ramsey",
737 | "email": "ben@benramsey.com",
738 | "homepage": "https://benramsey.com"
739 | }
740 | ],
741 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
742 | "homepage": "https://github.com/ramsey/uuid",
743 | "keywords": [
744 | "guid",
745 | "identifier",
746 | "uuid"
747 | ],
748 | "time": "2018-07-19T23:38:55+00:00"
749 | },
750 | {
751 | "name": "swiftmailer/swiftmailer",
752 | "version": "v5.4.12",
753 | "source": {
754 | "type": "git",
755 | "url": "https://github.com/swiftmailer/swiftmailer.git",
756 | "reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
757 | },
758 | "dist": {
759 | "type": "zip",
760 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
761 | "reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
762 | "shasum": ""
763 | },
764 | "require": {
765 | "php": ">=5.3.3"
766 | },
767 | "require-dev": {
768 | "mockery/mockery": "~0.9.1",
769 | "symfony/phpunit-bridge": "~3.2"
770 | },
771 | "type": "library",
772 | "extra": {
773 | "branch-alias": {
774 | "dev-master": "5.4-dev"
775 | }
776 | },
777 | "autoload": {
778 | "files": [
779 | "lib/swift_required.php"
780 | ]
781 | },
782 | "notification-url": "https://packagist.org/downloads/",
783 | "license": [
784 | "MIT"
785 | ],
786 | "authors": [
787 | {
788 | "name": "Chris Corbyn"
789 | },
790 | {
791 | "name": "Fabien Potencier",
792 | "email": "fabien@symfony.com"
793 | }
794 | ],
795 | "description": "Swiftmailer, free feature-rich PHP mailer",
796 | "homepage": "https://swiftmailer.symfony.com",
797 | "keywords": [
798 | "email",
799 | "mail",
800 | "mailer"
801 | ],
802 | "time": "2018-07-31T09:26:32+00:00"
803 | },
804 | {
805 | "name": "symfony/console",
806 | "version": "v3.4.14",
807 | "source": {
808 | "type": "git",
809 | "url": "https://github.com/symfony/console.git",
810 | "reference": "6b217594552b9323bcdcfc14f8a0ce126e84cd73"
811 | },
812 | "dist": {
813 | "type": "zip",
814 | "url": "https://api.github.com/repos/symfony/console/zipball/6b217594552b9323bcdcfc14f8a0ce126e84cd73",
815 | "reference": "6b217594552b9323bcdcfc14f8a0ce126e84cd73",
816 | "shasum": ""
817 | },
818 | "require": {
819 | "php": "^5.5.9|>=7.0.8",
820 | "symfony/debug": "~2.8|~3.0|~4.0",
821 | "symfony/polyfill-mbstring": "~1.0"
822 | },
823 | "conflict": {
824 | "symfony/dependency-injection": "<3.4",
825 | "symfony/process": "<3.3"
826 | },
827 | "require-dev": {
828 | "psr/log": "~1.0",
829 | "symfony/config": "~3.3|~4.0",
830 | "symfony/dependency-injection": "~3.4|~4.0",
831 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
832 | "symfony/lock": "~3.4|~4.0",
833 | "symfony/process": "~3.3|~4.0"
834 | },
835 | "suggest": {
836 | "psr/log-implementation": "For using the console logger",
837 | "symfony/event-dispatcher": "",
838 | "symfony/lock": "",
839 | "symfony/process": ""
840 | },
841 | "type": "library",
842 | "extra": {
843 | "branch-alias": {
844 | "dev-master": "3.4-dev"
845 | }
846 | },
847 | "autoload": {
848 | "psr-4": {
849 | "Symfony\\Component\\Console\\": ""
850 | },
851 | "exclude-from-classmap": [
852 | "/Tests/"
853 | ]
854 | },
855 | "notification-url": "https://packagist.org/downloads/",
856 | "license": [
857 | "MIT"
858 | ],
859 | "authors": [
860 | {
861 | "name": "Fabien Potencier",
862 | "email": "fabien@symfony.com"
863 | },
864 | {
865 | "name": "Symfony Community",
866 | "homepage": "https://symfony.com/contributors"
867 | }
868 | ],
869 | "description": "Symfony Console Component",
870 | "homepage": "https://symfony.com",
871 | "time": "2018-07-26T11:19:56+00:00"
872 | },
873 | {
874 | "name": "symfony/css-selector",
875 | "version": "v4.1.3",
876 | "source": {
877 | "type": "git",
878 | "url": "https://github.com/symfony/css-selector.git",
879 | "reference": "2a4df7618f869b456f9096781e78c57b509d76c7"
880 | },
881 | "dist": {
882 | "type": "zip",
883 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/2a4df7618f869b456f9096781e78c57b509d76c7",
884 | "reference": "2a4df7618f869b456f9096781e78c57b509d76c7",
885 | "shasum": ""
886 | },
887 | "require": {
888 | "php": "^7.1.3"
889 | },
890 | "type": "library",
891 | "extra": {
892 | "branch-alias": {
893 | "dev-master": "4.1-dev"
894 | }
895 | },
896 | "autoload": {
897 | "psr-4": {
898 | "Symfony\\Component\\CssSelector\\": ""
899 | },
900 | "exclude-from-classmap": [
901 | "/Tests/"
902 | ]
903 | },
904 | "notification-url": "https://packagist.org/downloads/",
905 | "license": [
906 | "MIT"
907 | ],
908 | "authors": [
909 | {
910 | "name": "Jean-François Simon",
911 | "email": "jeanfrancois.simon@sensiolabs.com"
912 | },
913 | {
914 | "name": "Fabien Potencier",
915 | "email": "fabien@symfony.com"
916 | },
917 | {
918 | "name": "Symfony Community",
919 | "homepage": "https://symfony.com/contributors"
920 | }
921 | ],
922 | "description": "Symfony CssSelector Component",
923 | "homepage": "https://symfony.com",
924 | "time": "2018-07-26T09:10:45+00:00"
925 | },
926 | {
927 | "name": "symfony/debug",
928 | "version": "v3.4.14",
929 | "source": {
930 | "type": "git",
931 | "url": "https://github.com/symfony/debug.git",
932 | "reference": "d5a058ff6ecad26b30c1ba452241306ea34c65cc"
933 | },
934 | "dist": {
935 | "type": "zip",
936 | "url": "https://api.github.com/repos/symfony/debug/zipball/d5a058ff6ecad26b30c1ba452241306ea34c65cc",
937 | "reference": "d5a058ff6ecad26b30c1ba452241306ea34c65cc",
938 | "shasum": ""
939 | },
940 | "require": {
941 | "php": "^5.5.9|>=7.0.8",
942 | "psr/log": "~1.0"
943 | },
944 | "conflict": {
945 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
946 | },
947 | "require-dev": {
948 | "symfony/http-kernel": "~2.8|~3.0|~4.0"
949 | },
950 | "type": "library",
951 | "extra": {
952 | "branch-alias": {
953 | "dev-master": "3.4-dev"
954 | }
955 | },
956 | "autoload": {
957 | "psr-4": {
958 | "Symfony\\Component\\Debug\\": ""
959 | },
960 | "exclude-from-classmap": [
961 | "/Tests/"
962 | ]
963 | },
964 | "notification-url": "https://packagist.org/downloads/",
965 | "license": [
966 | "MIT"
967 | ],
968 | "authors": [
969 | {
970 | "name": "Fabien Potencier",
971 | "email": "fabien@symfony.com"
972 | },
973 | {
974 | "name": "Symfony Community",
975 | "homepage": "https://symfony.com/contributors"
976 | }
977 | ],
978 | "description": "Symfony Debug Component",
979 | "homepage": "https://symfony.com",
980 | "time": "2018-07-26T11:19:56+00:00"
981 | },
982 | {
983 | "name": "symfony/event-dispatcher",
984 | "version": "v4.1.3",
985 | "source": {
986 | "type": "git",
987 | "url": "https://github.com/symfony/event-dispatcher.git",
988 | "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e"
989 | },
990 | "dist": {
991 | "type": "zip",
992 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bfb30c2ad377615a463ebbc875eba64a99f6aa3e",
993 | "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e",
994 | "shasum": ""
995 | },
996 | "require": {
997 | "php": "^7.1.3"
998 | },
999 | "conflict": {
1000 | "symfony/dependency-injection": "<3.4"
1001 | },
1002 | "require-dev": {
1003 | "psr/log": "~1.0",
1004 | "symfony/config": "~3.4|~4.0",
1005 | "symfony/dependency-injection": "~3.4|~4.0",
1006 | "symfony/expression-language": "~3.4|~4.0",
1007 | "symfony/stopwatch": "~3.4|~4.0"
1008 | },
1009 | "suggest": {
1010 | "symfony/dependency-injection": "",
1011 | "symfony/http-kernel": ""
1012 | },
1013 | "type": "library",
1014 | "extra": {
1015 | "branch-alias": {
1016 | "dev-master": "4.1-dev"
1017 | }
1018 | },
1019 | "autoload": {
1020 | "psr-4": {
1021 | "Symfony\\Component\\EventDispatcher\\": ""
1022 | },
1023 | "exclude-from-classmap": [
1024 | "/Tests/"
1025 | ]
1026 | },
1027 | "notification-url": "https://packagist.org/downloads/",
1028 | "license": [
1029 | "MIT"
1030 | ],
1031 | "authors": [
1032 | {
1033 | "name": "Fabien Potencier",
1034 | "email": "fabien@symfony.com"
1035 | },
1036 | {
1037 | "name": "Symfony Community",
1038 | "homepage": "https://symfony.com/contributors"
1039 | }
1040 | ],
1041 | "description": "Symfony EventDispatcher Component",
1042 | "homepage": "https://symfony.com",
1043 | "time": "2018-07-26T09:10:45+00:00"
1044 | },
1045 | {
1046 | "name": "symfony/finder",
1047 | "version": "v3.4.14",
1048 | "source": {
1049 | "type": "git",
1050 | "url": "https://github.com/symfony/finder.git",
1051 | "reference": "8a84fcb207451df0013b2c74cbbf1b62d47b999a"
1052 | },
1053 | "dist": {
1054 | "type": "zip",
1055 | "url": "https://api.github.com/repos/symfony/finder/zipball/8a84fcb207451df0013b2c74cbbf1b62d47b999a",
1056 | "reference": "8a84fcb207451df0013b2c74cbbf1b62d47b999a",
1057 | "shasum": ""
1058 | },
1059 | "require": {
1060 | "php": "^5.5.9|>=7.0.8"
1061 | },
1062 | "type": "library",
1063 | "extra": {
1064 | "branch-alias": {
1065 | "dev-master": "3.4-dev"
1066 | }
1067 | },
1068 | "autoload": {
1069 | "psr-4": {
1070 | "Symfony\\Component\\Finder\\": ""
1071 | },
1072 | "exclude-from-classmap": [
1073 | "/Tests/"
1074 | ]
1075 | },
1076 | "notification-url": "https://packagist.org/downloads/",
1077 | "license": [
1078 | "MIT"
1079 | ],
1080 | "authors": [
1081 | {
1082 | "name": "Fabien Potencier",
1083 | "email": "fabien@symfony.com"
1084 | },
1085 | {
1086 | "name": "Symfony Community",
1087 | "homepage": "https://symfony.com/contributors"
1088 | }
1089 | ],
1090 | "description": "Symfony Finder Component",
1091 | "homepage": "https://symfony.com",
1092 | "time": "2018-07-26T11:19:56+00:00"
1093 | },
1094 | {
1095 | "name": "symfony/http-foundation",
1096 | "version": "v3.4.14",
1097 | "source": {
1098 | "type": "git",
1099 | "url": "https://github.com/symfony/http-foundation.git",
1100 | "reference": "19a3267828046a2a4a05e3dc2954bbd2e0ad9fa6"
1101 | },
1102 | "dist": {
1103 | "type": "zip",
1104 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/19a3267828046a2a4a05e3dc2954bbd2e0ad9fa6",
1105 | "reference": "19a3267828046a2a4a05e3dc2954bbd2e0ad9fa6",
1106 | "shasum": ""
1107 | },
1108 | "require": {
1109 | "php": "^5.5.9|>=7.0.8",
1110 | "symfony/polyfill-mbstring": "~1.1",
1111 | "symfony/polyfill-php70": "~1.6"
1112 | },
1113 | "require-dev": {
1114 | "symfony/expression-language": "~2.8|~3.0|~4.0"
1115 | },
1116 | "type": "library",
1117 | "extra": {
1118 | "branch-alias": {
1119 | "dev-master": "3.4-dev"
1120 | }
1121 | },
1122 | "autoload": {
1123 | "psr-4": {
1124 | "Symfony\\Component\\HttpFoundation\\": ""
1125 | },
1126 | "exclude-from-classmap": [
1127 | "/Tests/"
1128 | ]
1129 | },
1130 | "notification-url": "https://packagist.org/downloads/",
1131 | "license": [
1132 | "MIT"
1133 | ],
1134 | "authors": [
1135 | {
1136 | "name": "Fabien Potencier",
1137 | "email": "fabien@symfony.com"
1138 | },
1139 | {
1140 | "name": "Symfony Community",
1141 | "homepage": "https://symfony.com/contributors"
1142 | }
1143 | ],
1144 | "description": "Symfony HttpFoundation Component",
1145 | "homepage": "https://symfony.com",
1146 | "time": "2018-08-01T14:04:26+00:00"
1147 | },
1148 | {
1149 | "name": "symfony/http-kernel",
1150 | "version": "v3.4.14",
1151 | "source": {
1152 | "type": "git",
1153 | "url": "https://github.com/symfony/http-kernel.git",
1154 | "reference": "8e84cc498f0ffecfbabdea78b87828fd66189544"
1155 | },
1156 | "dist": {
1157 | "type": "zip",
1158 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8e84cc498f0ffecfbabdea78b87828fd66189544",
1159 | "reference": "8e84cc498f0ffecfbabdea78b87828fd66189544",
1160 | "shasum": ""
1161 | },
1162 | "require": {
1163 | "php": "^5.5.9|>=7.0.8",
1164 | "psr/log": "~1.0",
1165 | "symfony/debug": "~2.8|~3.0|~4.0",
1166 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
1167 | "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1",
1168 | "symfony/polyfill-ctype": "~1.8"
1169 | },
1170 | "conflict": {
1171 | "symfony/config": "<2.8",
1172 | "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4",
1173 | "symfony/var-dumper": "<3.3",
1174 | "twig/twig": "<1.34|<2.4,>=2"
1175 | },
1176 | "provide": {
1177 | "psr/log-implementation": "1.0"
1178 | },
1179 | "require-dev": {
1180 | "psr/cache": "~1.0",
1181 | "symfony/browser-kit": "~2.8|~3.0|~4.0",
1182 | "symfony/class-loader": "~2.8|~3.0",
1183 | "symfony/config": "~2.8|~3.0|~4.0",
1184 | "symfony/console": "~2.8|~3.0|~4.0",
1185 | "symfony/css-selector": "~2.8|~3.0|~4.0",
1186 | "symfony/dependency-injection": "^3.4.10|^4.0.10",
1187 | "symfony/dom-crawler": "~2.8|~3.0|~4.0",
1188 | "symfony/expression-language": "~2.8|~3.0|~4.0",
1189 | "symfony/finder": "~2.8|~3.0|~4.0",
1190 | "symfony/process": "~2.8|~3.0|~4.0",
1191 | "symfony/routing": "~3.4|~4.0",
1192 | "symfony/stopwatch": "~2.8|~3.0|~4.0",
1193 | "symfony/templating": "~2.8|~3.0|~4.0",
1194 | "symfony/translation": "~2.8|~3.0|~4.0",
1195 | "symfony/var-dumper": "~3.3|~4.0"
1196 | },
1197 | "suggest": {
1198 | "symfony/browser-kit": "",
1199 | "symfony/config": "",
1200 | "symfony/console": "",
1201 | "symfony/dependency-injection": "",
1202 | "symfony/finder": "",
1203 | "symfony/var-dumper": ""
1204 | },
1205 | "type": "library",
1206 | "extra": {
1207 | "branch-alias": {
1208 | "dev-master": "3.4-dev"
1209 | }
1210 | },
1211 | "autoload": {
1212 | "psr-4": {
1213 | "Symfony\\Component\\HttpKernel\\": ""
1214 | },
1215 | "exclude-from-classmap": [
1216 | "/Tests/"
1217 | ]
1218 | },
1219 | "notification-url": "https://packagist.org/downloads/",
1220 | "license": [
1221 | "MIT"
1222 | ],
1223 | "authors": [
1224 | {
1225 | "name": "Fabien Potencier",
1226 | "email": "fabien@symfony.com"
1227 | },
1228 | {
1229 | "name": "Symfony Community",
1230 | "homepage": "https://symfony.com/contributors"
1231 | }
1232 | ],
1233 | "description": "Symfony HttpKernel Component",
1234 | "homepage": "https://symfony.com",
1235 | "time": "2018-08-01T14:47:47+00:00"
1236 | },
1237 | {
1238 | "name": "symfony/polyfill-ctype",
1239 | "version": "v1.8.0",
1240 | "source": {
1241 | "type": "git",
1242 | "url": "https://github.com/symfony/polyfill-ctype.git",
1243 | "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae"
1244 | },
1245 | "dist": {
1246 | "type": "zip",
1247 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
1248 | "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae",
1249 | "shasum": ""
1250 | },
1251 | "require": {
1252 | "php": ">=5.3.3"
1253 | },
1254 | "type": "library",
1255 | "extra": {
1256 | "branch-alias": {
1257 | "dev-master": "1.8-dev"
1258 | }
1259 | },
1260 | "autoload": {
1261 | "psr-4": {
1262 | "Symfony\\Polyfill\\Ctype\\": ""
1263 | },
1264 | "files": [
1265 | "bootstrap.php"
1266 | ]
1267 | },
1268 | "notification-url": "https://packagist.org/downloads/",
1269 | "license": [
1270 | "MIT"
1271 | ],
1272 | "authors": [
1273 | {
1274 | "name": "Symfony Community",
1275 | "homepage": "https://symfony.com/contributors"
1276 | },
1277 | {
1278 | "name": "Gert de Pagter",
1279 | "email": "BackEndTea@gmail.com"
1280 | }
1281 | ],
1282 | "description": "Symfony polyfill for ctype functions",
1283 | "homepage": "https://symfony.com",
1284 | "keywords": [
1285 | "compatibility",
1286 | "ctype",
1287 | "polyfill",
1288 | "portable"
1289 | ],
1290 | "time": "2018-04-30T19:57:29+00:00"
1291 | },
1292 | {
1293 | "name": "symfony/polyfill-mbstring",
1294 | "version": "v1.8.0",
1295 | "source": {
1296 | "type": "git",
1297 | "url": "https://github.com/symfony/polyfill-mbstring.git",
1298 | "reference": "3296adf6a6454a050679cde90f95350ad604b171"
1299 | },
1300 | "dist": {
1301 | "type": "zip",
1302 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
1303 | "reference": "3296adf6a6454a050679cde90f95350ad604b171",
1304 | "shasum": ""
1305 | },
1306 | "require": {
1307 | "php": ">=5.3.3"
1308 | },
1309 | "suggest": {
1310 | "ext-mbstring": "For best performance"
1311 | },
1312 | "type": "library",
1313 | "extra": {
1314 | "branch-alias": {
1315 | "dev-master": "1.8-dev"
1316 | }
1317 | },
1318 | "autoload": {
1319 | "psr-4": {
1320 | "Symfony\\Polyfill\\Mbstring\\": ""
1321 | },
1322 | "files": [
1323 | "bootstrap.php"
1324 | ]
1325 | },
1326 | "notification-url": "https://packagist.org/downloads/",
1327 | "license": [
1328 | "MIT"
1329 | ],
1330 | "authors": [
1331 | {
1332 | "name": "Nicolas Grekas",
1333 | "email": "p@tchwork.com"
1334 | },
1335 | {
1336 | "name": "Symfony Community",
1337 | "homepage": "https://symfony.com/contributors"
1338 | }
1339 | ],
1340 | "description": "Symfony polyfill for the Mbstring extension",
1341 | "homepage": "https://symfony.com",
1342 | "keywords": [
1343 | "compatibility",
1344 | "mbstring",
1345 | "polyfill",
1346 | "portable",
1347 | "shim"
1348 | ],
1349 | "time": "2018-04-26T10:06:28+00:00"
1350 | },
1351 | {
1352 | "name": "symfony/polyfill-php70",
1353 | "version": "v1.8.0",
1354 | "source": {
1355 | "type": "git",
1356 | "url": "https://github.com/symfony/polyfill-php70.git",
1357 | "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6"
1358 | },
1359 | "dist": {
1360 | "type": "zip",
1361 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6",
1362 | "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6",
1363 | "shasum": ""
1364 | },
1365 | "require": {
1366 | "paragonie/random_compat": "~1.0|~2.0",
1367 | "php": ">=5.3.3"
1368 | },
1369 | "type": "library",
1370 | "extra": {
1371 | "branch-alias": {
1372 | "dev-master": "1.8-dev"
1373 | }
1374 | },
1375 | "autoload": {
1376 | "psr-4": {
1377 | "Symfony\\Polyfill\\Php70\\": ""
1378 | },
1379 | "files": [
1380 | "bootstrap.php"
1381 | ],
1382 | "classmap": [
1383 | "Resources/stubs"
1384 | ]
1385 | },
1386 | "notification-url": "https://packagist.org/downloads/",
1387 | "license": [
1388 | "MIT"
1389 | ],
1390 | "authors": [
1391 | {
1392 | "name": "Nicolas Grekas",
1393 | "email": "p@tchwork.com"
1394 | },
1395 | {
1396 | "name": "Symfony Community",
1397 | "homepage": "https://symfony.com/contributors"
1398 | }
1399 | ],
1400 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
1401 | "homepage": "https://symfony.com",
1402 | "keywords": [
1403 | "compatibility",
1404 | "polyfill",
1405 | "portable",
1406 | "shim"
1407 | ],
1408 | "time": "2018-04-26T10:06:28+00:00"
1409 | },
1410 | {
1411 | "name": "symfony/process",
1412 | "version": "v3.4.14",
1413 | "source": {
1414 | "type": "git",
1415 | "url": "https://github.com/symfony/process.git",
1416 | "reference": "0414db29bd770ec5a4152683e655f55efd4fa60f"
1417 | },
1418 | "dist": {
1419 | "type": "zip",
1420 | "url": "https://api.github.com/repos/symfony/process/zipball/0414db29bd770ec5a4152683e655f55efd4fa60f",
1421 | "reference": "0414db29bd770ec5a4152683e655f55efd4fa60f",
1422 | "shasum": ""
1423 | },
1424 | "require": {
1425 | "php": "^5.5.9|>=7.0.8"
1426 | },
1427 | "type": "library",
1428 | "extra": {
1429 | "branch-alias": {
1430 | "dev-master": "3.4-dev"
1431 | }
1432 | },
1433 | "autoload": {
1434 | "psr-4": {
1435 | "Symfony\\Component\\Process\\": ""
1436 | },
1437 | "exclude-from-classmap": [
1438 | "/Tests/"
1439 | ]
1440 | },
1441 | "notification-url": "https://packagist.org/downloads/",
1442 | "license": [
1443 | "MIT"
1444 | ],
1445 | "authors": [
1446 | {
1447 | "name": "Fabien Potencier",
1448 | "email": "fabien@symfony.com"
1449 | },
1450 | {
1451 | "name": "Symfony Community",
1452 | "homepage": "https://symfony.com/contributors"
1453 | }
1454 | ],
1455 | "description": "Symfony Process Component",
1456 | "homepage": "https://symfony.com",
1457 | "time": "2018-07-26T11:19:56+00:00"
1458 | },
1459 | {
1460 | "name": "symfony/routing",
1461 | "version": "v3.4.14",
1462 | "source": {
1463 | "type": "git",
1464 | "url": "https://github.com/symfony/routing.git",
1465 | "reference": "e20f4bb79502c3c0db86d572f7683a30d4143911"
1466 | },
1467 | "dist": {
1468 | "type": "zip",
1469 | "url": "https://api.github.com/repos/symfony/routing/zipball/e20f4bb79502c3c0db86d572f7683a30d4143911",
1470 | "reference": "e20f4bb79502c3c0db86d572f7683a30d4143911",
1471 | "shasum": ""
1472 | },
1473 | "require": {
1474 | "php": "^5.5.9|>=7.0.8"
1475 | },
1476 | "conflict": {
1477 | "symfony/config": "<3.3.1",
1478 | "symfony/dependency-injection": "<3.3",
1479 | "symfony/yaml": "<3.4"
1480 | },
1481 | "require-dev": {
1482 | "doctrine/annotations": "~1.0",
1483 | "psr/log": "~1.0",
1484 | "symfony/config": "^3.3.1|~4.0",
1485 | "symfony/dependency-injection": "~3.3|~4.0",
1486 | "symfony/expression-language": "~2.8|~3.0|~4.0",
1487 | "symfony/http-foundation": "~2.8|~3.0|~4.0",
1488 | "symfony/yaml": "~3.4|~4.0"
1489 | },
1490 | "suggest": {
1491 | "doctrine/annotations": "For using the annotation loader",
1492 | "symfony/config": "For using the all-in-one router or any loader",
1493 | "symfony/dependency-injection": "For loading routes from a service",
1494 | "symfony/expression-language": "For using expression matching",
1495 | "symfony/http-foundation": "For using a Symfony Request object",
1496 | "symfony/yaml": "For using the YAML loader"
1497 | },
1498 | "type": "library",
1499 | "extra": {
1500 | "branch-alias": {
1501 | "dev-master": "3.4-dev"
1502 | }
1503 | },
1504 | "autoload": {
1505 | "psr-4": {
1506 | "Symfony\\Component\\Routing\\": ""
1507 | },
1508 | "exclude-from-classmap": [
1509 | "/Tests/"
1510 | ]
1511 | },
1512 | "notification-url": "https://packagist.org/downloads/",
1513 | "license": [
1514 | "MIT"
1515 | ],
1516 | "authors": [
1517 | {
1518 | "name": "Fabien Potencier",
1519 | "email": "fabien@symfony.com"
1520 | },
1521 | {
1522 | "name": "Symfony Community",
1523 | "homepage": "https://symfony.com/contributors"
1524 | }
1525 | ],
1526 | "description": "Symfony Routing Component",
1527 | "homepage": "https://symfony.com",
1528 | "keywords": [
1529 | "router",
1530 | "routing",
1531 | "uri",
1532 | "url"
1533 | ],
1534 | "time": "2018-07-26T11:19:56+00:00"
1535 | },
1536 | {
1537 | "name": "symfony/translation",
1538 | "version": "v4.1.3",
1539 | "source": {
1540 | "type": "git",
1541 | "url": "https://github.com/symfony/translation.git",
1542 | "reference": "6fcd1bd44fd6d7181e6ea57a6f4e08a09b29ef65"
1543 | },
1544 | "dist": {
1545 | "type": "zip",
1546 | "url": "https://api.github.com/repos/symfony/translation/zipball/6fcd1bd44fd6d7181e6ea57a6f4e08a09b29ef65",
1547 | "reference": "6fcd1bd44fd6d7181e6ea57a6f4e08a09b29ef65",
1548 | "shasum": ""
1549 | },
1550 | "require": {
1551 | "php": "^7.1.3",
1552 | "symfony/polyfill-mbstring": "~1.0"
1553 | },
1554 | "conflict": {
1555 | "symfony/config": "<3.4",
1556 | "symfony/dependency-injection": "<3.4",
1557 | "symfony/yaml": "<3.4"
1558 | },
1559 | "require-dev": {
1560 | "psr/log": "~1.0",
1561 | "symfony/config": "~3.4|~4.0",
1562 | "symfony/console": "~3.4|~4.0",
1563 | "symfony/dependency-injection": "~3.4|~4.0",
1564 | "symfony/finder": "~2.8|~3.0|~4.0",
1565 | "symfony/intl": "~3.4|~4.0",
1566 | "symfony/yaml": "~3.4|~4.0"
1567 | },
1568 | "suggest": {
1569 | "psr/log-implementation": "To use logging capability in translator",
1570 | "symfony/config": "",
1571 | "symfony/yaml": ""
1572 | },
1573 | "type": "library",
1574 | "extra": {
1575 | "branch-alias": {
1576 | "dev-master": "4.1-dev"
1577 | }
1578 | },
1579 | "autoload": {
1580 | "psr-4": {
1581 | "Symfony\\Component\\Translation\\": ""
1582 | },
1583 | "exclude-from-classmap": [
1584 | "/Tests/"
1585 | ]
1586 | },
1587 | "notification-url": "https://packagist.org/downloads/",
1588 | "license": [
1589 | "MIT"
1590 | ],
1591 | "authors": [
1592 | {
1593 | "name": "Fabien Potencier",
1594 | "email": "fabien@symfony.com"
1595 | },
1596 | {
1597 | "name": "Symfony Community",
1598 | "homepage": "https://symfony.com/contributors"
1599 | }
1600 | ],
1601 | "description": "Symfony Translation Component",
1602 | "homepage": "https://symfony.com",
1603 | "time": "2018-07-26T11:24:31+00:00"
1604 | },
1605 | {
1606 | "name": "symfony/var-dumper",
1607 | "version": "v3.4.14",
1608 | "source": {
1609 | "type": "git",
1610 | "url": "https://github.com/symfony/var-dumper.git",
1611 | "reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3"
1612 | },
1613 | "dist": {
1614 | "type": "zip",
1615 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f62a394bd3de96f2f5e8f4c7d685035897fb3cb3",
1616 | "reference": "f62a394bd3de96f2f5e8f4c7d685035897fb3cb3",
1617 | "shasum": ""
1618 | },
1619 | "require": {
1620 | "php": "^5.5.9|>=7.0.8",
1621 | "symfony/polyfill-mbstring": "~1.0"
1622 | },
1623 | "conflict": {
1624 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
1625 | },
1626 | "require-dev": {
1627 | "ext-iconv": "*",
1628 | "twig/twig": "~1.34|~2.4"
1629 | },
1630 | "suggest": {
1631 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
1632 | "ext-intl": "To show region name in time zone dump",
1633 | "ext-symfony_debug": ""
1634 | },
1635 | "type": "library",
1636 | "extra": {
1637 | "branch-alias": {
1638 | "dev-master": "3.4-dev"
1639 | }
1640 | },
1641 | "autoload": {
1642 | "files": [
1643 | "Resources/functions/dump.php"
1644 | ],
1645 | "psr-4": {
1646 | "Symfony\\Component\\VarDumper\\": ""
1647 | },
1648 | "exclude-from-classmap": [
1649 | "/Tests/"
1650 | ]
1651 | },
1652 | "notification-url": "https://packagist.org/downloads/",
1653 | "license": [
1654 | "MIT"
1655 | ],
1656 | "authors": [
1657 | {
1658 | "name": "Nicolas Grekas",
1659 | "email": "p@tchwork.com"
1660 | },
1661 | {
1662 | "name": "Symfony Community",
1663 | "homepage": "https://symfony.com/contributors"
1664 | }
1665 | ],
1666 | "description": "Symfony mechanism for exploring and dumping PHP variables",
1667 | "homepage": "https://symfony.com",
1668 | "keywords": [
1669 | "debug",
1670 | "dump"
1671 | ],
1672 | "time": "2018-07-26T11:19:56+00:00"
1673 | },
1674 | {
1675 | "name": "tightenco/mailthief",
1676 | "version": "v0.3.14",
1677 | "source": {
1678 | "type": "git",
1679 | "url": "https://github.com/tightenco/mailthief.git",
1680 | "reference": "9a8c2443be2b3d77753596f70ae6cd879b5b26a6"
1681 | },
1682 | "dist": {
1683 | "type": "zip",
1684 | "url": "https://api.github.com/repos/tightenco/mailthief/zipball/9a8c2443be2b3d77753596f70ae6cd879b5b26a6",
1685 | "reference": "9a8c2443be2b3d77753596f70ae6cd879b5b26a6",
1686 | "shasum": ""
1687 | },
1688 | "require": {
1689 | "illuminate/mail": "5.*",
1690 | "illuminate/view": "5.*"
1691 | },
1692 | "require-dev": {
1693 | "laravel/framework": ">=5.0 <5.5",
1694 | "mockery/mockery": "^0.9.5",
1695 | "phpunit/phpunit": "^5.5"
1696 | },
1697 | "type": "library",
1698 | "autoload": {
1699 | "psr-4": {
1700 | "MailThief\\": "src/"
1701 | }
1702 | },
1703 | "notification-url": "https://packagist.org/downloads/",
1704 | "license": [
1705 | "MIT"
1706 | ],
1707 | "authors": [
1708 | {
1709 | "name": "Adam Wathan",
1710 | "email": "adam.wathan@gmail.com"
1711 | }
1712 | ],
1713 | "description": "A fake Mailer for Laravel applications that takes the pain out of testing mail.",
1714 | "time": "2018-02-10T04:17:52+00:00"
1715 | },
1716 | {
1717 | "name": "tijsverkoyen/css-to-inline-styles",
1718 | "version": "2.2.1",
1719 | "source": {
1720 | "type": "git",
1721 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
1722 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757"
1723 | },
1724 | "dist": {
1725 | "type": "zip",
1726 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
1727 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
1728 | "shasum": ""
1729 | },
1730 | "require": {
1731 | "php": "^5.5 || ^7.0",
1732 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0"
1733 | },
1734 | "require-dev": {
1735 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1736 | },
1737 | "type": "library",
1738 | "extra": {
1739 | "branch-alias": {
1740 | "dev-master": "2.2.x-dev"
1741 | }
1742 | },
1743 | "autoload": {
1744 | "psr-4": {
1745 | "TijsVerkoyen\\CssToInlineStyles\\": "src"
1746 | }
1747 | },
1748 | "notification-url": "https://packagist.org/downloads/",
1749 | "license": [
1750 | "BSD-3-Clause"
1751 | ],
1752 | "authors": [
1753 | {
1754 | "name": "Tijs Verkoyen",
1755 | "email": "css_to_inline_styles@verkoyen.eu",
1756 | "role": "Developer"
1757 | }
1758 | ],
1759 | "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
1760 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
1761 | "time": "2017-11-27T11:13:29+00:00"
1762 | },
1763 | {
1764 | "name": "vlucas/phpdotenv",
1765 | "version": "v2.5.1",
1766 | "source": {
1767 | "type": "git",
1768 | "url": "https://github.com/vlucas/phpdotenv.git",
1769 | "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e"
1770 | },
1771 | "dist": {
1772 | "type": "zip",
1773 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e",
1774 | "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e",
1775 | "shasum": ""
1776 | },
1777 | "require": {
1778 | "php": ">=5.3.9"
1779 | },
1780 | "require-dev": {
1781 | "phpunit/phpunit": "^4.8.35 || ^5.0"
1782 | },
1783 | "type": "library",
1784 | "extra": {
1785 | "branch-alias": {
1786 | "dev-master": "2.5-dev"
1787 | }
1788 | },
1789 | "autoload": {
1790 | "psr-4": {
1791 | "Dotenv\\": "src/"
1792 | }
1793 | },
1794 | "notification-url": "https://packagist.org/downloads/",
1795 | "license": [
1796 | "BSD-3-Clause"
1797 | ],
1798 | "authors": [
1799 | {
1800 | "name": "Vance Lucas",
1801 | "email": "vance@vancelucas.com",
1802 | "homepage": "http://www.vancelucas.com"
1803 | }
1804 | ],
1805 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
1806 | "keywords": [
1807 | "dotenv",
1808 | "env",
1809 | "environment"
1810 | ],
1811 | "time": "2018-07-29T20:33:41+00:00"
1812 | }
1813 | ],
1814 | "packages-dev": [
1815 | {
1816 | "name": "doctrine/instantiator",
1817 | "version": "1.1.0",
1818 | "source": {
1819 | "type": "git",
1820 | "url": "https://github.com/doctrine/instantiator.git",
1821 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
1822 | },
1823 | "dist": {
1824 | "type": "zip",
1825 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
1826 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
1827 | "shasum": ""
1828 | },
1829 | "require": {
1830 | "php": "^7.1"
1831 | },
1832 | "require-dev": {
1833 | "athletic/athletic": "~0.1.8",
1834 | "ext-pdo": "*",
1835 | "ext-phar": "*",
1836 | "phpunit/phpunit": "^6.2.3",
1837 | "squizlabs/php_codesniffer": "^3.0.2"
1838 | },
1839 | "type": "library",
1840 | "extra": {
1841 | "branch-alias": {
1842 | "dev-master": "1.2.x-dev"
1843 | }
1844 | },
1845 | "autoload": {
1846 | "psr-4": {
1847 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
1848 | }
1849 | },
1850 | "notification-url": "https://packagist.org/downloads/",
1851 | "license": [
1852 | "MIT"
1853 | ],
1854 | "authors": [
1855 | {
1856 | "name": "Marco Pivetta",
1857 | "email": "ocramius@gmail.com",
1858 | "homepage": "http://ocramius.github.com/"
1859 | }
1860 | ],
1861 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
1862 | "homepage": "https://github.com/doctrine/instantiator",
1863 | "keywords": [
1864 | "constructor",
1865 | "instantiate"
1866 | ],
1867 | "time": "2017-07-22T11:58:36+00:00"
1868 | },
1869 | {
1870 | "name": "fzaninotto/faker",
1871 | "version": "v1.8.0",
1872 | "source": {
1873 | "type": "git",
1874 | "url": "https://github.com/fzaninotto/Faker.git",
1875 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de"
1876 | },
1877 | "dist": {
1878 | "type": "zip",
1879 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de",
1880 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de",
1881 | "shasum": ""
1882 | },
1883 | "require": {
1884 | "php": "^5.3.3 || ^7.0"
1885 | },
1886 | "require-dev": {
1887 | "ext-intl": "*",
1888 | "phpunit/phpunit": "^4.8.35 || ^5.7",
1889 | "squizlabs/php_codesniffer": "^1.5"
1890 | },
1891 | "type": "library",
1892 | "extra": {
1893 | "branch-alias": {
1894 | "dev-master": "1.8-dev"
1895 | }
1896 | },
1897 | "autoload": {
1898 | "psr-4": {
1899 | "Faker\\": "src/Faker/"
1900 | }
1901 | },
1902 | "notification-url": "https://packagist.org/downloads/",
1903 | "license": [
1904 | "MIT"
1905 | ],
1906 | "authors": [
1907 | {
1908 | "name": "François Zaninotto"
1909 | }
1910 | ],
1911 | "description": "Faker is a PHP library that generates fake data for you.",
1912 | "keywords": [
1913 | "data",
1914 | "faker",
1915 | "fixtures"
1916 | ],
1917 | "time": "2018-07-12T10:23:15+00:00"
1918 | },
1919 | {
1920 | "name": "guzzlehttp/guzzle",
1921 | "version": "6.3.3",
1922 | "source": {
1923 | "type": "git",
1924 | "url": "https://github.com/guzzle/guzzle.git",
1925 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
1926 | },
1927 | "dist": {
1928 | "type": "zip",
1929 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
1930 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
1931 | "shasum": ""
1932 | },
1933 | "require": {
1934 | "guzzlehttp/promises": "^1.0",
1935 | "guzzlehttp/psr7": "^1.4",
1936 | "php": ">=5.5"
1937 | },
1938 | "require-dev": {
1939 | "ext-curl": "*",
1940 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
1941 | "psr/log": "^1.0"
1942 | },
1943 | "suggest": {
1944 | "psr/log": "Required for using the Log middleware"
1945 | },
1946 | "type": "library",
1947 | "extra": {
1948 | "branch-alias": {
1949 | "dev-master": "6.3-dev"
1950 | }
1951 | },
1952 | "autoload": {
1953 | "files": [
1954 | "src/functions_include.php"
1955 | ],
1956 | "psr-4": {
1957 | "GuzzleHttp\\": "src/"
1958 | }
1959 | },
1960 | "notification-url": "https://packagist.org/downloads/",
1961 | "license": [
1962 | "MIT"
1963 | ],
1964 | "authors": [
1965 | {
1966 | "name": "Michael Dowling",
1967 | "email": "mtdowling@gmail.com",
1968 | "homepage": "https://github.com/mtdowling"
1969 | }
1970 | ],
1971 | "description": "Guzzle is a PHP HTTP client library",
1972 | "homepage": "http://guzzlephp.org/",
1973 | "keywords": [
1974 | "client",
1975 | "curl",
1976 | "framework",
1977 | "http",
1978 | "http client",
1979 | "rest",
1980 | "web service"
1981 | ],
1982 | "time": "2018-04-22T15:46:56+00:00"
1983 | },
1984 | {
1985 | "name": "guzzlehttp/promises",
1986 | "version": "v1.3.1",
1987 | "source": {
1988 | "type": "git",
1989 | "url": "https://github.com/guzzle/promises.git",
1990 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
1991 | },
1992 | "dist": {
1993 | "type": "zip",
1994 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
1995 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
1996 | "shasum": ""
1997 | },
1998 | "require": {
1999 | "php": ">=5.5.0"
2000 | },
2001 | "require-dev": {
2002 | "phpunit/phpunit": "^4.0"
2003 | },
2004 | "type": "library",
2005 | "extra": {
2006 | "branch-alias": {
2007 | "dev-master": "1.4-dev"
2008 | }
2009 | },
2010 | "autoload": {
2011 | "psr-4": {
2012 | "GuzzleHttp\\Promise\\": "src/"
2013 | },
2014 | "files": [
2015 | "src/functions_include.php"
2016 | ]
2017 | },
2018 | "notification-url": "https://packagist.org/downloads/",
2019 | "license": [
2020 | "MIT"
2021 | ],
2022 | "authors": [
2023 | {
2024 | "name": "Michael Dowling",
2025 | "email": "mtdowling@gmail.com",
2026 | "homepage": "https://github.com/mtdowling"
2027 | }
2028 | ],
2029 | "description": "Guzzle promises library",
2030 | "keywords": [
2031 | "promise"
2032 | ],
2033 | "time": "2016-12-20T10:07:11+00:00"
2034 | },
2035 | {
2036 | "name": "guzzlehttp/psr7",
2037 | "version": "1.4.2",
2038 | "source": {
2039 | "type": "git",
2040 | "url": "https://github.com/guzzle/psr7.git",
2041 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
2042 | },
2043 | "dist": {
2044 | "type": "zip",
2045 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
2046 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
2047 | "shasum": ""
2048 | },
2049 | "require": {
2050 | "php": ">=5.4.0",
2051 | "psr/http-message": "~1.0"
2052 | },
2053 | "provide": {
2054 | "psr/http-message-implementation": "1.0"
2055 | },
2056 | "require-dev": {
2057 | "phpunit/phpunit": "~4.0"
2058 | },
2059 | "type": "library",
2060 | "extra": {
2061 | "branch-alias": {
2062 | "dev-master": "1.4-dev"
2063 | }
2064 | },
2065 | "autoload": {
2066 | "psr-4": {
2067 | "GuzzleHttp\\Psr7\\": "src/"
2068 | },
2069 | "files": [
2070 | "src/functions_include.php"
2071 | ]
2072 | },
2073 | "notification-url": "https://packagist.org/downloads/",
2074 | "license": [
2075 | "MIT"
2076 | ],
2077 | "authors": [
2078 | {
2079 | "name": "Michael Dowling",
2080 | "email": "mtdowling@gmail.com",
2081 | "homepage": "https://github.com/mtdowling"
2082 | },
2083 | {
2084 | "name": "Tobias Schultze",
2085 | "homepage": "https://github.com/Tobion"
2086 | }
2087 | ],
2088 | "description": "PSR-7 message implementation that also provides common utility methods",
2089 | "keywords": [
2090 | "http",
2091 | "message",
2092 | "request",
2093 | "response",
2094 | "stream",
2095 | "uri",
2096 | "url"
2097 | ],
2098 | "time": "2017-03-20T17:10:46+00:00"
2099 | },
2100 | {
2101 | "name": "hamcrest/hamcrest-php",
2102 | "version": "v1.2.2",
2103 | "source": {
2104 | "type": "git",
2105 | "url": "https://github.com/hamcrest/hamcrest-php.git",
2106 | "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c"
2107 | },
2108 | "dist": {
2109 | "type": "zip",
2110 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c",
2111 | "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c",
2112 | "shasum": ""
2113 | },
2114 | "require": {
2115 | "php": ">=5.3.2"
2116 | },
2117 | "replace": {
2118 | "cordoval/hamcrest-php": "*",
2119 | "davedevelopment/hamcrest-php": "*",
2120 | "kodova/hamcrest-php": "*"
2121 | },
2122 | "require-dev": {
2123 | "phpunit/php-file-iterator": "1.3.3",
2124 | "satooshi/php-coveralls": "dev-master"
2125 | },
2126 | "type": "library",
2127 | "autoload": {
2128 | "classmap": [
2129 | "hamcrest"
2130 | ],
2131 | "files": [
2132 | "hamcrest/Hamcrest.php"
2133 | ]
2134 | },
2135 | "notification-url": "https://packagist.org/downloads/",
2136 | "license": [
2137 | "BSD"
2138 | ],
2139 | "description": "This is the PHP port of Hamcrest Matchers",
2140 | "keywords": [
2141 | "test"
2142 | ],
2143 | "time": "2015-05-11T14:41:42+00:00"
2144 | },
2145 | {
2146 | "name": "mockery/mockery",
2147 | "version": "0.9.9",
2148 | "source": {
2149 | "type": "git",
2150 | "url": "https://github.com/mockery/mockery.git",
2151 | "reference": "6fdb61243844dc924071d3404bb23994ea0b6856"
2152 | },
2153 | "dist": {
2154 | "type": "zip",
2155 | "url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856",
2156 | "reference": "6fdb61243844dc924071d3404bb23994ea0b6856",
2157 | "shasum": ""
2158 | },
2159 | "require": {
2160 | "hamcrest/hamcrest-php": "~1.1",
2161 | "lib-pcre": ">=7.0",
2162 | "php": ">=5.3.2"
2163 | },
2164 | "require-dev": {
2165 | "phpunit/phpunit": "~4.0"
2166 | },
2167 | "type": "library",
2168 | "extra": {
2169 | "branch-alias": {
2170 | "dev-master": "0.9.x-dev"
2171 | }
2172 | },
2173 | "autoload": {
2174 | "psr-0": {
2175 | "Mockery": "library/"
2176 | }
2177 | },
2178 | "notification-url": "https://packagist.org/downloads/",
2179 | "license": [
2180 | "BSD-3-Clause"
2181 | ],
2182 | "authors": [
2183 | {
2184 | "name": "Pádraic Brady",
2185 | "email": "padraic.brady@gmail.com",
2186 | "homepage": "http://blog.astrumfutura.com"
2187 | },
2188 | {
2189 | "name": "Dave Marshall",
2190 | "email": "dave.marshall@atstsolutions.co.uk",
2191 | "homepage": "http://davedevelopment.co.uk"
2192 | }
2193 | ],
2194 | "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
2195 | "homepage": "http://github.com/padraic/mockery",
2196 | "keywords": [
2197 | "BDD",
2198 | "TDD",
2199 | "library",
2200 | "mock",
2201 | "mock objects",
2202 | "mockery",
2203 | "stub",
2204 | "test",
2205 | "test double",
2206 | "testing"
2207 | ],
2208 | "time": "2017-02-28T12:52:32+00:00"
2209 | },
2210 | {
2211 | "name": "myclabs/deep-copy",
2212 | "version": "1.8.1",
2213 | "source": {
2214 | "type": "git",
2215 | "url": "https://github.com/myclabs/DeepCopy.git",
2216 | "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
2217 | },
2218 | "dist": {
2219 | "type": "zip",
2220 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
2221 | "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
2222 | "shasum": ""
2223 | },
2224 | "require": {
2225 | "php": "^7.1"
2226 | },
2227 | "replace": {
2228 | "myclabs/deep-copy": "self.version"
2229 | },
2230 | "require-dev": {
2231 | "doctrine/collections": "^1.0",
2232 | "doctrine/common": "^2.6",
2233 | "phpunit/phpunit": "^7.1"
2234 | },
2235 | "type": "library",
2236 | "autoload": {
2237 | "psr-4": {
2238 | "DeepCopy\\": "src/DeepCopy/"
2239 | },
2240 | "files": [
2241 | "src/DeepCopy/deep_copy.php"
2242 | ]
2243 | },
2244 | "notification-url": "https://packagist.org/downloads/",
2245 | "license": [
2246 | "MIT"
2247 | ],
2248 | "description": "Create deep copies (clones) of your objects",
2249 | "keywords": [
2250 | "clone",
2251 | "copy",
2252 | "duplicate",
2253 | "object",
2254 | "object graph"
2255 | ],
2256 | "time": "2018-06-11T23:09:50+00:00"
2257 | },
2258 | {
2259 | "name": "orchestra/testbench",
2260 | "version": "v3.4.12",
2261 | "source": {
2262 | "type": "git",
2263 | "url": "https://github.com/orchestral/testbench.git",
2264 | "reference": "1a040537b09fa3e5a6c6a703a1180cf6b29e1f0e"
2265 | },
2266 | "dist": {
2267 | "type": "zip",
2268 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/1a040537b09fa3e5a6c6a703a1180cf6b29e1f0e",
2269 | "reference": "1a040537b09fa3e5a6c6a703a1180cf6b29e1f0e",
2270 | "shasum": ""
2271 | },
2272 | "require": {
2273 | "fzaninotto/faker": "~1.4",
2274 | "laravel/framework": "~5.4.36",
2275 | "orchestra/testbench-core": "~3.4.6",
2276 | "php": ">=5.6.0"
2277 | },
2278 | "require-dev": {
2279 | "mockery/mockery": "^0.9.4 || ~1.0",
2280 | "orchestra/database": "~3.4.0",
2281 | "phpunit/phpunit": "~5.7"
2282 | },
2283 | "suggest": {
2284 | "mockery/mockery": "Allow to use Mockery for testing (^0.9.4).",
2285 | "orchestra/database": "Allow to use --realpath migration for testing (~3.4).",
2286 | "orchestra/testbench-browser-kit": "Allow to use legacy BrowserKit for testing (~3.4).",
2287 | "phpunit/phpunit": "Allow to use PHPUnit for testing (~5.7)."
2288 | },
2289 | "type": "library",
2290 | "extra": {
2291 | "branch-alias": {
2292 | "dev-master": "3.4-dev"
2293 | }
2294 | },
2295 | "notification-url": "https://packagist.org/downloads/",
2296 | "license": [
2297 | "MIT"
2298 | ],
2299 | "authors": [
2300 | {
2301 | "name": "Mior Muhammad Zaki",
2302 | "email": "crynobone@gmail.com",
2303 | "homepage": "https://github.com/crynobone"
2304 | }
2305 | ],
2306 | "description": "Laravel Testing Helper for Packages Development",
2307 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/",
2308 | "keywords": [
2309 | "BDD",
2310 | "TDD",
2311 | "laravel",
2312 | "orchestra-platform",
2313 | "orchestral",
2314 | "testing"
2315 | ],
2316 | "time": "2018-02-20T05:27:50+00:00"
2317 | },
2318 | {
2319 | "name": "orchestra/testbench-core",
2320 | "version": "v3.4.6",
2321 | "source": {
2322 | "type": "git",
2323 | "url": "https://github.com/orchestral/testbench-core.git",
2324 | "reference": "07f5fca738b7f1a5745e4f9e4049df048019f790"
2325 | },
2326 | "dist": {
2327 | "type": "zip",
2328 | "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/07f5fca738b7f1a5745e4f9e4049df048019f790",
2329 | "reference": "07f5fca738b7f1a5745e4f9e4049df048019f790",
2330 | "shasum": ""
2331 | },
2332 | "require": {
2333 | "fzaninotto/faker": "~1.4",
2334 | "php": ">=5.6.0"
2335 | },
2336 | "require-dev": {
2337 | "laravel/framework": "~5.4.17",
2338 | "mockery/mockery": "^0.9.4",
2339 | "orchestra/database": "~3.4.0",
2340 | "phpunit/phpunit": "~5.7 || ~6.0"
2341 | },
2342 | "suggest": {
2343 | "laravel/framework": "Required for testing (~5.4.0).",
2344 | "mockery/mockery": "Allow to use Mockery for testing (^0.9.4).",
2345 | "orchestra/database": "Allow to use --realpath migration for testing (~3.4).",
2346 | "orchestra/testbench-browser-kit": "Allow to use legacy BrowserKit for testing (~3.4).",
2347 | "orchestra/testbench-dusk": "Allow to use Laravel Dusk for testing (~3.4).",
2348 | "phpunit/phpunit": "Allow to use PHPUnit for testing (~6.0)."
2349 | },
2350 | "type": "library",
2351 | "extra": {
2352 | "branch-alias": {
2353 | "dev-master": "3.5-dev"
2354 | }
2355 | },
2356 | "autoload": {
2357 | "psr-4": {
2358 | "Orchestra\\Testbench\\": "src/"
2359 | }
2360 | },
2361 | "notification-url": "https://packagist.org/downloads/",
2362 | "license": [
2363 | "MIT"
2364 | ],
2365 | "authors": [
2366 | {
2367 | "name": "Mior Muhammad Zaki",
2368 | "email": "crynobone@gmail.com",
2369 | "homepage": "https://github.com/crynobone"
2370 | }
2371 | ],
2372 | "description": "Testing Helper for Laravel Development",
2373 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/",
2374 | "keywords": [
2375 | "BDD",
2376 | "TDD",
2377 | "laravel",
2378 | "orchestra-platform",
2379 | "orchestral",
2380 | "testing"
2381 | ],
2382 | "time": "2018-02-20T04:05:07+00:00"
2383 | },
2384 | {
2385 | "name": "padosoft/laravel-test",
2386 | "version": "2.0.1",
2387 | "source": {
2388 | "type": "git",
2389 | "url": "https://github.com/padosoft/laravel-test.git",
2390 | "reference": "1d93d7e2418d9f36067b1b0836d5faa5e842b697"
2391 | },
2392 | "dist": {
2393 | "type": "zip",
2394 | "url": "https://api.github.com/repos/padosoft/laravel-test/zipball/1d93d7e2418d9f36067b1b0836d5faa5e842b697",
2395 | "reference": "1d93d7e2418d9f36067b1b0836d5faa5e842b697",
2396 | "shasum": ""
2397 | },
2398 | "require": {
2399 | "padosoft/test": "~0.1"
2400 | },
2401 | "type": "project",
2402 | "autoload": {
2403 | "classmap": [],
2404 | "psr-4": {
2405 | "Padosoft\\LaravelTest\\": "src"
2406 | }
2407 | },
2408 | "notification-url": "https://packagist.org/downloads/",
2409 | "license": [
2410 | "MIT"
2411 | ],
2412 | "authors": [
2413 | {
2414 | "name": "padosoft",
2415 | "email": "helpdesk@padosoft.com"
2416 | }
2417 | ],
2418 | "description": "laravel test",
2419 | "keywords": [
2420 | "laravel",
2421 | "test"
2422 | ],
2423 | "time": "2016-08-28T16:57:40+00:00"
2424 | },
2425 | {
2426 | "name": "padosoft/test",
2427 | "version": "0.2.2",
2428 | "source": {
2429 | "type": "git",
2430 | "url": "https://github.com/padosoft/test.git",
2431 | "reference": "299b8cdab8623461fff308388e9bee8b92baebee"
2432 | },
2433 | "dist": {
2434 | "type": "zip",
2435 | "url": "https://api.github.com/repos/padosoft/test/zipball/299b8cdab8623461fff308388e9bee8b92baebee",
2436 | "reference": "299b8cdab8623461fff308388e9bee8b92baebee",
2437 | "shasum": ""
2438 | },
2439 | "require": {
2440 | "guzzlehttp/guzzle": "~6.0",
2441 | "phpunit/phpunit": "^4.0|^5.0"
2442 | },
2443 | "type": "library",
2444 | "autoload": {
2445 | "psr-4": {
2446 | "Padosoft\\Test\\": "src"
2447 | }
2448 | },
2449 | "notification-url": "https://packagist.org/downloads/",
2450 | "license": [
2451 | "MIT"
2452 | ],
2453 | "authors": [
2454 | {
2455 | "name": "padosoft",
2456 | "email": "helpdesk@padosoft.com",
2457 | "homepage": "https://www.padosoft.com",
2458 | "role": "Developer"
2459 | }
2460 | ],
2461 | "description": "classes fot test",
2462 | "homepage": "https://github.org/padosoft/test/",
2463 | "keywords": [
2464 | "test"
2465 | ],
2466 | "time": "2016-08-28T16:53:20+00:00"
2467 | },
2468 | {
2469 | "name": "phpdocumentor/reflection-common",
2470 | "version": "1.0.1",
2471 | "source": {
2472 | "type": "git",
2473 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
2474 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
2475 | },
2476 | "dist": {
2477 | "type": "zip",
2478 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
2479 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
2480 | "shasum": ""
2481 | },
2482 | "require": {
2483 | "php": ">=5.5"
2484 | },
2485 | "require-dev": {
2486 | "phpunit/phpunit": "^4.6"
2487 | },
2488 | "type": "library",
2489 | "extra": {
2490 | "branch-alias": {
2491 | "dev-master": "1.0.x-dev"
2492 | }
2493 | },
2494 | "autoload": {
2495 | "psr-4": {
2496 | "phpDocumentor\\Reflection\\": [
2497 | "src"
2498 | ]
2499 | }
2500 | },
2501 | "notification-url": "https://packagist.org/downloads/",
2502 | "license": [
2503 | "MIT"
2504 | ],
2505 | "authors": [
2506 | {
2507 | "name": "Jaap van Otterdijk",
2508 | "email": "opensource@ijaap.nl"
2509 | }
2510 | ],
2511 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
2512 | "homepage": "http://www.phpdoc.org",
2513 | "keywords": [
2514 | "FQSEN",
2515 | "phpDocumentor",
2516 | "phpdoc",
2517 | "reflection",
2518 | "static analysis"
2519 | ],
2520 | "time": "2017-09-11T18:02:19+00:00"
2521 | },
2522 | {
2523 | "name": "phpdocumentor/reflection-docblock",
2524 | "version": "4.3.0",
2525 | "source": {
2526 | "type": "git",
2527 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
2528 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
2529 | },
2530 | "dist": {
2531 | "type": "zip",
2532 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
2533 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
2534 | "shasum": ""
2535 | },
2536 | "require": {
2537 | "php": "^7.0",
2538 | "phpdocumentor/reflection-common": "^1.0.0",
2539 | "phpdocumentor/type-resolver": "^0.4.0",
2540 | "webmozart/assert": "^1.0"
2541 | },
2542 | "require-dev": {
2543 | "doctrine/instantiator": "~1.0.5",
2544 | "mockery/mockery": "^1.0",
2545 | "phpunit/phpunit": "^6.4"
2546 | },
2547 | "type": "library",
2548 | "extra": {
2549 | "branch-alias": {
2550 | "dev-master": "4.x-dev"
2551 | }
2552 | },
2553 | "autoload": {
2554 | "psr-4": {
2555 | "phpDocumentor\\Reflection\\": [
2556 | "src/"
2557 | ]
2558 | }
2559 | },
2560 | "notification-url": "https://packagist.org/downloads/",
2561 | "license": [
2562 | "MIT"
2563 | ],
2564 | "authors": [
2565 | {
2566 | "name": "Mike van Riel",
2567 | "email": "me@mikevanriel.com"
2568 | }
2569 | ],
2570 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
2571 | "time": "2017-11-30T07:14:17+00:00"
2572 | },
2573 | {
2574 | "name": "phpdocumentor/type-resolver",
2575 | "version": "0.4.0",
2576 | "source": {
2577 | "type": "git",
2578 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
2579 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
2580 | },
2581 | "dist": {
2582 | "type": "zip",
2583 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
2584 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
2585 | "shasum": ""
2586 | },
2587 | "require": {
2588 | "php": "^5.5 || ^7.0",
2589 | "phpdocumentor/reflection-common": "^1.0"
2590 | },
2591 | "require-dev": {
2592 | "mockery/mockery": "^0.9.4",
2593 | "phpunit/phpunit": "^5.2||^4.8.24"
2594 | },
2595 | "type": "library",
2596 | "extra": {
2597 | "branch-alias": {
2598 | "dev-master": "1.0.x-dev"
2599 | }
2600 | },
2601 | "autoload": {
2602 | "psr-4": {
2603 | "phpDocumentor\\Reflection\\": [
2604 | "src/"
2605 | ]
2606 | }
2607 | },
2608 | "notification-url": "https://packagist.org/downloads/",
2609 | "license": [
2610 | "MIT"
2611 | ],
2612 | "authors": [
2613 | {
2614 | "name": "Mike van Riel",
2615 | "email": "me@mikevanriel.com"
2616 | }
2617 | ],
2618 | "time": "2017-07-14T14:27:02+00:00"
2619 | },
2620 | {
2621 | "name": "phpspec/prophecy",
2622 | "version": "1.7.6",
2623 | "source": {
2624 | "type": "git",
2625 | "url": "https://github.com/phpspec/prophecy.git",
2626 | "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
2627 | },
2628 | "dist": {
2629 | "type": "zip",
2630 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
2631 | "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
2632 | "shasum": ""
2633 | },
2634 | "require": {
2635 | "doctrine/instantiator": "^1.0.2",
2636 | "php": "^5.3|^7.0",
2637 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
2638 | "sebastian/comparator": "^1.1|^2.0|^3.0",
2639 | "sebastian/recursion-context": "^1.0|^2.0|^3.0"
2640 | },
2641 | "require-dev": {
2642 | "phpspec/phpspec": "^2.5|^3.2",
2643 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
2644 | },
2645 | "type": "library",
2646 | "extra": {
2647 | "branch-alias": {
2648 | "dev-master": "1.7.x-dev"
2649 | }
2650 | },
2651 | "autoload": {
2652 | "psr-0": {
2653 | "Prophecy\\": "src/"
2654 | }
2655 | },
2656 | "notification-url": "https://packagist.org/downloads/",
2657 | "license": [
2658 | "MIT"
2659 | ],
2660 | "authors": [
2661 | {
2662 | "name": "Konstantin Kudryashov",
2663 | "email": "ever.zet@gmail.com",
2664 | "homepage": "http://everzet.com"
2665 | },
2666 | {
2667 | "name": "Marcello Duarte",
2668 | "email": "marcello.duarte@gmail.com"
2669 | }
2670 | ],
2671 | "description": "Highly opinionated mocking framework for PHP 5.3+",
2672 | "homepage": "https://github.com/phpspec/prophecy",
2673 | "keywords": [
2674 | "Double",
2675 | "Dummy",
2676 | "fake",
2677 | "mock",
2678 | "spy",
2679 | "stub"
2680 | ],
2681 | "time": "2018-04-18T13:57:24+00:00"
2682 | },
2683 | {
2684 | "name": "phpunit/php-code-coverage",
2685 | "version": "4.0.8",
2686 | "source": {
2687 | "type": "git",
2688 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
2689 | "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
2690 | },
2691 | "dist": {
2692 | "type": "zip",
2693 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
2694 | "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
2695 | "shasum": ""
2696 | },
2697 | "require": {
2698 | "ext-dom": "*",
2699 | "ext-xmlwriter": "*",
2700 | "php": "^5.6 || ^7.0",
2701 | "phpunit/php-file-iterator": "^1.3",
2702 | "phpunit/php-text-template": "^1.2",
2703 | "phpunit/php-token-stream": "^1.4.2 || ^2.0",
2704 | "sebastian/code-unit-reverse-lookup": "^1.0",
2705 | "sebastian/environment": "^1.3.2 || ^2.0",
2706 | "sebastian/version": "^1.0 || ^2.0"
2707 | },
2708 | "require-dev": {
2709 | "ext-xdebug": "^2.1.4",
2710 | "phpunit/phpunit": "^5.7"
2711 | },
2712 | "suggest": {
2713 | "ext-xdebug": "^2.5.1"
2714 | },
2715 | "type": "library",
2716 | "extra": {
2717 | "branch-alias": {
2718 | "dev-master": "4.0.x-dev"
2719 | }
2720 | },
2721 | "autoload": {
2722 | "classmap": [
2723 | "src/"
2724 | ]
2725 | },
2726 | "notification-url": "https://packagist.org/downloads/",
2727 | "license": [
2728 | "BSD-3-Clause"
2729 | ],
2730 | "authors": [
2731 | {
2732 | "name": "Sebastian Bergmann",
2733 | "email": "sb@sebastian-bergmann.de",
2734 | "role": "lead"
2735 | }
2736 | ],
2737 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
2738 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
2739 | "keywords": [
2740 | "coverage",
2741 | "testing",
2742 | "xunit"
2743 | ],
2744 | "time": "2017-04-02T07:44:40+00:00"
2745 | },
2746 | {
2747 | "name": "phpunit/php-file-iterator",
2748 | "version": "1.4.5",
2749 | "source": {
2750 | "type": "git",
2751 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
2752 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
2753 | },
2754 | "dist": {
2755 | "type": "zip",
2756 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
2757 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
2758 | "shasum": ""
2759 | },
2760 | "require": {
2761 | "php": ">=5.3.3"
2762 | },
2763 | "type": "library",
2764 | "extra": {
2765 | "branch-alias": {
2766 | "dev-master": "1.4.x-dev"
2767 | }
2768 | },
2769 | "autoload": {
2770 | "classmap": [
2771 | "src/"
2772 | ]
2773 | },
2774 | "notification-url": "https://packagist.org/downloads/",
2775 | "license": [
2776 | "BSD-3-Clause"
2777 | ],
2778 | "authors": [
2779 | {
2780 | "name": "Sebastian Bergmann",
2781 | "email": "sb@sebastian-bergmann.de",
2782 | "role": "lead"
2783 | }
2784 | ],
2785 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
2786 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
2787 | "keywords": [
2788 | "filesystem",
2789 | "iterator"
2790 | ],
2791 | "time": "2017-11-27T13:52:08+00:00"
2792 | },
2793 | {
2794 | "name": "phpunit/php-text-template",
2795 | "version": "1.2.1",
2796 | "source": {
2797 | "type": "git",
2798 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
2799 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
2800 | },
2801 | "dist": {
2802 | "type": "zip",
2803 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
2804 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
2805 | "shasum": ""
2806 | },
2807 | "require": {
2808 | "php": ">=5.3.3"
2809 | },
2810 | "type": "library",
2811 | "autoload": {
2812 | "classmap": [
2813 | "src/"
2814 | ]
2815 | },
2816 | "notification-url": "https://packagist.org/downloads/",
2817 | "license": [
2818 | "BSD-3-Clause"
2819 | ],
2820 | "authors": [
2821 | {
2822 | "name": "Sebastian Bergmann",
2823 | "email": "sebastian@phpunit.de",
2824 | "role": "lead"
2825 | }
2826 | ],
2827 | "description": "Simple template engine.",
2828 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
2829 | "keywords": [
2830 | "template"
2831 | ],
2832 | "time": "2015-06-21T13:50:34+00:00"
2833 | },
2834 | {
2835 | "name": "phpunit/php-timer",
2836 | "version": "1.0.9",
2837 | "source": {
2838 | "type": "git",
2839 | "url": "https://github.com/sebastianbergmann/php-timer.git",
2840 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
2841 | },
2842 | "dist": {
2843 | "type": "zip",
2844 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
2845 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
2846 | "shasum": ""
2847 | },
2848 | "require": {
2849 | "php": "^5.3.3 || ^7.0"
2850 | },
2851 | "require-dev": {
2852 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
2853 | },
2854 | "type": "library",
2855 | "extra": {
2856 | "branch-alias": {
2857 | "dev-master": "1.0-dev"
2858 | }
2859 | },
2860 | "autoload": {
2861 | "classmap": [
2862 | "src/"
2863 | ]
2864 | },
2865 | "notification-url": "https://packagist.org/downloads/",
2866 | "license": [
2867 | "BSD-3-Clause"
2868 | ],
2869 | "authors": [
2870 | {
2871 | "name": "Sebastian Bergmann",
2872 | "email": "sb@sebastian-bergmann.de",
2873 | "role": "lead"
2874 | }
2875 | ],
2876 | "description": "Utility class for timing",
2877 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
2878 | "keywords": [
2879 | "timer"
2880 | ],
2881 | "time": "2017-02-26T11:10:40+00:00"
2882 | },
2883 | {
2884 | "name": "phpunit/php-token-stream",
2885 | "version": "2.0.2",
2886 | "source": {
2887 | "type": "git",
2888 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
2889 | "reference": "791198a2c6254db10131eecfe8c06670700904db"
2890 | },
2891 | "dist": {
2892 | "type": "zip",
2893 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
2894 | "reference": "791198a2c6254db10131eecfe8c06670700904db",
2895 | "shasum": ""
2896 | },
2897 | "require": {
2898 | "ext-tokenizer": "*",
2899 | "php": "^7.0"
2900 | },
2901 | "require-dev": {
2902 | "phpunit/phpunit": "^6.2.4"
2903 | },
2904 | "type": "library",
2905 | "extra": {
2906 | "branch-alias": {
2907 | "dev-master": "2.0-dev"
2908 | }
2909 | },
2910 | "autoload": {
2911 | "classmap": [
2912 | "src/"
2913 | ]
2914 | },
2915 | "notification-url": "https://packagist.org/downloads/",
2916 | "license": [
2917 | "BSD-3-Clause"
2918 | ],
2919 | "authors": [
2920 | {
2921 | "name": "Sebastian Bergmann",
2922 | "email": "sebastian@phpunit.de"
2923 | }
2924 | ],
2925 | "description": "Wrapper around PHP's tokenizer extension.",
2926 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
2927 | "keywords": [
2928 | "tokenizer"
2929 | ],
2930 | "time": "2017-11-27T05:48:46+00:00"
2931 | },
2932 | {
2933 | "name": "phpunit/phpunit",
2934 | "version": "5.7.27",
2935 | "source": {
2936 | "type": "git",
2937 | "url": "https://github.com/sebastianbergmann/phpunit.git",
2938 | "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
2939 | },
2940 | "dist": {
2941 | "type": "zip",
2942 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
2943 | "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
2944 | "shasum": ""
2945 | },
2946 | "require": {
2947 | "ext-dom": "*",
2948 | "ext-json": "*",
2949 | "ext-libxml": "*",
2950 | "ext-mbstring": "*",
2951 | "ext-xml": "*",
2952 | "myclabs/deep-copy": "~1.3",
2953 | "php": "^5.6 || ^7.0",
2954 | "phpspec/prophecy": "^1.6.2",
2955 | "phpunit/php-code-coverage": "^4.0.4",
2956 | "phpunit/php-file-iterator": "~1.4",
2957 | "phpunit/php-text-template": "~1.2",
2958 | "phpunit/php-timer": "^1.0.6",
2959 | "phpunit/phpunit-mock-objects": "^3.2",
2960 | "sebastian/comparator": "^1.2.4",
2961 | "sebastian/diff": "^1.4.3",
2962 | "sebastian/environment": "^1.3.4 || ^2.0",
2963 | "sebastian/exporter": "~2.0",
2964 | "sebastian/global-state": "^1.1",
2965 | "sebastian/object-enumerator": "~2.0",
2966 | "sebastian/resource-operations": "~1.0",
2967 | "sebastian/version": "^1.0.6|^2.0.1",
2968 | "symfony/yaml": "~2.1|~3.0|~4.0"
2969 | },
2970 | "conflict": {
2971 | "phpdocumentor/reflection-docblock": "3.0.2"
2972 | },
2973 | "require-dev": {
2974 | "ext-pdo": "*"
2975 | },
2976 | "suggest": {
2977 | "ext-xdebug": "*",
2978 | "phpunit/php-invoker": "~1.1"
2979 | },
2980 | "bin": [
2981 | "phpunit"
2982 | ],
2983 | "type": "library",
2984 | "extra": {
2985 | "branch-alias": {
2986 | "dev-master": "5.7.x-dev"
2987 | }
2988 | },
2989 | "autoload": {
2990 | "classmap": [
2991 | "src/"
2992 | ]
2993 | },
2994 | "notification-url": "https://packagist.org/downloads/",
2995 | "license": [
2996 | "BSD-3-Clause"
2997 | ],
2998 | "authors": [
2999 | {
3000 | "name": "Sebastian Bergmann",
3001 | "email": "sebastian@phpunit.de",
3002 | "role": "lead"
3003 | }
3004 | ],
3005 | "description": "The PHP Unit Testing framework.",
3006 | "homepage": "https://phpunit.de/",
3007 | "keywords": [
3008 | "phpunit",
3009 | "testing",
3010 | "xunit"
3011 | ],
3012 | "time": "2018-02-01T05:50:59+00:00"
3013 | },
3014 | {
3015 | "name": "phpunit/phpunit-mock-objects",
3016 | "version": "3.4.4",
3017 | "source": {
3018 | "type": "git",
3019 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
3020 | "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
3021 | },
3022 | "dist": {
3023 | "type": "zip",
3024 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
3025 | "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
3026 | "shasum": ""
3027 | },
3028 | "require": {
3029 | "doctrine/instantiator": "^1.0.2",
3030 | "php": "^5.6 || ^7.0",
3031 | "phpunit/php-text-template": "^1.2",
3032 | "sebastian/exporter": "^1.2 || ^2.0"
3033 | },
3034 | "conflict": {
3035 | "phpunit/phpunit": "<5.4.0"
3036 | },
3037 | "require-dev": {
3038 | "phpunit/phpunit": "^5.4"
3039 | },
3040 | "suggest": {
3041 | "ext-soap": "*"
3042 | },
3043 | "type": "library",
3044 | "extra": {
3045 | "branch-alias": {
3046 | "dev-master": "3.2.x-dev"
3047 | }
3048 | },
3049 | "autoload": {
3050 | "classmap": [
3051 | "src/"
3052 | ]
3053 | },
3054 | "notification-url": "https://packagist.org/downloads/",
3055 | "license": [
3056 | "BSD-3-Clause"
3057 | ],
3058 | "authors": [
3059 | {
3060 | "name": "Sebastian Bergmann",
3061 | "email": "sb@sebastian-bergmann.de",
3062 | "role": "lead"
3063 | }
3064 | ],
3065 | "description": "Mock Object library for PHPUnit",
3066 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
3067 | "keywords": [
3068 | "mock",
3069 | "xunit"
3070 | ],
3071 | "time": "2017-06-30T09:13:00+00:00"
3072 | },
3073 | {
3074 | "name": "psr/http-message",
3075 | "version": "1.0.1",
3076 | "source": {
3077 | "type": "git",
3078 | "url": "https://github.com/php-fig/http-message.git",
3079 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
3080 | },
3081 | "dist": {
3082 | "type": "zip",
3083 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
3084 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
3085 | "shasum": ""
3086 | },
3087 | "require": {
3088 | "php": ">=5.3.0"
3089 | },
3090 | "type": "library",
3091 | "extra": {
3092 | "branch-alias": {
3093 | "dev-master": "1.0.x-dev"
3094 | }
3095 | },
3096 | "autoload": {
3097 | "psr-4": {
3098 | "Psr\\Http\\Message\\": "src/"
3099 | }
3100 | },
3101 | "notification-url": "https://packagist.org/downloads/",
3102 | "license": [
3103 | "MIT"
3104 | ],
3105 | "authors": [
3106 | {
3107 | "name": "PHP-FIG",
3108 | "homepage": "http://www.php-fig.org/"
3109 | }
3110 | ],
3111 | "description": "Common interface for HTTP messages",
3112 | "homepage": "https://github.com/php-fig/http-message",
3113 | "keywords": [
3114 | "http",
3115 | "http-message",
3116 | "psr",
3117 | "psr-7",
3118 | "request",
3119 | "response"
3120 | ],
3121 | "time": "2016-08-06T14:39:51+00:00"
3122 | },
3123 | {
3124 | "name": "sebastian/code-unit-reverse-lookup",
3125 | "version": "1.0.1",
3126 | "source": {
3127 | "type": "git",
3128 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
3129 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
3130 | },
3131 | "dist": {
3132 | "type": "zip",
3133 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
3134 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
3135 | "shasum": ""
3136 | },
3137 | "require": {
3138 | "php": "^5.6 || ^7.0"
3139 | },
3140 | "require-dev": {
3141 | "phpunit/phpunit": "^5.7 || ^6.0"
3142 | },
3143 | "type": "library",
3144 | "extra": {
3145 | "branch-alias": {
3146 | "dev-master": "1.0.x-dev"
3147 | }
3148 | },
3149 | "autoload": {
3150 | "classmap": [
3151 | "src/"
3152 | ]
3153 | },
3154 | "notification-url": "https://packagist.org/downloads/",
3155 | "license": [
3156 | "BSD-3-Clause"
3157 | ],
3158 | "authors": [
3159 | {
3160 | "name": "Sebastian Bergmann",
3161 | "email": "sebastian@phpunit.de"
3162 | }
3163 | ],
3164 | "description": "Looks up which function or method a line of code belongs to",
3165 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
3166 | "time": "2017-03-04T06:30:41+00:00"
3167 | },
3168 | {
3169 | "name": "sebastian/comparator",
3170 | "version": "1.2.4",
3171 | "source": {
3172 | "type": "git",
3173 | "url": "https://github.com/sebastianbergmann/comparator.git",
3174 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
3175 | },
3176 | "dist": {
3177 | "type": "zip",
3178 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
3179 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
3180 | "shasum": ""
3181 | },
3182 | "require": {
3183 | "php": ">=5.3.3",
3184 | "sebastian/diff": "~1.2",
3185 | "sebastian/exporter": "~1.2 || ~2.0"
3186 | },
3187 | "require-dev": {
3188 | "phpunit/phpunit": "~4.4"
3189 | },
3190 | "type": "library",
3191 | "extra": {
3192 | "branch-alias": {
3193 | "dev-master": "1.2.x-dev"
3194 | }
3195 | },
3196 | "autoload": {
3197 | "classmap": [
3198 | "src/"
3199 | ]
3200 | },
3201 | "notification-url": "https://packagist.org/downloads/",
3202 | "license": [
3203 | "BSD-3-Clause"
3204 | ],
3205 | "authors": [
3206 | {
3207 | "name": "Jeff Welch",
3208 | "email": "whatthejeff@gmail.com"
3209 | },
3210 | {
3211 | "name": "Volker Dusch",
3212 | "email": "github@wallbash.com"
3213 | },
3214 | {
3215 | "name": "Bernhard Schussek",
3216 | "email": "bschussek@2bepublished.at"
3217 | },
3218 | {
3219 | "name": "Sebastian Bergmann",
3220 | "email": "sebastian@phpunit.de"
3221 | }
3222 | ],
3223 | "description": "Provides the functionality to compare PHP values for equality",
3224 | "homepage": "http://www.github.com/sebastianbergmann/comparator",
3225 | "keywords": [
3226 | "comparator",
3227 | "compare",
3228 | "equality"
3229 | ],
3230 | "time": "2017-01-29T09:50:25+00:00"
3231 | },
3232 | {
3233 | "name": "sebastian/diff",
3234 | "version": "1.4.3",
3235 | "source": {
3236 | "type": "git",
3237 | "url": "https://github.com/sebastianbergmann/diff.git",
3238 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
3239 | },
3240 | "dist": {
3241 | "type": "zip",
3242 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
3243 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
3244 | "shasum": ""
3245 | },
3246 | "require": {
3247 | "php": "^5.3.3 || ^7.0"
3248 | },
3249 | "require-dev": {
3250 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
3251 | },
3252 | "type": "library",
3253 | "extra": {
3254 | "branch-alias": {
3255 | "dev-master": "1.4-dev"
3256 | }
3257 | },
3258 | "autoload": {
3259 | "classmap": [
3260 | "src/"
3261 | ]
3262 | },
3263 | "notification-url": "https://packagist.org/downloads/",
3264 | "license": [
3265 | "BSD-3-Clause"
3266 | ],
3267 | "authors": [
3268 | {
3269 | "name": "Kore Nordmann",
3270 | "email": "mail@kore-nordmann.de"
3271 | },
3272 | {
3273 | "name": "Sebastian Bergmann",
3274 | "email": "sebastian@phpunit.de"
3275 | }
3276 | ],
3277 | "description": "Diff implementation",
3278 | "homepage": "https://github.com/sebastianbergmann/diff",
3279 | "keywords": [
3280 | "diff"
3281 | ],
3282 | "time": "2017-05-22T07:24:03+00:00"
3283 | },
3284 | {
3285 | "name": "sebastian/environment",
3286 | "version": "2.0.0",
3287 | "source": {
3288 | "type": "git",
3289 | "url": "https://github.com/sebastianbergmann/environment.git",
3290 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
3291 | },
3292 | "dist": {
3293 | "type": "zip",
3294 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
3295 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
3296 | "shasum": ""
3297 | },
3298 | "require": {
3299 | "php": "^5.6 || ^7.0"
3300 | },
3301 | "require-dev": {
3302 | "phpunit/phpunit": "^5.0"
3303 | },
3304 | "type": "library",
3305 | "extra": {
3306 | "branch-alias": {
3307 | "dev-master": "2.0.x-dev"
3308 | }
3309 | },
3310 | "autoload": {
3311 | "classmap": [
3312 | "src/"
3313 | ]
3314 | },
3315 | "notification-url": "https://packagist.org/downloads/",
3316 | "license": [
3317 | "BSD-3-Clause"
3318 | ],
3319 | "authors": [
3320 | {
3321 | "name": "Sebastian Bergmann",
3322 | "email": "sebastian@phpunit.de"
3323 | }
3324 | ],
3325 | "description": "Provides functionality to handle HHVM/PHP environments",
3326 | "homepage": "http://www.github.com/sebastianbergmann/environment",
3327 | "keywords": [
3328 | "Xdebug",
3329 | "environment",
3330 | "hhvm"
3331 | ],
3332 | "time": "2016-11-26T07:53:53+00:00"
3333 | },
3334 | {
3335 | "name": "sebastian/exporter",
3336 | "version": "2.0.0",
3337 | "source": {
3338 | "type": "git",
3339 | "url": "https://github.com/sebastianbergmann/exporter.git",
3340 | "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
3341 | },
3342 | "dist": {
3343 | "type": "zip",
3344 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
3345 | "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
3346 | "shasum": ""
3347 | },
3348 | "require": {
3349 | "php": ">=5.3.3",
3350 | "sebastian/recursion-context": "~2.0"
3351 | },
3352 | "require-dev": {
3353 | "ext-mbstring": "*",
3354 | "phpunit/phpunit": "~4.4"
3355 | },
3356 | "type": "library",
3357 | "extra": {
3358 | "branch-alias": {
3359 | "dev-master": "2.0.x-dev"
3360 | }
3361 | },
3362 | "autoload": {
3363 | "classmap": [
3364 | "src/"
3365 | ]
3366 | },
3367 | "notification-url": "https://packagist.org/downloads/",
3368 | "license": [
3369 | "BSD-3-Clause"
3370 | ],
3371 | "authors": [
3372 | {
3373 | "name": "Jeff Welch",
3374 | "email": "whatthejeff@gmail.com"
3375 | },
3376 | {
3377 | "name": "Volker Dusch",
3378 | "email": "github@wallbash.com"
3379 | },
3380 | {
3381 | "name": "Bernhard Schussek",
3382 | "email": "bschussek@2bepublished.at"
3383 | },
3384 | {
3385 | "name": "Sebastian Bergmann",
3386 | "email": "sebastian@phpunit.de"
3387 | },
3388 | {
3389 | "name": "Adam Harvey",
3390 | "email": "aharvey@php.net"
3391 | }
3392 | ],
3393 | "description": "Provides the functionality to export PHP variables for visualization",
3394 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
3395 | "keywords": [
3396 | "export",
3397 | "exporter"
3398 | ],
3399 | "time": "2016-11-19T08:54:04+00:00"
3400 | },
3401 | {
3402 | "name": "sebastian/global-state",
3403 | "version": "1.1.1",
3404 | "source": {
3405 | "type": "git",
3406 | "url": "https://github.com/sebastianbergmann/global-state.git",
3407 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
3408 | },
3409 | "dist": {
3410 | "type": "zip",
3411 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
3412 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
3413 | "shasum": ""
3414 | },
3415 | "require": {
3416 | "php": ">=5.3.3"
3417 | },
3418 | "require-dev": {
3419 | "phpunit/phpunit": "~4.2"
3420 | },
3421 | "suggest": {
3422 | "ext-uopz": "*"
3423 | },
3424 | "type": "library",
3425 | "extra": {
3426 | "branch-alias": {
3427 | "dev-master": "1.0-dev"
3428 | }
3429 | },
3430 | "autoload": {
3431 | "classmap": [
3432 | "src/"
3433 | ]
3434 | },
3435 | "notification-url": "https://packagist.org/downloads/",
3436 | "license": [
3437 | "BSD-3-Clause"
3438 | ],
3439 | "authors": [
3440 | {
3441 | "name": "Sebastian Bergmann",
3442 | "email": "sebastian@phpunit.de"
3443 | }
3444 | ],
3445 | "description": "Snapshotting of global state",
3446 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
3447 | "keywords": [
3448 | "global state"
3449 | ],
3450 | "time": "2015-10-12T03:26:01+00:00"
3451 | },
3452 | {
3453 | "name": "sebastian/object-enumerator",
3454 | "version": "2.0.1",
3455 | "source": {
3456 | "type": "git",
3457 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
3458 | "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
3459 | },
3460 | "dist": {
3461 | "type": "zip",
3462 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
3463 | "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
3464 | "shasum": ""
3465 | },
3466 | "require": {
3467 | "php": ">=5.6",
3468 | "sebastian/recursion-context": "~2.0"
3469 | },
3470 | "require-dev": {
3471 | "phpunit/phpunit": "~5"
3472 | },
3473 | "type": "library",
3474 | "extra": {
3475 | "branch-alias": {
3476 | "dev-master": "2.0.x-dev"
3477 | }
3478 | },
3479 | "autoload": {
3480 | "classmap": [
3481 | "src/"
3482 | ]
3483 | },
3484 | "notification-url": "https://packagist.org/downloads/",
3485 | "license": [
3486 | "BSD-3-Clause"
3487 | ],
3488 | "authors": [
3489 | {
3490 | "name": "Sebastian Bergmann",
3491 | "email": "sebastian@phpunit.de"
3492 | }
3493 | ],
3494 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
3495 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
3496 | "time": "2017-02-18T15:18:39+00:00"
3497 | },
3498 | {
3499 | "name": "sebastian/recursion-context",
3500 | "version": "2.0.0",
3501 | "source": {
3502 | "type": "git",
3503 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
3504 | "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
3505 | },
3506 | "dist": {
3507 | "type": "zip",
3508 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
3509 | "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
3510 | "shasum": ""
3511 | },
3512 | "require": {
3513 | "php": ">=5.3.3"
3514 | },
3515 | "require-dev": {
3516 | "phpunit/phpunit": "~4.4"
3517 | },
3518 | "type": "library",
3519 | "extra": {
3520 | "branch-alias": {
3521 | "dev-master": "2.0.x-dev"
3522 | }
3523 | },
3524 | "autoload": {
3525 | "classmap": [
3526 | "src/"
3527 | ]
3528 | },
3529 | "notification-url": "https://packagist.org/downloads/",
3530 | "license": [
3531 | "BSD-3-Clause"
3532 | ],
3533 | "authors": [
3534 | {
3535 | "name": "Jeff Welch",
3536 | "email": "whatthejeff@gmail.com"
3537 | },
3538 | {
3539 | "name": "Sebastian Bergmann",
3540 | "email": "sebastian@phpunit.de"
3541 | },
3542 | {
3543 | "name": "Adam Harvey",
3544 | "email": "aharvey@php.net"
3545 | }
3546 | ],
3547 | "description": "Provides functionality to recursively process PHP variables",
3548 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
3549 | "time": "2016-11-19T07:33:16+00:00"
3550 | },
3551 | {
3552 | "name": "sebastian/resource-operations",
3553 | "version": "1.0.0",
3554 | "source": {
3555 | "type": "git",
3556 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
3557 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
3558 | },
3559 | "dist": {
3560 | "type": "zip",
3561 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
3562 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
3563 | "shasum": ""
3564 | },
3565 | "require": {
3566 | "php": ">=5.6.0"
3567 | },
3568 | "type": "library",
3569 | "extra": {
3570 | "branch-alias": {
3571 | "dev-master": "1.0.x-dev"
3572 | }
3573 | },
3574 | "autoload": {
3575 | "classmap": [
3576 | "src/"
3577 | ]
3578 | },
3579 | "notification-url": "https://packagist.org/downloads/",
3580 | "license": [
3581 | "BSD-3-Clause"
3582 | ],
3583 | "authors": [
3584 | {
3585 | "name": "Sebastian Bergmann",
3586 | "email": "sebastian@phpunit.de"
3587 | }
3588 | ],
3589 | "description": "Provides a list of PHP built-in functions that operate on resources",
3590 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
3591 | "time": "2015-07-28T20:34:47+00:00"
3592 | },
3593 | {
3594 | "name": "sebastian/version",
3595 | "version": "2.0.1",
3596 | "source": {
3597 | "type": "git",
3598 | "url": "https://github.com/sebastianbergmann/version.git",
3599 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
3600 | },
3601 | "dist": {
3602 | "type": "zip",
3603 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
3604 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
3605 | "shasum": ""
3606 | },
3607 | "require": {
3608 | "php": ">=5.6"
3609 | },
3610 | "type": "library",
3611 | "extra": {
3612 | "branch-alias": {
3613 | "dev-master": "2.0.x-dev"
3614 | }
3615 | },
3616 | "autoload": {
3617 | "classmap": [
3618 | "src/"
3619 | ]
3620 | },
3621 | "notification-url": "https://packagist.org/downloads/",
3622 | "license": [
3623 | "BSD-3-Clause"
3624 | ],
3625 | "authors": [
3626 | {
3627 | "name": "Sebastian Bergmann",
3628 | "email": "sebastian@phpunit.de",
3629 | "role": "lead"
3630 | }
3631 | ],
3632 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
3633 | "homepage": "https://github.com/sebastianbergmann/version",
3634 | "time": "2016-10-03T07:35:21+00:00"
3635 | },
3636 | {
3637 | "name": "symfony/yaml",
3638 | "version": "v4.1.3",
3639 | "source": {
3640 | "type": "git",
3641 | "url": "https://github.com/symfony/yaml.git",
3642 | "reference": "46bc69aa91fc4ab78a96ce67873a6b0c148fd48c"
3643 | },
3644 | "dist": {
3645 | "type": "zip",
3646 | "url": "https://api.github.com/repos/symfony/yaml/zipball/46bc69aa91fc4ab78a96ce67873a6b0c148fd48c",
3647 | "reference": "46bc69aa91fc4ab78a96ce67873a6b0c148fd48c",
3648 | "shasum": ""
3649 | },
3650 | "require": {
3651 | "php": "^7.1.3",
3652 | "symfony/polyfill-ctype": "~1.8"
3653 | },
3654 | "conflict": {
3655 | "symfony/console": "<3.4"
3656 | },
3657 | "require-dev": {
3658 | "symfony/console": "~3.4|~4.0"
3659 | },
3660 | "suggest": {
3661 | "symfony/console": "For validating YAML files using the lint command"
3662 | },
3663 | "type": "library",
3664 | "extra": {
3665 | "branch-alias": {
3666 | "dev-master": "4.1-dev"
3667 | }
3668 | },
3669 | "autoload": {
3670 | "psr-4": {
3671 | "Symfony\\Component\\Yaml\\": ""
3672 | },
3673 | "exclude-from-classmap": [
3674 | "/Tests/"
3675 | ]
3676 | },
3677 | "notification-url": "https://packagist.org/downloads/",
3678 | "license": [
3679 | "MIT"
3680 | ],
3681 | "authors": [
3682 | {
3683 | "name": "Fabien Potencier",
3684 | "email": "fabien@symfony.com"
3685 | },
3686 | {
3687 | "name": "Symfony Community",
3688 | "homepage": "https://symfony.com/contributors"
3689 | }
3690 | ],
3691 | "description": "Symfony Yaml Component",
3692 | "homepage": "https://symfony.com",
3693 | "time": "2018-07-26T11:24:31+00:00"
3694 | },
3695 | {
3696 | "name": "webmozart/assert",
3697 | "version": "1.3.0",
3698 | "source": {
3699 | "type": "git",
3700 | "url": "https://github.com/webmozart/assert.git",
3701 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
3702 | },
3703 | "dist": {
3704 | "type": "zip",
3705 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
3706 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
3707 | "shasum": ""
3708 | },
3709 | "require": {
3710 | "php": "^5.3.3 || ^7.0"
3711 | },
3712 | "require-dev": {
3713 | "phpunit/phpunit": "^4.6",
3714 | "sebastian/version": "^1.0.1"
3715 | },
3716 | "type": "library",
3717 | "extra": {
3718 | "branch-alias": {
3719 | "dev-master": "1.3-dev"
3720 | }
3721 | },
3722 | "autoload": {
3723 | "psr-4": {
3724 | "Webmozart\\Assert\\": "src/"
3725 | }
3726 | },
3727 | "notification-url": "https://packagist.org/downloads/",
3728 | "license": [
3729 | "MIT"
3730 | ],
3731 | "authors": [
3732 | {
3733 | "name": "Bernhard Schussek",
3734 | "email": "bschussek@gmail.com"
3735 | }
3736 | ],
3737 | "description": "Assertions to validate method input/output with nice error messages.",
3738 | "keywords": [
3739 | "assert",
3740 | "check",
3741 | "validate"
3742 | ],
3743 | "time": "2018-01-29T19:49:41+00:00"
3744 | }
3745 | ],
3746 | "aliases": [],
3747 | "minimum-stability": "stable",
3748 | "stability-flags": [],
3749 | "prefer-stable": false,
3750 | "prefer-lowest": false,
3751 | "platform": {
3752 | "php": ">=7.0.0"
3753 | },
3754 | "platform-dev": []
3755 | }
3756 |
--------------------------------------------------------------------------------
/resources/img/bulk-ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/padosoft/laravel-google-structured-data-testing-tool/af4c6073b80b453967a2ea426b2e2baf9d952b00/resources/img/bulk-ok.png
--------------------------------------------------------------------------------
/resources/img/bulk-with-errors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/padosoft/laravel-google-structured-data-testing-tool/af4c6073b80b453967a2ea426b2e2baf9d952b00/resources/img/bulk-with-errors.png
--------------------------------------------------------------------------------
/resources/img/email-ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/padosoft/laravel-google-structured-data-testing-tool/af4c6073b80b453967a2ea426b2e2baf9d952b00/resources/img/email-ok.png
--------------------------------------------------------------------------------
/resources/img/email-with-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/padosoft/laravel-google-structured-data-testing-tool/af4c6073b80b453967a2ea426b2e2baf9d952b00/resources/img/email-with-error.png
--------------------------------------------------------------------------------
/resources/img/url-ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/padosoft/laravel-google-structured-data-testing-tool/af4c6073b80b453967a2ea426b2e2baf9d952b00/resources/img/url-ok.png
--------------------------------------------------------------------------------
/src/FileHelper.php:
--------------------------------------------------------------------------------
1 | command = $objcommand;
25 | $this->whitelist = $whitelist;
26 | }
27 |
28 | /**
29 | *
30 | * Send Request to sensiolab and return array of sensiolab vulnerabilities.
31 | * Empty array if here is no vulnerabilities.
32 | *
33 | * @param $url path to composer.lock file.
34 | *
35 | * @return array
36 | */
37 | public function checkUrl($url)
38 | {
39 | $this->url = $url;
40 |
41 | $optArray = array(
42 | CURLOPT_URL => "https://search.google.com/structured-data/testing-tool/validate",
43 | CURLOPT_RETURNTRANSFER => true,
44 | CURLOPT_ENCODING => "",
45 | CURLOPT_MAXREDIRS => 10,
46 | CURLOPT_TIMEOUT => 30,
47 | CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
48 | CURLOPT_CUSTOMREQUEST => "POST",
49 | CURLOPT_POSTFIELDS => "url=" . urlencode($url),
50 | CURLOPT_HTTPHEADER => array(
51 | "cache-control: no-cache",
52 | "content-type: application/x-www-form-urlencoded;charset=UTF-8",
53 | "origin: https://search.google.com",
54 | "postman-token: 7ee787bf-1fe1-30c6-0b76-3dce8926bd5b",
55 | "referer: https://search.google.com/structured-data/testing-tool/u/0/",
56 | "user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36"
57 | ),
58 | );
59 |
60 | $response = $this->sendRequest($optArray);
61 | if ($response === false) {
62 | return false;
63 | }
64 |
65 | return $this->parseResponse($response);
66 | }
67 |
68 | /**
69 | * @param $optArray
70 | * @return bool|mixed
71 | */
72 | public function sendRequest($optArray)
73 | {
74 | $curl = curl_init();
75 |
76 | curl_setopt_array($curl, $optArray);
77 |
78 | $response = curl_exec($curl);
79 | $err = curl_error($curl);
80 | $information = curl_getinfo($curl);
81 | $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
82 |
83 | curl_close($curl);
84 |
85 | $colorTag = $this->getColorTagForStatusCode($http_code);
86 | $this->command->line("HTTP StatusCode: <{$colorTag}>" . $http_code . "{$colorTag}>");
87 |
88 | if ($err || $http_code != 200) {
89 | $this->command->error("cURL Error #:" . $err);
90 | $this->command->line("cURL info: " . print_r($information, true));
91 | $this->command->line("Response: " . get_var_dump_output($response));
92 | return false;
93 | } elseif ($this->command->option('verbose')=="true") {
94 | $this->command->line("cURL opt array:");
95 | $this->command->line(get_var_dump_output($optArray));
96 | $this->command->line("cURL info: " . print_r($information, true));
97 | $this->command->line("Response: " . get_var_dump_output($response));
98 | }
99 |
100 | return $response;
101 | }
102 |
103 | /**
104 | * @param $error
105 | * @param bool $tuttoOk
106 | * @return array
107 | */
108 | public function checkError($error, $tuttoOk)
109 | {
110 | $tableEntities = array();
111 |
112 | $arr = [
113 | 'name' => '',
114 | 'type' => var_export($error['ownerSet'], true),
115 | 'errors' => var_export($error['errorType'], true),
116 | 'warnings' => var_export($error['args'], true),
117 | 'isOk' => $tuttoOk,
118 | ];
119 | $tableEntities[] = $arr;
120 |
121 | return $tableEntities;
122 | }
123 |
124 | /**
125 | * @param $response
126 | * @return array
127 | */
128 | public function checkResponse($response)
129 | {
130 | $tuttoOk = true;
131 |
132 | if ($response['numObjects'] == 0) {
133 | $this->command->info("No structured data Found");
134 | }
135 | if ($response['totalNumErrors'] > 0) {
136 | $this->command->error("Found " . $response['totalNumErrors'] . " error");
137 | $tuttoOk = false;
138 | }
139 | if ($response['totalNumWarnings'] > 0) {
140 | $this->command->warn("Found " . $response['totalNumWarnings'] . " warnings");
141 | $tuttoOk = false;
142 | }
143 | if ($response['totalNumErrors'] == 0 && $response['totalNumWarnings'] == 0) {
144 | $this->command->info("No Errors or Warnings Found");
145 | }
146 |
147 | if (in_array(rtrim($this->url), $this->whitelist)) {
148 | $tuttoOk = true;
149 | }
150 |
151 | $colorTag = $this->getColorTagForResponse($response);
152 |
153 | $this->tableEntities [] = [
154 | 'name' => "<{$colorTag}>" . $this->url . "{$colorTag}>",
155 | 'type' => $response['numObjects'] == 0 ? 'No structured data Found' : '',
156 | 'errors' => $response['totalNumErrors'],
157 | 'warnings' => $response['totalNumWarnings'],
158 | 'isOk' => $tuttoOk,
159 | ];
160 |
161 | if(!array_key_exists_safe($response, 'errors')) {
162 | return $tuttoOk;
163 | }
164 |
165 | foreach ($response['errors'] as $error) {
166 | $this->tableEntities = array_merge($this->tableEntities, $this->checkError($error, $tuttoOk));
167 | }
168 |
169 | return $tuttoOk;
170 | }
171 |
172 | /**
173 | * Get the color tag for the given status code.
174 | *
175 | * @param string $code
176 | *
177 | * @return string
178 | *
179 | * @see https://github.com/spatie/http-status-check/blob/master/src/CrawlLogger.php#L96
180 | */
181 | protected function getColorTagForStatusCode($code)
182 | {
183 | if (starts_with($code, '2')) {
184 | return 'info';
185 | }
186 | if (starts_with($code, '3')) {
187 | return 'comment';
188 | }
189 | return 'error';
190 | }
191 |
192 | /**
193 | * Get the color tag for the given response.
194 | *
195 | * @param string $response
196 | *
197 | * @return string
198 | *
199 | */
200 | protected function getColorTagForResponse($response)
201 | {
202 | if ($response['totalNumErrors'] > 0) {
203 | return 'error';
204 | }
205 | if ($response['totalNumWarnings'] > 0 || $response['numObjects'] == 0) {
206 | return 'comment';
207 | }
208 | return 'info';
209 | }
210 |
211 | /**
212 | * @param $response
213 | * @return mixed|string
214 | */
215 | protected function parseResponse($response)
216 | {
217 | //sometimes response return with strange start chars
218 | if (!starts_with(trim($response), "{")) {
219 | $response = substr($response, 4);
220 | }
221 |
222 | //strip html sometimes invalidate json
223 | $response = str_replace(["\r", "\n"], "", $response);
224 | $re = '/"html":"(.*),"errors"/';
225 | $subst = '"html":"","errors"';
226 | $response = preg_replace($re, $subst, $response);
227 | $re = '/"html": "(.*),"errors"/';
228 | $subst = '"html":"","errors"';
229 | $response = preg_replace($re, $subst, $response);
230 |
231 | $response = json_decode($response, true);
232 |
233 | return $response;
234 | }
235 | }
236 |
--------------------------------------------------------------------------------
/src/GoogleStructuredDataTestTool.php:
--------------------------------------------------------------------------------
1 | google-markup:test command looks in url.txt file in the given path
30 | and foreach url find in this file, check against google structured data testing tool API:
31 | php artisan google-markup:test
32 | If you omit path argument, command look into url defined in app config.
33 | You can also pass an url in the path as an argument:
34 | php artisan google-markup:test https://www.padosoft.com
35 | By default, the command displays the result in console, but you can also
36 | send an html email by using the --mail option:
37 | php artisan /path/to/my/url.txt --mail=mymail@mydomain.me
38 | If you want to receive an email only for alarm (find markup errors) using the --nomailok option:
39 | php artisan /path/to/my/url.txt --mail=mymail@mydomain.me --nomailok=true
40 | If you want to exclude some url from alert using the --whitelist option:
41 | php artisan /path/to/my/url.txt --whitelist=https://www.padosoft.com,https://blog.padosoft.com
42 | If you want more verbosity log append --verbosity=true
43 | EOF;
44 |
45 | /**
46 | * @var array
47 | */
48 | protected $headersTableConsole = ['name', 'type', 'errors', 'warnings', 'isOk'];
49 |
50 | /**
51 | * @var array
52 | */
53 | protected $tableEntities = [];
54 |
55 | /**
56 | * Create a new command instance.
57 | *
58 | */
59 | public function __construct()
60 | {
61 | parent::__construct();
62 | }
63 |
64 | /**
65 | * Execute the console command.
66 | *
67 | * @return mixed
68 | */
69 | public function handle()
70 | {
71 | $this->hardWork($this->argument(), $this->option());
72 | }
73 |
74 | /**
75 | * @param $argument
76 | * @param $option
77 | */
78 | private function hardWork($argument, $option)
79 | {
80 | $path = $argument['path'];
81 | $this->line('path: ' . $path . '');
82 | $this->line('Check url/file...');
83 | $urls = $this->findUrls($path, $this);
84 |
85 | $this->tableEntities = [];
86 | $tuttoOk = true;
87 | $numUrl = 0;
88 |
89 | $whitelist = FileHelper::adjustPath($option['whitelist']);
90 |
91 | foreach ($urls as $url) {
92 |
93 | $this->line("Analyzing " . ($numUrl + 1) . " of " . count($urls) . "");
94 |
95 | if(!$this->checkStructuredData($url, $whitelist)){
96 | $tuttoOk = false;
97 | }
98 |
99 | $numUrl++;
100 | //Add a sleep so google doesn't think we are spam. thanks to mwight4.
101 | sleep(random_int(30,90));
102 | }
103 |
104 | $this->notifyResult($option['mail'], $option['nomailok'], $tuttoOk);
105 |
106 | }
107 |
108 | /**
109 | * @param $mail
110 | * @param $nomailok
111 | * @param boolean $tuttoOk
112 | */
113 | private function notifyResult($mail, $nomailok, $tuttoOk)
114 | {
115 | //print to console
116 | $this->table($this->headersTableConsole, $this->tableEntities);
117 |
118 | //send email
119 | if (!$tuttoOk || $nomailok == '' || strtolower($nomailok) != 'true') {
120 | $this->sendEmail($mail, $tuttoOk);
121 | }
122 |
123 | $this->notify($tuttoOk);
124 | }
125 |
126 | /**
127 | * @param boolean $result
128 | */
129 | private function notify($result)
130 | {
131 | if ($result) {
132 | $this->notifyOK();
133 | return;
134 | }
135 |
136 | $this->notifyKO();
137 | }
138 |
139 | /**
140 | *
141 | */
142 | private function notifyOK()
143 | {
144 | $esito = Config::get('laravel-google-structured-data-testing-tool.mailSubjectSuccess');
145 | $this->line(''.$esito.'');
146 | $this->line('');
147 | }
148 |
149 | /**
150 | *
151 | */
152 | private function notifyKO()
153 | {
154 | $esito = Config::get('laravel-google-structured-data-testing-tool.mailSubjetcAlarm');
155 | $this->error($esito);
156 | $this->line('');
157 | }
158 |
159 | /**
160 | * @param $mail
161 | * @param boolean $tuttoOk
162 | */
163 | private function sendEmail($mail, $tuttoOk)
164 | {
165 | if ($mail != '') {
166 | $email = new MailHelper($this);
167 | $email->sendEmail($tuttoOk, $mail, $this->tableEntities);
168 | }
169 | }
170 |
171 | /**
172 | *
173 | * @param $url
174 | * @return array with a valid url or empty array
175 | */
176 | private function getUrl($url)
177 | {
178 | $urls = array();
179 |
180 | if (isUrl($url)) {
181 | $urls[] = $url;
182 | }
183 |
184 | return $urls;
185 | }
186 |
187 | /**
188 | *
189 | * @param $path
190 | * @param \Illuminate\Console\Command $cmd
191 | * @return array of valid url or empty array
192 | */
193 | private function getUrlsByPath($path, \Illuminate\Console\Command $cmd)
194 | {
195 | $urls = array();
196 |
197 | if (!file_exists($path)) {
198 | return $urls;
199 | }
200 |
201 | $cmd->line('Find file ' . $path);
202 |
203 | $urls_tmp = explode("\n", file_get_contents($path));
204 | $cmd->line('Found ' . count($urls_tmp). ' entries in file.');
205 |
206 | return array_filter($urls_tmp, function ($url) use ($cmd) {
207 | if (isUrl(trim($url))) {
208 | return true;
209 | } else {
210 | $cmd->error('ERROR: url \'' . trim($url) . '\' is NOT a valid url!');
211 | return false;
212 | }
213 | });
214 | }
215 |
216 | /**
217 | *
218 | * @param $path
219 | * @param \Illuminate\Console\Command $cmd
220 | * @return array of valid url
221 | */
222 | private function findUrls($path, \Illuminate\Console\Command $cmd)
223 | {
224 | $urls = $this->getUrl($path);
225 | if (count($urls) > 0) {
226 | $cmd->line('Find url: ' . $path . '');
227 | return $urls;
228 | }
229 |
230 | $urls = $this->getUrlsByPath($path, $cmd);
231 | if (count($urls) > 0) {
232 | $cmd->line('Find ' . count($urls) . ' valid url in ' . $path);
233 | return $urls;
234 | }
235 |
236 | $cmd->error('File url ' . $path . ' not found and not a valid url!');
237 | return $urls;
238 | }
239 |
240 | /**
241 | * @param $url
242 | * @param $whitelist
243 | * @return bool
244 | */
245 | private function checkStructuredData($url, $whitelist)
246 | {
247 | $this->line("Analizing: $url ...");
248 |
249 | $gtest = new GoogleMarkupHelper($this, $whitelist);
250 | $response = $gtest->checkUrl($url);
251 |
252 | if (($response === null) || !is_array($response)) {
253 | $this->error("Error! Response not vaild or null.");
254 | $this->line("Response:");
255 | $this->line(get_var_dump_output($response));
256 | return false;
257 | }
258 | if (count($response) == 0) {
259 | return false;
260 | }
261 |
262 | $tuttoOk = $gtest->checkResponse($response);
263 |
264 | $this->tableEntities = array_merge($this->tableEntities, $gtest->tableEntities);
265 |
266 | return $tuttoOk;
267 | }
268 |
269 | }
270 |
271 |
--------------------------------------------------------------------------------
/src/GoogleStructuredDataTestToolServiceProvider.php:
--------------------------------------------------------------------------------
1 | publishes([
23 | __DIR__ . '/config/laravel-google-structured-data-testing-tool.php' => config_path('laravel-google-structured-data-testing-tool.php'),
24 | ], 'config');
25 |
26 | $this->loadViewsFrom(__DIR__ . '/views', 'laravel-google-structured-data-testing-tool');
27 |
28 | $this->publishes([
29 | __DIR__ . '/views' => base_path('resources/views/vendor/laravel-google-structured-data-testing-tool'),
30 | ]);
31 | }
32 |
33 | /**
34 | * Register the service provider.
35 | *
36 | * @return void
37 | */
38 | public function register()
39 | {
40 | $this->app->singleton('command.google-markup:test',
41 | function () {
42 | return new GoogleStructuredDataTestTool();
43 | }
44 | );
45 |
46 | $this->commands('command.google-markup:test');
47 | }
48 |
49 | /**
50 | * Get the services provided by the provider.
51 | *
52 | * @return string[]
53 | */
54 | public function provides()
55 | {
56 | return ['command.google-markup:test'];
57 | }
58 |
59 | /**
60 | * @param $app
61 | * @return integer
62 | */
63 | public function dummy($app)
64 | {
65 | $i=0;
66 | if($app){
67 | return $i;
68 | }
69 | return $i++;
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/MailHelper.php:
--------------------------------------------------------------------------------
1 | command = $objcommand;
30 | }
31 |
32 | /**
33 | * @param $tuttoOk
34 | * @param $mail
35 | * @param $vul
36 | */
37 | public function sendEmail($tuttoOk, $mail, $vul)
38 | {
39 | $soggetto = Config::get('laravel-google-structured-data-testing-tool.mailSubjectSuccess');
40 |
41 | if (!$tuttoOk) {
42 | $soggetto = Config::get('laravel-google-structured-data-testing-tool.mailSubjetcAlarm');
43 | }
44 |
45 | $validator = Validator::make(['email' => $mail], [
46 | 'email' => 'required|email',
47 | ]);
48 | if ($validator->fails()) {
49 | $this->command->error('No valid email passed: ' . $mail . '. Mail will not be sent.');
50 | return;
51 | }
52 | $this->command->line('Send email to ' . $mail . '');
53 |
54 | Mail::send(
55 | Config::get('laravel-google-structured-data-testing-tool.mailViewName'),
56 | ['vul' => $vul],
57 | function (\Illuminate\Mail\Message $message) use ($mail, $soggetto) {
58 | $message->from(
59 | Config::get('laravel-google-structured-data-testing-tool.mailFrom'),
60 | Config::get('laravel-google-structured-data-testing-tool.mailFromName')
61 | );
62 | $message->to($mail, $mail);
63 | $message->subject($soggetto);
64 | }
65 | );
66 |
67 |
68 | $this->command->line('email sent.');
69 |
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/config/.env.example:
--------------------------------------------------------------------------------
1 | STRUCTURED_DATA_TESTING_TOOL_SUBJECT_SUCCESS='[google-structured-data-testing-tool]: Ok - markup data is ok.'
2 | STRUCTURED_DATA_TESTING_TOOL_SUBJECT_ALARM='[google-structured-data-testing-tool]: Alarm - markup data error detected.'
3 | STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM='info@example.com'
4 | STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM_NAME='Info Example'
5 | STRUCTURED_DATA_TESTING_TOOL_MAIL_VIEW_NAME='laravel-google-structured-data-testing-tool::mail'
6 | STRUCTURED_DATA_TESTING_TOOL_LOG_FILE_PATH='pathtolog/laravel-google-structured-data-testing-tool.log'
7 |
--------------------------------------------------------------------------------
/src/config/laravel-env-validator.example.php:
--------------------------------------------------------------------------------
1 | 'required',
5 | 'STRUCTURED_DATA_TESTING_TOOL_SUBJECT_ALARM' => 'required',
6 | 'STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM' => 'required|email',
7 | 'STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM_NAME' => 'required',
8 | 'STRUCTURED_DATA_TESTING_TOOL_MAIL_VIEW_NAME' => 'required',
9 | 'STRUCTURED_DATA_TESTING_TOOL_LOG_FILE_PATH' => 'required',
10 | ];
11 |
--------------------------------------------------------------------------------
/src/config/laravel-google-structured-data-testing-tool.php:
--------------------------------------------------------------------------------
1 | env(
4 | 'STRUCTURED_DATA_TESTING_TOOL_SUBJECT_SUCCESS',
5 | '[google-structured-data-testing-tool]: Ok - markup data is ok.'
6 | ),
7 | 'mailSubjetcAlarm' => env(
8 | 'STRUCTURED_DATA_TESTING_TOOL_SUBJECT_ALARM',
9 | '[google-structured-data-testing-tool]: Alarm - markup data error detected.'
10 | ),
11 | 'mailFrom' => env('STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM', 'info@example.com'),
12 | 'mailFromName' => env('STRUCTURED_DATA_TESTING_TOOL_MESSAGE_FROM_NAME', 'Info Example'),
13 | 'mailViewName' => env('STRUCTURED_DATA_TESTING_TOOL_MAIL_VIEW_NAME', 'laravel-google-structured-data-testing-tool::mail'),
14 | 'logFilePath' => env('STRUCTURED_DATA_TESTING_TOOL_LOG_FILE_PATH', storage_path() . '/logs/laravel-google-structured-data-testing-tool.log')
15 | );
16 |
--------------------------------------------------------------------------------
/src/views/mail.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Laravel
5 |
6 |
7 |
8 |
44 |
45 |
46 |
47 |
48 |
49 | Name |
50 | Type |
51 | Errors |
52 | Warnings |
53 |
54 | @foreach ($vul as $d)
55 | ","","","","","","",""], "", $d['name']);
57 | ?>
58 | 0)
62 | color: darkorange;font-weight:bold;
63 | @endif
64 | '>
65 |
66 | {{ $nameOriginal }}
67 |
68 | |
69 | {{ $d['type'] }} |
70 | {{ $d['errors'] }} |
71 | {{ $d['warnings'] }} |
72 |
73 | @endforeach
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------