├── .babelrc.js
├── .coveralls.yml
├── .editorconfig
├── .eslintrc.json
├── .gitignore
├── .npmrc
├── .nvmrc
├── .travis.yml
├── Vagrantfile
├── block-scaffolding.php
├── composer.json
├── composer.lock
├── docker-compose.yml
├── init.sh
├── js
├── .gitignore
└── src
│ ├── editor.js
│ └── editor.test.js
├── package-lock.json
├── package.json
├── php
├── Plugin.php
└── Router.php
├── phpcs.xml.dist
├── phpunit.xml.dist
├── readme.md
├── renovate.json
├── scripts
└── docker
│ └── wordpress
│ ├── Dockerfile
│ └── config
│ └── php
│ ├── php.ini
│ └── xdebug.ini
├── tests
├── bootstrap.php
├── coverage
│ └── .gitignore
└── php
│ ├── TestCase.php
│ ├── TestPlugin.php
│ └── TestRouter.php
└── webpack.config.js
/.babelrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@wordpress/default',
4 | ],
5 | plugins: [
6 | '@wordpress/babel-plugin-import-jsx-pragma',
7 | '@babel/transform-react-jsx',
8 | ],
9 | };
10 |
--------------------------------------------------------------------------------
/.coveralls.yml:
--------------------------------------------------------------------------------
1 | coverage_clover:
2 | - tests/coverage/php/clover.xml
3 | - tests/coverage/js/clover.xml
4 | json_path: tests/coverage/coveralls-upload.json
5 | service_name: travis-ci
6 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: http://EditorConfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | end_of_line = lf
7 | insert_final_newline = true
8 | trim_trailing_whitespace = true
9 | indent_style = tab
10 |
11 | [*.{json,yml,yaml}]
12 | indent_style = space
13 | indent_size = 2
14 |
15 | [*.md]
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "plugin:@wordpress/eslint-plugin/recommended"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea/
3 | .phpunit.result.cache
4 | .vagrant/
5 | console.log
6 | node_modules/
7 | phpcs.xml
8 | phpunit.xml
9 | vendor/
10 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict = true
2 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | lts/*
2 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | dist: xenial
2 |
3 | language: php
4 |
5 | php:
6 | - "7.3"
7 |
8 | before_install:
9 | - nvm install
10 | - nvm use
11 |
12 | install:
13 | - npm install
14 |
15 | script:
16 | - npm run lint
17 | - npm run test-with-coverage
18 |
19 | after_success:
20 | - npm run report-coverage
21 |
22 | notifications:
23 | email: false
24 |
25 | # Pull requests are built by default.
26 | branches:
27 | only:
28 | - master
29 |
30 | cache:
31 | npm: true
32 | directories:
33 | - $HOME/.composer/cache
34 |
--------------------------------------------------------------------------------
/Vagrantfile:
--------------------------------------------------------------------------------
1 | # Local dev environment https://github.com/wpsh/wpsh-local
2 |
3 | load File.join(
4 | File.dirname(__FILE__),
5 | "vendor/wpsh/local/Vagrantfile"
6 | )
7 |
8 | Vagrant.configure(2) do |config|
9 | config.vm.hostname = "block-scaffolding-wp"
10 | end
11 |
--------------------------------------------------------------------------------
/block-scaffolding.php:
--------------------------------------------------------------------------------
1 | =7.2",
10 | "composer/installers": "^1.7"
11 | },
12 | "require-dev": {
13 | "10up/wp_mock": "0.4.2",
14 | "dealerdirect/phpcodesniffer-composer-installer": "0.7.1",
15 | "mockery/mockery": "1.3.1",
16 | "php-coveralls/php-coveralls": "2.2.0",
17 | "phpcompatibility/phpcompatibility-wp": "2.1.0",
18 | "phpunit/phpunit": "8.5.2",
19 | "wp-coding-standards/wpcs": "2.3.0",
20 | "wpsh/local": "0.2.3"
21 | },
22 | "autoload": {
23 | "psr-4": {
24 | "XWP\\BlockScaffolding\\": "php/"
25 | }
26 | },
27 | "autoload-dev": {
28 | "psr-4": {
29 | "XWP\\BlockScaffolding\\": "tests/php/"
30 | }
31 | },
32 | "scripts": {
33 | "lint": [
34 | "@composer validate --strict",
35 | "phpcs ."
36 | ],
37 | "test": [
38 | "phpunit"
39 | ],
40 | "coverage": [
41 | "php-coveralls --verbose"
42 | ],
43 | "build": [
44 | "composer install --no-dev --prefer-dist --optimize-autoloader --no-scripts"
45 | ]
46 | },
47 | "config": {
48 | "sort-packages": true
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/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": "c06be08f7943f81ca467bd0dce021c41",
8 | "packages": [
9 | {
10 | "name": "composer/installers",
11 | "version": "v1.11.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/composer/installers.git",
15 | "reference": "ae03311f45dfe194412081526be2e003960df74b"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/composer/installers/zipball/ae03311f45dfe194412081526be2e003960df74b",
20 | "reference": "ae03311f45dfe194412081526be2e003960df74b",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "composer-plugin-api": "^1.0 || ^2.0"
25 | },
26 | "replace": {
27 | "roundcube/plugin-installer": "*",
28 | "shama/baton": "*"
29 | },
30 | "require-dev": {
31 | "composer/composer": "1.6.* || ^2.0",
32 | "composer/semver": "^1 || ^3",
33 | "phpstan/phpstan": "^0.12.55",
34 | "phpstan/phpstan-phpunit": "^0.12.16",
35 | "symfony/phpunit-bridge": "^4.2 || ^5",
36 | "symfony/process": "^2.3"
37 | },
38 | "type": "composer-plugin",
39 | "extra": {
40 | "class": "Composer\\Installers\\Plugin",
41 | "branch-alias": {
42 | "dev-main": "1.x-dev"
43 | }
44 | },
45 | "autoload": {
46 | "psr-4": {
47 | "Composer\\Installers\\": "src/Composer/Installers"
48 | }
49 | },
50 | "notification-url": "https://packagist.org/downloads/",
51 | "license": [
52 | "MIT"
53 | ],
54 | "authors": [
55 | {
56 | "name": "Kyle Robinson Young",
57 | "email": "kyle@dontkry.com",
58 | "homepage": "https://github.com/shama"
59 | }
60 | ],
61 | "description": "A multi-framework Composer library installer",
62 | "homepage": "https://composer.github.io/installers/",
63 | "keywords": [
64 | "Craft",
65 | "Dolibarr",
66 | "Eliasis",
67 | "Hurad",
68 | "ImageCMS",
69 | "Kanboard",
70 | "Lan Management System",
71 | "MODX Evo",
72 | "MantisBT",
73 | "Mautic",
74 | "Maya",
75 | "OXID",
76 | "Plentymarkets",
77 | "Porto",
78 | "RadPHP",
79 | "SMF",
80 | "Starbug",
81 | "Thelia",
82 | "Whmcs",
83 | "WolfCMS",
84 | "agl",
85 | "aimeos",
86 | "annotatecms",
87 | "attogram",
88 | "bitrix",
89 | "cakephp",
90 | "chef",
91 | "cockpit",
92 | "codeigniter",
93 | "concrete5",
94 | "croogo",
95 | "dokuwiki",
96 | "drupal",
97 | "eZ Platform",
98 | "elgg",
99 | "expressionengine",
100 | "fuelphp",
101 | "grav",
102 | "installer",
103 | "itop",
104 | "joomla",
105 | "known",
106 | "kohana",
107 | "laravel",
108 | "lavalite",
109 | "lithium",
110 | "magento",
111 | "majima",
112 | "mako",
113 | "mediawiki",
114 | "miaoxing",
115 | "modulework",
116 | "modx",
117 | "moodle",
118 | "osclass",
119 | "phpbb",
120 | "piwik",
121 | "ppi",
122 | "processwire",
123 | "puppet",
124 | "pxcms",
125 | "reindex",
126 | "roundcube",
127 | "shopware",
128 | "silverstripe",
129 | "sydes",
130 | "sylius",
131 | "symfony",
132 | "tastyigniter",
133 | "typo3",
134 | "wordpress",
135 | "yawik",
136 | "zend",
137 | "zikula"
138 | ],
139 | "support": {
140 | "issues": "https://github.com/composer/installers/issues",
141 | "source": "https://github.com/composer/installers/tree/v1.11.0"
142 | },
143 | "funding": [
144 | {
145 | "url": "https://packagist.com",
146 | "type": "custom"
147 | },
148 | {
149 | "url": "https://github.com/composer",
150 | "type": "github"
151 | },
152 | {
153 | "url": "https://tidelift.com/funding/github/packagist/composer/composer",
154 | "type": "tidelift"
155 | }
156 | ],
157 | "time": "2021-04-28T06:42:17+00:00"
158 | }
159 | ],
160 | "packages-dev": [
161 | {
162 | "name": "10up/wp_mock",
163 | "version": "0.4.2",
164 | "source": {
165 | "type": "git",
166 | "url": "https://github.com/10up/wp_mock.git",
167 | "reference": "9019226eb50df275aa86bb15bfc98a619601ee49"
168 | },
169 | "dist": {
170 | "type": "zip",
171 | "url": "https://api.github.com/repos/10up/wp_mock/zipball/9019226eb50df275aa86bb15bfc98a619601ee49",
172 | "reference": "9019226eb50df275aa86bb15bfc98a619601ee49",
173 | "shasum": ""
174 | },
175 | "require": {
176 | "antecedent/patchwork": "^2.1",
177 | "mockery/mockery": "^1.0",
178 | "php": ">=7.1",
179 | "phpunit/phpunit": ">=7.0"
180 | },
181 | "require-dev": {
182 | "behat/behat": "^3.0",
183 | "php-coveralls/php-coveralls": "^2.1",
184 | "sebastian/comparator": ">=1.2.3"
185 | },
186 | "type": "library",
187 | "autoload": {
188 | "psr-4": {
189 | "WP_Mock\\": "./php/WP_Mock"
190 | },
191 | "classmap": [
192 | "php/WP_Mock.php"
193 | ]
194 | },
195 | "notification-url": "https://packagist.org/downloads/",
196 | "license": [
197 | "GPL-2.0-or-later"
198 | ],
199 | "description": "A mocking library to take the pain out of unit testing for WordPress",
200 | "support": {
201 | "issues": "https://github.com/10up/wp_mock/issues",
202 | "source": "https://github.com/10up/wp_mock/tree/master"
203 | },
204 | "time": "2019-03-16T03:44:39+00:00"
205 | },
206 | {
207 | "name": "antecedent/patchwork",
208 | "version": "2.1.12",
209 | "source": {
210 | "type": "git",
211 | "url": "https://github.com/antecedent/patchwork.git",
212 | "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea"
213 | },
214 | "dist": {
215 | "type": "zip",
216 | "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea",
217 | "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea",
218 | "shasum": ""
219 | },
220 | "require": {
221 | "php": ">=5.4.0"
222 | },
223 | "require-dev": {
224 | "phpunit/phpunit": ">=4"
225 | },
226 | "type": "library",
227 | "notification-url": "https://packagist.org/downloads/",
228 | "license": [
229 | "MIT"
230 | ],
231 | "authors": [
232 | {
233 | "name": "Ignas Rudaitis",
234 | "email": "ignas.rudaitis@gmail.com"
235 | }
236 | ],
237 | "description": "Method redefinition (monkey-patching) functionality for PHP.",
238 | "homepage": "http://patchwork2.org/",
239 | "keywords": [
240 | "aop",
241 | "aspect",
242 | "interception",
243 | "monkeypatching",
244 | "redefinition",
245 | "runkit",
246 | "testing"
247 | ],
248 | "support": {
249 | "issues": "https://github.com/antecedent/patchwork/issues",
250 | "source": "https://github.com/antecedent/patchwork/tree/2.1.12"
251 | },
252 | "time": "2019-12-22T17:52:09+00:00"
253 | },
254 | {
255 | "name": "dealerdirect/phpcodesniffer-composer-installer",
256 | "version": "v0.7.1",
257 | "source": {
258 | "type": "git",
259 | "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
260 | "reference": "fe390591e0241955f22eb9ba327d137e501c771c"
261 | },
262 | "dist": {
263 | "type": "zip",
264 | "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
265 | "reference": "fe390591e0241955f22eb9ba327d137e501c771c",
266 | "shasum": ""
267 | },
268 | "require": {
269 | "composer-plugin-api": "^1.0 || ^2.0",
270 | "php": ">=5.3",
271 | "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
272 | },
273 | "require-dev": {
274 | "composer/composer": "*",
275 | "phpcompatibility/php-compatibility": "^9.0",
276 | "sensiolabs/security-checker": "^4.1.0"
277 | },
278 | "type": "composer-plugin",
279 | "extra": {
280 | "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
281 | },
282 | "autoload": {
283 | "psr-4": {
284 | "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
285 | }
286 | },
287 | "notification-url": "https://packagist.org/downloads/",
288 | "license": [
289 | "MIT"
290 | ],
291 | "authors": [
292 | {
293 | "name": "Franck Nijhof",
294 | "email": "franck.nijhof@dealerdirect.com",
295 | "homepage": "http://www.frenck.nl",
296 | "role": "Developer / IT Manager"
297 | }
298 | ],
299 | "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
300 | "homepage": "http://www.dealerdirect.com",
301 | "keywords": [
302 | "PHPCodeSniffer",
303 | "PHP_CodeSniffer",
304 | "code quality",
305 | "codesniffer",
306 | "composer",
307 | "installer",
308 | "phpcs",
309 | "plugin",
310 | "qa",
311 | "quality",
312 | "standard",
313 | "standards",
314 | "style guide",
315 | "stylecheck",
316 | "tests"
317 | ],
318 | "support": {
319 | "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
320 | "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
321 | },
322 | "time": "2020-12-07T18:04:37+00:00"
323 | },
324 | {
325 | "name": "doctrine/instantiator",
326 | "version": "1.4.0",
327 | "source": {
328 | "type": "git",
329 | "url": "https://github.com/doctrine/instantiator.git",
330 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
331 | },
332 | "dist": {
333 | "type": "zip",
334 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
335 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
336 | "shasum": ""
337 | },
338 | "require": {
339 | "php": "^7.1 || ^8.0"
340 | },
341 | "require-dev": {
342 | "doctrine/coding-standard": "^8.0",
343 | "ext-pdo": "*",
344 | "ext-phar": "*",
345 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
346 | "phpstan/phpstan": "^0.12",
347 | "phpstan/phpstan-phpunit": "^0.12",
348 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
349 | },
350 | "type": "library",
351 | "autoload": {
352 | "psr-4": {
353 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
354 | }
355 | },
356 | "notification-url": "https://packagist.org/downloads/",
357 | "license": [
358 | "MIT"
359 | ],
360 | "authors": [
361 | {
362 | "name": "Marco Pivetta",
363 | "email": "ocramius@gmail.com",
364 | "homepage": "https://ocramius.github.io/"
365 | }
366 | ],
367 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
368 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
369 | "keywords": [
370 | "constructor",
371 | "instantiate"
372 | ],
373 | "support": {
374 | "issues": "https://github.com/doctrine/instantiator/issues",
375 | "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
376 | },
377 | "funding": [
378 | {
379 | "url": "https://www.doctrine-project.org/sponsorship.html",
380 | "type": "custom"
381 | },
382 | {
383 | "url": "https://www.patreon.com/phpdoctrine",
384 | "type": "patreon"
385 | },
386 | {
387 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
388 | "type": "tidelift"
389 | }
390 | ],
391 | "time": "2020-11-10T18:47:58+00:00"
392 | },
393 | {
394 | "name": "guzzlehttp/guzzle",
395 | "version": "6.5.5",
396 | "source": {
397 | "type": "git",
398 | "url": "https://github.com/guzzle/guzzle.git",
399 | "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
400 | },
401 | "dist": {
402 | "type": "zip",
403 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
404 | "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
405 | "shasum": ""
406 | },
407 | "require": {
408 | "ext-json": "*",
409 | "guzzlehttp/promises": "^1.0",
410 | "guzzlehttp/psr7": "^1.6.1",
411 | "php": ">=5.5",
412 | "symfony/polyfill-intl-idn": "^1.17.0"
413 | },
414 | "require-dev": {
415 | "ext-curl": "*",
416 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
417 | "psr/log": "^1.1"
418 | },
419 | "suggest": {
420 | "psr/log": "Required for using the Log middleware"
421 | },
422 | "type": "library",
423 | "extra": {
424 | "branch-alias": {
425 | "dev-master": "6.5-dev"
426 | }
427 | },
428 | "autoload": {
429 | "psr-4": {
430 | "GuzzleHttp\\": "src/"
431 | },
432 | "files": [
433 | "src/functions_include.php"
434 | ]
435 | },
436 | "notification-url": "https://packagist.org/downloads/",
437 | "license": [
438 | "MIT"
439 | ],
440 | "authors": [
441 | {
442 | "name": "Michael Dowling",
443 | "email": "mtdowling@gmail.com",
444 | "homepage": "https://github.com/mtdowling"
445 | }
446 | ],
447 | "description": "Guzzle is a PHP HTTP client library",
448 | "homepage": "http://guzzlephp.org/",
449 | "keywords": [
450 | "client",
451 | "curl",
452 | "framework",
453 | "http",
454 | "http client",
455 | "rest",
456 | "web service"
457 | ],
458 | "support": {
459 | "issues": "https://github.com/guzzle/guzzle/issues",
460 | "source": "https://github.com/guzzle/guzzle/tree/6.5"
461 | },
462 | "time": "2020-06-16T21:01:06+00:00"
463 | },
464 | {
465 | "name": "guzzlehttp/promises",
466 | "version": "1.4.1",
467 | "source": {
468 | "type": "git",
469 | "url": "https://github.com/guzzle/promises.git",
470 | "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
471 | },
472 | "dist": {
473 | "type": "zip",
474 | "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
475 | "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
476 | "shasum": ""
477 | },
478 | "require": {
479 | "php": ">=5.5"
480 | },
481 | "require-dev": {
482 | "symfony/phpunit-bridge": "^4.4 || ^5.1"
483 | },
484 | "type": "library",
485 | "extra": {
486 | "branch-alias": {
487 | "dev-master": "1.4-dev"
488 | }
489 | },
490 | "autoload": {
491 | "psr-4": {
492 | "GuzzleHttp\\Promise\\": "src/"
493 | },
494 | "files": [
495 | "src/functions_include.php"
496 | ]
497 | },
498 | "notification-url": "https://packagist.org/downloads/",
499 | "license": [
500 | "MIT"
501 | ],
502 | "authors": [
503 | {
504 | "name": "Michael Dowling",
505 | "email": "mtdowling@gmail.com",
506 | "homepage": "https://github.com/mtdowling"
507 | }
508 | ],
509 | "description": "Guzzle promises library",
510 | "keywords": [
511 | "promise"
512 | ],
513 | "support": {
514 | "issues": "https://github.com/guzzle/promises/issues",
515 | "source": "https://github.com/guzzle/promises/tree/1.4.1"
516 | },
517 | "time": "2021-03-07T09:25:29+00:00"
518 | },
519 | {
520 | "name": "guzzlehttp/psr7",
521 | "version": "1.8.2",
522 | "source": {
523 | "type": "git",
524 | "url": "https://github.com/guzzle/psr7.git",
525 | "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
526 | },
527 | "dist": {
528 | "type": "zip",
529 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
530 | "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
531 | "shasum": ""
532 | },
533 | "require": {
534 | "php": ">=5.4.0",
535 | "psr/http-message": "~1.0",
536 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
537 | },
538 | "provide": {
539 | "psr/http-message-implementation": "1.0"
540 | },
541 | "require-dev": {
542 | "ext-zlib": "*",
543 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
544 | },
545 | "suggest": {
546 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
547 | },
548 | "type": "library",
549 | "extra": {
550 | "branch-alias": {
551 | "dev-master": "1.7-dev"
552 | }
553 | },
554 | "autoload": {
555 | "psr-4": {
556 | "GuzzleHttp\\Psr7\\": "src/"
557 | },
558 | "files": [
559 | "src/functions_include.php"
560 | ]
561 | },
562 | "notification-url": "https://packagist.org/downloads/",
563 | "license": [
564 | "MIT"
565 | ],
566 | "authors": [
567 | {
568 | "name": "Michael Dowling",
569 | "email": "mtdowling@gmail.com",
570 | "homepage": "https://github.com/mtdowling"
571 | },
572 | {
573 | "name": "Tobias Schultze",
574 | "homepage": "https://github.com/Tobion"
575 | }
576 | ],
577 | "description": "PSR-7 message implementation that also provides common utility methods",
578 | "keywords": [
579 | "http",
580 | "message",
581 | "psr-7",
582 | "request",
583 | "response",
584 | "stream",
585 | "uri",
586 | "url"
587 | ],
588 | "support": {
589 | "issues": "https://github.com/guzzle/psr7/issues",
590 | "source": "https://github.com/guzzle/psr7/tree/1.8.2"
591 | },
592 | "time": "2021-04-26T09:17:50+00:00"
593 | },
594 | {
595 | "name": "hamcrest/hamcrest-php",
596 | "version": "v2.0.1",
597 | "source": {
598 | "type": "git",
599 | "url": "https://github.com/hamcrest/hamcrest-php.git",
600 | "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
601 | },
602 | "dist": {
603 | "type": "zip",
604 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
605 | "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
606 | "shasum": ""
607 | },
608 | "require": {
609 | "php": "^5.3|^7.0|^8.0"
610 | },
611 | "replace": {
612 | "cordoval/hamcrest-php": "*",
613 | "davedevelopment/hamcrest-php": "*",
614 | "kodova/hamcrest-php": "*"
615 | },
616 | "require-dev": {
617 | "phpunit/php-file-iterator": "^1.4 || ^2.0",
618 | "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
619 | },
620 | "type": "library",
621 | "extra": {
622 | "branch-alias": {
623 | "dev-master": "2.1-dev"
624 | }
625 | },
626 | "autoload": {
627 | "classmap": [
628 | "hamcrest"
629 | ]
630 | },
631 | "notification-url": "https://packagist.org/downloads/",
632 | "license": [
633 | "BSD-3-Clause"
634 | ],
635 | "description": "This is the PHP port of Hamcrest Matchers",
636 | "keywords": [
637 | "test"
638 | ],
639 | "support": {
640 | "issues": "https://github.com/hamcrest/hamcrest-php/issues",
641 | "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
642 | },
643 | "time": "2020-07-09T08:09:16+00:00"
644 | },
645 | {
646 | "name": "mockery/mockery",
647 | "version": "1.3.1",
648 | "source": {
649 | "type": "git",
650 | "url": "https://github.com/mockery/mockery.git",
651 | "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be"
652 | },
653 | "dist": {
654 | "type": "zip",
655 | "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be",
656 | "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be",
657 | "shasum": ""
658 | },
659 | "require": {
660 | "hamcrest/hamcrest-php": "~2.0",
661 | "lib-pcre": ">=7.0",
662 | "php": ">=5.6.0"
663 | },
664 | "require-dev": {
665 | "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0"
666 | },
667 | "type": "library",
668 | "extra": {
669 | "branch-alias": {
670 | "dev-master": "1.3.x-dev"
671 | }
672 | },
673 | "autoload": {
674 | "psr-0": {
675 | "Mockery": "library/"
676 | }
677 | },
678 | "notification-url": "https://packagist.org/downloads/",
679 | "license": [
680 | "BSD-3-Clause"
681 | ],
682 | "authors": [
683 | {
684 | "name": "Pádraic Brady",
685 | "email": "padraic.brady@gmail.com",
686 | "homepage": "http://blog.astrumfutura.com"
687 | },
688 | {
689 | "name": "Dave Marshall",
690 | "email": "dave.marshall@atstsolutions.co.uk",
691 | "homepage": "http://davedevelopment.co.uk"
692 | }
693 | ],
694 | "description": "Mockery is a simple yet flexible PHP mock object framework",
695 | "homepage": "https://github.com/mockery/mockery",
696 | "keywords": [
697 | "BDD",
698 | "TDD",
699 | "library",
700 | "mock",
701 | "mock objects",
702 | "mockery",
703 | "stub",
704 | "test",
705 | "test double",
706 | "testing"
707 | ],
708 | "support": {
709 | "issues": "https://github.com/mockery/mockery/issues",
710 | "source": "https://github.com/mockery/mockery/tree/master"
711 | },
712 | "time": "2019-12-26T09:49:15+00:00"
713 | },
714 | {
715 | "name": "myclabs/deep-copy",
716 | "version": "1.10.2",
717 | "source": {
718 | "type": "git",
719 | "url": "https://github.com/myclabs/DeepCopy.git",
720 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
721 | },
722 | "dist": {
723 | "type": "zip",
724 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
725 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
726 | "shasum": ""
727 | },
728 | "require": {
729 | "php": "^7.1 || ^8.0"
730 | },
731 | "replace": {
732 | "myclabs/deep-copy": "self.version"
733 | },
734 | "require-dev": {
735 | "doctrine/collections": "^1.0",
736 | "doctrine/common": "^2.6",
737 | "phpunit/phpunit": "^7.1"
738 | },
739 | "type": "library",
740 | "autoload": {
741 | "psr-4": {
742 | "DeepCopy\\": "src/DeepCopy/"
743 | },
744 | "files": [
745 | "src/DeepCopy/deep_copy.php"
746 | ]
747 | },
748 | "notification-url": "https://packagist.org/downloads/",
749 | "license": [
750 | "MIT"
751 | ],
752 | "description": "Create deep copies (clones) of your objects",
753 | "keywords": [
754 | "clone",
755 | "copy",
756 | "duplicate",
757 | "object",
758 | "object graph"
759 | ],
760 | "support": {
761 | "issues": "https://github.com/myclabs/DeepCopy/issues",
762 | "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
763 | },
764 | "funding": [
765 | {
766 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
767 | "type": "tidelift"
768 | }
769 | ],
770 | "time": "2020-11-13T09:40:50+00:00"
771 | },
772 | {
773 | "name": "phar-io/manifest",
774 | "version": "1.0.3",
775 | "source": {
776 | "type": "git",
777 | "url": "https://github.com/phar-io/manifest.git",
778 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
779 | },
780 | "dist": {
781 | "type": "zip",
782 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
783 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
784 | "shasum": ""
785 | },
786 | "require": {
787 | "ext-dom": "*",
788 | "ext-phar": "*",
789 | "phar-io/version": "^2.0",
790 | "php": "^5.6 || ^7.0"
791 | },
792 | "type": "library",
793 | "extra": {
794 | "branch-alias": {
795 | "dev-master": "1.0.x-dev"
796 | }
797 | },
798 | "autoload": {
799 | "classmap": [
800 | "src/"
801 | ]
802 | },
803 | "notification-url": "https://packagist.org/downloads/",
804 | "license": [
805 | "BSD-3-Clause"
806 | ],
807 | "authors": [
808 | {
809 | "name": "Arne Blankerts",
810 | "email": "arne@blankerts.de",
811 | "role": "Developer"
812 | },
813 | {
814 | "name": "Sebastian Heuer",
815 | "email": "sebastian@phpeople.de",
816 | "role": "Developer"
817 | },
818 | {
819 | "name": "Sebastian Bergmann",
820 | "email": "sebastian@phpunit.de",
821 | "role": "Developer"
822 | }
823 | ],
824 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
825 | "support": {
826 | "issues": "https://github.com/phar-io/manifest/issues",
827 | "source": "https://github.com/phar-io/manifest/tree/master"
828 | },
829 | "time": "2018-07-08T19:23:20+00:00"
830 | },
831 | {
832 | "name": "phar-io/version",
833 | "version": "2.0.1",
834 | "source": {
835 | "type": "git",
836 | "url": "https://github.com/phar-io/version.git",
837 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
838 | },
839 | "dist": {
840 | "type": "zip",
841 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
842 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
843 | "shasum": ""
844 | },
845 | "require": {
846 | "php": "^5.6 || ^7.0"
847 | },
848 | "type": "library",
849 | "autoload": {
850 | "classmap": [
851 | "src/"
852 | ]
853 | },
854 | "notification-url": "https://packagist.org/downloads/",
855 | "license": [
856 | "BSD-3-Clause"
857 | ],
858 | "authors": [
859 | {
860 | "name": "Arne Blankerts",
861 | "email": "arne@blankerts.de",
862 | "role": "Developer"
863 | },
864 | {
865 | "name": "Sebastian Heuer",
866 | "email": "sebastian@phpeople.de",
867 | "role": "Developer"
868 | },
869 | {
870 | "name": "Sebastian Bergmann",
871 | "email": "sebastian@phpunit.de",
872 | "role": "Developer"
873 | }
874 | ],
875 | "description": "Library for handling version information and constraints",
876 | "support": {
877 | "issues": "https://github.com/phar-io/version/issues",
878 | "source": "https://github.com/phar-io/version/tree/master"
879 | },
880 | "time": "2018-07-08T19:19:57+00:00"
881 | },
882 | {
883 | "name": "php-coveralls/php-coveralls",
884 | "version": "v2.2.0",
885 | "source": {
886 | "type": "git",
887 | "url": "https://github.com/php-coveralls/php-coveralls.git",
888 | "reference": "3e6420fa666ef7bae5e750ddeac903153e193bae"
889 | },
890 | "dist": {
891 | "type": "zip",
892 | "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3e6420fa666ef7bae5e750ddeac903153e193bae",
893 | "reference": "3e6420fa666ef7bae5e750ddeac903153e193bae",
894 | "shasum": ""
895 | },
896 | "require": {
897 | "ext-json": "*",
898 | "ext-simplexml": "*",
899 | "guzzlehttp/guzzle": "^6.0",
900 | "php": "^5.5 || ^7.0",
901 | "psr/log": "^1.0",
902 | "symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0",
903 | "symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0",
904 | "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0",
905 | "symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0"
906 | },
907 | "require-dev": {
908 | "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
909 | },
910 | "suggest": {
911 | "symfony/http-kernel": "Allows Symfony integration"
912 | },
913 | "bin": [
914 | "bin/php-coveralls"
915 | ],
916 | "type": "library",
917 | "extra": {
918 | "branch-alias": {
919 | "dev-master": "2.2-dev"
920 | }
921 | },
922 | "autoload": {
923 | "psr-4": {
924 | "PhpCoveralls\\": "src/"
925 | }
926 | },
927 | "notification-url": "https://packagist.org/downloads/",
928 | "license": [
929 | "MIT"
930 | ],
931 | "authors": [
932 | {
933 | "name": "Kitamura Satoshi",
934 | "email": "with.no.parachute@gmail.com",
935 | "homepage": "https://www.facebook.com/satooshi.jp",
936 | "role": "Original creator"
937 | },
938 | {
939 | "name": "Takashi Matsuo",
940 | "email": "tmatsuo@google.com"
941 | },
942 | {
943 | "name": "Google Inc"
944 | },
945 | {
946 | "name": "Dariusz Ruminski",
947 | "email": "dariusz.ruminski@gmail.com",
948 | "homepage": "https://github.com/keradus"
949 | },
950 | {
951 | "name": "Contributors",
952 | "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
953 | }
954 | ],
955 | "description": "PHP client library for Coveralls API",
956 | "homepage": "https://github.com/php-coveralls/php-coveralls",
957 | "keywords": [
958 | "ci",
959 | "coverage",
960 | "github",
961 | "test"
962 | ],
963 | "support": {
964 | "issues": "https://github.com/php-coveralls/php-coveralls/issues",
965 | "source": "https://github.com/php-coveralls/php-coveralls/tree/v2.2.0"
966 | },
967 | "time": "2019-11-20T16:29:20+00:00"
968 | },
969 | {
970 | "name": "phpcompatibility/php-compatibility",
971 | "version": "9.3.5",
972 | "source": {
973 | "type": "git",
974 | "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
975 | "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
976 | },
977 | "dist": {
978 | "type": "zip",
979 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
980 | "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
981 | "shasum": ""
982 | },
983 | "require": {
984 | "php": ">=5.3",
985 | "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
986 | },
987 | "conflict": {
988 | "squizlabs/php_codesniffer": "2.6.2"
989 | },
990 | "require-dev": {
991 | "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
992 | },
993 | "suggest": {
994 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
995 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
996 | },
997 | "type": "phpcodesniffer-standard",
998 | "notification-url": "https://packagist.org/downloads/",
999 | "license": [
1000 | "LGPL-3.0-or-later"
1001 | ],
1002 | "authors": [
1003 | {
1004 | "name": "Wim Godden",
1005 | "homepage": "https://github.com/wimg",
1006 | "role": "lead"
1007 | },
1008 | {
1009 | "name": "Juliette Reinders Folmer",
1010 | "homepage": "https://github.com/jrfnl",
1011 | "role": "lead"
1012 | },
1013 | {
1014 | "name": "Contributors",
1015 | "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
1016 | }
1017 | ],
1018 | "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
1019 | "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
1020 | "keywords": [
1021 | "compatibility",
1022 | "phpcs",
1023 | "standards"
1024 | ],
1025 | "support": {
1026 | "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
1027 | "source": "https://github.com/PHPCompatibility/PHPCompatibility"
1028 | },
1029 | "time": "2019-12-27T09:44:58+00:00"
1030 | },
1031 | {
1032 | "name": "phpcompatibility/phpcompatibility-paragonie",
1033 | "version": "1.3.1",
1034 | "source": {
1035 | "type": "git",
1036 | "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
1037 | "reference": "ddabec839cc003651f2ce695c938686d1086cf43"
1038 | },
1039 | "dist": {
1040 | "type": "zip",
1041 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/ddabec839cc003651f2ce695c938686d1086cf43",
1042 | "reference": "ddabec839cc003651f2ce695c938686d1086cf43",
1043 | "shasum": ""
1044 | },
1045 | "require": {
1046 | "phpcompatibility/php-compatibility": "^9.0"
1047 | },
1048 | "require-dev": {
1049 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
1050 | "paragonie/random_compat": "dev-master",
1051 | "paragonie/sodium_compat": "dev-master"
1052 | },
1053 | "suggest": {
1054 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
1055 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
1056 | },
1057 | "type": "phpcodesniffer-standard",
1058 | "notification-url": "https://packagist.org/downloads/",
1059 | "license": [
1060 | "LGPL-3.0-or-later"
1061 | ],
1062 | "authors": [
1063 | {
1064 | "name": "Wim Godden",
1065 | "role": "lead"
1066 | },
1067 | {
1068 | "name": "Juliette Reinders Folmer",
1069 | "role": "lead"
1070 | }
1071 | ],
1072 | "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
1073 | "homepage": "http://phpcompatibility.com/",
1074 | "keywords": [
1075 | "compatibility",
1076 | "paragonie",
1077 | "phpcs",
1078 | "polyfill",
1079 | "standards"
1080 | ],
1081 | "support": {
1082 | "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues",
1083 | "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie"
1084 | },
1085 | "time": "2021-02-15T10:24:51+00:00"
1086 | },
1087 | {
1088 | "name": "phpcompatibility/phpcompatibility-wp",
1089 | "version": "2.1.0",
1090 | "source": {
1091 | "type": "git",
1092 | "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
1093 | "reference": "41bef18ba688af638b7310666db28e1ea9158b2f"
1094 | },
1095 | "dist": {
1096 | "type": "zip",
1097 | "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/41bef18ba688af638b7310666db28e1ea9158b2f",
1098 | "reference": "41bef18ba688af638b7310666db28e1ea9158b2f",
1099 | "shasum": ""
1100 | },
1101 | "require": {
1102 | "phpcompatibility/php-compatibility": "^9.0",
1103 | "phpcompatibility/phpcompatibility-paragonie": "^1.0"
1104 | },
1105 | "require-dev": {
1106 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5"
1107 | },
1108 | "suggest": {
1109 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
1110 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
1111 | },
1112 | "type": "phpcodesniffer-standard",
1113 | "notification-url": "https://packagist.org/downloads/",
1114 | "license": [
1115 | "LGPL-3.0-or-later"
1116 | ],
1117 | "authors": [
1118 | {
1119 | "name": "Wim Godden",
1120 | "role": "lead"
1121 | },
1122 | {
1123 | "name": "Juliette Reinders Folmer",
1124 | "role": "lead"
1125 | }
1126 | ],
1127 | "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
1128 | "homepage": "http://phpcompatibility.com/",
1129 | "keywords": [
1130 | "compatibility",
1131 | "phpcs",
1132 | "standards",
1133 | "wordpress"
1134 | ],
1135 | "support": {
1136 | "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues",
1137 | "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP"
1138 | },
1139 | "time": "2019-08-28T14:22:28+00:00"
1140 | },
1141 | {
1142 | "name": "phpdocumentor/reflection-common",
1143 | "version": "2.2.0",
1144 | "source": {
1145 | "type": "git",
1146 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1147 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
1148 | },
1149 | "dist": {
1150 | "type": "zip",
1151 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1152 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
1153 | "shasum": ""
1154 | },
1155 | "require": {
1156 | "php": "^7.2 || ^8.0"
1157 | },
1158 | "type": "library",
1159 | "extra": {
1160 | "branch-alias": {
1161 | "dev-2.x": "2.x-dev"
1162 | }
1163 | },
1164 | "autoload": {
1165 | "psr-4": {
1166 | "phpDocumentor\\Reflection\\": "src/"
1167 | }
1168 | },
1169 | "notification-url": "https://packagist.org/downloads/",
1170 | "license": [
1171 | "MIT"
1172 | ],
1173 | "authors": [
1174 | {
1175 | "name": "Jaap van Otterdijk",
1176 | "email": "opensource@ijaap.nl"
1177 | }
1178 | ],
1179 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1180 | "homepage": "http://www.phpdoc.org",
1181 | "keywords": [
1182 | "FQSEN",
1183 | "phpDocumentor",
1184 | "phpdoc",
1185 | "reflection",
1186 | "static analysis"
1187 | ],
1188 | "support": {
1189 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
1190 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
1191 | },
1192 | "time": "2020-06-27T09:03:43+00:00"
1193 | },
1194 | {
1195 | "name": "phpdocumentor/reflection-docblock",
1196 | "version": "5.2.2",
1197 | "source": {
1198 | "type": "git",
1199 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1200 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
1201 | },
1202 | "dist": {
1203 | "type": "zip",
1204 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
1205 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
1206 | "shasum": ""
1207 | },
1208 | "require": {
1209 | "ext-filter": "*",
1210 | "php": "^7.2 || ^8.0",
1211 | "phpdocumentor/reflection-common": "^2.2",
1212 | "phpdocumentor/type-resolver": "^1.3",
1213 | "webmozart/assert": "^1.9.1"
1214 | },
1215 | "require-dev": {
1216 | "mockery/mockery": "~1.3.2"
1217 | },
1218 | "type": "library",
1219 | "extra": {
1220 | "branch-alias": {
1221 | "dev-master": "5.x-dev"
1222 | }
1223 | },
1224 | "autoload": {
1225 | "psr-4": {
1226 | "phpDocumentor\\Reflection\\": "src"
1227 | }
1228 | },
1229 | "notification-url": "https://packagist.org/downloads/",
1230 | "license": [
1231 | "MIT"
1232 | ],
1233 | "authors": [
1234 | {
1235 | "name": "Mike van Riel",
1236 | "email": "me@mikevanriel.com"
1237 | },
1238 | {
1239 | "name": "Jaap van Otterdijk",
1240 | "email": "account@ijaap.nl"
1241 | }
1242 | ],
1243 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1244 | "support": {
1245 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1246 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
1247 | },
1248 | "time": "2020-09-03T19:13:55+00:00"
1249 | },
1250 | {
1251 | "name": "phpdocumentor/type-resolver",
1252 | "version": "1.4.0",
1253 | "source": {
1254 | "type": "git",
1255 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
1256 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
1257 | },
1258 | "dist": {
1259 | "type": "zip",
1260 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1261 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
1262 | "shasum": ""
1263 | },
1264 | "require": {
1265 | "php": "^7.2 || ^8.0",
1266 | "phpdocumentor/reflection-common": "^2.0"
1267 | },
1268 | "require-dev": {
1269 | "ext-tokenizer": "*"
1270 | },
1271 | "type": "library",
1272 | "extra": {
1273 | "branch-alias": {
1274 | "dev-1.x": "1.x-dev"
1275 | }
1276 | },
1277 | "autoload": {
1278 | "psr-4": {
1279 | "phpDocumentor\\Reflection\\": "src"
1280 | }
1281 | },
1282 | "notification-url": "https://packagist.org/downloads/",
1283 | "license": [
1284 | "MIT"
1285 | ],
1286 | "authors": [
1287 | {
1288 | "name": "Mike van Riel",
1289 | "email": "me@mikevanriel.com"
1290 | }
1291 | ],
1292 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
1293 | "support": {
1294 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1295 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
1296 | },
1297 | "time": "2020-09-17T18:55:26+00:00"
1298 | },
1299 | {
1300 | "name": "phpspec/prophecy",
1301 | "version": "1.13.0",
1302 | "source": {
1303 | "type": "git",
1304 | "url": "https://github.com/phpspec/prophecy.git",
1305 | "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
1306 | },
1307 | "dist": {
1308 | "type": "zip",
1309 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
1310 | "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
1311 | "shasum": ""
1312 | },
1313 | "require": {
1314 | "doctrine/instantiator": "^1.2",
1315 | "php": "^7.2 || ~8.0, <8.1",
1316 | "phpdocumentor/reflection-docblock": "^5.2",
1317 | "sebastian/comparator": "^3.0 || ^4.0",
1318 | "sebastian/recursion-context": "^3.0 || ^4.0"
1319 | },
1320 | "require-dev": {
1321 | "phpspec/phpspec": "^6.0",
1322 | "phpunit/phpunit": "^8.0 || ^9.0"
1323 | },
1324 | "type": "library",
1325 | "extra": {
1326 | "branch-alias": {
1327 | "dev-master": "1.11.x-dev"
1328 | }
1329 | },
1330 | "autoload": {
1331 | "psr-4": {
1332 | "Prophecy\\": "src/Prophecy"
1333 | }
1334 | },
1335 | "notification-url": "https://packagist.org/downloads/",
1336 | "license": [
1337 | "MIT"
1338 | ],
1339 | "authors": [
1340 | {
1341 | "name": "Konstantin Kudryashov",
1342 | "email": "ever.zet@gmail.com",
1343 | "homepage": "http://everzet.com"
1344 | },
1345 | {
1346 | "name": "Marcello Duarte",
1347 | "email": "marcello.duarte@gmail.com"
1348 | }
1349 | ],
1350 | "description": "Highly opinionated mocking framework for PHP 5.3+",
1351 | "homepage": "https://github.com/phpspec/prophecy",
1352 | "keywords": [
1353 | "Double",
1354 | "Dummy",
1355 | "fake",
1356 | "mock",
1357 | "spy",
1358 | "stub"
1359 | ],
1360 | "support": {
1361 | "issues": "https://github.com/phpspec/prophecy/issues",
1362 | "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
1363 | },
1364 | "time": "2021-03-17T13:42:18+00:00"
1365 | },
1366 | {
1367 | "name": "phpunit/php-code-coverage",
1368 | "version": "7.0.14",
1369 | "source": {
1370 | "type": "git",
1371 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1372 | "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c"
1373 | },
1374 | "dist": {
1375 | "type": "zip",
1376 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bb7c9a210c72e4709cdde67f8b7362f672f2225c",
1377 | "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c",
1378 | "shasum": ""
1379 | },
1380 | "require": {
1381 | "ext-dom": "*",
1382 | "ext-xmlwriter": "*",
1383 | "php": ">=7.2",
1384 | "phpunit/php-file-iterator": "^2.0.2",
1385 | "phpunit/php-text-template": "^1.2.1",
1386 | "phpunit/php-token-stream": "^3.1.1 || ^4.0",
1387 | "sebastian/code-unit-reverse-lookup": "^1.0.1",
1388 | "sebastian/environment": "^4.2.2",
1389 | "sebastian/version": "^2.0.1",
1390 | "theseer/tokenizer": "^1.1.3"
1391 | },
1392 | "require-dev": {
1393 | "phpunit/phpunit": "^8.2.2"
1394 | },
1395 | "suggest": {
1396 | "ext-xdebug": "^2.7.2"
1397 | },
1398 | "type": "library",
1399 | "extra": {
1400 | "branch-alias": {
1401 | "dev-master": "7.0-dev"
1402 | }
1403 | },
1404 | "autoload": {
1405 | "classmap": [
1406 | "src/"
1407 | ]
1408 | },
1409 | "notification-url": "https://packagist.org/downloads/",
1410 | "license": [
1411 | "BSD-3-Clause"
1412 | ],
1413 | "authors": [
1414 | {
1415 | "name": "Sebastian Bergmann",
1416 | "email": "sebastian@phpunit.de",
1417 | "role": "lead"
1418 | }
1419 | ],
1420 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1421 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1422 | "keywords": [
1423 | "coverage",
1424 | "testing",
1425 | "xunit"
1426 | ],
1427 | "support": {
1428 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1429 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.14"
1430 | },
1431 | "funding": [
1432 | {
1433 | "url": "https://github.com/sebastianbergmann",
1434 | "type": "github"
1435 | }
1436 | ],
1437 | "time": "2020-12-02T13:39:03+00:00"
1438 | },
1439 | {
1440 | "name": "phpunit/php-file-iterator",
1441 | "version": "2.0.3",
1442 | "source": {
1443 | "type": "git",
1444 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1445 | "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357"
1446 | },
1447 | "dist": {
1448 | "type": "zip",
1449 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357",
1450 | "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357",
1451 | "shasum": ""
1452 | },
1453 | "require": {
1454 | "php": ">=7.1"
1455 | },
1456 | "require-dev": {
1457 | "phpunit/phpunit": "^8.5"
1458 | },
1459 | "type": "library",
1460 | "extra": {
1461 | "branch-alias": {
1462 | "dev-master": "2.0.x-dev"
1463 | }
1464 | },
1465 | "autoload": {
1466 | "classmap": [
1467 | "src/"
1468 | ]
1469 | },
1470 | "notification-url": "https://packagist.org/downloads/",
1471 | "license": [
1472 | "BSD-3-Clause"
1473 | ],
1474 | "authors": [
1475 | {
1476 | "name": "Sebastian Bergmann",
1477 | "email": "sebastian@phpunit.de",
1478 | "role": "lead"
1479 | }
1480 | ],
1481 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1482 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1483 | "keywords": [
1484 | "filesystem",
1485 | "iterator"
1486 | ],
1487 | "support": {
1488 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1489 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3"
1490 | },
1491 | "funding": [
1492 | {
1493 | "url": "https://github.com/sebastianbergmann",
1494 | "type": "github"
1495 | }
1496 | ],
1497 | "time": "2020-11-30T08:25:21+00:00"
1498 | },
1499 | {
1500 | "name": "phpunit/php-text-template",
1501 | "version": "1.2.1",
1502 | "source": {
1503 | "type": "git",
1504 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
1505 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1506 | },
1507 | "dist": {
1508 | "type": "zip",
1509 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1510 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1511 | "shasum": ""
1512 | },
1513 | "require": {
1514 | "php": ">=5.3.3"
1515 | },
1516 | "type": "library",
1517 | "autoload": {
1518 | "classmap": [
1519 | "src/"
1520 | ]
1521 | },
1522 | "notification-url": "https://packagist.org/downloads/",
1523 | "license": [
1524 | "BSD-3-Clause"
1525 | ],
1526 | "authors": [
1527 | {
1528 | "name": "Sebastian Bergmann",
1529 | "email": "sebastian@phpunit.de",
1530 | "role": "lead"
1531 | }
1532 | ],
1533 | "description": "Simple template engine.",
1534 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1535 | "keywords": [
1536 | "template"
1537 | ],
1538 | "support": {
1539 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1540 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
1541 | },
1542 | "time": "2015-06-21T13:50:34+00:00"
1543 | },
1544 | {
1545 | "name": "phpunit/php-timer",
1546 | "version": "2.1.3",
1547 | "source": {
1548 | "type": "git",
1549 | "url": "https://github.com/sebastianbergmann/php-timer.git",
1550 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
1551 | },
1552 | "dist": {
1553 | "type": "zip",
1554 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
1555 | "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
1556 | "shasum": ""
1557 | },
1558 | "require": {
1559 | "php": ">=7.1"
1560 | },
1561 | "require-dev": {
1562 | "phpunit/phpunit": "^8.5"
1563 | },
1564 | "type": "library",
1565 | "extra": {
1566 | "branch-alias": {
1567 | "dev-master": "2.1-dev"
1568 | }
1569 | },
1570 | "autoload": {
1571 | "classmap": [
1572 | "src/"
1573 | ]
1574 | },
1575 | "notification-url": "https://packagist.org/downloads/",
1576 | "license": [
1577 | "BSD-3-Clause"
1578 | ],
1579 | "authors": [
1580 | {
1581 | "name": "Sebastian Bergmann",
1582 | "email": "sebastian@phpunit.de",
1583 | "role": "lead"
1584 | }
1585 | ],
1586 | "description": "Utility class for timing",
1587 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
1588 | "keywords": [
1589 | "timer"
1590 | ],
1591 | "support": {
1592 | "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1593 | "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
1594 | },
1595 | "funding": [
1596 | {
1597 | "url": "https://github.com/sebastianbergmann",
1598 | "type": "github"
1599 | }
1600 | ],
1601 | "time": "2020-11-30T08:20:02+00:00"
1602 | },
1603 | {
1604 | "name": "phpunit/php-token-stream",
1605 | "version": "4.0.4",
1606 | "source": {
1607 | "type": "git",
1608 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1609 | "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3"
1610 | },
1611 | "dist": {
1612 | "type": "zip",
1613 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3",
1614 | "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3",
1615 | "shasum": ""
1616 | },
1617 | "require": {
1618 | "ext-tokenizer": "*",
1619 | "php": "^7.3 || ^8.0"
1620 | },
1621 | "require-dev": {
1622 | "phpunit/phpunit": "^9.0"
1623 | },
1624 | "type": "library",
1625 | "extra": {
1626 | "branch-alias": {
1627 | "dev-master": "4.0-dev"
1628 | }
1629 | },
1630 | "autoload": {
1631 | "classmap": [
1632 | "src/"
1633 | ]
1634 | },
1635 | "notification-url": "https://packagist.org/downloads/",
1636 | "license": [
1637 | "BSD-3-Clause"
1638 | ],
1639 | "authors": [
1640 | {
1641 | "name": "Sebastian Bergmann",
1642 | "email": "sebastian@phpunit.de"
1643 | }
1644 | ],
1645 | "description": "Wrapper around PHP's tokenizer extension.",
1646 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1647 | "keywords": [
1648 | "tokenizer"
1649 | ],
1650 | "support": {
1651 | "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
1652 | "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
1653 | },
1654 | "funding": [
1655 | {
1656 | "url": "https://github.com/sebastianbergmann",
1657 | "type": "github"
1658 | }
1659 | ],
1660 | "abandoned": true,
1661 | "time": "2020-08-04T08:28:15+00:00"
1662 | },
1663 | {
1664 | "name": "phpunit/phpunit",
1665 | "version": "8.5.2",
1666 | "source": {
1667 | "type": "git",
1668 | "url": "https://github.com/sebastianbergmann/phpunit.git",
1669 | "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0"
1670 | },
1671 | "dist": {
1672 | "type": "zip",
1673 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0",
1674 | "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0",
1675 | "shasum": ""
1676 | },
1677 | "require": {
1678 | "doctrine/instantiator": "^1.2.0",
1679 | "ext-dom": "*",
1680 | "ext-json": "*",
1681 | "ext-libxml": "*",
1682 | "ext-mbstring": "*",
1683 | "ext-xml": "*",
1684 | "ext-xmlwriter": "*",
1685 | "myclabs/deep-copy": "^1.9.1",
1686 | "phar-io/manifest": "^1.0.3",
1687 | "phar-io/version": "^2.0.1",
1688 | "php": "^7.2",
1689 | "phpspec/prophecy": "^1.8.1",
1690 | "phpunit/php-code-coverage": "^7.0.7",
1691 | "phpunit/php-file-iterator": "^2.0.2",
1692 | "phpunit/php-text-template": "^1.2.1",
1693 | "phpunit/php-timer": "^2.1.2",
1694 | "sebastian/comparator": "^3.0.2",
1695 | "sebastian/diff": "^3.0.2",
1696 | "sebastian/environment": "^4.2.2",
1697 | "sebastian/exporter": "^3.1.1",
1698 | "sebastian/global-state": "^3.0.0",
1699 | "sebastian/object-enumerator": "^3.0.3",
1700 | "sebastian/resource-operations": "^2.0.1",
1701 | "sebastian/type": "^1.1.3",
1702 | "sebastian/version": "^2.0.1"
1703 | },
1704 | "require-dev": {
1705 | "ext-pdo": "*"
1706 | },
1707 | "suggest": {
1708 | "ext-soap": "*",
1709 | "ext-xdebug": "*",
1710 | "phpunit/php-invoker": "^2.0.0"
1711 | },
1712 | "bin": [
1713 | "phpunit"
1714 | ],
1715 | "type": "library",
1716 | "extra": {
1717 | "branch-alias": {
1718 | "dev-master": "8.5-dev"
1719 | }
1720 | },
1721 | "autoload": {
1722 | "classmap": [
1723 | "src/"
1724 | ]
1725 | },
1726 | "notification-url": "https://packagist.org/downloads/",
1727 | "license": [
1728 | "BSD-3-Clause"
1729 | ],
1730 | "authors": [
1731 | {
1732 | "name": "Sebastian Bergmann",
1733 | "email": "sebastian@phpunit.de",
1734 | "role": "lead"
1735 | }
1736 | ],
1737 | "description": "The PHP Unit Testing framework.",
1738 | "homepage": "https://phpunit.de/",
1739 | "keywords": [
1740 | "phpunit",
1741 | "testing",
1742 | "xunit"
1743 | ],
1744 | "support": {
1745 | "issues": "https://github.com/sebastianbergmann/phpunit/issues",
1746 | "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.2"
1747 | },
1748 | "time": "2020-01-08T08:49:49+00:00"
1749 | },
1750 | {
1751 | "name": "psr/container",
1752 | "version": "1.1.1",
1753 | "source": {
1754 | "type": "git",
1755 | "url": "https://github.com/php-fig/container.git",
1756 | "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
1757 | },
1758 | "dist": {
1759 | "type": "zip",
1760 | "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
1761 | "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
1762 | "shasum": ""
1763 | },
1764 | "require": {
1765 | "php": ">=7.2.0"
1766 | },
1767 | "type": "library",
1768 | "autoload": {
1769 | "psr-4": {
1770 | "Psr\\Container\\": "src/"
1771 | }
1772 | },
1773 | "notification-url": "https://packagist.org/downloads/",
1774 | "license": [
1775 | "MIT"
1776 | ],
1777 | "authors": [
1778 | {
1779 | "name": "PHP-FIG",
1780 | "homepage": "https://www.php-fig.org/"
1781 | }
1782 | ],
1783 | "description": "Common Container Interface (PHP FIG PSR-11)",
1784 | "homepage": "https://github.com/php-fig/container",
1785 | "keywords": [
1786 | "PSR-11",
1787 | "container",
1788 | "container-interface",
1789 | "container-interop",
1790 | "psr"
1791 | ],
1792 | "support": {
1793 | "issues": "https://github.com/php-fig/container/issues",
1794 | "source": "https://github.com/php-fig/container/tree/1.1.1"
1795 | },
1796 | "time": "2021-03-05T17:36:06+00:00"
1797 | },
1798 | {
1799 | "name": "psr/http-message",
1800 | "version": "1.0.1",
1801 | "source": {
1802 | "type": "git",
1803 | "url": "https://github.com/php-fig/http-message.git",
1804 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1805 | },
1806 | "dist": {
1807 | "type": "zip",
1808 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1809 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1810 | "shasum": ""
1811 | },
1812 | "require": {
1813 | "php": ">=5.3.0"
1814 | },
1815 | "type": "library",
1816 | "extra": {
1817 | "branch-alias": {
1818 | "dev-master": "1.0.x-dev"
1819 | }
1820 | },
1821 | "autoload": {
1822 | "psr-4": {
1823 | "Psr\\Http\\Message\\": "src/"
1824 | }
1825 | },
1826 | "notification-url": "https://packagist.org/downloads/",
1827 | "license": [
1828 | "MIT"
1829 | ],
1830 | "authors": [
1831 | {
1832 | "name": "PHP-FIG",
1833 | "homepage": "http://www.php-fig.org/"
1834 | }
1835 | ],
1836 | "description": "Common interface for HTTP messages",
1837 | "homepage": "https://github.com/php-fig/http-message",
1838 | "keywords": [
1839 | "http",
1840 | "http-message",
1841 | "psr",
1842 | "psr-7",
1843 | "request",
1844 | "response"
1845 | ],
1846 | "support": {
1847 | "source": "https://github.com/php-fig/http-message/tree/master"
1848 | },
1849 | "time": "2016-08-06T14:39:51+00:00"
1850 | },
1851 | {
1852 | "name": "psr/log",
1853 | "version": "1.1.4",
1854 | "source": {
1855 | "type": "git",
1856 | "url": "https://github.com/php-fig/log.git",
1857 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
1858 | },
1859 | "dist": {
1860 | "type": "zip",
1861 | "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
1862 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
1863 | "shasum": ""
1864 | },
1865 | "require": {
1866 | "php": ">=5.3.0"
1867 | },
1868 | "type": "library",
1869 | "extra": {
1870 | "branch-alias": {
1871 | "dev-master": "1.1.x-dev"
1872 | }
1873 | },
1874 | "autoload": {
1875 | "psr-4": {
1876 | "Psr\\Log\\": "Psr/Log/"
1877 | }
1878 | },
1879 | "notification-url": "https://packagist.org/downloads/",
1880 | "license": [
1881 | "MIT"
1882 | ],
1883 | "authors": [
1884 | {
1885 | "name": "PHP-FIG",
1886 | "homepage": "https://www.php-fig.org/"
1887 | }
1888 | ],
1889 | "description": "Common interface for logging libraries",
1890 | "homepage": "https://github.com/php-fig/log",
1891 | "keywords": [
1892 | "log",
1893 | "psr",
1894 | "psr-3"
1895 | ],
1896 | "support": {
1897 | "source": "https://github.com/php-fig/log/tree/1.1.4"
1898 | },
1899 | "time": "2021-05-03T11:20:27+00:00"
1900 | },
1901 | {
1902 | "name": "ralouphie/getallheaders",
1903 | "version": "3.0.3",
1904 | "source": {
1905 | "type": "git",
1906 | "url": "https://github.com/ralouphie/getallheaders.git",
1907 | "reference": "120b605dfeb996808c31b6477290a714d356e822"
1908 | },
1909 | "dist": {
1910 | "type": "zip",
1911 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
1912 | "reference": "120b605dfeb996808c31b6477290a714d356e822",
1913 | "shasum": ""
1914 | },
1915 | "require": {
1916 | "php": ">=5.6"
1917 | },
1918 | "require-dev": {
1919 | "php-coveralls/php-coveralls": "^2.1",
1920 | "phpunit/phpunit": "^5 || ^6.5"
1921 | },
1922 | "type": "library",
1923 | "autoload": {
1924 | "files": [
1925 | "src/getallheaders.php"
1926 | ]
1927 | },
1928 | "notification-url": "https://packagist.org/downloads/",
1929 | "license": [
1930 | "MIT"
1931 | ],
1932 | "authors": [
1933 | {
1934 | "name": "Ralph Khattar",
1935 | "email": "ralph.khattar@gmail.com"
1936 | }
1937 | ],
1938 | "description": "A polyfill for getallheaders.",
1939 | "support": {
1940 | "issues": "https://github.com/ralouphie/getallheaders/issues",
1941 | "source": "https://github.com/ralouphie/getallheaders/tree/develop"
1942 | },
1943 | "time": "2019-03-08T08:55:37+00:00"
1944 | },
1945 | {
1946 | "name": "sebastian/code-unit-reverse-lookup",
1947 | "version": "1.0.2",
1948 | "source": {
1949 | "type": "git",
1950 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1951 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
1952 | },
1953 | "dist": {
1954 | "type": "zip",
1955 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
1956 | "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
1957 | "shasum": ""
1958 | },
1959 | "require": {
1960 | "php": ">=5.6"
1961 | },
1962 | "require-dev": {
1963 | "phpunit/phpunit": "^8.5"
1964 | },
1965 | "type": "library",
1966 | "extra": {
1967 | "branch-alias": {
1968 | "dev-master": "1.0.x-dev"
1969 | }
1970 | },
1971 | "autoload": {
1972 | "classmap": [
1973 | "src/"
1974 | ]
1975 | },
1976 | "notification-url": "https://packagist.org/downloads/",
1977 | "license": [
1978 | "BSD-3-Clause"
1979 | ],
1980 | "authors": [
1981 | {
1982 | "name": "Sebastian Bergmann",
1983 | "email": "sebastian@phpunit.de"
1984 | }
1985 | ],
1986 | "description": "Looks up which function or method a line of code belongs to",
1987 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1988 | "support": {
1989 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
1990 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
1991 | },
1992 | "funding": [
1993 | {
1994 | "url": "https://github.com/sebastianbergmann",
1995 | "type": "github"
1996 | }
1997 | ],
1998 | "time": "2020-11-30T08:15:22+00:00"
1999 | },
2000 | {
2001 | "name": "sebastian/comparator",
2002 | "version": "3.0.3",
2003 | "source": {
2004 | "type": "git",
2005 | "url": "https://github.com/sebastianbergmann/comparator.git",
2006 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
2007 | },
2008 | "dist": {
2009 | "type": "zip",
2010 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
2011 | "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
2012 | "shasum": ""
2013 | },
2014 | "require": {
2015 | "php": ">=7.1",
2016 | "sebastian/diff": "^3.0",
2017 | "sebastian/exporter": "^3.1"
2018 | },
2019 | "require-dev": {
2020 | "phpunit/phpunit": "^8.5"
2021 | },
2022 | "type": "library",
2023 | "extra": {
2024 | "branch-alias": {
2025 | "dev-master": "3.0-dev"
2026 | }
2027 | },
2028 | "autoload": {
2029 | "classmap": [
2030 | "src/"
2031 | ]
2032 | },
2033 | "notification-url": "https://packagist.org/downloads/",
2034 | "license": [
2035 | "BSD-3-Clause"
2036 | ],
2037 | "authors": [
2038 | {
2039 | "name": "Sebastian Bergmann",
2040 | "email": "sebastian@phpunit.de"
2041 | },
2042 | {
2043 | "name": "Jeff Welch",
2044 | "email": "whatthejeff@gmail.com"
2045 | },
2046 | {
2047 | "name": "Volker Dusch",
2048 | "email": "github@wallbash.com"
2049 | },
2050 | {
2051 | "name": "Bernhard Schussek",
2052 | "email": "bschussek@2bepublished.at"
2053 | }
2054 | ],
2055 | "description": "Provides the functionality to compare PHP values for equality",
2056 | "homepage": "https://github.com/sebastianbergmann/comparator",
2057 | "keywords": [
2058 | "comparator",
2059 | "compare",
2060 | "equality"
2061 | ],
2062 | "support": {
2063 | "issues": "https://github.com/sebastianbergmann/comparator/issues",
2064 | "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
2065 | },
2066 | "funding": [
2067 | {
2068 | "url": "https://github.com/sebastianbergmann",
2069 | "type": "github"
2070 | }
2071 | ],
2072 | "time": "2020-11-30T08:04:30+00:00"
2073 | },
2074 | {
2075 | "name": "sebastian/diff",
2076 | "version": "3.0.3",
2077 | "source": {
2078 | "type": "git",
2079 | "url": "https://github.com/sebastianbergmann/diff.git",
2080 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211"
2081 | },
2082 | "dist": {
2083 | "type": "zip",
2084 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
2085 | "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
2086 | "shasum": ""
2087 | },
2088 | "require": {
2089 | "php": ">=7.1"
2090 | },
2091 | "require-dev": {
2092 | "phpunit/phpunit": "^7.5 || ^8.0",
2093 | "symfony/process": "^2 || ^3.3 || ^4"
2094 | },
2095 | "type": "library",
2096 | "extra": {
2097 | "branch-alias": {
2098 | "dev-master": "3.0-dev"
2099 | }
2100 | },
2101 | "autoload": {
2102 | "classmap": [
2103 | "src/"
2104 | ]
2105 | },
2106 | "notification-url": "https://packagist.org/downloads/",
2107 | "license": [
2108 | "BSD-3-Clause"
2109 | ],
2110 | "authors": [
2111 | {
2112 | "name": "Sebastian Bergmann",
2113 | "email": "sebastian@phpunit.de"
2114 | },
2115 | {
2116 | "name": "Kore Nordmann",
2117 | "email": "mail@kore-nordmann.de"
2118 | }
2119 | ],
2120 | "description": "Diff implementation",
2121 | "homepage": "https://github.com/sebastianbergmann/diff",
2122 | "keywords": [
2123 | "diff",
2124 | "udiff",
2125 | "unidiff",
2126 | "unified diff"
2127 | ],
2128 | "support": {
2129 | "issues": "https://github.com/sebastianbergmann/diff/issues",
2130 | "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3"
2131 | },
2132 | "funding": [
2133 | {
2134 | "url": "https://github.com/sebastianbergmann",
2135 | "type": "github"
2136 | }
2137 | ],
2138 | "time": "2020-11-30T07:59:04+00:00"
2139 | },
2140 | {
2141 | "name": "sebastian/environment",
2142 | "version": "4.2.4",
2143 | "source": {
2144 | "type": "git",
2145 | "url": "https://github.com/sebastianbergmann/environment.git",
2146 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
2147 | },
2148 | "dist": {
2149 | "type": "zip",
2150 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
2151 | "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
2152 | "shasum": ""
2153 | },
2154 | "require": {
2155 | "php": ">=7.1"
2156 | },
2157 | "require-dev": {
2158 | "phpunit/phpunit": "^7.5"
2159 | },
2160 | "suggest": {
2161 | "ext-posix": "*"
2162 | },
2163 | "type": "library",
2164 | "extra": {
2165 | "branch-alias": {
2166 | "dev-master": "4.2-dev"
2167 | }
2168 | },
2169 | "autoload": {
2170 | "classmap": [
2171 | "src/"
2172 | ]
2173 | },
2174 | "notification-url": "https://packagist.org/downloads/",
2175 | "license": [
2176 | "BSD-3-Clause"
2177 | ],
2178 | "authors": [
2179 | {
2180 | "name": "Sebastian Bergmann",
2181 | "email": "sebastian@phpunit.de"
2182 | }
2183 | ],
2184 | "description": "Provides functionality to handle HHVM/PHP environments",
2185 | "homepage": "http://www.github.com/sebastianbergmann/environment",
2186 | "keywords": [
2187 | "Xdebug",
2188 | "environment",
2189 | "hhvm"
2190 | ],
2191 | "support": {
2192 | "issues": "https://github.com/sebastianbergmann/environment/issues",
2193 | "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
2194 | },
2195 | "funding": [
2196 | {
2197 | "url": "https://github.com/sebastianbergmann",
2198 | "type": "github"
2199 | }
2200 | ],
2201 | "time": "2020-11-30T07:53:42+00:00"
2202 | },
2203 | {
2204 | "name": "sebastian/exporter",
2205 | "version": "3.1.3",
2206 | "source": {
2207 | "type": "git",
2208 | "url": "https://github.com/sebastianbergmann/exporter.git",
2209 | "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
2210 | },
2211 | "dist": {
2212 | "type": "zip",
2213 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
2214 | "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
2215 | "shasum": ""
2216 | },
2217 | "require": {
2218 | "php": ">=7.0",
2219 | "sebastian/recursion-context": "^3.0"
2220 | },
2221 | "require-dev": {
2222 | "ext-mbstring": "*",
2223 | "phpunit/phpunit": "^6.0"
2224 | },
2225 | "type": "library",
2226 | "extra": {
2227 | "branch-alias": {
2228 | "dev-master": "3.1.x-dev"
2229 | }
2230 | },
2231 | "autoload": {
2232 | "classmap": [
2233 | "src/"
2234 | ]
2235 | },
2236 | "notification-url": "https://packagist.org/downloads/",
2237 | "license": [
2238 | "BSD-3-Clause"
2239 | ],
2240 | "authors": [
2241 | {
2242 | "name": "Sebastian Bergmann",
2243 | "email": "sebastian@phpunit.de"
2244 | },
2245 | {
2246 | "name": "Jeff Welch",
2247 | "email": "whatthejeff@gmail.com"
2248 | },
2249 | {
2250 | "name": "Volker Dusch",
2251 | "email": "github@wallbash.com"
2252 | },
2253 | {
2254 | "name": "Adam Harvey",
2255 | "email": "aharvey@php.net"
2256 | },
2257 | {
2258 | "name": "Bernhard Schussek",
2259 | "email": "bschussek@gmail.com"
2260 | }
2261 | ],
2262 | "description": "Provides the functionality to export PHP variables for visualization",
2263 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
2264 | "keywords": [
2265 | "export",
2266 | "exporter"
2267 | ],
2268 | "support": {
2269 | "issues": "https://github.com/sebastianbergmann/exporter/issues",
2270 | "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
2271 | },
2272 | "funding": [
2273 | {
2274 | "url": "https://github.com/sebastianbergmann",
2275 | "type": "github"
2276 | }
2277 | ],
2278 | "time": "2020-11-30T07:47:53+00:00"
2279 | },
2280 | {
2281 | "name": "sebastian/global-state",
2282 | "version": "3.0.1",
2283 | "source": {
2284 | "type": "git",
2285 | "url": "https://github.com/sebastianbergmann/global-state.git",
2286 | "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b"
2287 | },
2288 | "dist": {
2289 | "type": "zip",
2290 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/474fb9edb7ab891665d3bfc6317f42a0a150454b",
2291 | "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b",
2292 | "shasum": ""
2293 | },
2294 | "require": {
2295 | "php": ">=7.2",
2296 | "sebastian/object-reflector": "^1.1.1",
2297 | "sebastian/recursion-context": "^3.0"
2298 | },
2299 | "require-dev": {
2300 | "ext-dom": "*",
2301 | "phpunit/phpunit": "^8.0"
2302 | },
2303 | "suggest": {
2304 | "ext-uopz": "*"
2305 | },
2306 | "type": "library",
2307 | "extra": {
2308 | "branch-alias": {
2309 | "dev-master": "3.0-dev"
2310 | }
2311 | },
2312 | "autoload": {
2313 | "classmap": [
2314 | "src/"
2315 | ]
2316 | },
2317 | "notification-url": "https://packagist.org/downloads/",
2318 | "license": [
2319 | "BSD-3-Clause"
2320 | ],
2321 | "authors": [
2322 | {
2323 | "name": "Sebastian Bergmann",
2324 | "email": "sebastian@phpunit.de"
2325 | }
2326 | ],
2327 | "description": "Snapshotting of global state",
2328 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
2329 | "keywords": [
2330 | "global state"
2331 | ],
2332 | "support": {
2333 | "issues": "https://github.com/sebastianbergmann/global-state/issues",
2334 | "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1"
2335 | },
2336 | "funding": [
2337 | {
2338 | "url": "https://github.com/sebastianbergmann",
2339 | "type": "github"
2340 | }
2341 | ],
2342 | "time": "2020-11-30T07:43:24+00:00"
2343 | },
2344 | {
2345 | "name": "sebastian/object-enumerator",
2346 | "version": "3.0.4",
2347 | "source": {
2348 | "type": "git",
2349 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2350 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
2351 | },
2352 | "dist": {
2353 | "type": "zip",
2354 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
2355 | "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
2356 | "shasum": ""
2357 | },
2358 | "require": {
2359 | "php": ">=7.0",
2360 | "sebastian/object-reflector": "^1.1.1",
2361 | "sebastian/recursion-context": "^3.0"
2362 | },
2363 | "require-dev": {
2364 | "phpunit/phpunit": "^6.0"
2365 | },
2366 | "type": "library",
2367 | "extra": {
2368 | "branch-alias": {
2369 | "dev-master": "3.0.x-dev"
2370 | }
2371 | },
2372 | "autoload": {
2373 | "classmap": [
2374 | "src/"
2375 | ]
2376 | },
2377 | "notification-url": "https://packagist.org/downloads/",
2378 | "license": [
2379 | "BSD-3-Clause"
2380 | ],
2381 | "authors": [
2382 | {
2383 | "name": "Sebastian Bergmann",
2384 | "email": "sebastian@phpunit.de"
2385 | }
2386 | ],
2387 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2388 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2389 | "support": {
2390 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2391 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
2392 | },
2393 | "funding": [
2394 | {
2395 | "url": "https://github.com/sebastianbergmann",
2396 | "type": "github"
2397 | }
2398 | ],
2399 | "time": "2020-11-30T07:40:27+00:00"
2400 | },
2401 | {
2402 | "name": "sebastian/object-reflector",
2403 | "version": "1.1.2",
2404 | "source": {
2405 | "type": "git",
2406 | "url": "https://github.com/sebastianbergmann/object-reflector.git",
2407 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
2408 | },
2409 | "dist": {
2410 | "type": "zip",
2411 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
2412 | "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
2413 | "shasum": ""
2414 | },
2415 | "require": {
2416 | "php": ">=7.0"
2417 | },
2418 | "require-dev": {
2419 | "phpunit/phpunit": "^6.0"
2420 | },
2421 | "type": "library",
2422 | "extra": {
2423 | "branch-alias": {
2424 | "dev-master": "1.1-dev"
2425 | }
2426 | },
2427 | "autoload": {
2428 | "classmap": [
2429 | "src/"
2430 | ]
2431 | },
2432 | "notification-url": "https://packagist.org/downloads/",
2433 | "license": [
2434 | "BSD-3-Clause"
2435 | ],
2436 | "authors": [
2437 | {
2438 | "name": "Sebastian Bergmann",
2439 | "email": "sebastian@phpunit.de"
2440 | }
2441 | ],
2442 | "description": "Allows reflection of object attributes, including inherited and non-public ones",
2443 | "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2444 | "support": {
2445 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
2446 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
2447 | },
2448 | "funding": [
2449 | {
2450 | "url": "https://github.com/sebastianbergmann",
2451 | "type": "github"
2452 | }
2453 | ],
2454 | "time": "2020-11-30T07:37:18+00:00"
2455 | },
2456 | {
2457 | "name": "sebastian/recursion-context",
2458 | "version": "3.0.1",
2459 | "source": {
2460 | "type": "git",
2461 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
2462 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
2463 | },
2464 | "dist": {
2465 | "type": "zip",
2466 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
2467 | "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
2468 | "shasum": ""
2469 | },
2470 | "require": {
2471 | "php": ">=7.0"
2472 | },
2473 | "require-dev": {
2474 | "phpunit/phpunit": "^6.0"
2475 | },
2476 | "type": "library",
2477 | "extra": {
2478 | "branch-alias": {
2479 | "dev-master": "3.0.x-dev"
2480 | }
2481 | },
2482 | "autoload": {
2483 | "classmap": [
2484 | "src/"
2485 | ]
2486 | },
2487 | "notification-url": "https://packagist.org/downloads/",
2488 | "license": [
2489 | "BSD-3-Clause"
2490 | ],
2491 | "authors": [
2492 | {
2493 | "name": "Sebastian Bergmann",
2494 | "email": "sebastian@phpunit.de"
2495 | },
2496 | {
2497 | "name": "Jeff Welch",
2498 | "email": "whatthejeff@gmail.com"
2499 | },
2500 | {
2501 | "name": "Adam Harvey",
2502 | "email": "aharvey@php.net"
2503 | }
2504 | ],
2505 | "description": "Provides functionality to recursively process PHP variables",
2506 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2507 | "support": {
2508 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
2509 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
2510 | },
2511 | "funding": [
2512 | {
2513 | "url": "https://github.com/sebastianbergmann",
2514 | "type": "github"
2515 | }
2516 | ],
2517 | "time": "2020-11-30T07:34:24+00:00"
2518 | },
2519 | {
2520 | "name": "sebastian/resource-operations",
2521 | "version": "2.0.2",
2522 | "source": {
2523 | "type": "git",
2524 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
2525 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
2526 | },
2527 | "dist": {
2528 | "type": "zip",
2529 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
2530 | "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
2531 | "shasum": ""
2532 | },
2533 | "require": {
2534 | "php": ">=7.1"
2535 | },
2536 | "type": "library",
2537 | "extra": {
2538 | "branch-alias": {
2539 | "dev-master": "2.0-dev"
2540 | }
2541 | },
2542 | "autoload": {
2543 | "classmap": [
2544 | "src/"
2545 | ]
2546 | },
2547 | "notification-url": "https://packagist.org/downloads/",
2548 | "license": [
2549 | "BSD-3-Clause"
2550 | ],
2551 | "authors": [
2552 | {
2553 | "name": "Sebastian Bergmann",
2554 | "email": "sebastian@phpunit.de"
2555 | }
2556 | ],
2557 | "description": "Provides a list of PHP built-in functions that operate on resources",
2558 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2559 | "support": {
2560 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
2561 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2"
2562 | },
2563 | "funding": [
2564 | {
2565 | "url": "https://github.com/sebastianbergmann",
2566 | "type": "github"
2567 | }
2568 | ],
2569 | "time": "2020-11-30T07:30:19+00:00"
2570 | },
2571 | {
2572 | "name": "sebastian/type",
2573 | "version": "1.1.4",
2574 | "source": {
2575 | "type": "git",
2576 | "url": "https://github.com/sebastianbergmann/type.git",
2577 | "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4"
2578 | },
2579 | "dist": {
2580 | "type": "zip",
2581 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4",
2582 | "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4",
2583 | "shasum": ""
2584 | },
2585 | "require": {
2586 | "php": ">=7.2"
2587 | },
2588 | "require-dev": {
2589 | "phpunit/phpunit": "^8.2"
2590 | },
2591 | "type": "library",
2592 | "extra": {
2593 | "branch-alias": {
2594 | "dev-master": "1.1-dev"
2595 | }
2596 | },
2597 | "autoload": {
2598 | "classmap": [
2599 | "src/"
2600 | ]
2601 | },
2602 | "notification-url": "https://packagist.org/downloads/",
2603 | "license": [
2604 | "BSD-3-Clause"
2605 | ],
2606 | "authors": [
2607 | {
2608 | "name": "Sebastian Bergmann",
2609 | "email": "sebastian@phpunit.de",
2610 | "role": "lead"
2611 | }
2612 | ],
2613 | "description": "Collection of value objects that represent the types of the PHP type system",
2614 | "homepage": "https://github.com/sebastianbergmann/type",
2615 | "support": {
2616 | "issues": "https://github.com/sebastianbergmann/type/issues",
2617 | "source": "https://github.com/sebastianbergmann/type/tree/1.1.4"
2618 | },
2619 | "funding": [
2620 | {
2621 | "url": "https://github.com/sebastianbergmann",
2622 | "type": "github"
2623 | }
2624 | ],
2625 | "time": "2020-11-30T07:25:11+00:00"
2626 | },
2627 | {
2628 | "name": "sebastian/version",
2629 | "version": "2.0.1",
2630 | "source": {
2631 | "type": "git",
2632 | "url": "https://github.com/sebastianbergmann/version.git",
2633 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
2634 | },
2635 | "dist": {
2636 | "type": "zip",
2637 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
2638 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
2639 | "shasum": ""
2640 | },
2641 | "require": {
2642 | "php": ">=5.6"
2643 | },
2644 | "type": "library",
2645 | "extra": {
2646 | "branch-alias": {
2647 | "dev-master": "2.0.x-dev"
2648 | }
2649 | },
2650 | "autoload": {
2651 | "classmap": [
2652 | "src/"
2653 | ]
2654 | },
2655 | "notification-url": "https://packagist.org/downloads/",
2656 | "license": [
2657 | "BSD-3-Clause"
2658 | ],
2659 | "authors": [
2660 | {
2661 | "name": "Sebastian Bergmann",
2662 | "email": "sebastian@phpunit.de",
2663 | "role": "lead"
2664 | }
2665 | ],
2666 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2667 | "homepage": "https://github.com/sebastianbergmann/version",
2668 | "support": {
2669 | "issues": "https://github.com/sebastianbergmann/version/issues",
2670 | "source": "https://github.com/sebastianbergmann/version/tree/master"
2671 | },
2672 | "time": "2016-10-03T07:35:21+00:00"
2673 | },
2674 | {
2675 | "name": "squizlabs/php_codesniffer",
2676 | "version": "3.6.0",
2677 | "source": {
2678 | "type": "git",
2679 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
2680 | "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625"
2681 | },
2682 | "dist": {
2683 | "type": "zip",
2684 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
2685 | "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
2686 | "shasum": ""
2687 | },
2688 | "require": {
2689 | "ext-simplexml": "*",
2690 | "ext-tokenizer": "*",
2691 | "ext-xmlwriter": "*",
2692 | "php": ">=5.4.0"
2693 | },
2694 | "require-dev": {
2695 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
2696 | },
2697 | "bin": [
2698 | "bin/phpcs",
2699 | "bin/phpcbf"
2700 | ],
2701 | "type": "library",
2702 | "extra": {
2703 | "branch-alias": {
2704 | "dev-master": "3.x-dev"
2705 | }
2706 | },
2707 | "notification-url": "https://packagist.org/downloads/",
2708 | "license": [
2709 | "BSD-3-Clause"
2710 | ],
2711 | "authors": [
2712 | {
2713 | "name": "Greg Sherwood",
2714 | "role": "lead"
2715 | }
2716 | ],
2717 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
2718 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
2719 | "keywords": [
2720 | "phpcs",
2721 | "standards"
2722 | ],
2723 | "support": {
2724 | "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
2725 | "source": "https://github.com/squizlabs/PHP_CodeSniffer",
2726 | "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
2727 | },
2728 | "time": "2021-04-09T00:54:41+00:00"
2729 | },
2730 | {
2731 | "name": "symfony/config",
2732 | "version": "v5.2.7",
2733 | "source": {
2734 | "type": "git",
2735 | "url": "https://github.com/symfony/config.git",
2736 | "reference": "3817662ada105c8c4d1afdb4ec003003efd1d8d8"
2737 | },
2738 | "dist": {
2739 | "type": "zip",
2740 | "url": "https://api.github.com/repos/symfony/config/zipball/3817662ada105c8c4d1afdb4ec003003efd1d8d8",
2741 | "reference": "3817662ada105c8c4d1afdb4ec003003efd1d8d8",
2742 | "shasum": ""
2743 | },
2744 | "require": {
2745 | "php": ">=7.2.5",
2746 | "symfony/deprecation-contracts": "^2.1",
2747 | "symfony/filesystem": "^4.4|^5.0",
2748 | "symfony/polyfill-ctype": "~1.8",
2749 | "symfony/polyfill-php80": "^1.15"
2750 | },
2751 | "conflict": {
2752 | "symfony/finder": "<4.4"
2753 | },
2754 | "require-dev": {
2755 | "symfony/event-dispatcher": "^4.4|^5.0",
2756 | "symfony/finder": "^4.4|^5.0",
2757 | "symfony/messenger": "^4.4|^5.0",
2758 | "symfony/service-contracts": "^1.1|^2",
2759 | "symfony/yaml": "^4.4|^5.0"
2760 | },
2761 | "suggest": {
2762 | "symfony/yaml": "To use the yaml reference dumper"
2763 | },
2764 | "type": "library",
2765 | "autoload": {
2766 | "psr-4": {
2767 | "Symfony\\Component\\Config\\": ""
2768 | },
2769 | "exclude-from-classmap": [
2770 | "/Tests/"
2771 | ]
2772 | },
2773 | "notification-url": "https://packagist.org/downloads/",
2774 | "license": [
2775 | "MIT"
2776 | ],
2777 | "authors": [
2778 | {
2779 | "name": "Fabien Potencier",
2780 | "email": "fabien@symfony.com"
2781 | },
2782 | {
2783 | "name": "Symfony Community",
2784 | "homepage": "https://symfony.com/contributors"
2785 | }
2786 | ],
2787 | "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
2788 | "homepage": "https://symfony.com",
2789 | "support": {
2790 | "source": "https://github.com/symfony/config/tree/v5.2.7"
2791 | },
2792 | "funding": [
2793 | {
2794 | "url": "https://symfony.com/sponsor",
2795 | "type": "custom"
2796 | },
2797 | {
2798 | "url": "https://github.com/fabpot",
2799 | "type": "github"
2800 | },
2801 | {
2802 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2803 | "type": "tidelift"
2804 | }
2805 | ],
2806 | "time": "2021-04-07T16:07:52+00:00"
2807 | },
2808 | {
2809 | "name": "symfony/console",
2810 | "version": "v5.2.7",
2811 | "source": {
2812 | "type": "git",
2813 | "url": "https://github.com/symfony/console.git",
2814 | "reference": "90374b8ed059325b49a29b55b3f8bb4062c87629"
2815 | },
2816 | "dist": {
2817 | "type": "zip",
2818 | "url": "https://api.github.com/repos/symfony/console/zipball/90374b8ed059325b49a29b55b3f8bb4062c87629",
2819 | "reference": "90374b8ed059325b49a29b55b3f8bb4062c87629",
2820 | "shasum": ""
2821 | },
2822 | "require": {
2823 | "php": ">=7.2.5",
2824 | "symfony/polyfill-mbstring": "~1.0",
2825 | "symfony/polyfill-php73": "^1.8",
2826 | "symfony/polyfill-php80": "^1.15",
2827 | "symfony/service-contracts": "^1.1|^2",
2828 | "symfony/string": "^5.1"
2829 | },
2830 | "conflict": {
2831 | "symfony/dependency-injection": "<4.4",
2832 | "symfony/dotenv": "<5.1",
2833 | "symfony/event-dispatcher": "<4.4",
2834 | "symfony/lock": "<4.4",
2835 | "symfony/process": "<4.4"
2836 | },
2837 | "provide": {
2838 | "psr/log-implementation": "1.0"
2839 | },
2840 | "require-dev": {
2841 | "psr/log": "~1.0",
2842 | "symfony/config": "^4.4|^5.0",
2843 | "symfony/dependency-injection": "^4.4|^5.0",
2844 | "symfony/event-dispatcher": "^4.4|^5.0",
2845 | "symfony/lock": "^4.4|^5.0",
2846 | "symfony/process": "^4.4|^5.0",
2847 | "symfony/var-dumper": "^4.4|^5.0"
2848 | },
2849 | "suggest": {
2850 | "psr/log": "For using the console logger",
2851 | "symfony/event-dispatcher": "",
2852 | "symfony/lock": "",
2853 | "symfony/process": ""
2854 | },
2855 | "type": "library",
2856 | "autoload": {
2857 | "psr-4": {
2858 | "Symfony\\Component\\Console\\": ""
2859 | },
2860 | "exclude-from-classmap": [
2861 | "/Tests/"
2862 | ]
2863 | },
2864 | "notification-url": "https://packagist.org/downloads/",
2865 | "license": [
2866 | "MIT"
2867 | ],
2868 | "authors": [
2869 | {
2870 | "name": "Fabien Potencier",
2871 | "email": "fabien@symfony.com"
2872 | },
2873 | {
2874 | "name": "Symfony Community",
2875 | "homepage": "https://symfony.com/contributors"
2876 | }
2877 | ],
2878 | "description": "Eases the creation of beautiful and testable command line interfaces",
2879 | "homepage": "https://symfony.com",
2880 | "keywords": [
2881 | "cli",
2882 | "command line",
2883 | "console",
2884 | "terminal"
2885 | ],
2886 | "support": {
2887 | "source": "https://github.com/symfony/console/tree/v5.2.7"
2888 | },
2889 | "funding": [
2890 | {
2891 | "url": "https://symfony.com/sponsor",
2892 | "type": "custom"
2893 | },
2894 | {
2895 | "url": "https://github.com/fabpot",
2896 | "type": "github"
2897 | },
2898 | {
2899 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2900 | "type": "tidelift"
2901 | }
2902 | ],
2903 | "time": "2021-04-19T14:07:32+00:00"
2904 | },
2905 | {
2906 | "name": "symfony/deprecation-contracts",
2907 | "version": "v2.4.0",
2908 | "source": {
2909 | "type": "git",
2910 | "url": "https://github.com/symfony/deprecation-contracts.git",
2911 | "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
2912 | },
2913 | "dist": {
2914 | "type": "zip",
2915 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
2916 | "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
2917 | "shasum": ""
2918 | },
2919 | "require": {
2920 | "php": ">=7.1"
2921 | },
2922 | "type": "library",
2923 | "extra": {
2924 | "branch-alias": {
2925 | "dev-main": "2.4-dev"
2926 | },
2927 | "thanks": {
2928 | "name": "symfony/contracts",
2929 | "url": "https://github.com/symfony/contracts"
2930 | }
2931 | },
2932 | "autoload": {
2933 | "files": [
2934 | "function.php"
2935 | ]
2936 | },
2937 | "notification-url": "https://packagist.org/downloads/",
2938 | "license": [
2939 | "MIT"
2940 | ],
2941 | "authors": [
2942 | {
2943 | "name": "Nicolas Grekas",
2944 | "email": "p@tchwork.com"
2945 | },
2946 | {
2947 | "name": "Symfony Community",
2948 | "homepage": "https://symfony.com/contributors"
2949 | }
2950 | ],
2951 | "description": "A generic function and convention to trigger deprecation notices",
2952 | "homepage": "https://symfony.com",
2953 | "support": {
2954 | "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
2955 | },
2956 | "funding": [
2957 | {
2958 | "url": "https://symfony.com/sponsor",
2959 | "type": "custom"
2960 | },
2961 | {
2962 | "url": "https://github.com/fabpot",
2963 | "type": "github"
2964 | },
2965 | {
2966 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2967 | "type": "tidelift"
2968 | }
2969 | ],
2970 | "time": "2021-03-23T23:28:01+00:00"
2971 | },
2972 | {
2973 | "name": "symfony/filesystem",
2974 | "version": "v5.2.7",
2975 | "source": {
2976 | "type": "git",
2977 | "url": "https://github.com/symfony/filesystem.git",
2978 | "reference": "056e92acc21d977c37e6ea8e97374b2a6c8551b0"
2979 | },
2980 | "dist": {
2981 | "type": "zip",
2982 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/056e92acc21d977c37e6ea8e97374b2a6c8551b0",
2983 | "reference": "056e92acc21d977c37e6ea8e97374b2a6c8551b0",
2984 | "shasum": ""
2985 | },
2986 | "require": {
2987 | "php": ">=7.2.5",
2988 | "symfony/polyfill-ctype": "~1.8"
2989 | },
2990 | "type": "library",
2991 | "autoload": {
2992 | "psr-4": {
2993 | "Symfony\\Component\\Filesystem\\": ""
2994 | },
2995 | "exclude-from-classmap": [
2996 | "/Tests/"
2997 | ]
2998 | },
2999 | "notification-url": "https://packagist.org/downloads/",
3000 | "license": [
3001 | "MIT"
3002 | ],
3003 | "authors": [
3004 | {
3005 | "name": "Fabien Potencier",
3006 | "email": "fabien@symfony.com"
3007 | },
3008 | {
3009 | "name": "Symfony Community",
3010 | "homepage": "https://symfony.com/contributors"
3011 | }
3012 | ],
3013 | "description": "Provides basic utilities for the filesystem",
3014 | "homepage": "https://symfony.com",
3015 | "support": {
3016 | "source": "https://github.com/symfony/filesystem/tree/v5.2.7"
3017 | },
3018 | "funding": [
3019 | {
3020 | "url": "https://symfony.com/sponsor",
3021 | "type": "custom"
3022 | },
3023 | {
3024 | "url": "https://github.com/fabpot",
3025 | "type": "github"
3026 | },
3027 | {
3028 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3029 | "type": "tidelift"
3030 | }
3031 | ],
3032 | "time": "2021-04-01T10:42:13+00:00"
3033 | },
3034 | {
3035 | "name": "symfony/polyfill-ctype",
3036 | "version": "v1.22.1",
3037 | "source": {
3038 | "type": "git",
3039 | "url": "https://github.com/symfony/polyfill-ctype.git",
3040 | "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
3041 | },
3042 | "dist": {
3043 | "type": "zip",
3044 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
3045 | "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
3046 | "shasum": ""
3047 | },
3048 | "require": {
3049 | "php": ">=7.1"
3050 | },
3051 | "suggest": {
3052 | "ext-ctype": "For best performance"
3053 | },
3054 | "type": "library",
3055 | "extra": {
3056 | "branch-alias": {
3057 | "dev-main": "1.22-dev"
3058 | },
3059 | "thanks": {
3060 | "name": "symfony/polyfill",
3061 | "url": "https://github.com/symfony/polyfill"
3062 | }
3063 | },
3064 | "autoload": {
3065 | "psr-4": {
3066 | "Symfony\\Polyfill\\Ctype\\": ""
3067 | },
3068 | "files": [
3069 | "bootstrap.php"
3070 | ]
3071 | },
3072 | "notification-url": "https://packagist.org/downloads/",
3073 | "license": [
3074 | "MIT"
3075 | ],
3076 | "authors": [
3077 | {
3078 | "name": "Gert de Pagter",
3079 | "email": "BackEndTea@gmail.com"
3080 | },
3081 | {
3082 | "name": "Symfony Community",
3083 | "homepage": "https://symfony.com/contributors"
3084 | }
3085 | ],
3086 | "description": "Symfony polyfill for ctype functions",
3087 | "homepage": "https://symfony.com",
3088 | "keywords": [
3089 | "compatibility",
3090 | "ctype",
3091 | "polyfill",
3092 | "portable"
3093 | ],
3094 | "support": {
3095 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1"
3096 | },
3097 | "funding": [
3098 | {
3099 | "url": "https://symfony.com/sponsor",
3100 | "type": "custom"
3101 | },
3102 | {
3103 | "url": "https://github.com/fabpot",
3104 | "type": "github"
3105 | },
3106 | {
3107 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3108 | "type": "tidelift"
3109 | }
3110 | ],
3111 | "time": "2021-01-07T16:49:33+00:00"
3112 | },
3113 | {
3114 | "name": "symfony/polyfill-intl-grapheme",
3115 | "version": "v1.22.1",
3116 | "source": {
3117 | "type": "git",
3118 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
3119 | "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170"
3120 | },
3121 | "dist": {
3122 | "type": "zip",
3123 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170",
3124 | "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170",
3125 | "shasum": ""
3126 | },
3127 | "require": {
3128 | "php": ">=7.1"
3129 | },
3130 | "suggest": {
3131 | "ext-intl": "For best performance"
3132 | },
3133 | "type": "library",
3134 | "extra": {
3135 | "branch-alias": {
3136 | "dev-main": "1.22-dev"
3137 | },
3138 | "thanks": {
3139 | "name": "symfony/polyfill",
3140 | "url": "https://github.com/symfony/polyfill"
3141 | }
3142 | },
3143 | "autoload": {
3144 | "psr-4": {
3145 | "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
3146 | },
3147 | "files": [
3148 | "bootstrap.php"
3149 | ]
3150 | },
3151 | "notification-url": "https://packagist.org/downloads/",
3152 | "license": [
3153 | "MIT"
3154 | ],
3155 | "authors": [
3156 | {
3157 | "name": "Nicolas Grekas",
3158 | "email": "p@tchwork.com"
3159 | },
3160 | {
3161 | "name": "Symfony Community",
3162 | "homepage": "https://symfony.com/contributors"
3163 | }
3164 | ],
3165 | "description": "Symfony polyfill for intl's grapheme_* functions",
3166 | "homepage": "https://symfony.com",
3167 | "keywords": [
3168 | "compatibility",
3169 | "grapheme",
3170 | "intl",
3171 | "polyfill",
3172 | "portable",
3173 | "shim"
3174 | ],
3175 | "support": {
3176 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1"
3177 | },
3178 | "funding": [
3179 | {
3180 | "url": "https://symfony.com/sponsor",
3181 | "type": "custom"
3182 | },
3183 | {
3184 | "url": "https://github.com/fabpot",
3185 | "type": "github"
3186 | },
3187 | {
3188 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3189 | "type": "tidelift"
3190 | }
3191 | ],
3192 | "time": "2021-01-22T09:19:47+00:00"
3193 | },
3194 | {
3195 | "name": "symfony/polyfill-intl-idn",
3196 | "version": "v1.22.1",
3197 | "source": {
3198 | "type": "git",
3199 | "url": "https://github.com/symfony/polyfill-intl-idn.git",
3200 | "reference": "2d63434d922daf7da8dd863e7907e67ee3031483"
3201 | },
3202 | "dist": {
3203 | "type": "zip",
3204 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483",
3205 | "reference": "2d63434d922daf7da8dd863e7907e67ee3031483",
3206 | "shasum": ""
3207 | },
3208 | "require": {
3209 | "php": ">=7.1",
3210 | "symfony/polyfill-intl-normalizer": "^1.10",
3211 | "symfony/polyfill-php72": "^1.10"
3212 | },
3213 | "suggest": {
3214 | "ext-intl": "For best performance"
3215 | },
3216 | "type": "library",
3217 | "extra": {
3218 | "branch-alias": {
3219 | "dev-main": "1.22-dev"
3220 | },
3221 | "thanks": {
3222 | "name": "symfony/polyfill",
3223 | "url": "https://github.com/symfony/polyfill"
3224 | }
3225 | },
3226 | "autoload": {
3227 | "psr-4": {
3228 | "Symfony\\Polyfill\\Intl\\Idn\\": ""
3229 | },
3230 | "files": [
3231 | "bootstrap.php"
3232 | ]
3233 | },
3234 | "notification-url": "https://packagist.org/downloads/",
3235 | "license": [
3236 | "MIT"
3237 | ],
3238 | "authors": [
3239 | {
3240 | "name": "Laurent Bassin",
3241 | "email": "laurent@bassin.info"
3242 | },
3243 | {
3244 | "name": "Trevor Rowbotham",
3245 | "email": "trevor.rowbotham@pm.me"
3246 | },
3247 | {
3248 | "name": "Symfony Community",
3249 | "homepage": "https://symfony.com/contributors"
3250 | }
3251 | ],
3252 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
3253 | "homepage": "https://symfony.com",
3254 | "keywords": [
3255 | "compatibility",
3256 | "idn",
3257 | "intl",
3258 | "polyfill",
3259 | "portable",
3260 | "shim"
3261 | ],
3262 | "support": {
3263 | "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1"
3264 | },
3265 | "funding": [
3266 | {
3267 | "url": "https://symfony.com/sponsor",
3268 | "type": "custom"
3269 | },
3270 | {
3271 | "url": "https://github.com/fabpot",
3272 | "type": "github"
3273 | },
3274 | {
3275 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3276 | "type": "tidelift"
3277 | }
3278 | ],
3279 | "time": "2021-01-22T09:19:47+00:00"
3280 | },
3281 | {
3282 | "name": "symfony/polyfill-intl-normalizer",
3283 | "version": "v1.22.1",
3284 | "source": {
3285 | "type": "git",
3286 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
3287 | "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248"
3288 | },
3289 | "dist": {
3290 | "type": "zip",
3291 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248",
3292 | "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248",
3293 | "shasum": ""
3294 | },
3295 | "require": {
3296 | "php": ">=7.1"
3297 | },
3298 | "suggest": {
3299 | "ext-intl": "For best performance"
3300 | },
3301 | "type": "library",
3302 | "extra": {
3303 | "branch-alias": {
3304 | "dev-main": "1.22-dev"
3305 | },
3306 | "thanks": {
3307 | "name": "symfony/polyfill",
3308 | "url": "https://github.com/symfony/polyfill"
3309 | }
3310 | },
3311 | "autoload": {
3312 | "psr-4": {
3313 | "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
3314 | },
3315 | "files": [
3316 | "bootstrap.php"
3317 | ],
3318 | "classmap": [
3319 | "Resources/stubs"
3320 | ]
3321 | },
3322 | "notification-url": "https://packagist.org/downloads/",
3323 | "license": [
3324 | "MIT"
3325 | ],
3326 | "authors": [
3327 | {
3328 | "name": "Nicolas Grekas",
3329 | "email": "p@tchwork.com"
3330 | },
3331 | {
3332 | "name": "Symfony Community",
3333 | "homepage": "https://symfony.com/contributors"
3334 | }
3335 | ],
3336 | "description": "Symfony polyfill for intl's Normalizer class and related functions",
3337 | "homepage": "https://symfony.com",
3338 | "keywords": [
3339 | "compatibility",
3340 | "intl",
3341 | "normalizer",
3342 | "polyfill",
3343 | "portable",
3344 | "shim"
3345 | ],
3346 | "support": {
3347 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1"
3348 | },
3349 | "funding": [
3350 | {
3351 | "url": "https://symfony.com/sponsor",
3352 | "type": "custom"
3353 | },
3354 | {
3355 | "url": "https://github.com/fabpot",
3356 | "type": "github"
3357 | },
3358 | {
3359 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3360 | "type": "tidelift"
3361 | }
3362 | ],
3363 | "time": "2021-01-22T09:19:47+00:00"
3364 | },
3365 | {
3366 | "name": "symfony/polyfill-mbstring",
3367 | "version": "v1.22.1",
3368 | "source": {
3369 | "type": "git",
3370 | "url": "https://github.com/symfony/polyfill-mbstring.git",
3371 | "reference": "5232de97ee3b75b0360528dae24e73db49566ab1"
3372 | },
3373 | "dist": {
3374 | "type": "zip",
3375 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1",
3376 | "reference": "5232de97ee3b75b0360528dae24e73db49566ab1",
3377 | "shasum": ""
3378 | },
3379 | "require": {
3380 | "php": ">=7.1"
3381 | },
3382 | "suggest": {
3383 | "ext-mbstring": "For best performance"
3384 | },
3385 | "type": "library",
3386 | "extra": {
3387 | "branch-alias": {
3388 | "dev-main": "1.22-dev"
3389 | },
3390 | "thanks": {
3391 | "name": "symfony/polyfill",
3392 | "url": "https://github.com/symfony/polyfill"
3393 | }
3394 | },
3395 | "autoload": {
3396 | "psr-4": {
3397 | "Symfony\\Polyfill\\Mbstring\\": ""
3398 | },
3399 | "files": [
3400 | "bootstrap.php"
3401 | ]
3402 | },
3403 | "notification-url": "https://packagist.org/downloads/",
3404 | "license": [
3405 | "MIT"
3406 | ],
3407 | "authors": [
3408 | {
3409 | "name": "Nicolas Grekas",
3410 | "email": "p@tchwork.com"
3411 | },
3412 | {
3413 | "name": "Symfony Community",
3414 | "homepage": "https://symfony.com/contributors"
3415 | }
3416 | ],
3417 | "description": "Symfony polyfill for the Mbstring extension",
3418 | "homepage": "https://symfony.com",
3419 | "keywords": [
3420 | "compatibility",
3421 | "mbstring",
3422 | "polyfill",
3423 | "portable",
3424 | "shim"
3425 | ],
3426 | "support": {
3427 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1"
3428 | },
3429 | "funding": [
3430 | {
3431 | "url": "https://symfony.com/sponsor",
3432 | "type": "custom"
3433 | },
3434 | {
3435 | "url": "https://github.com/fabpot",
3436 | "type": "github"
3437 | },
3438 | {
3439 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3440 | "type": "tidelift"
3441 | }
3442 | ],
3443 | "time": "2021-01-22T09:19:47+00:00"
3444 | },
3445 | {
3446 | "name": "symfony/polyfill-php72",
3447 | "version": "v1.22.1",
3448 | "source": {
3449 | "type": "git",
3450 | "url": "https://github.com/symfony/polyfill-php72.git",
3451 | "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
3452 | },
3453 | "dist": {
3454 | "type": "zip",
3455 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
3456 | "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
3457 | "shasum": ""
3458 | },
3459 | "require": {
3460 | "php": ">=7.1"
3461 | },
3462 | "type": "library",
3463 | "extra": {
3464 | "branch-alias": {
3465 | "dev-main": "1.22-dev"
3466 | },
3467 | "thanks": {
3468 | "name": "symfony/polyfill",
3469 | "url": "https://github.com/symfony/polyfill"
3470 | }
3471 | },
3472 | "autoload": {
3473 | "psr-4": {
3474 | "Symfony\\Polyfill\\Php72\\": ""
3475 | },
3476 | "files": [
3477 | "bootstrap.php"
3478 | ]
3479 | },
3480 | "notification-url": "https://packagist.org/downloads/",
3481 | "license": [
3482 | "MIT"
3483 | ],
3484 | "authors": [
3485 | {
3486 | "name": "Nicolas Grekas",
3487 | "email": "p@tchwork.com"
3488 | },
3489 | {
3490 | "name": "Symfony Community",
3491 | "homepage": "https://symfony.com/contributors"
3492 | }
3493 | ],
3494 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
3495 | "homepage": "https://symfony.com",
3496 | "keywords": [
3497 | "compatibility",
3498 | "polyfill",
3499 | "portable",
3500 | "shim"
3501 | ],
3502 | "support": {
3503 | "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1"
3504 | },
3505 | "funding": [
3506 | {
3507 | "url": "https://symfony.com/sponsor",
3508 | "type": "custom"
3509 | },
3510 | {
3511 | "url": "https://github.com/fabpot",
3512 | "type": "github"
3513 | },
3514 | {
3515 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3516 | "type": "tidelift"
3517 | }
3518 | ],
3519 | "time": "2021-01-07T16:49:33+00:00"
3520 | },
3521 | {
3522 | "name": "symfony/polyfill-php73",
3523 | "version": "v1.22.1",
3524 | "source": {
3525 | "type": "git",
3526 | "url": "https://github.com/symfony/polyfill-php73.git",
3527 | "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
3528 | },
3529 | "dist": {
3530 | "type": "zip",
3531 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
3532 | "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
3533 | "shasum": ""
3534 | },
3535 | "require": {
3536 | "php": ">=7.1"
3537 | },
3538 | "type": "library",
3539 | "extra": {
3540 | "branch-alias": {
3541 | "dev-main": "1.22-dev"
3542 | },
3543 | "thanks": {
3544 | "name": "symfony/polyfill",
3545 | "url": "https://github.com/symfony/polyfill"
3546 | }
3547 | },
3548 | "autoload": {
3549 | "psr-4": {
3550 | "Symfony\\Polyfill\\Php73\\": ""
3551 | },
3552 | "files": [
3553 | "bootstrap.php"
3554 | ],
3555 | "classmap": [
3556 | "Resources/stubs"
3557 | ]
3558 | },
3559 | "notification-url": "https://packagist.org/downloads/",
3560 | "license": [
3561 | "MIT"
3562 | ],
3563 | "authors": [
3564 | {
3565 | "name": "Nicolas Grekas",
3566 | "email": "p@tchwork.com"
3567 | },
3568 | {
3569 | "name": "Symfony Community",
3570 | "homepage": "https://symfony.com/contributors"
3571 | }
3572 | ],
3573 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
3574 | "homepage": "https://symfony.com",
3575 | "keywords": [
3576 | "compatibility",
3577 | "polyfill",
3578 | "portable",
3579 | "shim"
3580 | ],
3581 | "support": {
3582 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1"
3583 | },
3584 | "funding": [
3585 | {
3586 | "url": "https://symfony.com/sponsor",
3587 | "type": "custom"
3588 | },
3589 | {
3590 | "url": "https://github.com/fabpot",
3591 | "type": "github"
3592 | },
3593 | {
3594 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3595 | "type": "tidelift"
3596 | }
3597 | ],
3598 | "time": "2021-01-07T16:49:33+00:00"
3599 | },
3600 | {
3601 | "name": "symfony/polyfill-php80",
3602 | "version": "v1.22.1",
3603 | "source": {
3604 | "type": "git",
3605 | "url": "https://github.com/symfony/polyfill-php80.git",
3606 | "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
3607 | },
3608 | "dist": {
3609 | "type": "zip",
3610 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
3611 | "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
3612 | "shasum": ""
3613 | },
3614 | "require": {
3615 | "php": ">=7.1"
3616 | },
3617 | "type": "library",
3618 | "extra": {
3619 | "branch-alias": {
3620 | "dev-main": "1.22-dev"
3621 | },
3622 | "thanks": {
3623 | "name": "symfony/polyfill",
3624 | "url": "https://github.com/symfony/polyfill"
3625 | }
3626 | },
3627 | "autoload": {
3628 | "psr-4": {
3629 | "Symfony\\Polyfill\\Php80\\": ""
3630 | },
3631 | "files": [
3632 | "bootstrap.php"
3633 | ],
3634 | "classmap": [
3635 | "Resources/stubs"
3636 | ]
3637 | },
3638 | "notification-url": "https://packagist.org/downloads/",
3639 | "license": [
3640 | "MIT"
3641 | ],
3642 | "authors": [
3643 | {
3644 | "name": "Ion Bazan",
3645 | "email": "ion.bazan@gmail.com"
3646 | },
3647 | {
3648 | "name": "Nicolas Grekas",
3649 | "email": "p@tchwork.com"
3650 | },
3651 | {
3652 | "name": "Symfony Community",
3653 | "homepage": "https://symfony.com/contributors"
3654 | }
3655 | ],
3656 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
3657 | "homepage": "https://symfony.com",
3658 | "keywords": [
3659 | "compatibility",
3660 | "polyfill",
3661 | "portable",
3662 | "shim"
3663 | ],
3664 | "support": {
3665 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1"
3666 | },
3667 | "funding": [
3668 | {
3669 | "url": "https://symfony.com/sponsor",
3670 | "type": "custom"
3671 | },
3672 | {
3673 | "url": "https://github.com/fabpot",
3674 | "type": "github"
3675 | },
3676 | {
3677 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3678 | "type": "tidelift"
3679 | }
3680 | ],
3681 | "time": "2021-01-07T16:49:33+00:00"
3682 | },
3683 | {
3684 | "name": "symfony/service-contracts",
3685 | "version": "v2.4.0",
3686 | "source": {
3687 | "type": "git",
3688 | "url": "https://github.com/symfony/service-contracts.git",
3689 | "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
3690 | },
3691 | "dist": {
3692 | "type": "zip",
3693 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
3694 | "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
3695 | "shasum": ""
3696 | },
3697 | "require": {
3698 | "php": ">=7.2.5",
3699 | "psr/container": "^1.1"
3700 | },
3701 | "suggest": {
3702 | "symfony/service-implementation": ""
3703 | },
3704 | "type": "library",
3705 | "extra": {
3706 | "branch-alias": {
3707 | "dev-main": "2.4-dev"
3708 | },
3709 | "thanks": {
3710 | "name": "symfony/contracts",
3711 | "url": "https://github.com/symfony/contracts"
3712 | }
3713 | },
3714 | "autoload": {
3715 | "psr-4": {
3716 | "Symfony\\Contracts\\Service\\": ""
3717 | }
3718 | },
3719 | "notification-url": "https://packagist.org/downloads/",
3720 | "license": [
3721 | "MIT"
3722 | ],
3723 | "authors": [
3724 | {
3725 | "name": "Nicolas Grekas",
3726 | "email": "p@tchwork.com"
3727 | },
3728 | {
3729 | "name": "Symfony Community",
3730 | "homepage": "https://symfony.com/contributors"
3731 | }
3732 | ],
3733 | "description": "Generic abstractions related to writing services",
3734 | "homepage": "https://symfony.com",
3735 | "keywords": [
3736 | "abstractions",
3737 | "contracts",
3738 | "decoupling",
3739 | "interfaces",
3740 | "interoperability",
3741 | "standards"
3742 | ],
3743 | "support": {
3744 | "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
3745 | },
3746 | "funding": [
3747 | {
3748 | "url": "https://symfony.com/sponsor",
3749 | "type": "custom"
3750 | },
3751 | {
3752 | "url": "https://github.com/fabpot",
3753 | "type": "github"
3754 | },
3755 | {
3756 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3757 | "type": "tidelift"
3758 | }
3759 | ],
3760 | "time": "2021-04-01T10:43:52+00:00"
3761 | },
3762 | {
3763 | "name": "symfony/stopwatch",
3764 | "version": "v5.2.7",
3765 | "source": {
3766 | "type": "git",
3767 | "url": "https://github.com/symfony/stopwatch.git",
3768 | "reference": "d99310c33e833def36419c284f60e8027d359678"
3769 | },
3770 | "dist": {
3771 | "type": "zip",
3772 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d99310c33e833def36419c284f60e8027d359678",
3773 | "reference": "d99310c33e833def36419c284f60e8027d359678",
3774 | "shasum": ""
3775 | },
3776 | "require": {
3777 | "php": ">=7.2.5",
3778 | "symfony/service-contracts": "^1.0|^2"
3779 | },
3780 | "type": "library",
3781 | "autoload": {
3782 | "psr-4": {
3783 | "Symfony\\Component\\Stopwatch\\": ""
3784 | },
3785 | "exclude-from-classmap": [
3786 | "/Tests/"
3787 | ]
3788 | },
3789 | "notification-url": "https://packagist.org/downloads/",
3790 | "license": [
3791 | "MIT"
3792 | ],
3793 | "authors": [
3794 | {
3795 | "name": "Fabien Potencier",
3796 | "email": "fabien@symfony.com"
3797 | },
3798 | {
3799 | "name": "Symfony Community",
3800 | "homepage": "https://symfony.com/contributors"
3801 | }
3802 | ],
3803 | "description": "Provides a way to profile code",
3804 | "homepage": "https://symfony.com",
3805 | "support": {
3806 | "source": "https://github.com/symfony/stopwatch/tree/v5.3.0-BETA1"
3807 | },
3808 | "funding": [
3809 | {
3810 | "url": "https://symfony.com/sponsor",
3811 | "type": "custom"
3812 | },
3813 | {
3814 | "url": "https://github.com/fabpot",
3815 | "type": "github"
3816 | },
3817 | {
3818 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3819 | "type": "tidelift"
3820 | }
3821 | ],
3822 | "time": "2021-03-29T15:28:41+00:00"
3823 | },
3824 | {
3825 | "name": "symfony/string",
3826 | "version": "v5.2.6",
3827 | "source": {
3828 | "type": "git",
3829 | "url": "https://github.com/symfony/string.git",
3830 | "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572"
3831 | },
3832 | "dist": {
3833 | "type": "zip",
3834 | "url": "https://api.github.com/repos/symfony/string/zipball/ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572",
3835 | "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572",
3836 | "shasum": ""
3837 | },
3838 | "require": {
3839 | "php": ">=7.2.5",
3840 | "symfony/polyfill-ctype": "~1.8",
3841 | "symfony/polyfill-intl-grapheme": "~1.0",
3842 | "symfony/polyfill-intl-normalizer": "~1.0",
3843 | "symfony/polyfill-mbstring": "~1.0",
3844 | "symfony/polyfill-php80": "~1.15"
3845 | },
3846 | "require-dev": {
3847 | "symfony/error-handler": "^4.4|^5.0",
3848 | "symfony/http-client": "^4.4|^5.0",
3849 | "symfony/translation-contracts": "^1.1|^2",
3850 | "symfony/var-exporter": "^4.4|^5.0"
3851 | },
3852 | "type": "library",
3853 | "autoload": {
3854 | "psr-4": {
3855 | "Symfony\\Component\\String\\": ""
3856 | },
3857 | "files": [
3858 | "Resources/functions.php"
3859 | ],
3860 | "exclude-from-classmap": [
3861 | "/Tests/"
3862 | ]
3863 | },
3864 | "notification-url": "https://packagist.org/downloads/",
3865 | "license": [
3866 | "MIT"
3867 | ],
3868 | "authors": [
3869 | {
3870 | "name": "Nicolas Grekas",
3871 | "email": "p@tchwork.com"
3872 | },
3873 | {
3874 | "name": "Symfony Community",
3875 | "homepage": "https://symfony.com/contributors"
3876 | }
3877 | ],
3878 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
3879 | "homepage": "https://symfony.com",
3880 | "keywords": [
3881 | "grapheme",
3882 | "i18n",
3883 | "string",
3884 | "unicode",
3885 | "utf-8",
3886 | "utf8"
3887 | ],
3888 | "support": {
3889 | "source": "https://github.com/symfony/string/tree/v5.2.6"
3890 | },
3891 | "funding": [
3892 | {
3893 | "url": "https://symfony.com/sponsor",
3894 | "type": "custom"
3895 | },
3896 | {
3897 | "url": "https://github.com/fabpot",
3898 | "type": "github"
3899 | },
3900 | {
3901 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3902 | "type": "tidelift"
3903 | }
3904 | ],
3905 | "time": "2021-03-17T17:12:15+00:00"
3906 | },
3907 | {
3908 | "name": "symfony/yaml",
3909 | "version": "v5.2.7",
3910 | "source": {
3911 | "type": "git",
3912 | "url": "https://github.com/symfony/yaml.git",
3913 | "reference": "76546cbeddd0a9540b4e4e57eddeec3e9bb444a5"
3914 | },
3915 | "dist": {
3916 | "type": "zip",
3917 | "url": "https://api.github.com/repos/symfony/yaml/zipball/76546cbeddd0a9540b4e4e57eddeec3e9bb444a5",
3918 | "reference": "76546cbeddd0a9540b4e4e57eddeec3e9bb444a5",
3919 | "shasum": ""
3920 | },
3921 | "require": {
3922 | "php": ">=7.2.5",
3923 | "symfony/deprecation-contracts": "^2.1",
3924 | "symfony/polyfill-ctype": "~1.8"
3925 | },
3926 | "conflict": {
3927 | "symfony/console": "<4.4"
3928 | },
3929 | "require-dev": {
3930 | "symfony/console": "^4.4|^5.0"
3931 | },
3932 | "suggest": {
3933 | "symfony/console": "For validating YAML files using the lint command"
3934 | },
3935 | "bin": [
3936 | "Resources/bin/yaml-lint"
3937 | ],
3938 | "type": "library",
3939 | "autoload": {
3940 | "psr-4": {
3941 | "Symfony\\Component\\Yaml\\": ""
3942 | },
3943 | "exclude-from-classmap": [
3944 | "/Tests/"
3945 | ]
3946 | },
3947 | "notification-url": "https://packagist.org/downloads/",
3948 | "license": [
3949 | "MIT"
3950 | ],
3951 | "authors": [
3952 | {
3953 | "name": "Fabien Potencier",
3954 | "email": "fabien@symfony.com"
3955 | },
3956 | {
3957 | "name": "Symfony Community",
3958 | "homepage": "https://symfony.com/contributors"
3959 | }
3960 | ],
3961 | "description": "Loads and dumps YAML files",
3962 | "homepage": "https://symfony.com",
3963 | "support": {
3964 | "source": "https://github.com/symfony/yaml/tree/v5.2.7"
3965 | },
3966 | "funding": [
3967 | {
3968 | "url": "https://symfony.com/sponsor",
3969 | "type": "custom"
3970 | },
3971 | {
3972 | "url": "https://github.com/fabpot",
3973 | "type": "github"
3974 | },
3975 | {
3976 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3977 | "type": "tidelift"
3978 | }
3979 | ],
3980 | "time": "2021-04-29T20:47:09+00:00"
3981 | },
3982 | {
3983 | "name": "theseer/tokenizer",
3984 | "version": "1.2.0",
3985 | "source": {
3986 | "type": "git",
3987 | "url": "https://github.com/theseer/tokenizer.git",
3988 | "reference": "75a63c33a8577608444246075ea0af0d052e452a"
3989 | },
3990 | "dist": {
3991 | "type": "zip",
3992 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
3993 | "reference": "75a63c33a8577608444246075ea0af0d052e452a",
3994 | "shasum": ""
3995 | },
3996 | "require": {
3997 | "ext-dom": "*",
3998 | "ext-tokenizer": "*",
3999 | "ext-xmlwriter": "*",
4000 | "php": "^7.2 || ^8.0"
4001 | },
4002 | "type": "library",
4003 | "autoload": {
4004 | "classmap": [
4005 | "src/"
4006 | ]
4007 | },
4008 | "notification-url": "https://packagist.org/downloads/",
4009 | "license": [
4010 | "BSD-3-Clause"
4011 | ],
4012 | "authors": [
4013 | {
4014 | "name": "Arne Blankerts",
4015 | "email": "arne@blankerts.de",
4016 | "role": "Developer"
4017 | }
4018 | ],
4019 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4020 | "support": {
4021 | "issues": "https://github.com/theseer/tokenizer/issues",
4022 | "source": "https://github.com/theseer/tokenizer/tree/master"
4023 | },
4024 | "funding": [
4025 | {
4026 | "url": "https://github.com/theseer",
4027 | "type": "github"
4028 | }
4029 | ],
4030 | "time": "2020-07-12T23:59:07+00:00"
4031 | },
4032 | {
4033 | "name": "webmozart/assert",
4034 | "version": "1.10.0",
4035 | "source": {
4036 | "type": "git",
4037 | "url": "https://github.com/webmozarts/assert.git",
4038 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
4039 | },
4040 | "dist": {
4041 | "type": "zip",
4042 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
4043 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
4044 | "shasum": ""
4045 | },
4046 | "require": {
4047 | "php": "^7.2 || ^8.0",
4048 | "symfony/polyfill-ctype": "^1.8"
4049 | },
4050 | "conflict": {
4051 | "phpstan/phpstan": "<0.12.20",
4052 | "vimeo/psalm": "<4.6.1 || 4.6.2"
4053 | },
4054 | "require-dev": {
4055 | "phpunit/phpunit": "^8.5.13"
4056 | },
4057 | "type": "library",
4058 | "extra": {
4059 | "branch-alias": {
4060 | "dev-master": "1.10-dev"
4061 | }
4062 | },
4063 | "autoload": {
4064 | "psr-4": {
4065 | "Webmozart\\Assert\\": "src/"
4066 | }
4067 | },
4068 | "notification-url": "https://packagist.org/downloads/",
4069 | "license": [
4070 | "MIT"
4071 | ],
4072 | "authors": [
4073 | {
4074 | "name": "Bernhard Schussek",
4075 | "email": "bschussek@gmail.com"
4076 | }
4077 | ],
4078 | "description": "Assertions to validate method input/output with nice error messages.",
4079 | "keywords": [
4080 | "assert",
4081 | "check",
4082 | "validate"
4083 | ],
4084 | "support": {
4085 | "issues": "https://github.com/webmozarts/assert/issues",
4086 | "source": "https://github.com/webmozarts/assert/tree/1.10.0"
4087 | },
4088 | "time": "2021-03-09T10:59:23+00:00"
4089 | },
4090 | {
4091 | "name": "wp-coding-standards/wpcs",
4092 | "version": "2.3.0",
4093 | "source": {
4094 | "type": "git",
4095 | "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
4096 | "reference": "7da1894633f168fe244afc6de00d141f27517b62"
4097 | },
4098 | "dist": {
4099 | "type": "zip",
4100 | "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
4101 | "reference": "7da1894633f168fe244afc6de00d141f27517b62",
4102 | "shasum": ""
4103 | },
4104 | "require": {
4105 | "php": ">=5.4",
4106 | "squizlabs/php_codesniffer": "^3.3.1"
4107 | },
4108 | "require-dev": {
4109 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
4110 | "phpcompatibility/php-compatibility": "^9.0",
4111 | "phpcsstandards/phpcsdevtools": "^1.0",
4112 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
4113 | },
4114 | "suggest": {
4115 | "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
4116 | },
4117 | "type": "phpcodesniffer-standard",
4118 | "notification-url": "https://packagist.org/downloads/",
4119 | "license": [
4120 | "MIT"
4121 | ],
4122 | "authors": [
4123 | {
4124 | "name": "Contributors",
4125 | "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
4126 | }
4127 | ],
4128 | "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
4129 | "keywords": [
4130 | "phpcs",
4131 | "standards",
4132 | "wordpress"
4133 | ],
4134 | "support": {
4135 | "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues",
4136 | "source": "https://github.com/WordPress/WordPress-Coding-Standards",
4137 | "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki"
4138 | },
4139 | "time": "2020-05-13T23:57:56+00:00"
4140 | },
4141 | {
4142 | "name": "wpsh/local",
4143 | "version": "0.2.3",
4144 | "source": {
4145 | "type": "git",
4146 | "url": "https://github.com/wpsh/wpsh-local.git",
4147 | "reference": "17338432ed06386273a1ee4db8c8467aa8feab17"
4148 | },
4149 | "dist": {
4150 | "type": "zip",
4151 | "url": "https://api.github.com/repos/wpsh/wpsh-local/zipball/17338432ed06386273a1ee4db8c8467aa8feab17",
4152 | "reference": "17338432ed06386273a1ee4db8c8467aa8feab17",
4153 | "shasum": ""
4154 | },
4155 | "type": "library",
4156 | "notification-url": "https://packagist.org/downloads/",
4157 | "license": [
4158 | "MIT"
4159 | ],
4160 | "description": "A Docker Compose development environment for any project.",
4161 | "support": {
4162 | "issues": "https://github.com/wpsh/wpsh-local/issues",
4163 | "source": "https://github.com/wpsh/wpsh-local/tree/master"
4164 | },
4165 | "time": "2019-06-12T10:54:32+00:00"
4166 | }
4167 | ],
4168 | "aliases": [],
4169 | "minimum-stability": "dev",
4170 | "stability-flags": [],
4171 | "prefer-stable": true,
4172 | "prefer-lowest": false,
4173 | "platform": {
4174 | "php": ">=7.2"
4175 | },
4176 | "platform-dev": [],
4177 | "plugin-api-version": "2.0.0"
4178 | }
4179 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 |
3 | services:
4 |
5 | mysql:
6 | image: mysql:5
7 | volumes:
8 | - db_data:/var/lib/mysql
9 | restart: always
10 | environment:
11 | MYSQL_DATABASE: wordpress
12 | MYSQL_USER: wordpress
13 | MYSQL_PASSWORD: password
14 | MYSQL_ROOT_PASSWORD: password
15 |
16 | wordpress:
17 | build: ./scripts/docker/wordpress
18 | depends_on:
19 | - mysql
20 | ports:
21 | - "80:80"
22 | - "443:443"
23 | volumes:
24 | - wp_data:/var/www/html/wp-content
25 | - .:/var/www/html/wp-content/plugins/block-scaffolding-wp
26 | restart: always
27 | environment:
28 | WORDPRESS_DEBUG: 1
29 | WORDPRESS_DB_USER: wordpress
30 | WORDPRESS_DB_PASSWORD: password
31 |
32 | mailhog:
33 | image: mailhog/mailhog
34 | ports:
35 | - "1025:1025"
36 | - "8025:8025"
37 |
38 | volumes:
39 | db_data: {}
40 | wp_data: {}
41 |
--------------------------------------------------------------------------------
/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Usage: ./block-scaffolding-wp/init.sh
3 |
4 | # Check for valid plugin name.
5 | function valid_name () {
6 | valid="^[A-Z][A-Za-z0-9]*( [A-Z][A-Za-z0-9]*)*$"
7 |
8 | if [[ ! "$1" =~ $valid ]]; then
9 | return 1
10 | fi
11 |
12 | return 0
13 | }
14 |
15 | echo
16 | echo "Hello, "$USER"."
17 | echo
18 | echo "This script will automatically generate a new plugin based on the scaffolding."
19 | echo "The way it works is you enter a plugin name like 'Hello World' and the script "
20 | echo "will create a directory 'hello-world' in the current working directory, while "
21 | echo "performing substitutions on the 'block-scaffolding' scaffolding plugin."
22 | echo
23 |
24 | echo -n "Enter your plugin name and press [ENTER]: "
25 | read name
26 |
27 | # Validate plugin name.
28 | if ! valid_name "$name"; then
29 | echo "Malformed name '$name'. Please use title case words separated by spaces. No hyphens. For example, 'Hello World'."
30 | echo
31 | echo -n "Enter a valid plugin name and press [ENTER]: "
32 | read name
33 |
34 | if ! valid_name "$name"; then
35 | echo
36 | echo "The name you entered is invalid, rage quitting."
37 | exit 1
38 | fi
39 | fi
40 |
41 | slug="$( echo "$name" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' )"
42 | namespace="$( echo "$name" | sed 's/ //g' )"
43 | repo="$slug"
44 |
45 | echo
46 | echo "The Organization name will be used as the Namespace prefix as-entered and "
47 | echo "converted to lowercase for use in the repository path (i.e. XWP becomes xwp)."
48 | echo -n "Enter your GitHub organization name, and press [ENTER]: "
49 | read org
50 |
51 | org_lower="$( echo "$org" | tr '[:upper:]' '[:lower:]' )"
52 |
53 | echo
54 | echo -n "Do you want to prepend 'wp-' to your repository name? [Y/N]: "
55 | read prepend
56 |
57 | if [[ "$prepend" != Y ]] && [[ "$prepend" != y ]]; then
58 | echo
59 | echo -n "Do you want to append '-wp' to your repository name? [Y/N]: "
60 | read append
61 |
62 | if [[ "$append" == Y ]] || [[ "$append" == y ]]; then
63 | repo="${slug}-wp"
64 | fi
65 | else
66 | repo="wp-${slug}"
67 | fi
68 |
69 | echo
70 | echo -n "Do you want to push the plugin to your GitHub repository? [Y/N]: "
71 | read push
72 |
73 | echo
74 |
75 | cwd="$(pwd)"
76 | cd "$(dirname "$0")"
77 | src_repo_path="$(pwd)"
78 | cd "$cwd"
79 |
80 | if [[ -e $( basename "$0" ) ]]; then
81 | echo
82 | echo "Moving up one directory outside of 'block-scaffolding-wp'"
83 | cd ..
84 | fi
85 |
86 | if [[ -e "$slug" ]]; then
87 | echo
88 | echo "The $slug directory already exists"
89 | exit 1
90 | fi
91 |
92 | echo
93 |
94 | git clone "$src_repo_path" "$repo"
95 |
96 | cd "$repo"
97 |
98 | git mv block-scaffolding.php "$slug.php"
99 |
100 | git grep -lz "xwp" | xargs -0 sed -i '' -e "s/xwp/$org_lower/g"
101 | git grep -lz "block-scaffolding-wp" | xargs -0 sed -i '' -e "s/block-scaffolding-wp/$repo/g"
102 |
103 | git grep -lz "XWP" | xargs -0 sed -i '' -e "s/XWP/$org/g"
104 | git grep -lz "Block Scaffolding" | xargs -0 sed -i '' -e "s/Block Scaffolding/$name/g"
105 | git grep -lz "BlockScaffolding" | xargs -0 sed -i '' -e "s/BlockScaffolding/$namespace/g"
106 | git grep -lz "block-scaffolding" | xargs -0 sed -i '' -e "s/block-scaffolding/$slug/g"
107 |
108 | # Clean slate.
109 | rm -rf .git
110 | rm -rf node_modules
111 | rm -rf vendor
112 | rm -f init.sh
113 | rm -f composer.lock
114 | rm -f package-lock.json
115 |
116 | # Install dependencies.
117 | npm install
118 |
119 | # Setup Git.
120 | git init
121 | git add .
122 | git commit -m "Initial commit"
123 | git remote add origin "git@github.com:$org_lower/$repo.git"
124 |
125 | if [[ "$push" == Y ]] || [[ "$push" == y ]]; then
126 | git push -u origin master
127 | else
128 | echo
129 | echo "Push changes to GitHub with the following command:"
130 | echo "cd $(pwd) && git push -u origin master"
131 | fi
132 |
133 | echo
134 | echo "Plugin is located at:"
135 | pwd
136 |
--------------------------------------------------------------------------------
/js/.gitignore:
--------------------------------------------------------------------------------
1 | /dist/
2 |
--------------------------------------------------------------------------------
/js/src/editor.js:
--------------------------------------------------------------------------------
1 | // Add the JS code to this file. On running npm run dev, it will compile to js/dist/.
2 |
3 | export function add( to, howMuch ) {
4 | return to + howMuch;
5 | }
6 |
--------------------------------------------------------------------------------
/js/src/editor.test.js:
--------------------------------------------------------------------------------
1 | import { add } from './editor';
2 |
3 | describe( 'ensure setup works', () => {
4 | it( 'should be equal when evaluating two arrays', () => {
5 | expect( add( 1, 2 ) ).toStrictEqual( 3 );
6 | } );
7 | } );
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@xwp/block-scaffolding-wp",
3 | "version": "1.0.0",
4 | "private": true,
5 | "description": "Block Scaffolding for WordPress.",
6 | "author": "XWP",
7 | "license": "GPL-2.0-or-later",
8 | "bugs": {
9 | "url": "https://github.com/xwp/block-scaffolding-wp/issues"
10 | },
11 | "homepage": "https://github.com/xwp/block-scaffolding-wp#readme",
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/xwp/block-scaffolding-wp.git"
15 | },
16 | "engines": {
17 | "node": ">=10",
18 | "npm": ">=6.9"
19 | },
20 | "scripts": {
21 | "postinstall": "composer install",
22 | "dev": "wp-scripts start",
23 | "build": "wp-scripts build",
24 | "lint": "npm-run-all --parallel lint:*",
25 | "lint:js": "wp-scripts lint-js js/src",
26 | "lint:php": "composer lint",
27 | "test": "npm-run-all --parallel test:js test:php",
28 | "test-with-coverage": "npm-run-all --parallel test:js:coverage test:php:coverage",
29 | "test:js": "wp-scripts test-unit-js",
30 | "test:js:coverage": "wp-scripts test-unit-js --coverage --coverageDirectory=tests/coverage/js",
31 | "test:php": "composer test -- --no-coverage",
32 | "test:php:coverage": "composer test",
33 | "report-coverage": "composer coverage",
34 | "docker": "docker-compose run --workdir=/var/www/html/wp-content/plugins/block-scaffolding-wp wordpress",
35 | "vagrant": "vagrant ssh -- COMPOSE_FILE=/vagrant/docker-compose.yml docker-compose run --workdir=/var/www/html/wp-content/plugins/block-scaffolding-wp wordpress"
36 | },
37 | "devDependencies": {
38 | "@wordpress/block-editor": "3.6.0",
39 | "@wordpress/eslint-plugin": "3.4.1",
40 | "@wordpress/scripts": "7.0.1",
41 | "npm-run-all": "4.1.5"
42 | },
43 | "dependencies": {}
44 | }
45 |
--------------------------------------------------------------------------------
/php/Plugin.php:
--------------------------------------------------------------------------------
1 | file = $plugin_file_path;
44 | $this->dir = dirname( $plugin_file_path );
45 | $this->uploads_dir = wp_upload_dir( null, false );
46 | }
47 |
48 | /**
49 | * Return the absolute path to the plugin directory.
50 | *
51 | * @return string
52 | */
53 | public function dir() {
54 | return $this->dir;
55 | }
56 |
57 | /**
58 | * Return the absolute path to the plugin file.
59 | *
60 | * @return string
61 | */
62 | public function file() {
63 | return $this->file;
64 | }
65 |
66 | /**
67 | * Get the file path relative to the WordPress plugin directory.
68 | *
69 | * @param string $file_path Absolute path to any plugin file.
70 | *
71 | * @return string
72 | */
73 | public function basename( $file_path = null ) {
74 | if ( ! isset( $file_path ) ) {
75 | $file_path = $this->file();
76 | }
77 |
78 | return plugin_basename( $file_path );
79 | }
80 |
81 | /**
82 | * Get the public URL to the asset file.
83 | *
84 | * @param string $path_relative Path relative to this plugin directory root.
85 | * @return string The URL to the asset.
86 | */
87 | public function asset_url( $path_relative ) {
88 | return plugins_url( $path_relative, $this->file() );
89 | }
90 |
91 | /**
92 | * Get absolute path to a file in the uploads directory.
93 | *
94 | * @param string $path_relative File path relative to the root of the WordPress uploads directory.
95 | *
96 | * @return string
97 | */
98 | public function uploads_dir( $path_relative = null ) {
99 | if ( isset( $path_relative ) ) {
100 | return sprintf( '%s/%s', $this->uploads_dir['basedir'], $path_relative );
101 | }
102 |
103 | return $this->uploads_dir['basedir'];
104 | }
105 |
106 | /**
107 | * Get URL to a file in the uploads directory.
108 | *
109 | * @param string $path_relative Path to the file relative to the root of the WordPress uploads directory.
110 | *
111 | * @return string
112 | */
113 | public function uploads_dir_url( $path_relative = null ) {
114 | if ( isset( $path_relative ) ) {
115 | return sprintf( '%s/%s', $this->uploads_dir['baseurl'], $path_relative );
116 | }
117 |
118 | return $this->uploads_dir['baseurl'];
119 | }
120 |
121 | /**
122 | * Is WP debug mode enabled.
123 | *
124 | * @return boolean
125 | */
126 | public function is_debug() {
127 | return ( defined( 'WP_DEBUG' ) && WP_DEBUG );
128 | }
129 |
130 | /**
131 | * Is WP script debug mode enabled.
132 | *
133 | * @return boolean
134 | */
135 | public function is_script_debug() {
136 | return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
137 | }
138 |
139 | /**
140 | * Return the current version of the plugin.
141 | *
142 | * @return mixed
143 | */
144 | public function version() {
145 | return $this->meta( 'Version' );
146 | }
147 |
148 | /**
149 | * Sync the plugin version with the asset version.
150 | *
151 | * @return string
152 | */
153 | public function asset_version() {
154 | if ( $this->is_debug() || $this->is_script_debug() ) {
155 | return time();
156 | }
157 |
158 | return $this->version();
159 | }
160 |
161 | /**
162 | * Get plugin meta data.
163 | *
164 | * @param string $field Optional field key.
165 | *
166 | * @return array|string|null
167 | */
168 | public function meta( $field = null ) {
169 | static $meta;
170 |
171 | if ( ! isset( $meta ) ) {
172 | $meta = get_file_data( $this->file );
173 | }
174 |
175 | if ( isset( $field ) ) {
176 | if ( isset( $meta[ $field ] ) ) {
177 | return $meta[ $field ];
178 | }
179 |
180 | return null;
181 | }
182 |
183 | return $meta;
184 | }
185 |
186 | }
187 |
--------------------------------------------------------------------------------
/php/Router.php:
--------------------------------------------------------------------------------
1 | plugin = $plugin;
29 | }
30 |
31 | /**
32 | * Hook into WP.
33 | *
34 | * @return void
35 | */
36 | public function init() {
37 | add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_editor_assets' ] );
38 | }
39 |
40 | /**
41 | * Load our block assets.
42 | *
43 | * @return void
44 | */
45 | public function enqueue_editor_assets() {
46 | wp_enqueue_script(
47 | 'block-scaffolding-js',
48 | $this->plugin->asset_url( 'js/dist/editor.js' ),
49 | [
50 | 'lodash',
51 | 'react',
52 | 'wp-block-editor',
53 | ],
54 | $this->plugin->asset_version()
55 | );
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/phpcs.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | .
18 |
19 | /node_modules/
20 | /vendor/
21 |
22 |
--------------------------------------------------------------------------------
/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 | ./tests/php/
14 | ./tests/php/TestCase.php
15 |
16 |
17 |
18 |
19 |
20 | ./
21 |
22 | ./block-scaffolding.php
23 | ./node_modules
24 | ./tests
25 | ./vendor
26 | ./package
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # Block Scaffolding for WordPress
2 |
3 | [](https://travis-ci.com/xwp/block-scaffolding-wp)
4 | [](https://coveralls.io/github/xwp/block-scaffolding-wp?branch=master)
5 |
6 | ## Requirements
7 |
8 | - WordPress 5.0+ or the [Gutenberg Plugin](https://wordpress.org/plugins/gutenberg/).
9 | - PHP 7.2 or later, [Composer](https://getcomposer.org) and [Node.js](https://nodejs.org) for dependency management.
10 | - [Docker](https://docs.docker.com/install/) or [Vagrant](https://www.vagrantup.com) with [VirtualBox](https://www.virtualbox.org) for a local development environment.
11 |
12 | We suggest using a software package manager for installing the development dependencies such as [Homebrew](https://brew.sh) on MacOS:
13 |
14 | brew install php composer node docker docker-compose
15 |
16 | or [Chocolatey](https://chocolatey.org) for Windows:
17 |
18 | choco install php composer node nodejs docker-compose
19 |
20 |
21 | ## Development
22 |
23 | 1. Clone the plugin repository.
24 |
25 | 2. Setup the development environment and tools using [Node.js](https://nodejs.org) and [Composer](https://getcomposer.org):
26 |
27 | npm install
28 |
29 | Note that both Node.js and PHP 7.2 or later are required on your computer for running the `npm` scripts. Use `npm run docker -- npm install` to run the installer inside a Docker container if you don't have the required version of PHP installed locally.
30 |
31 | ## Development Environment
32 |
33 | This repository includes a WordPress development environment based on [Docker](https://docs.docker.com/install/) that can be run on your computer or inside a [Vagrant](https://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) wrapper for network isolation and simple `.local` domain names.
34 |
35 | ### Using Vagrant
36 |
37 | To use the Vagrant based environment, run:
38 |
39 | vagrant up
40 |
41 | which will make it available at [block-scaffolding-wp.local](http://block-scaffolding-wp.local).
42 |
43 | Use the included wrapper command for running scripts inside the Docker container running inside Vagrant:
44 |
45 | npm run vagrant -- npm run test:php
46 |
47 | where `npm run test:php` is any of the scripts you would like to run.
48 |
49 | Visit [block-scaffolding-wp.local:8025](http://block-scaffolding-wp.local:8025) to check all emails sent by WordPress.
50 |
51 |
52 | ### Using Native Docker
53 |
54 | To use the Docker based environment with the Docker engine running on your host, run:
55 |
56 | docker-compose up -d
57 |
58 | which will make it available at [localhost](http://localhost). Ensure that no other Docker containers or services are using port 80 on your machine.
59 |
60 | Use the included wrapper command for running scripts inside the Docker container:
61 |
62 | npm run docker -- npm run test:php
63 |
64 | where `npm run test:php` is any of the scripts you would like to run.
65 |
66 | Visit [localhost:8025](http://localhost:8025) to check all emails sent by WordPress.
67 |
68 |
69 | ### Scripts
70 |
71 | We use `npm` as the canonical task runner for the project. Some of the PHP related scripts are defined in `composer.json`.
72 |
73 | All of these commands can be run inside the Docker or Vagrant environments by prefixing the scripts with `npm run docker --` for Docker or with `npm run vagrant --` for Vagrant.
74 |
75 | - `npm run build` to build the plugin JS and CSS assets. Use `npm run dev` to watch and re-build as you work.
76 |
77 | - `npm run lint` to lint both PHP and JS files. Use `npm run lint:js` and `npm run lint:php` to lint JS and PHP seperately.
78 |
79 | - `npm run test` to run both PHP and JS tests without coverage reporting. Use `npm run test:js` and `npm run test:php` to run tests for JS and PHP seperately.
80 |
81 | - `npm run test-with-coverage` to run both PHP and JS tests with coverage reporting.
82 |
83 |
84 | ## Continuous Integration
85 |
86 | We use [Travis CI](https://travis-ci.com) to lint all code, run tests and report test coverage to [Coveralls](https://coveralls.io) as defined in [`.travis.yml`](.travis.yml).
87 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base",
4 | ":preserveSemverRanges"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/scripts/docker/wordpress/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM wordpress:php7.3-apache
2 |
3 | # Development tooling dependencies
4 | RUN apt-get update \
5 | && apt-get install -y --no-install-recommends \
6 | bash less default-mysql-client git zip unzip \
7 | nodejs npm curl \
8 | msmtp \
9 | && npm install --global npm@latest \
10 | && rm -rf /var/lib/apt/lists/*
11 |
12 | RUN curl -s https://getcomposer.org/installer | php \
13 | && mv composer.phar /usr/local/bin/composer
14 |
15 | # Include our custom config for PHP and Xdebug.
16 | COPY config/php/* /usr/local/etc/php/conf.d/
17 |
18 | # Setup xdebug.
19 | RUN pecl install xdebug; \
20 | docker-php-ext-enable xdebug;
21 |
--------------------------------------------------------------------------------
/scripts/docker/wordpress/config/php/php.ini:
--------------------------------------------------------------------------------
1 | memory_limit = -1
2 | upload_max_filesize = 1G
3 | post_max_size = 1G
4 |
5 | # Forward mail to the MailHog container.
6 | sendmail_path = "/usr/bin/msmtp --host=mailhog --port=1025 --read-recipients --read-envelope-from --auto-from=on"
7 |
--------------------------------------------------------------------------------
/scripts/docker/wordpress/config/php/xdebug.ini:
--------------------------------------------------------------------------------
1 | # Enable remote Xdebug.
2 | xdebug.remote_enable = 1
3 | xdebug.remote_autostart = 1
4 | xdebug.remote_connect_back = 1
5 | xdebug.scream = 1
6 |
--------------------------------------------------------------------------------
/tests/bootstrap.php:
--------------------------------------------------------------------------------
1 | once()
27 | ->with( null, false );
28 |
29 | $plugin = new Plugin( '/absolute/path/to/plugin.php' );
30 |
31 | $this->assertEquals( '/absolute/path/to/plugin.php', $plugin->file() );
32 | $this->assertEquals( '/absolute/path/to', $plugin->dir() );
33 | }
34 |
35 | /**
36 | * Test the plugin setup.
37 | *
38 | * @covers \XWP\BlockScaffolding\Plugin::basename()
39 | */
40 | public function test_basename() {
41 | // Is there a way to do this using withArgs() and andReturnValues()?
42 | $mock = WP_Mock::userFunction( 'plugin_basename' )->twice();
43 |
44 | $mock->with( '/any/random/file.js' )->andReturn( 'plugins/any/random/file.js' );
45 |
46 | $plugin = new Plugin( '/path/to/plugin/file.php' );
47 |
48 | $this->assertEquals(
49 | 'plugins/any/random/file.js',
50 | $plugin->basename( '/any/random/file.js' ),
51 | 'Asks WP API to return the basename for a file'
52 | );
53 |
54 | $mock->with( '/path/to/plugin/file.php' )->andReturn( 'plugins/plugin/file.php' );
55 |
56 | $this->assertEquals(
57 | 'plugins/plugin/file.php',
58 | $plugin->basename(),
59 | 'Defaults to the main plugin file for the basename'
60 | );
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/tests/php/TestRouter.php:
--------------------------------------------------------------------------------
1 | init();
29 | }
30 |
31 | /**
32 | * Test enqueue_editor_assets.
33 | *
34 | * @covers \XWP\BlockScaffolding\Router::enqueue_editor_assets()
35 | */
36 | public function test_enqueue_editor_assets() {
37 | $plugin = Mockery::mock( Plugin::class );
38 |
39 | $plugin->shouldReceive( 'asset_url' )
40 | ->once()
41 | ->with( 'js/dist/editor.js' )
42 | ->andReturn( 'http://example.com/js/dist/editor.js' );
43 |
44 | $plugin->shouldReceive( 'asset_version' )
45 | ->once()
46 | ->andReturn( '1.2.3' );
47 |
48 | WP_Mock::userFunction( 'wp_enqueue_script' )
49 | ->once()
50 | ->with(
51 | 'block-scaffolding-js',
52 | 'http://example.com/js/dist/editor.js',
53 | Mockery::type( 'array' ),
54 | '1.2.3'
55 | );
56 |
57 | $block_extend = new Router( $plugin );
58 | $block_extend->enqueue_editor_assets();
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * External dependencies
3 | */
4 | const path = require( 'path' );
5 |
6 | /**
7 | * WordPress dependencies
8 | */
9 | const defaultConfig = require( '@wordpress/scripts/config/webpack.config' );
10 |
11 | module.exports = {
12 | ...defaultConfig,
13 | entry: {
14 | editor: './js/src/editor.js',
15 | },
16 | output: {
17 | path: path.resolve( __dirname, 'js/dist' ),
18 | filename: '[name].js',
19 | },
20 | };
21 |
--------------------------------------------------------------------------------