From d3707873c1bf054022928da1cb629c35cb74ed60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 18:31:34 +0100 Subject: [PATCH 01/13] Update travis and gitignore --- .gitignore | 3 ++ .travis.yml | 95 ++++++++++++++++++++++++++++------------------------- 2 files changed, 54 insertions(+), 44 deletions(-) diff --git a/.gitignore b/.gitignore index d9711df..6102507 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ ehthumbs_vista.db # IDE specific theme-sniffer.sublime-project theme-sniffer.sublime-workspace + +# Test coverage in HTML +tests/_reports diff --git a/.travis.yml b/.travis.yml index f1d6d13..129de54 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,62 +1,69 @@ dist: trusty cache: - apt: true - directories: - # Cache directory for older Composer versions. - - $HOME/.composer/cache/files - # Cache directory for more recent Composer versions. - - $HOME/.cache/composer/files + apt: true + directories: + # Cache directory for older Composer versions. + - $HOME/.composer/cache/files + # Cache directory for more recent Composer versions. + - $HOME/.cache/composer/files language: php php: - - 7.0 - - 7.1 - - 7.3 - - nightly + - 7.0 + - 7.1 + - 7.3 + - nightly - env: - # Highest supported PHPCS version. - - PHPCS_BRANCH="dev-master" LINT=1 - # Lowest supported PHPCS version. - - PHPCS_BRANCH="3.3.0" +env: + # Highest supported PHPCS version. + - PHPCS_BRANCH="dev-master" LINT=1 + # Lowest supported PHPCS version. + - PHPCS_BRANCH="3.3.1" notifications: - email: - on_success: never - on_failure: change + email: + on_success: never + on_failure: change branches: - only: - - master - - development + only: + - master + - development matrix: - fast_finish: true - include: - # Seperate builds for PHP 7.2 with additional checks. - - php: 7.2 - env: PHPCS_BRANCH="dev-master" LINT=1 SNIFF=1 - addons: - apt: - packages: - - libxml2-utils - - php: 7.2 - env: PHPCS_BRANCH="3.3.0" - - allow_failures: - # Allow failures for unstable builds. - - php: nightly - - php: 7.3 - env: PHPCS_BRANCH="3.3.0" + fast_finish: true + include: + # Seperate builds for PHP 7.2 with additional checks. + - php: 7.2 + env: PHPCS_BRANCH="dev-master" LINT=1 SNIFF=1 + addons: + apt: + packages: + - libxml2-utils + - php: 7.2 + env: PHPCS_BRANCH="3.3.1" + + allow_failures: + # Allow failures for unstable builds. + - php: nightly + - php: "7.4snapshot" before_install: - - phpenv config-rm xdebug.ini - - composer require squizlabs/php_codesniffer:${PHPCS_BRANCH} --no-update --no-suggest --no-scripts + # Speed up build time by disabling Xdebug. + # https://johnblackbourn.com/reducing-travis-ci-build-times-for-wordpress-projects/ + # https://twitter.com/kelunik/status/954242454676475904 + - phpenv config-rm xdebug.ini || echo 'No xdebug config.' + - composer install + - bash bin/install-wp-tests.sh wordpress_test root '' localhost latest script: - # Lint the PHP files against parse errors. - - if [[ "$LINT" == "1" ]]; then if find . -path ./vendor -prune -o -name "*.php" -exec php -l {} \; | grep "^[Parse error|Fatal error]"; then exit 1; fi; fi - # Check the codestyle of the WPThemeReview codebase. - - if [[ "$SNIFF" == "1" ]]; then $(pwd)/vendor/bin/phpcs; fi + # Lint the PHP files against parse errors. + if find . -path ./vendor -prune -o -name "*.php" -exec php -l {} \; | grep "^[Parse error|Fatal error]"; then exit 1; fi + # Check the codestyle of the WPThemeReview codebase. + - composer check-cs . + # Run integration tests + - composer pint + # Run unit tests + - composer punit From 984552d085ebaa7380e1247da3154f11c7e1e246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 18:32:40 +0100 Subject: [PATCH 02/13] Update composer Add phpunit and some additional scripts. --- composer.json | 17 +- composer.lock | 2229 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 1974 insertions(+), 272 deletions(-) diff --git a/composer.json b/composer.json index 9525d4a..af86fc2 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "description": "Theme Sniffer plugin which uses PHP_CodeSniffer for automatic theme checking.", "license": "MIT", "authors": [{ - "name" : "Contributors", + "name": "Contributors", "homepage": "https://github.com/WPTRT/theme-sniffer/graphs/contributors" }, { "name": "Denis Žoljom", @@ -19,8 +19,10 @@ "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0" }, "require-dev": { + "codedungeon/phpunit-result-printer": "^0.20.1", "phpcompatibility/php-compatibility": "^9.0", - "roave/security-advisories" : "dev-master" + "phpunit/phpunit": "^6.5", + "roave/security-advisories": "dev-master" }, "autoload": { "classmap": [ @@ -31,11 +33,16 @@ "scripts": { "phpcs-i": "@php ./vendor/bin/phpcs -i", "check-cs": "@php ./vendor/bin/phpcs --ignore=*/vendor/*,*/node_modules/*", - "fix-cs": "@php ./vendor/bin/phpcbf --ignore=*/vendor/*,*/node_modules/*" + "fix-cs": "@php ./vendor/bin/phpcbf --ignore=*/vendor/*,*/node_modules/*", + "punit": "@php ./vendor/bin/phpunit -c phpunit.xml.dist --no-coverage --colors=always", + "punit-cov": "@php ./vendor/bin/phpunit -c phpunit.xml.dist --colors=always", + "pint": "@php ./vendor/bin/phpunit -c phpunit.integration.xml.dist --no-coverage --colors=always", + "pint-cov": "@php ./vendor/bin/phpunit -c phpunit.integration.xml.dist --colors=always" }, "config": { - "sort-packages": true, - "optimize-autoloader": true + "sort-packages": true, + "optimize-autoloader": true, + "process-timeout": 2000 }, "support": { "issues": "https://github.com/WPTRT/theme-sniffer/issues", diff --git a/composer.lock b/composer.lock index 8ac394a..35ffd95 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8cc619160a11a167e5b610644ece01c9", + "content-hash": "4dfac75996efbeb18a0ca1e7e55e6d77", "packages": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -396,292 +396,1987 @@ } ], "packages-dev": [ + { + "name": "2bj/phanybar", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/2bj/Phanybar.git", + "reference": "88ff671e18f30c2047a34f8cf2465a7ff93c819b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/2bj/Phanybar/zipball/88ff671e18f30c2047a34f8cf2465a7ff93c819b", + "reference": "88ff671e18f30c2047a34f8cf2465a7ff93c819b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "bin": [ + "bin/phanybar" + ], + "type": "library", + "autoload": { + "psr-4": { + "Bakyt\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bakyt Turgumbaev", + "email": "dev2bj@gmail.com" + } + ], + "description": "Control AnyBar from your php", + "keywords": [ + "anybar", + "phanybar" + ], + "time": "2015-03-06T12:14:28+00:00" + }, + { + "name": "codedungeon/php-cli-colors", + "version": "1.10.7", + "source": { + "type": "git", + "url": "https://github.com/mikeerickson/php-cli-colors.git", + "reference": "5649ef76ec0c9ed626e95bf40fdfaf4b8efcf79b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikeerickson/php-cli-colors/zipball/5649ef76ec0c9ed626e95bf40fdfaf4b8efcf79b", + "reference": "5649ef76ec0c9ed626e95bf40fdfaf4b8efcf79b", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": ">=5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codedungeon\\PHPCliColors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike Erickson", + "email": "codedungeon@gmail.com" + } + ], + "description": "PHP Package for using color output in CLI commands", + "homepage": "https://github.com/mikeerickson/php-cli-colors", + "keywords": [ + "color", + "colors", + "composer", + "package", + "php" + ], + "time": "2018-05-17T01:34:14+00:00" + }, + { + "name": "codedungeon/phpunit-result-printer", + "version": "0.20.3", + "source": { + "type": "git", + "url": "https://github.com/mikeerickson/phpunit-pretty-result-printer.git", + "reference": "3d5773927969ab71ba5acd8bb90c3a183c406118" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikeerickson/phpunit-pretty-result-printer/zipball/3d5773927969ab71ba5acd8bb90c3a183c406118", + "reference": "3d5773927969ab71ba5acd8bb90c3a183c406118", + "shasum": "" + }, + "require": { + "2bj/phanybar": "^1.0", + "codedungeon/php-cli-colors": "^1.10.2", + "hassankhan/config": "^0.11.2", + "php": "^7.1", + "symfony/yaml": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "phpunit/phpunit": "7.1.1", + "spatie/phpunit-watcher": "^1.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codedungeon\\PHPUnitPrettyResultPrinter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike Erickson", + "email": "codedungeon@gmail.com" + } + ], + "description": "PHPUnit Pretty Result Printer", + "keywords": [ + "TDD", + "composer", + "package", + "phpunit", + "printer", + "result-printer", + "testing" + ], + "time": "2018-09-20T03:43:34+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "hassankhan/config", + "version": "0.11.2", + "source": { + "type": "git", + "url": "https://github.com/hassankhan/config.git", + "reference": "7fbc236c32dc6cc53a7b00992a2739cf8b41c085" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hassankhan/config/zipball/7fbc236c32dc6cc53a7b00992a2739cf8b41c085", + "reference": "7fbc236c32dc6cc53a7b00992a2739cf8b41c085", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "scrutinizer/ocular": "~1.1", + "squizlabs/php_codesniffer": "~2.2" + }, + "suggest": { + "symfony/yaml": "~2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Noodlehaus\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Hassan Khan", + "homepage": "http://hassankhan.me/", + "role": "Developer" + } + ], + "description": "Lightweight configuration file loader that supports PHP, INI, XML, JSON, and YAML files", + "homepage": "http://hassankhan.me/config/", + "keywords": [ + "config", + "configuration", + "ini", + "json", + "microphp", + "unframework", + "xml", + "yaml", + "yml" + ], + "time": "2017-11-07T22:49:43+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "5.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-04-06T15:36:58+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-11-27T05:48:46+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "6.5.14", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-02-01T05:22:47+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.11" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "abandoned": true, + "time": "2018-08-09T05:50:03+00:00" + }, { "name": "roave/security-advisories", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "614a9db1df6be4349544311096f8d48ca067ccbb" + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "4e04718428742618a4bf24dafca45b8645c9320d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4e04718428742618a4bf24dafca45b8645c9320d", + "reference": "4e04718428742618a4bf24dafca45b8645c9320d", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.12", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "aws/aws-sdk-php": ">=3,<3.2.1", + "brightlocal/phpwhois": "<=4.2.5", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4|>=3.4,<3.4.14|>=3.5,<3.5.17|>=3.6,<3.6.4", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1.0.0-alpha11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.35", + "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/newsletter-bundle": ">=4,<4.1", + "david-garcia/phpwhois": "<=4.3.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=7,<7.62|>=8,<8.5.11|>=8.6,<8.6.10", + "drupal/drupal": ">=7,<7.62|>=8,<8.5.11|>=8.6,<8.6.10", + "erusev/parsedown": "<1.7", + "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1", + "ezyang/htmlpurifier": "<4.1.1", + "firebase/php-jwt": "<2", + "fooman/tcpdf": "<6.2.22", + "fossar/tcpdf-parser": "<6.2.22", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "fuel/core": "<1.8.1", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "ivankristianto/phpwhois": "<=4.3", + "james-heinrich/getid3": "<1.9.9", + "joomla/session": "<1.3.1", + "jsmitty12/phpwhois": "<5.1", + "kazist/phpwhois": "<=4.2.6", + "kreait/firebase-php": ">=3.2,<3.8.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "league/commonmark": ">=0.15.6,<0.18.1", + "magento/magento1ce": "<1.9.4", + "magento/magento1ee": ">=1.9,<1.14.4", + "magento/product-community-edition": ">=2,<2.2.7", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "onelogin/php-saml": "<2.10.4", + "openid/php-openid": "<2.3", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": ">=0,<3", + "paragonie/random_compat": "<2", + "paypal/merchant-sdk-php": "<3.12", + "pear/archive_tar": "<1.4.4", + "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6", + "phpoffice/phpexcel": "<=1.8.1", + "phpoffice/phpspreadsheet": "<=1.5", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pusher/pusher-php-server": "<2.2.1", + "robrichards/xmlseclibs": ">=1,<3.0.2", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "shopware/shopware": "<5.3.7", + "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.0.7|>=4.1,<4.1.5|>=4.2,<4.2.4|>=4.3,<4.3.1", + "silverstripe/userforms": "<3", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/simplesamlphp": "<1.16.3", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "slim/slim": "<2.6", + "smarty/smarty": "<3.1.33", + "socalnick/scn-social-auth": "<1.15.2", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "stormpath/sdk": ">=0,<9.9.99", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "symfony/dependency-injection": ">=2,<2.0.17", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", + "symfony/http-foundation": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.19|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "tecnickcom/tcpdf": "<6.2.22", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", + "theonedemon/phpwhois": "<=4.2.5", + "titon/framework": ">=0,<9.9.99", + "truckersmp/phpwhois": "<=4.3.1", + "twig/twig": "<1.20", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.23|>=9,<9.5.4", + "typo3/cms-core": ">=8,<8.7.23|>=9,<9.5.4", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "ua-parser/uap-php": "<3.8", + "wallabag/tcpdf": "<6.2.22", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.15", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-diactoros": ">=1,<1.8.4", + "zendframework/zend-feed": ">=1,<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=1,<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "time": "2019-02-26T21:14:50+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-02-01T13:46:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-08-03T08:09:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2017-07-01T08:51:00+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/614a9db1df6be4349544311096f8d48ca067ccbb", - "reference": "614a9db1df6be4349544311096f8d48ca067ccbb", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0", + "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0", "shasum": "" }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, "conflict": { - "3f/pygmentize": "<1.2", - "adodb/adodb-php": "<5.20.12", - "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", - "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", - "aws/aws-sdk-php": ">=3,<3.2.1", - "brightlocal/phpwhois": "<=4.2.5", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4|>=3.4,<3.4.14|>=3.5,<3.5.17|>=3.6,<3.6.4", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1.0.0-alpha11", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/core": ">=2,<3.5.35", - "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/newsletter-bundle": ">=4,<4.1", - "david-garcia/phpwhois": "<=4.3.1", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", - "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/acquia_connector": ">=1,<1.16", - "drupal/autologout": ">=4,<4.5", - "drupal/backup_migrate": ">=3,<3.4", - "drupal/bealestreet": ">=1,<1.2", - "drupal/bible": ">=1,<1.7", - "drupal/bing_autosuggest_api": ">=1,<1.1", - "drupal/bootstrap": ">=3,<3.14", - "drupal/brilliant_gallery": ">=1,<1.10", - "drupal/ckeditor_uploadimage": ">=1,<1.5", - "drupal/cleantalk": ">=2,<2.7", - "drupal/cloud": ">=1,<1.7", - "drupal/commerce": ">=2,<2.9", - "drupal/commerce_custom_order_status": ">=1,<1.1", - "drupal/commerce_klarna_checkout": ">=1,<1.5", - "drupal/config_perms": ">=1,<1.1|>=2,<2.2", - "drupal/config_update": ">=1,<1.5", - "drupal/core": ">=7,<7.62|>=8,<8.5.11|>=8.6,<8.6.10", - "drupal/datereminder": ">=1,<1.15", - "drupal/decoupled_router": ">=1,<1.2", - "drupal/domain_integration": ">=1,<1.2", - "drupal/drupal": ">=7,<7.62|>=8,<8.5.11|>=8.6,<8.6.10", - "drupal/entity": ">=1,<1.9", - "drupal/entity_ref_tab_formatter": ">=1,<1.3", - "drupal/entityqueue_taxonomy": ">=1,<1.1", - "drupal/esign": ">=1,<1.10", - "drupal/eu_cookie_compliance": ">=1,<1.1", - "drupal/exif": ">=1,<1.1", - "drupal/feedback_collect": ">=1,<1.6", - "drupal/filefield_paths": ">=1,<1.1", - "drupal/filefield_sources": ">=1,<1.11", - "drupal/focal_point": ">=1,<1.2", - "drupal/fontawesome": ">=2,<2.12", - "drupal/fraction": ">=1,<1.2", - "drupal/gathercontent": ">=3,<3.5", - "drupal/genpass": ">=1,<1.1", - "drupal/hosting_https": ">=3,<3.170", - "drupal/jsonapi": ">=1,<1.16", - "drupal/lightbox2": ">=2,<2.11", - "drupal/link": ">=1,<1.6", - "drupal/litejazz": ">=2,<2.3", - "drupal/mailhandler": ">=2,<2.11", - "drupal/mass_pwreset": ">=1,<1.1", - "drupal/me": ">=1,<1.3", - "drupal/media": ">=2,<2.19", - "drupal/menu_export": ">=1,<1.2", - "drupal/metatag": ">=1,<1.8", - "drupal/miniorange_oauth_client": ">=1,<1.21", - "drupal/moneysuite": ">=10,<10.4", - "drupal/mosaik": ">=1,<1.2", - "drupal/netforum_authentication": ">=1,<1.1", - "drupal/newsflash": ">=2,<2.6", - "drupal/node_feedback": ">=1,<1.3", - "drupal/node_view_permissions": ">=1,<1.1", - "drupal/nucleus": ">=1,<1.6", - "drupal/nvp": ">=1,<1.1", - "drupal/panels_breadcrumbs": ">=2,<2.4", - "drupal/panopoly_core": ">=1,<1.49", - "drupal/paragraphs": ">=1,<1.6", - "drupal/password_policy": ">=1,<1.16", - "drupal/permissions_by_term": ">=1,<1.35", - "drupal/phonefield": ">=1,<1.1", - "drupal/phpconfig": ">=1,<1.1", - "drupal/preview_link": ">=1,<1.1", - "drupal/print": ">=2,<2.1", - "drupal/provision": ">=3,<3.170", - "drupal/pubdlcnt": ">=1,<1.3", - "drupal/renderkit": ">=1,<1.6", - "drupal/responsive_menus": ">=1,<1.7", - "drupal/restws": ">=2,<2.8", - "drupal/sagepay_payment": ">=1,<1.5", - "drupal/salesforce": ">=3,<3.1", - "drupal/search_api_solr": ">=1,<1.14", - "drupal/search_autocomplete": ">=4,<4.8", - "drupal/services_sso_client": ">=1,<1.6", - "drupal/stacks": ">=1,<1.1", - "drupal/tapestry": ">=2,<2.2", - "drupal/term_reference_tree": ">=1,<1.11", - "drupal/tfa_basic": ">=1,<1.1", - "drupal/tft": ">=1,<1.1", - "drupal/tmgmt": ">=1,<1.7", - "drupal/uuid": ">=1,<1.1", - "drupal/video": ">=1,<1.4", - "drupal/workbench_moderation": ">=1,<1.4", - "drupal/yandex_metrics": ">=3,<3.1", - "drupal/zircon": ">=1,<1.2", - "erusev/parsedown": "<1.7", - "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", - "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1", - "ezyang/htmlpurifier": "<4.1.1", - "firebase/php-jwt": "<2", - "fooman/tcpdf": "<6.2.22", - "fossar/tcpdf-parser": "<6.2.22", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "fuel/core": "<1.8.1", - "gree/jose": "<=2.2", - "gregwar/rst": "<1.0.3", - "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", - "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", - "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", - "ivankristianto/phpwhois": "<=4.3", - "james-heinrich/getid3": "<1.9.9", - "joomla/session": "<1.3.1", - "jsmitty12/phpwhois": "<5.1", - "kazist/phpwhois": "<=4.2.6", - "kreait/firebase-php": ">=3.2,<3.8.1", - "la-haute-societe/tcpdf": "<6.2.22", - "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "league/commonmark": ">=0.15.6,<0.18.1", - "magento/magento1ce": "<1.9.4", - "magento/magento1ee": ">=1.9,<1.14.4", - "magento/product-community-edition": ">=2,<2.2.7", - "monolog/monolog": ">=1.8,<1.12", - "namshi/jose": "<2.2", - "onelogin/php-saml": "<2.10.4", - "openid/php-openid": "<2.3", - "oro/crm": ">=1.7,<1.7.4", - "oro/platform": ">=1.7,<1.7.4", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": ">=0,<3", - "paragonie/random_compat": "<2", - "paypal/merchant-sdk-php": "<3.12", - "pear/archive_tar": "<1.4.4", - "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6", - "phpoffice/phpexcel": "<=1.8.1", - "phpoffice/phpspreadsheet": "<=1.5", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpwhois/phpwhois": "<=4.2.5", - "phpxmlrpc/extras": "<0.6.1", - "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", - "propel/propel1": ">=1,<=1.7.1", - "pusher/pusher-php-server": "<2.2.1", - "robrichards/xmlseclibs": ">=1,<3.0.2", - "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "sensiolabs/connect": "<4.2.3", - "serluck/phpwhois": "<=4.2.6", - "shopware/shopware": "<5.3.7", - "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.0.7|>=4.1,<4.1.5|>=4.2,<4.2.4|>=4.3,<4.3.1", - "silverstripe/userforms": "<3", - "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", - "simplesamlphp/simplesamlphp": "<1.16.3", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "slim/slim": "<2.6", - "smarty/smarty": "<3.1.33", - "socalnick/scn-social-auth": "<1.15.2", - "spoonity/tcpdf": "<6.2.22", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "stormpath/sdk": ">=0,<9.9.99", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "symfony/dependency-injection": ">=2,<2.0.17", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", - "symfony/http-foundation": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", - "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/polyfill": ">=1,<1.10", - "symfony/polyfill-php55": ">=1,<1.10", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.19|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", - "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/translation": ">=2,<2.0.17", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "tecnickcom/tcpdf": "<6.2.22", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3", - "theonedemon/phpwhois": "<=4.2.5", - "titon/framework": ">=0,<9.9.99", - "truckersmp/phpwhois": "<=4.3.1", - "twig/twig": "<1.20", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.23|>=9,<9.5.4", - "typo3/cms-core": ">=8,<8.7.23|>=9,<9.5.4", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", - "ua-parser/uap-php": "<3.8", - "wallabag/tcpdf": "<6.2.22", - "willdurand/js-translation-bundle": "<2.1.1", - "yiisoft/yii": ">=1.1.14,<1.1.15", - "yiisoft/yii2": "<2.0.15", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.15", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<2.0.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-diactoros": ">=1,<1.8.4", - "zendframework/zend-feed": ">=1,<2.10.3", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": ">=1,<2.8.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": "<2.5.1", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2" + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2019-02-22T18:40:39+00:00" + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2019-01-16T20:35:37+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-12-25T11:19:39+00:00" } ], "aliases": [], From eb0e4836fc2a33ca4fdadabbad92310ce2b67b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 18:34:02 +0100 Subject: [PATCH 03/13] Modify the asset manifest method to accomodate tests --- src/class-plugin.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 4cb2e8a..5218644 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -172,7 +172,7 @@ public function plugin_settings_link( array $links ) : array { * * @return array List of extra headers. */ - public static function add_headers( array $extra_headers ) : array { + public function add_headers( array $extra_headers ) : array { $extra_headers[] = 'License'; $extra_headers[] = 'License URI'; $extra_headers[] = 'Template Version'; @@ -200,7 +200,9 @@ public function register_assets_manifest_data() { throw Exception\Missing_Manifest::message( $error_message ); } - define( 'ASSETS_MANIFEST', (string) $response ); + if ( ! defined( 'ASSETS_MANIFEST' ) ) { + define( 'ASSETS_MANIFEST', (string) $response ); + } } /** From d67a6c8adcad98c6c2f7efb75f2903be428d3b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 18:36:35 +0100 Subject: [PATCH 04/13] Modify phpcs.xml.dist to silence false errors in setUp and tearDown test methods --- phpcs.xml.dist | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 6911bfd..976cbdd 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -24,8 +24,12 @@ - 0 - + 0 + + + + 0 + From a3c98c8b592bc23128ea6efae38f0bebed228318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 18:39:04 +0100 Subject: [PATCH 05/13] Add initial test setup --- bin/install-wp-tests.sh | 152 ++++++++++++++++++++++++++++++ phpunit.integration.xml.dist | 41 ++++++++ phpunit.xml.dist | 41 ++++++++ tests/bootstrap-integration.php | 34 +++++++ tests/bootstrap-unit.php | 14 +++ tests/integration/test-plugin.php | 133 ++++++++++++++++++++++++++ 6 files changed, 415 insertions(+) create mode 100755 bin/install-wp-tests.sh create mode 100644 phpunit.integration.xml.dist create mode 100644 phpunit.xml.dist create mode 100644 tests/bootstrap-integration.php create mode 100644 tests/bootstrap-unit.php create mode 100644 tests/integration/test-plugin.php diff --git a/bin/install-wp-tests.sh b/bin/install-wp-tests.sh new file mode 100755 index 0000000..364f839 --- /dev/null +++ b/bin/install-wp-tests.sh @@ -0,0 +1,152 @@ +#!/usr/bin/env bash + +if [ $# -lt 3 ]; then + echo "usage: $0 [db-host] [wp-version] [skip-database-creation]" + exit 1 +fi + +DB_NAME=$1 +DB_USER=$2 +DB_PASS=$3 +DB_HOST=${4-localhost} +WP_VERSION=${5-latest} +SKIP_DB_CREATE=${6-false} + +TMPDIR=${TMPDIR-/tmp} +TMPDIR=$(echo $TMPDIR | sed -e "s/\/$//") +WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR/wordpress-tests-lib} +WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR/wordpress/} + +download() { + if [ `which curl` ]; then + curl -s "$1" > "$2"; + elif [ `which wget` ]; then + wget -nv -O "$2" "$1" + fi +} + +if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then + WP_TESTS_TAG="branches/$WP_VERSION" +elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then + if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then + # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x + WP_TESTS_TAG="tags/${WP_VERSION%??}" + else + WP_TESTS_TAG="tags/$WP_VERSION" + fi +elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then + WP_TESTS_TAG="trunk" +else + # http serves a single offer, whereas https serves multiple. we only want one + download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json + grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json + LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//') + if [[ -z "$LATEST_VERSION" ]]; then + echo "Latest WordPress version could not be found" + exit 1 + fi + WP_TESTS_TAG="tags/$LATEST_VERSION" +fi + +set -ex + +install_wp() { + + if [ -d $WP_CORE_DIR ]; then + return; + fi + + mkdir -p $WP_CORE_DIR + + if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then + mkdir -p $TMPDIR/wordpress-nightly + download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip + unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/ + mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR + else + if [ $WP_VERSION == 'latest' ]; then + local ARCHIVE_NAME='latest' + elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then + # https serves multiple offers, whereas http serves single. + download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json + if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then + # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x + LATEST_VERSION=${WP_VERSION%??} + else + # otherwise, scan the releases and get the most up to date minor version of the major release + local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'` + LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1) + fi + if [[ -z "$LATEST_VERSION" ]]; then + local ARCHIVE_NAME="wordpress-$WP_VERSION" + else + local ARCHIVE_NAME="wordpress-$LATEST_VERSION" + fi + else + local ARCHIVE_NAME="wordpress-$WP_VERSION" + fi + download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz + tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR + fi + + download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php +} + +install_test_suite() { + # portable in-place argument for both GNU sed and Mac OSX sed + if [[ $(uname -s) == 'Darwin' ]]; then + local ioption='-i.bak' + else + local ioption='-i' + fi + + # set up testing suite if it doesn't yet exist + if [ ! -d $WP_TESTS_DIR ]; then + # set up testing suite + mkdir -p $WP_TESTS_DIR + svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes + svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data + fi + + if [ ! -f wp-tests-config.php ]; then + download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php + # remove all forward slashes in the end + WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::") + sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php + fi + +} + +install_db() { + + if [ ${SKIP_DB_CREATE} = "true" ]; then + return 0 + fi + + # parse DB_HOST for port or socket references + local PARTS=(${DB_HOST//\:/ }) + local DB_HOSTNAME=${PARTS[0]}; + local DB_SOCK_OR_PORT=${PARTS[1]}; + local EXTRA="" + + if ! [ -z $DB_HOSTNAME ] ; then + if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then + EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp" + elif ! [ -z $DB_SOCK_OR_PORT ] ; then + EXTRA=" --socket=$DB_SOCK_OR_PORT" + elif ! [ -z $DB_HOSTNAME ] ; then + EXTRA=" --host=$DB_HOSTNAME --protocol=tcp" + fi + fi + + # create database + mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA +} + +install_wp +install_test_suite +install_db diff --git a/phpunit.integration.xml.dist b/phpunit.integration.xml.dist new file mode 100644 index 0000000..495f098 --- /dev/null +++ b/phpunit.integration.xml.dist @@ -0,0 +1,41 @@ + + + + + ./tests/integration/ + + + + + ./ + + ./node_modules + ./vendor + ./tests + + + + + + + + + + diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..b43a23c --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,41 @@ + + + + + ./tests/unit/ + + + + + ./src + + ./node_modules + ./vendor + ./tests + + + + + + + + + + diff --git a/tests/bootstrap-integration.php b/tests/bootstrap-integration.php new file mode 100644 index 0000000..73ecc85 --- /dev/null +++ b/tests/bootstrap-integration.php @@ -0,0 +1,34 @@ +plugin = new Plugin(); + } + + /** + * Test suite tearDown method + */ + public function tearDown() { + $this->plugin = ''; + + parent::tearDown(); + } + + /** + * Method that tests the activate() method that runs when plugin is activated + */ + public function test_plugin_activate() { + $this->user_id = $this->factory()->user->create( + [ + 'role' => 'administrator', + ] + ); + + wp_set_current_user( $this->user_id ); + + $this->plugin->activate(); + + $this->assertInstanceOf( 'Theme_Sniffer\Core\Registerable', $this->plugin ); + $this->assertInstanceOf( 'Theme_Sniffer\Core\Has_Activation', $this->plugin ); + $this->assertInstanceOf( 'Theme_Sniffer\Core\Has_Deactivation', $this->plugin ); + } + + /** + * Method that tests the deactivate() method that runs when ACF plugin is missing + */ + public function test_plugin_deactivate() { + $this->user_id = $this->factory()->user->create( + [ + 'role' => 'administrator', + ] + ); + + wp_set_current_user( $this->user_id ); + + $this->plugin->deactivate(); + + $this->assertInstanceOf( 'Theme_Sniffer\Core\Registerable', $this->plugin ); + $this->assertInstanceOf( 'Theme_Sniffer\Core\Has_Activation', $this->plugin ); + $this->assertInstanceOf( 'Theme_Sniffer\Core\Has_Deactivation', $this->plugin ); + } + + /** + * Tests that register method was called + */ + public function test_plugin_register() { + $this->plugin->register(); + + $result = has_action( 'plugins_loaded', 'register_services' ); + + $this->assertNotFalse( 'integer', $result ); + } + + /** + * Test register asset manifest failure + */ + public function test_register_assets_manifest() { + $this->plugin->register_assets_manifest_data(); + + $this->assertTrue( defined( 'ASSETS_MANIFEST' ) ); + } + + /** + * Test for plugin settings link + */ + public function test_plugin_settings_link() { + $links = $this->plugin->plugin_settings_link( [] ); + + $this->assertTrue( gettype( $links ) === 'array' ); + $this->assertEquals( 'Theme Sniffer Page', $links[0] ); + } + + /** + * Test for extra headers added + */ + public function test_extra_headers() { + $headers = $this->plugin->add_headers( [] ); + + $theme_object = wp_get_theme(); + + // Trick to get private properties. We do this because the added headers will be empty in + // the test theme. + $reflected_object = new ReflectionClass( $theme_object ); + $private_headers = $reflected_object->getProperty( 'headers' ); + $private_headers->setAccessible( true ); + + $theme_headers_added = $private_headers->getValue( $theme_object ); + + $this->assertTrue( gettype( $headers ) === 'array' ); + $this->assertContains( 'License', $headers ); + $this->assertContains( 'License URI', $headers ); + $this->assertContains( 'Template Version', $headers ); + $this->assertArrayHasKey( 'License', $theme_headers_added ); + $this->assertArrayHasKey( 'License URI', $theme_headers_added ); + $this->assertArrayHasKey( 'Template Version', $theme_headers_added ); + } +} From a7df3331db48f85e4b04311d13bb6d16f6e26c3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 19:05:29 +0100 Subject: [PATCH 06/13] Update readme --- README.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ readme.txt | 2 +- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 89ad1f3..1c41f46 100644 --- a/README.md +++ b/README.md @@ -92,4 +92,72 @@ When developing JavaScript code keep in mind the separation of concerns principl The same is valid for PHP code. The business logic is stored in the `src/` folder, the JS and CSS are located in `assets/` folder and the views are located in the `views/` folder. +## Running unit or integration tests +Before running unit tests, you'll need to install a local test environment. You can do this by running: + +```bash +bash bin/install-wp-tests.sh wordpress_test root '' localhost latest +``` + +in your terminal. + +After this has been installed you can run + +```bash +composer punit +``` + +to run unit tests (without coverage). To generate code coverage report you can run + +```bash +composer punit-cov +``` + +In order for coverage to be generated, you'll need to have Xdebug installed. + +To run integration tests you can run + +```bash +composer pint +``` + +To generate code coverage report you can run + +```bash +composer pint-cov +``` + +The output should look like this: + +```bash +> @php ./vendor/bin/phpunit -c phpunit.integration.xml.dist --no-coverage --colors=always +Installing... +Running as single site... To run multisite, use -c tests/phpunit/multisite.xml +Not running ajax tests. To execute these, use --group ajax. +Not running ms-files tests. To execute these, use --group ms-files. +Not running external-http tests. To execute these, use --group external-http. + +PHPUnit Pretty Result Printer 0.20.3 by Codedungeon and contributors. +==> Configuration: .../wp-content/plugins/theme-sniffer/vendor/codedungeon/phpunit-result-printer/phpunit-printer.yml + +PHPUnit 6.5.14 by Sebastian Bergmann and contributors. + +Runtime: PHP 7.2.14 with Xdebug 2.6.1 +Configuration: .../wp-content/plugins/theme-sniffer/phpunit.integration.xml.dist + + + ==> Plugin_Integration_Test ✓ ✓ ✓ ✓ ✓ ✓ + +Time: 4.43 seconds, Memory: 32.00MB +``` + +## Helpful Composer commands + +The plugin offers few additional helpful commands, but you'll mostly be interested in this one + +```bash +composer check-cs . +``` + +It will run `phpcs` check on the entire code base. diff --git a/readme.txt b/readme.txt index f4a517d..07244e4 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ === Theme Sniffer === -Contributors: dingo_d, rabmalin, grapplerulrich +Contributors: dingo_d, rabmalin, grapplerulrich, timph Tags: check, checker, coding standards, theme, tool Requires at least: 4.7 Tested up to: 5.1.0 From 86c38baf8b992b30dde3490629445b1ea3044b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Sun, 3 Mar 2019 19:06:34 +0100 Subject: [PATCH 07/13] Minor updates to test scripts and to configs --- package.json | 3 +++ phpunit-printer.yml | 14 ++++++++++++++ phpunit.integration.xml.dist | 2 +- phpunit.xml.dist | 4 ++-- webpack.config.js | 4 ++++ 5 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 phpunit-printer.yml diff --git a/package.json b/package.json index 2c461c2..007b40d 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,9 @@ }, { "name": "Ulrich Pogson" + }, + { + "name": "Tim Elsass" } ], "license": "GPL-2.0", diff --git a/phpunit-printer.yml b/phpunit-printer.yml new file mode 100644 index 0000000..38e284d --- /dev/null +++ b/phpunit-printer.yml @@ -0,0 +1,14 @@ +options: + cd-printer-hide-class: false + cd-printer-simple-output: false + cd-printer-show-config: true + cd-printer-hide-namespace: false + cd-printer-anybar: true + cd-printer-anybar-port: 1738 +markers: + cd-pass: "✓ " + cd-fail: "✖ " + cd-error: "⚈ " + cd-skipped: "→ " + cd-incomplete: "∅ " + cd-risky: "⌽ " diff --git a/phpunit.integration.xml.dist b/phpunit.integration.xml.dist index 495f098..5e6e993 100644 --- a/phpunit.integration.xml.dist +++ b/phpunit.integration.xml.dist @@ -23,7 +23,7 @@ - + ./ ./node_modules diff --git a/phpunit.xml.dist b/phpunit.xml.dist index b43a23c..eb0eda1 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -4,7 +4,7 @@ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.5/phpunit.xsd" backupGlobals="false" backupStaticAttributes="false" - bootstrap="tests/bootstrap.php" + bootstrap="tests/bootstrap-unit.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" @@ -24,7 +24,7 @@ - ./src + ./ ./node_modules ./vendor diff --git a/webpack.config.js b/webpack.config.js index 4751436..1f7873f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -115,11 +115,15 @@ if ( ! DEV ) { delete: [ './theme-sniffer/assets/dev', './theme-sniffer/node_modules', + './theme-sniffer/tests', './theme-sniffer/composer.json', './theme-sniffer/composer.lock', './theme-sniffer/package.json', './theme-sniffer/package-lock.json', './theme-sniffer/phpcs.xml.dist', + './theme-sniffer/phpunit.integration.xml.dist', + './theme-sniffer/phpunit.xml.dist', + './theme-sniffer/phpunit-printer.yml', './theme-sniffer/webpack.config.js' ] }, From feea61251b8e6f19e2eaebcda91fe7ea4cc0fffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Mon, 29 Jul 2019 09:56:53 +0200 Subject: [PATCH 08/13] Update integration tests and bootstrap --- tests/bootstrap-integration.php | 6 +++--- tests/integration/test-plugin.php | 24 +++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/tests/bootstrap-integration.php b/tests/bootstrap-integration.php index 73ecc85..2b4ba80 100644 --- a/tests/bootstrap-integration.php +++ b/tests/bootstrap-integration.php @@ -4,7 +4,7 @@ * * Integration tests bootstrap file. * - * @package Developer_Portal + * @package Theme_Sniffer */ $_tests_dir = getenv( 'WP_TESTS_DIR' ); @@ -13,8 +13,8 @@ $_tests_dir = rtrim( sys_get_temp_dir(), '/\\' ) . '/wordpress-tests-lib'; } -if ( ! file_exists( $_tests_dir . 'includes/functions.php' ) ) { - echo "Could not find {$_tests_dir}includes/functions.php, have you run bin/install-wp-tests.sh ?" . PHP_EOL; // WPCS: XSS ok. +if ( ! file_exists( $_tests_dir . '/includes/functions.php' ) ) { + echo "Could not find {$_tests_dir}/includes/functions.php, have you run bin/install-wp-tests.sh ?" . PHP_EOL; // phpcs:ignore exit( 1 ); } diff --git a/tests/integration/test-plugin.php b/tests/integration/test-plugin.php index be85d81..5a883f3 100644 --- a/tests/integration/test-plugin.php +++ b/tests/integration/test-plugin.php @@ -8,6 +8,8 @@ use Theme_Sniffer\Core\Plugin; use Theme_Sniffer\Core\Plugin_Factory; +use Theme_Sniffer\Exception; + /** * Class that tests the Main plugin functionality. */ @@ -27,6 +29,7 @@ public function setUp() { parent::setUp(); $this->plugin = new Plugin(); + $this->plugin->register(); } /** @@ -38,6 +41,16 @@ public function tearDown() { parent::tearDown(); } + /** + * Test if all the hooks were registered. + */ + public function test_registered_hooks() { + $this->assertEquals( \has_action( 'plugins_loaded', [ $this->plugin, 'register_services' ] ), 10 ); + $this->assertEquals( \has_action( 'init', [ $this->plugin, 'register_assets_handler' ] ), 10 ); + $this->assertEquals( \has_action( 'plugin_action_links_' . PLUGIN_BASENAME, [ $this->plugin, 'plugin_settings_link' ] ), 10 ); + $this->assertEquals( \has_filter( 'extra_theme_headers', [ $this->plugin, 'add_headers' ] ), 10 ); + } + /** * Method that tests the activate() method that runs when plugin is activated */ @@ -76,17 +89,6 @@ public function test_plugin_deactivate() { $this->assertInstanceOf( 'Theme_Sniffer\Core\Has_Deactivation', $this->plugin ); } - /** - * Tests that register method was called - */ - public function test_plugin_register() { - $this->plugin->register(); - - $result = has_action( 'plugins_loaded', 'register_services' ); - - $this->assertNotFalse( 'integer', $result ); - } - /** * Test register asset manifest failure */ From 36c9c46c1e7827dfc91af4af10cf196a0415dc4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Mon, 29 Jul 2019 09:57:18 +0200 Subject: [PATCH 09/13] Update test setup script --- bin/install-wp-tests.sh | 215 ++++++++++++++++++++-------------------- 1 file changed, 109 insertions(+), 106 deletions(-) diff --git a/bin/install-wp-tests.sh b/bin/install-wp-tests.sh index 364f839..76b9254 100755 --- a/bin/install-wp-tests.sh +++ b/bin/install-wp-tests.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash if [ $# -lt 3 ]; then - echo "usage: $0 [db-host] [wp-version] [skip-database-creation]" - exit 1 + echo "usage: $0 [db-host] [wp-version] [skip-database-creation]" + exit 1 fi DB_NAME=$1 @@ -25,126 +25,129 @@ download() { fi } -if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then - WP_TESTS_TAG="branches/$WP_VERSION" +if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+\-(beta|RC)[0-9]+$ ]]; then + WP_BRANCH=${WP_VERSION%\-*} + WP_TESTS_TAG="branches/$WP_BRANCH" + +elif [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then + WP_TESTS_TAG="branches/$WP_VERSION" elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then - if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then - # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x - WP_TESTS_TAG="tags/${WP_VERSION%??}" - else - WP_TESTS_TAG="tags/$WP_VERSION" - fi + if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then + # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x + WP_TESTS_TAG="tags/${WP_VERSION%??}" + else + WP_TESTS_TAG="tags/$WP_VERSION" + fi elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then - WP_TESTS_TAG="trunk" + WP_TESTS_TAG="trunk" else - # http serves a single offer, whereas https serves multiple. we only want one - download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json - grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json - LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//') - if [[ -z "$LATEST_VERSION" ]]; then - echo "Latest WordPress version could not be found" - exit 1 - fi - WP_TESTS_TAG="tags/$LATEST_VERSION" + # http serves a single offer, whereas https serves multiple. we only want one + download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json + grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json + LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//') + if [[ -z "$LATEST_VERSION" ]]; then + echo "Latest WordPress version could not be found" + exit 1 + fi + WP_TESTS_TAG="tags/$LATEST_VERSION" fi - set -ex install_wp() { - if [ -d $WP_CORE_DIR ]; then - return; - fi - - mkdir -p $WP_CORE_DIR - - if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then - mkdir -p $TMPDIR/wordpress-nightly - download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip - unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/ - mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR - else - if [ $WP_VERSION == 'latest' ]; then - local ARCHIVE_NAME='latest' - elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then - # https serves multiple offers, whereas http serves single. - download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json - if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then - # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x - LATEST_VERSION=${WP_VERSION%??} - else - # otherwise, scan the releases and get the most up to date minor version of the major release - local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'` - LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1) - fi - if [[ -z "$LATEST_VERSION" ]]; then - local ARCHIVE_NAME="wordpress-$WP_VERSION" - else - local ARCHIVE_NAME="wordpress-$LATEST_VERSION" - fi - else - local ARCHIVE_NAME="wordpress-$WP_VERSION" - fi - download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz - tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR - fi - - download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php + if [ -d $WP_CORE_DIR ]; then + return; + fi + + mkdir -p $WP_CORE_DIR + + if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then + mkdir -p $TMPDIR/wordpress-nightly + download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip + unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/ + mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR + else + if [ $WP_VERSION == 'latest' ]; then + local ARCHIVE_NAME='latest' + elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then + # https serves multiple offers, whereas http serves single. + download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json + if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then + # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x + LATEST_VERSION=${WP_VERSION%??} + else + # otherwise, scan the releases and get the most up to date minor version of the major release + local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'` + LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1) + fi + if [[ -z "$LATEST_VERSION" ]]; then + local ARCHIVE_NAME="wordpress-$WP_VERSION" + else + local ARCHIVE_NAME="wordpress-$LATEST_VERSION" + fi + else + local ARCHIVE_NAME="wordpress-$WP_VERSION" + fi + download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz + tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR + fi + + download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php } install_test_suite() { - # portable in-place argument for both GNU sed and Mac OSX sed - if [[ $(uname -s) == 'Darwin' ]]; then - local ioption='-i.bak' - else - local ioption='-i' - fi - - # set up testing suite if it doesn't yet exist - if [ ! -d $WP_TESTS_DIR ]; then - # set up testing suite - mkdir -p $WP_TESTS_DIR - svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes - svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data - fi - - if [ ! -f wp-tests-config.php ]; then - download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php - # remove all forward slashes in the end - WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::") - sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php - sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php - sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php - sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php - sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php - fi + # portable in-place argument for both GNU sed and Mac OSX sed + if [[ $(uname -s) == 'Darwin' ]]; then + local ioption='-i.bak' + else + local ioption='-i' + fi + + # set up testing suite if it doesn't yet exist + if [ ! -d $WP_TESTS_DIR ]; then + # set up testing suite + mkdir -p $WP_TESTS_DIR + svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes + svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data + fi + + if [ ! -f wp-tests-config.php ]; then + download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php + # remove all forward slashes in the end + WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::") + sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php + fi } install_db() { - if [ ${SKIP_DB_CREATE} = "true" ]; then - return 0 - fi - - # parse DB_HOST for port or socket references - local PARTS=(${DB_HOST//\:/ }) - local DB_HOSTNAME=${PARTS[0]}; - local DB_SOCK_OR_PORT=${PARTS[1]}; - local EXTRA="" - - if ! [ -z $DB_HOSTNAME ] ; then - if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then - EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp" - elif ! [ -z $DB_SOCK_OR_PORT ] ; then - EXTRA=" --socket=$DB_SOCK_OR_PORT" - elif ! [ -z $DB_HOSTNAME ] ; then - EXTRA=" --host=$DB_HOSTNAME --protocol=tcp" - fi - fi - - # create database - mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA + if [ ${SKIP_DB_CREATE} = "true" ]; then + return 0 + fi + + # parse DB_HOST for port or socket references + local PARTS=(${DB_HOST//\:/ }) + local DB_HOSTNAME=${PARTS[0]}; + local DB_SOCK_OR_PORT=${PARTS[1]}; + local EXTRA="" + + if ! [ -z $DB_HOSTNAME ] ; then + if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then + EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp" + elif ! [ -z $DB_SOCK_OR_PORT ] ; then + EXTRA=" --socket=$DB_SOCK_OR_PORT" + elif ! [ -z $DB_HOSTNAME ] ; then + EXTRA=" --host=$DB_HOSTNAME --protocol=tcp" + fi + fi + + # create database + mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA } install_wp From 41cd0711a716930def1426850b7769c6cf79bdc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Mon, 29 Jul 2019 09:58:05 +0200 Subject: [PATCH 10/13] Merge develop branch and fix conflicts --- .editorconfig | 4 + .github/ISSUE_TEMPLATE/bug_report.md | 31 + CODE_OF_CONDUCT.md | 90 + CONTRIBUTING.md | 21 + README.md | 10 +- assets/dev/licenses.json | 6826 +++++++++++++++++ assets/dev/scripts/index.js | 3 + assets/dev/scripts/theme-sniffer.js | 100 +- assets/dev/scripts/utils/sniff-js.js | 101 + .../dev/styles/components/_admin-screen.scss | 71 +- composer.json | 7 +- composer.lock | 553 +- package-lock.json | 5944 +++++++++----- package.json | 53 +- phpunit.integration.xml.dist | 3 +- readme.txt | 37 +- screenshot.png | Bin 68079 -> 69583 bytes src/admin-menus/class-sniff-page.php | 8 +- src/api/class-template-tags-request.php | 27 +- src/callback/class-run-sniffer-callback.php | 213 +- src/class-plugin.php | 5 + src/helpers/file-helpers-trait.php | 47 + src/helpers/readme-helpers-trait.php | 186 + src/helpers/sniffer-helpers-trait.php | 131 + src/sniffs/class-result.php | 198 + src/sniffs/class-validate-file.php | 154 + src/sniffs/class-validate.php | 67 + src/sniffs/has-results-interface.php | 23 + src/sniffs/readme/class-contributors.php | 77 + src/sniffs/readme/class-license-uri.php | 85 + src/sniffs/readme/class-license.php | 67 + src/sniffs/readme/class-parser.php | 789 ++ src/sniffs/readme/class-validator.php | 103 + src/sniffs/screenshot/class-validator.php | 130 + src/sniffs/validatable-interface.php | 23 + theme-sniffer.php | 2 +- views/theme-sniffer-page.php | 28 +- webpack.config.js | 48 +- 38 files changed, 13698 insertions(+), 2567 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 assets/dev/licenses.json create mode 100644 assets/dev/scripts/utils/sniff-js.js create mode 100644 src/helpers/file-helpers-trait.php create mode 100644 src/helpers/readme-helpers-trait.php create mode 100644 src/sniffs/class-result.php create mode 100644 src/sniffs/class-validate-file.php create mode 100644 src/sniffs/class-validate.php create mode 100644 src/sniffs/has-results-interface.php create mode 100644 src/sniffs/readme/class-contributors.php create mode 100644 src/sniffs/readme/class-license-uri.php create mode 100644 src/sniffs/readme/class-license.php create mode 100644 src/sniffs/readme/class-parser.php create mode 100644 src/sniffs/readme/class-validator.php create mode 100644 src/sniffs/screenshot/class-validator.php create mode 100644 src/sniffs/validatable-interface.php diff --git a/.editorconfig b/.editorconfig index 7d93093..cc189e9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,5 +14,9 @@ trim_trailing_whitespace = true indent_style = tab indent_size = 4 +[*.{json,yaml}] +indent_style = space +indent_size = 2 + [*.md] trim_trailing_whitespace = false diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..e4cb504 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +**Describe the bug** +A clear and concise description of what the bug is - when it happened and what was the result. + +**To Reproduce** +Steps to reproduce the behaviour: + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behaviour** +A clear and concise description of what you expected to happen. + +**Environment (please complete the following information):** + + +| Details | Answer +| ------------------| ------- +| OS | MacOS Mojave v10.14.3, Windows 10 +| Plugin version | v1.0.0 +| WordPress version | v5.0, v5.1 +| PHP version | e.g. 7.0, 7.2 +| Browser | e.g Chrome, Safari, FF + + +**Screenshots (optional)** +If applicable, add screenshots to help explain your problem. + +**Additional context (optional)** +Add any other context about the problem here. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..e68b2c0 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,90 @@ +# Contributor Covenant Code of Conduct + +# WordPress Etiquette + +This project comes under the WordPress [Etiquette](https://wordpress.org/about/etiquette/): + +In the WordPress open source project, we realize that our biggest asset is the community that we foster. The project, as a whole, follows these basic philosophical principles from The Cathedral and The Bazaar. + +- Contributions to the WordPress open source project are for the benefit of the WordPress community as a whole, not specific businesses or individuals. All actions taken as a contributor should be made with the best interests of the community in mind. +- Participation in the WordPress open source project is open to all who wish to join, regardless of ability, skill, financial status, or any other criteria. +- The WordPress open source project is a volunteer-run community. Even in cases where contributors are sponsored by companies, that time is donated for the benefit of the entire open source community. +- Any member of the community can donate their time and contribute to the project in any form including design, code, documentation, community building, etc. For more information, go to make.wordpress.org. +- The WordPress open source community cares about diversity. We strive to maintain a welcoming environment where everyone can feel included, by keeping communication free of discrimination, incitement to violence, promotion of hate, and unwelcoming behavior. + +The team involved will block any user who causes any breach in this. + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at themes@wordpress.org. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7b41ec9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,21 @@ +Hi, thank you for your interest in contributing to the Theme Sniffer plugin! We look forward to working with you. + +# Reporting Bugs + +Please search the repo to see if your issue has been reported already and if so, comment in that issue instead of opening a new one. + +Include as much detail as possible when describing the bug. This helps us solve your problem more quickly. Also, be sure to fill in the details in the issue template. + +# Contributing patches and new features + +## Branches + +Ongoing development will be done in the `development` branch with merges done into `master` once considered stable. + +To contribute an improvement to this project, fork the repo and open a pull request to the `development` branch. Alternatively, if you have push access to this repo, create a feature branch prefixed by `feature/` and then open an intra-repo PR from that branch to `development`. + +Once a commit is made to `development`, a PR should be opened from `development` into `master` and named "Next release - X.X.X". This PR will provide collaborators with a forum to discuss the upcoming stable release. + +## Code Standards for this project + +The code must follow the standards defined in the `phpcs.xml.dist` file in the root folder of the repo. Every pull request will go through the automatic check done by TravisCI. diff --git a/README.md b/README.md index 1c41f46..5a288cd 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The Theme Sniffer requires: ### For themes development and checking -* Download [zip file](https://github.com/WPTRT/theme-sniffer/releases/download/0.2.0/theme-sniffer.0.2.0.zip). **Note**: Please use this distribution plugin zip. GitHub provided zip will not work. +* Download [zip file](https://github.com/WPTRT/theme-sniffer/releases/download/1.1.0/theme-sniffer.zip). **Note**: Please use this distribution plugin zip. GitHub provided zip will not work. * Install this as you normally install a WordPress plugin * Activate plugin @@ -41,6 +41,14 @@ The Theme Sniffer requires: * Run `npm run build` * Activate plugin +#### On Windows + +* When developing on Windows machine you might run into various issues with CLI when not installed globally. Installing following items globally might help, but use it with caution: + + * Run `npm install --global eslint-cli` + * Run `npm install --global stylelint` + * Run `composer global require "squizlabs/php_codesniffer=*"` & make sure that you have installed [WordPress Coding Standards](https://github.com/WordPress/WordPress-Coding-Standards) and [PHPCompatibility](https://github.com/PHPCompatibility/PHPCompatibility) by running `phpcs -i`. When PHPCS installed globally, you might need clone both repositories and add them to PHPCS with `phpcs --config-set installed_paths /path/to/PHPCompatibility,/path/to/wpcs` + **Note**: If you build the plugin this way you'll have extra `node_modules/` folders which are not required for the plugin to run, and just take up space. They are to be used for the development purposes mainly. Some of the `vendor/` folders are necessary for Theme Sniffer to run ![Screenshot](screenshot.png?raw=true) diff --git a/assets/dev/licenses.json b/assets/dev/licenses.json new file mode 100644 index 0000000..6fb9e32 --- /dev/null +++ b/assets/dev/licenses.json @@ -0,0 +1,6826 @@ +{ + "0BSD": { + "isDeprecatedLicenseId": false, + "name": "BSD Zero Clause License", + "licenseId": "0BSD", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "0BSD" + ], + "names": [ + "BSD Zero Clause License" + ], + "uris": [ + "http://landley.net/toybox/license.html", + "http://spdx.org/licenses/0BSD.json" + ] + }, + "AAL": { + "isDeprecatedLicenseId": false, + "name": "Attribution Assurance License", + "licenseId": "AAL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AAL" + ], + "names": [ + "Attribution Assurance License" + ], + "uris": [ + "https://opensource.org/licenses/attribution", + "http://spdx.org/licenses/AAL.json" + ] + }, + "ADSL": { + "isDeprecatedLicenseId": false, + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ADSL" + ], + "names": [ + "Amazon Digital Services License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense", + "http://spdx.org/licenses/ADSL.json" + ] + }, + "AFL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AFL-1.1" + ], + "names": [ + "Academic Free License v1.1" + ], + "uris": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php", + "http://spdx.org/licenses/AFL-1.1.json" + ] + }, + "AFL-1.2": { + "isDeprecatedLicenseId": false, + "name": "Academic Free License v1.2", + "licenseId": "AFL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AFL-1.2" + ], + "names": [ + "Academic Free License v1.2" + ], + "uris": [ + "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php", + "http://spdx.org/licenses/AFL-1.2.json" + ] + }, + "AFL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AFL-2.0" + ], + "names": [ + "Academic Free License v2.0" + ], + "uris": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt", + "http://spdx.org/licenses/AFL-2.0.json" + ] + }, + "AFL-2.1": { + "isDeprecatedLicenseId": false, + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AFL-2.1" + ], + "names": [ + "Academic Free License v2.1" + ], + "uris": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt", + "http://spdx.org/licenses/AFL-2.1.json" + ] + }, + "AFL-3.0": { + "isDeprecatedLicenseId": false, + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AFL-3.0" + ], + "names": [ + "Academic Free License v3.0" + ], + "uris": [ + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0", + "http://spdx.org/licenses/AFL-3.0.json" + ] + }, + "AGPL-1.0": { + "isDeprecatedLicenseId": true, + "name": "Affero General Public License v1.0", + "licenseId": "AGPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AGPL-1.0" + ], + "names": [ + "Affero General Public License v1.0" + ], + "uris": [ + "http://www.affero.org/oagpl.html", + "http://spdx.org/licenses/AGPL-1.0.json" + ] + }, + "AGPL-1.0-only": { + "isDeprecatedLicenseId": false, + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AGPL-1.0-only" + ], + "names": [ + "Affero General Public License v1.0 only" + ], + "uris": [ + "http://www.affero.org/oagpl.html", + "http://spdx.org/licenses/AGPL-1.0-only.json" + ] + }, + "AGPL-1.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AGPL-1.0-or-later" + ], + "names": [ + "Affero General Public License v1.0 or later" + ], + "uris": [ + "http://www.affero.org/oagpl.html", + "http://spdx.org/licenses/AGPL-1.0-or-later.json" + ] + }, + "AGPL-3.0": { + "isDeprecatedLicenseId": true, + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "AGPL-3.0", + "AGPLv3.0" + ], + "names": [ + "GNU Affero General Public License v3.0", + "GNU Affero General Public License (AGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0", + "http://spdx.org/licenses/AGPL-3.0.json", + "https://www.gnu.org/licenses/license-list.html#AGPLv3.0", + "https://www.gnu.org/licenses/agpl.html" + ] + }, + "AGPL-3.0-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "AGPL-3.0-only", + "AGPLv3.0" + ], + "names": [ + "GNU Affero General Public License v3.0 only", + "GNU Affero General Public License (AGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0", + "http://spdx.org/licenses/AGPL-3.0-only.json", + "https://www.gnu.org/licenses/license-list.html#AGPLv3.0", + "https://www.gnu.org/licenses/agpl.html" + ] + }, + "AGPL-3.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "AGPL-3.0-or-later", + "AGPLv3.0" + ], + "names": [ + "GNU Affero General Public License v3.0 or later", + "GNU Affero General Public License (AGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0", + "http://spdx.org/licenses/AGPL-3.0-or-later.json", + "https://www.gnu.org/licenses/license-list.html#AGPLv3.0", + "https://www.gnu.org/licenses/agpl.html" + ] + }, + "AMDPLPA": { + "isDeprecatedLicenseId": false, + "name": "AMD's plpa_map.c License", + "licenseId": "AMDPLPA", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AMDPLPA" + ], + "names": [ + "AMD's plpa_map.c License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License", + "http://spdx.org/licenses/AMDPLPA.json" + ] + }, + "AML": { + "isDeprecatedLicenseId": false, + "name": "Apple MIT License", + "licenseId": "AML", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AML" + ], + "names": [ + "Apple MIT License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License", + "http://spdx.org/licenses/AML.json" + ] + }, + "AMPAS": { + "isDeprecatedLicenseId": false, + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "AMPAS" + ], + "names": [ + "Academy of Motion Picture Arts and Sciences BSD" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD", + "http://spdx.org/licenses/AMPAS.json" + ] + }, + "ANTLR-PD": { + "isDeprecatedLicenseId": false, + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ANTLR-PD" + ], + "names": [ + "ANTLR Software Rights Notice" + ], + "uris": [ + "http://www.antlr2.org/license.html", + "http://spdx.org/licenses/ANTLR-PD.json" + ] + }, + "APAFML": { + "isDeprecatedLicenseId": false, + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "APAFML" + ], + "names": [ + "Adobe Postscript AFM License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM", + "http://spdx.org/licenses/APAFML.json" + ] + }, + "APL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "APL-1.0" + ], + "names": [ + "Adaptive Public License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/APL-1.0", + "http://spdx.org/licenses/APL-1.0.json" + ] + }, + "APSL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "APSL-1.0" + ], + "names": [ + "Apple Public Source License 1.0" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0", + "http://spdx.org/licenses/APSL-1.0.json" + ] + }, + "APSL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "APSL-1.1" + ], + "names": [ + "Apple Public Source License 1.1" + ], + "uris": [ + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE", + "http://spdx.org/licenses/APSL-1.1.json" + ] + }, + "APSL-1.2": { + "isDeprecatedLicenseId": false, + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "APSL-1.2" + ], + "names": [ + "Apple Public Source License 1.2" + ], + "uris": [ + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php", + "http://spdx.org/licenses/APSL-1.2.json" + ] + }, + "APSL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "APSL-2.0" + ], + "names": [ + "Apple Public Source License 2.0" + ], + "uris": [ + "http://www.opensource.apple.com/license/apsl/", + "http://spdx.org/licenses/APSL-2.0.json" + ] + }, + "Abstyles": { + "isDeprecatedLicenseId": false, + "name": "Abstyles License", + "licenseId": "Abstyles", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Abstyles" + ], + "names": [ + "Abstyles License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Abstyles", + "http://spdx.org/licenses/Abstyles.json" + ] + }, + "Adobe-2006": { + "isDeprecatedLicenseId": false, + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Adobe-2006" + ], + "names": [ + "Adobe Systems Incorporated Source Code License Agreement" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense", + "http://spdx.org/licenses/Adobe-2006.json" + ] + }, + "Adobe-Glyph": { + "isDeprecatedLicenseId": false, + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Adobe-Glyph" + ], + "names": [ + "Adobe Glyph List License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph", + "http://spdx.org/licenses/Adobe-Glyph.json" + ] + }, + "Afmparse": { + "isDeprecatedLicenseId": false, + "name": "Afmparse License", + "licenseId": "Afmparse", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Afmparse" + ], + "names": [ + "Afmparse License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Afmparse", + "http://spdx.org/licenses/Afmparse.json" + ] + }, + "Aladdin": { + "isDeprecatedLicenseId": false, + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Aladdin" + ], + "names": [ + "Aladdin Free Public License" + ], + "uris": [ + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm", + "http://spdx.org/licenses/Aladdin.json" + ] + }, + "Apache-1.0": { + "isDeprecatedLicenseId": false, + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Apache-1.0" + ], + "names": [ + "Apache License 1.0" + ], + "uris": [ + "http://www.apache.org/licenses/LICENSE-1.0", + "http://spdx.org/licenses/Apache-1.0.json" + ] + }, + "Apache-1.1": { + "isDeprecatedLicenseId": false, + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Apache-1.1" + ], + "names": [ + "Apache License 1.1" + ], + "uris": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1", + "http://spdx.org/licenses/Apache-1.1.json" + ] + }, + "Apache-2.0": { + "isDeprecatedLicenseId": false, + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "Apache-2.0", + "apache2" + ], + "names": [ + "Apache License 2.0", + "Apache License, Version 2.0" + ], + "uris": [ + "http://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0", + "http://spdx.org/licenses/Apache-2.0.json", + "https://www.gnu.org/licenses/license-list.html#apache2", + "http://directory.fsf.org/wiki/License:Apache2.0" + ] + }, + "Artistic-1.0": { + "isDeprecatedLicenseId": false, + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Artistic-1.0" + ], + "names": [ + "Artistic License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/Artistic-1.0", + "http://spdx.org/licenses/Artistic-1.0.json" + ] + }, + "Artistic-1.0-Perl": { + "isDeprecatedLicenseId": false, + "name": "Artistic License 1.0 (Perl)", + "licenseId": "Artistic-1.0-Perl", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Artistic-1.0-Perl" + ], + "names": [ + "Artistic License 1.0 (Perl)" + ], + "uris": [ + "http://dev.perl.org/licenses/artistic.html", + "http://spdx.org/licenses/Artistic-1.0-Perl.json" + ] + }, + "Artistic-1.0-cl8": { + "isDeprecatedLicenseId": false, + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Artistic-1.0-cl8" + ], + "names": [ + "Artistic License 1.0 w/clause 8" + ], + "uris": [ + "https://opensource.org/licenses/Artistic-1.0", + "http://spdx.org/licenses/Artistic-1.0-cl8.json" + ] + }, + "Artistic-2.0": { + "isDeprecatedLicenseId": false, + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Artistic-2.0", + "ArtisticLicense2" + ], + "names": [ + "Artistic License 2.0" + ], + "uris": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://opensource.org/licenses/artistic-license-2.0", + "http://spdx.org/licenses/Artistic-2.0.json", + "https://www.gnu.org/licenses/license-list.html#ArtisticLicense2", + "http://directory.fsf.org/wiki/License:ArtisticLicense2.0" + ] + }, + "BSD-1-Clause": { + "isDeprecatedLicenseId": false, + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-1-Clause" + ], + "names": [ + "BSD 1-Clause License" + ], + "uris": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823", + "http://spdx.org/licenses/BSD-1-Clause.json" + ] + }, + "BSD-2-Clause": { + "isDeprecatedLicenseId": false, + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-2-Clause" + ], + "names": [ + "BSD 2-Clause \"Simplified\" License" + ], + "uris": [ + "https://opensource.org/licenses/BSD-2-Clause", + "http://spdx.org/licenses/BSD-2-Clause.json" + ] + }, + "BSD-2-Clause-FreeBSD": { + "isDeprecatedLicenseId": false, + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "BSD-2-Clause-FreeBSD", + "FreeBSD" + ], + "names": [ + "BSD 2-Clause FreeBSD License", + "FreeBSD license" + ], + "uris": [ + "http://www.freebsd.org/copyright/freebsd-license.html", + "http://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "https://www.gnu.org/licenses/license-list.html#FreeBSD", + "http://directory.fsf.org/wiki?title=License:FreeBSD", + "https://www.gnu.org/licenses/license-list.html#FreeBSDDL" + ] + }, + "BSD-2-Clause-NetBSD": { + "isDeprecatedLicenseId": false, + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-2-Clause-NetBSD" + ], + "names": [ + "BSD 2-Clause NetBSD License" + ], + "uris": [ + "http://www.netbsd.org/about/redistribution.html#default", + "http://spdx.org/licenses/BSD-2-Clause-NetBSD.json" + ] + }, + "BSD-2-Clause-Patent": { + "isDeprecatedLicenseId": false, + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-2-Clause-Patent" + ], + "names": [ + "BSD-2-Clause Plus Patent License" + ], + "uris": [ + "https://opensource.org/licenses/BSDplusPatent", + "http://spdx.org/licenses/BSD-2-Clause-Patent.json" + ] + }, + "BSD-3-Clause": { + "isDeprecatedLicenseId": false, + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "BSD-3-Clause", + "ModifiedBSD" + ], + "names": [ + "BSD 3-Clause \"New\" or \"Revised\" License", + "Modified BSD license" + ], + "uris": [ + "https://opensource.org/licenses/BSD-3-Clause", + "http://spdx.org/licenses/BSD-3-Clause.json", + "https://www.gnu.org/licenses/license-list.html#ModifiedBSD", + "http://directory.fsf.org/wiki/License:BSD_3Clause" + ] + }, + "BSD-3-Clause-Attribution": { + "isDeprecatedLicenseId": false, + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-3-Clause-Attribution" + ], + "names": [ + "BSD with attribution" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution", + "http://spdx.org/licenses/BSD-3-Clause-Attribution.json" + ] + }, + "BSD-3-Clause-Clear": { + "isDeprecatedLicenseId": false, + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "BSD-3-Clause-Clear", + "clearbsd" + ], + "names": [ + "BSD 3-Clause Clear License", + "The Clear BSD License" + ], + "uris": [ + "http://labs.metacarta.com/license-explanation.html#license", + "http://spdx.org/licenses/BSD-3-Clause-Clear.json", + "https://www.gnu.org/licenses/license-list.html#clearbsd", + "http://directory.fsf.org/wiki/License:ClearBSD" + ] + }, + "BSD-3-Clause-LBNL": { + "isDeprecatedLicenseId": false, + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-3-Clause-LBNL" + ], + "names": [ + "Lawrence Berkeley National Labs BSD variant license" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD", + "http://spdx.org/licenses/BSD-3-Clause-LBNL.json" + ] + }, + "BSD-3-Clause-No-Nuclear-License": { + "isDeprecatedLicenseId": false, + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-3-Clause-No-Nuclear-License" + ], + "names": [ + "BSD 3-Clause No Nuclear License" + ], + "uris": [ + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc", + "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json" + ] + }, + "BSD-3-Clause-No-Nuclear-License-2014": { + "isDeprecatedLicenseId": false, + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-3-Clause-No-Nuclear-License-2014" + ], + "names": [ + "BSD 3-Clause No Nuclear License 2014" + ], + "uris": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense", + "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json" + ] + }, + "BSD-3-Clause-No-Nuclear-Warranty": { + "isDeprecatedLicenseId": false, + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-3-Clause-No-Nuclear-Warranty" + ], + "names": [ + "BSD 3-Clause No Nuclear Warranty" + ], + "uris": [ + "https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt", + "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json" + ] + }, + "BSD-4-Clause": { + "isDeprecatedLicenseId": false, + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "licenseId": "BSD-4-Clause", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-4-Clause" + ], + "names": [ + "BSD 4-Clause \"Original\" or \"Old\" License" + ], + "uris": [ + "http://directory.fsf.org/wiki/License:BSD_4Clause", + "http://spdx.org/licenses/BSD-4-Clause.json" + ] + }, + "BSD-4-Clause-UC": { + "isDeprecatedLicenseId": false, + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-4-Clause-UC" + ], + "names": [ + "BSD-4-Clause (University of California-Specific)" + ], + "uris": [ + "http://www.freebsd.org/copyright/license.html", + "http://spdx.org/licenses/BSD-4-Clause-UC.json" + ] + }, + "BSD-Protection": { + "isDeprecatedLicenseId": false, + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-Protection" + ], + "names": [ + "BSD Protection License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License", + "http://spdx.org/licenses/BSD-Protection.json" + ] + }, + "BSD-Source-Code": { + "isDeprecatedLicenseId": false, + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BSD-Source-Code" + ], + "names": [ + "BSD Source Code Attribution" + ], + "uris": [ + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt", + "http://spdx.org/licenses/BSD-Source-Code.json" + ] + }, + "BSL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "BSL-1.0", + "boost" + ], + "names": [ + "Boost Software License 1.0", + "Boost Software License" + ], + "uris": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0", + "http://spdx.org/licenses/BSL-1.0.json", + "https://www.gnu.org/licenses/license-list.html#boost", + "http://directory.fsf.org/wiki/License:Boost1.0" + ] + }, + "Bahyph": { + "isDeprecatedLicenseId": false, + "name": "Bahyph License", + "licenseId": "Bahyph", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Bahyph" + ], + "names": [ + "Bahyph License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph", + "http://spdx.org/licenses/Bahyph.json" + ] + }, + "Barr": { + "isDeprecatedLicenseId": false, + "name": "Barr License", + "licenseId": "Barr", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Barr" + ], + "names": [ + "Barr License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Barr", + "http://spdx.org/licenses/Barr.json" + ] + }, + "Beerware": { + "isDeprecatedLicenseId": false, + "name": "Beerware License", + "licenseId": "Beerware", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Beerware" + ], + "names": [ + "Beerware License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/", + "http://spdx.org/licenses/Beerware.json" + ] + }, + "BitTorrent-1.0": { + "isDeprecatedLicenseId": false, + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BitTorrent-1.0" + ], + "names": [ + "BitTorrent Open Source License v1.0" + ], + "uris": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s", + "http://spdx.org/licenses/BitTorrent-1.0.json" + ] + }, + "BitTorrent-1.1": { + "isDeprecatedLicenseId": false, + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "BitTorrent-1.1" + ], + "names": [ + "BitTorrent Open Source License v1.1" + ], + "uris": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1", + "http://spdx.org/licenses/BitTorrent-1.1.json" + ] + }, + "Borceux": { + "isDeprecatedLicenseId": false, + "name": "Borceux license", + "licenseId": "Borceux", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Borceux" + ], + "names": [ + "Borceux license" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Borceux", + "http://spdx.org/licenses/Borceux.json" + ] + }, + "CATOSL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CATOSL-1.1" + ], + "names": [ + "Computer Associates Trusted Open Source License 1.1" + ], + "uris": [ + "https://opensource.org/licenses/CATOSL-1.1", + "http://spdx.org/licenses/CATOSL-1.1.json" + ] + }, + "CC-BY-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-1.0" + ], + "names": [ + "Creative Commons Attribution 1.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by/1.0/legalcode", + "http://spdx.org/licenses/CC-BY-1.0.json" + ] + }, + "CC-BY-2.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-2.0" + ], + "names": [ + "Creative Commons Attribution 2.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by/2.0/legalcode", + "http://spdx.org/licenses/CC-BY-2.0.json" + ] + }, + "CC-BY-2.5": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-2.5" + ], + "names": [ + "Creative Commons Attribution 2.5 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by/2.5/legalcode", + "http://spdx.org/licenses/CC-BY-2.5.json" + ] + }, + "CC-BY-3.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-3.0" + ], + "names": [ + "Creative Commons Attribution 3.0 Unported" + ], + "uris": [ + "https://creativecommons.org/licenses/by/3.0/legalcode", + "http://spdx.org/licenses/CC-BY-3.0.json" + ] + }, + "CC-BY-4.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "CC-BY-4.0", + "ccby" + ], + "names": [ + "Creative Commons Attribution 4.0 International", + "Creative Commons Attribution 4.0 license" + ], + "uris": [ + "https://creativecommons.org/licenses/by/4.0/legalcode", + "http://spdx.org/licenses/CC-BY-4.0.json", + "https://www.gnu.org/licenses/license-list.html#ccby", + "http://creativecommons.org/licenses/by/4.0/legalcode" + ] + }, + "CC-BY-NC-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-1.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial 1.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-1.0.json" + ] + }, + "CC-BY-NC-2.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "licenseId": "CC-BY-NC-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-2.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial 2.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc/2.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-2.0.json" + ] + }, + "CC-BY-NC-2.5": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-2.5" + ], + "names": [ + "Creative Commons Attribution Non Commercial 2.5 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode", + "http://spdx.org/licenses/CC-BY-NC-2.5.json" + ] + }, + "CC-BY-NC-3.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "licenseId": "CC-BY-NC-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-3.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial 3.0 Unported" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc/3.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-3.0.json" + ] + }, + "CC-BY-NC-4.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-4.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial 4.0 International" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc/4.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-4.0.json" + ] + }, + "CC-BY-NC-ND-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-ND-1.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-ND-1.0.json" + ] + }, + "CC-BY-NC-ND-2.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-ND-2.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-ND-2.0.json" + ] + }, + "CC-BY-NC-ND-2.5": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-ND-2.5" + ], + "names": [ + "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode", + "http://spdx.org/licenses/CC-BY-NC-ND-2.5.json" + ] + }, + "CC-BY-NC-ND-3.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-ND-3.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-ND-3.0.json" + ] + }, + "CC-BY-NC-ND-4.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-ND-4.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial No Derivatives 4.0 International" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-ND-4.0.json" + ] + }, + "CC-BY-NC-SA-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-SA-1.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-SA-1.0.json" + ] + }, + "CC-BY-NC-SA-2.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-SA-2.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-SA-2.0.json" + ] + }, + "CC-BY-NC-SA-2.5": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-SA-2.5" + ], + "names": [ + "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode", + "http://spdx.org/licenses/CC-BY-NC-SA-2.5.json" + ] + }, + "CC-BY-NC-SA-3.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-SA-3.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-SA-3.0.json" + ] + }, + "CC-BY-NC-SA-4.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-NC-SA-4.0" + ], + "names": [ + "Creative Commons Attribution Non Commercial Share Alike 4.0 International" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode", + "http://spdx.org/licenses/CC-BY-NC-SA-4.0.json" + ] + }, + "CC-BY-ND-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "licenseId": "CC-BY-ND-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-ND-1.0" + ], + "names": [ + "Creative Commons Attribution No Derivatives 1.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nd/1.0/legalcode", + "http://spdx.org/licenses/CC-BY-ND-1.0.json" + ] + }, + "CC-BY-ND-2.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-ND-2.0" + ], + "names": [ + "Creative Commons Attribution No Derivatives 2.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nd/2.0/legalcode", + "http://spdx.org/licenses/CC-BY-ND-2.0.json" + ] + }, + "CC-BY-ND-2.5": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-ND-2.5" + ], + "names": [ + "Creative Commons Attribution No Derivatives 2.5 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nd/2.5/legalcode", + "http://spdx.org/licenses/CC-BY-ND-2.5.json" + ] + }, + "CC-BY-ND-3.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-ND-3.0" + ], + "names": [ + "Creative Commons Attribution No Derivatives 3.0 Unported" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nd/3.0/legalcode", + "http://spdx.org/licenses/CC-BY-ND-3.0.json" + ] + }, + "CC-BY-ND-4.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-ND-4.0" + ], + "names": [ + "Creative Commons Attribution No Derivatives 4.0 International" + ], + "uris": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode", + "http://spdx.org/licenses/CC-BY-ND-4.0.json" + ] + }, + "CC-BY-SA-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-SA-1.0" + ], + "names": [ + "Creative Commons Attribution Share Alike 1.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode", + "http://spdx.org/licenses/CC-BY-SA-1.0.json" + ] + }, + "CC-BY-SA-2.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-SA-2.0" + ], + "names": [ + "Creative Commons Attribution Share Alike 2.0 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode", + "http://spdx.org/licenses/CC-BY-SA-2.0.json" + ] + }, + "CC-BY-SA-2.5": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-SA-2.5" + ], + "names": [ + "Creative Commons Attribution Share Alike 2.5 Generic" + ], + "uris": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode", + "http://spdx.org/licenses/CC-BY-SA-2.5.json" + ] + }, + "CC-BY-SA-3.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-SA-3.0" + ], + "names": [ + "Creative Commons Attribution Share Alike 3.0 Unported" + ], + "uris": [ + "https://creativecommons.org/licenses/by-sa/3.0/legalcode", + "http://spdx.org/licenses/CC-BY-SA-3.0.json" + ] + }, + "CC-BY-SA-4.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CC-BY-SA-4.0" + ], + "names": [ + "Creative Commons Attribution Share Alike 4.0 International" + ], + "uris": [ + "https://creativecommons.org/licenses/by-sa/4.0/legalcode", + "http://spdx.org/licenses/CC-BY-SA-4.0.json" + ] + }, + "CC0-1.0": { + "isDeprecatedLicenseId": false, + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "CC0-1.0", + "CC0" + ], + "names": [ + "Creative Commons Zero v1.0 Universal", + "CC0" + ], + "uris": [ + "https://creativecommons.org/publicdomain/zero/1.0/legalcode", + "http://spdx.org/licenses/CC0-1.0.json", + "https://www.gnu.org/licenses/license-list.html#CC0", + "http://directory.fsf.org/wiki/License:CC0" + ] + }, + "CDDL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CDDL-1.0" + ], + "names": [ + "Common Development and Distribution License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/cddl1", + "http://spdx.org/licenses/CDDL-1.0.json" + ] + }, + "CDDL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CDDL-1.1" + ], + "names": [ + "Common Development and Distribution License 1.1" + ], + "uris": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE", + "http://spdx.org/licenses/CDDL-1.1.json" + ] + }, + "CDLA-Permissive-1.0": { + "isDeprecatedLicenseId": false, + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CDLA-Permissive-1.0" + ], + "names": [ + "Community Data License Agreement Permissive 1.0" + ], + "uris": [ + "https://cdla.io/permissive-1-0", + "http://spdx.org/licenses/CDLA-Permissive-1.0.json" + ] + }, + "CDLA-Sharing-1.0": { + "isDeprecatedLicenseId": false, + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CDLA-Sharing-1.0" + ], + "names": [ + "Community Data License Agreement Sharing 1.0" + ], + "uris": [ + "https://cdla.io/sharing-1-0", + "http://spdx.org/licenses/CDLA-Sharing-1.0.json" + ] + }, + "CECILL-1.0": { + "isDeprecatedLicenseId": false, + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CECILL-1.0" + ], + "names": [ + "CeCILL Free Software License Agreement v1.0" + ], + "uris": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html", + "http://spdx.org/licenses/CECILL-1.0.json" + ] + }, + "CECILL-1.1": { + "isDeprecatedLicenseId": false, + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CECILL-1.1" + ], + "names": [ + "CeCILL Free Software License Agreement v1.1" + ], + "uris": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html", + "http://spdx.org/licenses/CECILL-1.1.json" + ] + }, + "CECILL-2.0": { + "isDeprecatedLicenseId": false, + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "CECILL-2.0", + "CeCILL" + ], + "names": [ + "CeCILL Free Software License Agreement v2.0", + "CeCILL version 2" + ], + "uris": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html", + "http://spdx.org/licenses/CECILL-2.0.json", + "https://www.gnu.org/licenses/license-list.html#CeCILL", + "https://directory.fsf.org/wiki/License:CeCILLv2" + ] + }, + "CECILL-2.1": { + "isDeprecatedLicenseId": false, + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CECILL-2.1" + ], + "names": [ + "CeCILL Free Software License Agreement v2.1" + ], + "uris": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html", + "http://spdx.org/licenses/CECILL-2.1.json" + ] + }, + "CECILL-B": { + "isDeprecatedLicenseId": false, + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CECILL-B" + ], + "names": [ + "CeCILL-B Free Software License Agreement" + ], + "uris": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html", + "http://spdx.org/licenses/CECILL-B.json" + ] + }, + "CECILL-C": { + "isDeprecatedLicenseId": false, + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CECILL-C" + ], + "names": [ + "CeCILL-C Free Software License Agreement" + ], + "uris": [ + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html\n ", + "http://spdx.org/licenses/CECILL-C.json" + ] + }, + "CNRI-Jython": { + "isDeprecatedLicenseId": false, + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CNRI-Jython" + ], + "names": [ + "CNRI Jython License" + ], + "uris": [ + "http://www.jython.org/license.html", + "http://spdx.org/licenses/CNRI-Jython.json" + ] + }, + "CNRI-Python": { + "isDeprecatedLicenseId": false, + "name": "CNRI Python License", + "licenseId": "CNRI-Python", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CNRI-Python" + ], + "names": [ + "CNRI Python License" + ], + "uris": [ + "https://opensource.org/licenses/CNRI-Python", + "http://spdx.org/licenses/CNRI-Python.json" + ] + }, + "CNRI-Python-GPL-Compatible": { + "isDeprecatedLicenseId": false, + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CNRI-Python-GPL-Compatible" + ], + "names": [ + "CNRI Python Open Source GPL Compatible License Agreement" + ], + "uris": [ + "http://www.python.org/download/releases/1.6.1/download_win/", + "http://spdx.org/licenses/CNRI-Python-GPL-Compatible.json" + ] + }, + "CPAL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CPAL-1.0" + ], + "names": [ + "Common Public Attribution License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/CPAL-1.0", + "http://spdx.org/licenses/CPAL-1.0.json" + ] + }, + "CPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CPL-1.0" + ], + "names": [ + "Common Public License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/CPL-1.0", + "http://spdx.org/licenses/CPL-1.0.json" + ] + }, + "CPOL-1.02": { + "isDeprecatedLicenseId": false, + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CPOL-1.02" + ], + "names": [ + "Code Project Open License 1.02" + ], + "uris": [ + "http://www.codeproject.com/info/cpol10.aspx", + "http://spdx.org/licenses/CPOL-1.02.json" + ] + }, + "CUA-OPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CUA-OPL-1.0" + ], + "names": [ + "CUA Office Public License v1.0" + ], + "uris": [ + "https://opensource.org/licenses/CUA-OPL-1.0", + "http://spdx.org/licenses/CUA-OPL-1.0.json" + ] + }, + "Caldera": { + "isDeprecatedLicenseId": false, + "name": "Caldera License", + "licenseId": "Caldera", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Caldera" + ], + "names": [ + "Caldera License" + ], + "uris": [ + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf", + "http://spdx.org/licenses/Caldera.json" + ] + }, + "ClArtistic": { + "isDeprecatedLicenseId": false, + "name": "Clarified Artistic License", + "licenseId": "ClArtistic", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "ClArtistic", + "ClarifiedArtistic" + ], + "names": [ + "Clarified Artistic License" + ], + "uris": [ + "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "http://www.ncftp.com/ncftp/doc/LICENSE.txt", + "http://spdx.org/licenses/ClArtistic.json", + "https://www.gnu.org/licenses/license-list.html#ClarifiedArtistic" + ] + }, + "Condor-1.1": { + "isDeprecatedLicenseId": false, + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Condor-1.1" + ], + "names": [ + "Condor Public License v1.1" + ], + "uris": [ + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor", + "http://spdx.org/licenses/Condor-1.1.json" + ] + }, + "Crossword": { + "isDeprecatedLicenseId": false, + "name": "Crossword License", + "licenseId": "Crossword", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Crossword" + ], + "names": [ + "Crossword License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Crossword", + "http://spdx.org/licenses/Crossword.json" + ] + }, + "CrystalStacker": { + "isDeprecatedLicenseId": false, + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "CrystalStacker" + ], + "names": [ + "CrystalStacker License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker", + "http://spdx.org/licenses/CrystalStacker.json" + ] + }, + "Cube": { + "isDeprecatedLicenseId": false, + "name": "Cube License", + "licenseId": "Cube", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Cube" + ], + "names": [ + "Cube License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Cube", + "http://spdx.org/licenses/Cube.json" + ] + }, + "D-FSL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Deutsche Freie Software Lizenz", + "licenseId": "D-FSL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "D-FSL-1.0" + ], + "names": [ + "Deutsche Freie Software Lizenz" + ], + "uris": [ + "http://www.dipp.nrw.de/d-fsl/lizenzen/", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file", + "http://spdx.org/licenses/D-FSL-1.0.json" + ] + }, + "DOC": { + "isDeprecatedLicenseId": false, + "name": "DOC License", + "licenseId": "DOC", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "DOC" + ], + "names": [ + "DOC License" + ], + "uris": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "http://spdx.org/licenses/DOC.json" + ] + }, + "DSDP": { + "isDeprecatedLicenseId": false, + "name": "DSDP License", + "licenseId": "DSDP", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "DSDP" + ], + "names": [ + "DSDP License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/DSDP", + "http://spdx.org/licenses/DSDP.json" + ] + }, + "Dotseqn": { + "isDeprecatedLicenseId": false, + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Dotseqn" + ], + "names": [ + "Dotseqn License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn", + "http://spdx.org/licenses/Dotseqn.json" + ] + }, + "ECL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ECL-1.0" + ], + "names": [ + "Educational Community License v1.0" + ], + "uris": [ + "https://opensource.org/licenses/ECL-1.0", + "http://spdx.org/licenses/ECL-1.0.json" + ] + }, + "ECL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "ECL-2.0", + "ECL2.0" + ], + "names": [ + "Educational Community License v2.0", + "Educational Community License 2.0" + ], + "uris": [ + "https://opensource.org/licenses/ECL-2.0", + "http://spdx.org/licenses/ECL-2.0.json", + "https://www.gnu.org/licenses/license-list.html#ECL2.0", + "http://directory.fsf.org/wiki/License:ECL2.0" + ] + }, + "EFL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "EFL-1.0" + ], + "names": [ + "Eiffel Forum License v1.0" + ], + "uris": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0", + "http://spdx.org/licenses/EFL-1.0.json" + ] + }, + "EFL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "EFL-2.0", + "Eiffel" + ], + "names": [ + "Eiffel Forum License v2.0", + "Eiffel Forum License, version 2" + ], + "uris": [ + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0", + "http://spdx.org/licenses/EFL-2.0.json", + "https://www.gnu.org/licenses/license-list.html#Eiffel", + "http://directory.fsf.org/wiki/License:EFLv2" + ] + }, + "EPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "EPL-1.0" + ], + "names": [ + "Eclipse Public License 1.0" + ], + "uris": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0", + "http://spdx.org/licenses/EPL-1.0.json" + ] + }, + "EPL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "EPL-2.0" + ], + "names": [ + "Eclipse Public License 2.0" + ], + "uris": [ + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0", + "http://spdx.org/licenses/EPL-2.0.json" + ] + }, + "EUDatagrid": { + "isDeprecatedLicenseId": false, + "name": "EU DataGrid Software License", + "licenseId": "EUDatagrid", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "EUDatagrid", + "EUDataGrid" + ], + "names": [ + "EU DataGrid Software License" + ], + "uris": [ + "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "https://opensource.org/licenses/EUDatagrid", + "http://spdx.org/licenses/EUDatagrid.json", + "https://www.gnu.org/licenses/license-list.html#EUDataGrid", + "http://directory.fsf.org/wiki/License:EUDataGrid" + ] + }, + "EUPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "EUPL-1.0" + ], + "names": [ + "European Union Public License 1.0" + ], + "uris": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id=31096", + "http://spdx.org/licenses/EUPL-1.0.json" + ] + }, + "EUPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "European Union Public License 1.1", + "licenseId": "EUPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "EUPL-1.1" + ], + "names": [ + "European Union Public License 1.1" + ], + "uris": [ + "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", + "https://opensource.org/licenses/EUPL-1.1", + "http://spdx.org/licenses/EUPL-1.1.json" + ] + }, + "EUPL-1.2": { + "isDeprecatedLicenseId": false, + "name": "European Union Public License 1.2", + "licenseId": "EUPL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "EUPL-1.2" + ], + "names": [ + "European Union Public License 1.2" + ], + "uris": [ + "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", + "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", + "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863", + "https://opensource.org/licenses/EUPL-1.1", + "http://spdx.org/licenses/EUPL-1.2.json" + ] + }, + "Entessa": { + "isDeprecatedLicenseId": false, + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Entessa" + ], + "names": [ + "Entessa Public License v1.0" + ], + "uris": [ + "https://opensource.org/licenses/Entessa", + "http://spdx.org/licenses/Entessa.json" + ] + }, + "ErlPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ErlPL-1.1" + ], + "names": [ + "Erlang Public License v1.1" + ], + "uris": [ + "http://www.erlang.org/EPLICENSE", + "http://spdx.org/licenses/ErlPL-1.1.json" + ] + }, + "Eurosym": { + "isDeprecatedLicenseId": false, + "name": "Eurosym License", + "licenseId": "Eurosym", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Eurosym" + ], + "names": [ + "Eurosym License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym", + "http://spdx.org/licenses/Eurosym.json" + ] + }, + "FSFAP": { + "isDeprecatedLicenseId": false, + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "FSFAP", + "GNUAllPermissive" + ], + "names": [ + "FSF All Permissive License", + "GNU All-Permissive License" + ], + "uris": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html", + "http://spdx.org/licenses/FSFAP.json", + "https://www.gnu.org/licenses/license-list.html#GNUAllPermissive" + ] + }, + "FSFUL": { + "isDeprecatedLicenseId": false, + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "FSFUL" + ], + "names": [ + "FSF Unlimited License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License", + "http://spdx.org/licenses/FSFUL.json" + ] + }, + "FSFULLR": { + "isDeprecatedLicenseId": false, + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "FSFULLR" + ], + "names": [ + "FSF Unlimited License (with License Retention)" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant", + "http://spdx.org/licenses/FSFULLR.json" + ] + }, + "FTL": { + "isDeprecatedLicenseId": false, + "name": "Freetype Project License", + "licenseId": "FTL", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "FTL", + "freetype" + ], + "names": [ + "Freetype Project License" + ], + "uris": [ + "http://freetype.fis.uniroma2.it/FTL.TXT", + "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", + "http://spdx.org/licenses/FTL.json", + "https://www.gnu.org/licenses/license-list.html#freetype", + "http://directory.fsf.org/wiki/License:FreeType" + ] + }, + "Fair": { + "isDeprecatedLicenseId": false, + "name": "Fair License", + "licenseId": "Fair", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Fair" + ], + "names": [ + "Fair License" + ], + "uris": [ + "http://fairlicense.org/", + "https://opensource.org/licenses/Fair", + "http://spdx.org/licenses/Fair.json" + ] + }, + "Frameworx-1.0": { + "isDeprecatedLicenseId": false, + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Frameworx-1.0" + ], + "names": [ + "Frameworx Open License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/Frameworx-1.0", + "http://spdx.org/licenses/Frameworx-1.0.json" + ] + }, + "FreeImage": { + "isDeprecatedLicenseId": false, + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "FreeImage" + ], + "names": [ + "FreeImage Public License v1.0" + ], + "uris": [ + "http://freeimage.sourceforge.net/freeimage-license.txt", + "http://spdx.org/licenses/FreeImage.json" + ] + }, + "GFDL-1.1": { + "isDeprecatedLicenseId": true, + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.1" + ], + "names": [ + "GNU Free Documentation License v1.1" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", + "http://spdx.org/licenses/GFDL-1.1.json" + ] + }, + "GFDL-1.1-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.1-only" + ], + "names": [ + "GNU Free Documentation License v1.1 only" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", + "http://spdx.org/licenses/GFDL-1.1-only.json" + ] + }, + "GFDL-1.1-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.1-or-later" + ], + "names": [ + "GNU Free Documentation License v1.1 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", + "http://spdx.org/licenses/GFDL-1.1-or-later.json" + ] + }, + "GFDL-1.2": { + "isDeprecatedLicenseId": true, + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.2" + ], + "names": [ + "GNU Free Documentation License v1.2" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", + "http://spdx.org/licenses/GFDL-1.2.json" + ] + }, + "GFDL-1.2-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.2-only" + ], + "names": [ + "GNU Free Documentation License v1.2 only" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", + "http://spdx.org/licenses/GFDL-1.2-only.json" + ] + }, + "GFDL-1.2-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.2-or-later" + ], + "names": [ + "GNU Free Documentation License v1.2 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", + "http://spdx.org/licenses/GFDL-1.2-or-later.json" + ] + }, + "GFDL-1.3": { + "isDeprecatedLicenseId": true, + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.3" + ], + "names": [ + "GNU Free Documentation License v1.3" + ], + "uris": [ + "https://www.gnu.org/licenses/fdl-1.3.txt", + "http://spdx.org/licenses/GFDL-1.3.json" + ] + }, + "GFDL-1.3-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Free Documentation License v1.3 only", + "licenseId": "GFDL-1.3-only", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.3-only" + ], + "names": [ + "GNU Free Documentation License v1.3 only" + ], + "uris": [ + "https://www.gnu.org/licenses/fdl-1.3.txt", + "http://spdx.org/licenses/GFDL-1.3-only.json" + ] + }, + "GFDL-1.3-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GFDL-1.3-or-later" + ], + "names": [ + "GNU Free Documentation License v1.3 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/fdl-1.3.txt", + "http://spdx.org/licenses/GFDL-1.3-or-later.json" + ] + }, + "GL2PS": { + "isDeprecatedLicenseId": false, + "name": "GL2PS License", + "licenseId": "GL2PS", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GL2PS" + ], + "names": [ + "GL2PS License" + ], + "uris": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS", + "http://spdx.org/licenses/GL2PS.json" + ] + }, + "GPL-1.0": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-1.0" + ], + "names": [ + "GNU General Public License v1.0 only" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "http://spdx.org/licenses/GPL-1.0.json" + ] + }, + "GPL-1.0+": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-1.0+" + ], + "names": [ + "GNU General Public License v1.0 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "http://spdx.org/licenses/GPL-1.0+.json" + ] + }, + "GPL-1.0-only": { + "isDeprecatedLicenseId": false, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0-only", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-1.0-only" + ], + "names": [ + "GNU General Public License v1.0 only" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "http://spdx.org/licenses/GPL-1.0-only.json" + ] + }, + "GPL-1.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-1.0-or-later" + ], + "names": [ + "GNU General Public License v1.0 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "http://spdx.org/licenses/GPL-1.0-or-later.json" + ] + }, + "GPL-2.0": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0", + "GPLv2" + ], + "names": [ + "GNU General Public License v2.0 only", + "GNU General Public License (GPL) version 2" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0", + "http://spdx.org/licenses/GPL-2.0.json", + "http://www.gnu.org/licenses/gpl-2.0.html", + "https://www.gnu.org/licenses/license-list.html#GPLv2", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + ] + }, + "GPL-2.0+": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0+", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "GPL-2.0+", + "GPLv2" + ], + "names": [ + "GNU General Public License v2.0 or later", + "GNU General Public License (GPL) version 2" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0", + "http://spdx.org/licenses/GPL-2.0+.json", + "http://www.gnu.org/licenses/gpl-2.0.html", + "https://www.gnu.org/licenses/license-list.html#GPLv2", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + ] + }, + "GPL-2.0-only": { + "isDeprecatedLicenseId": false, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "isGpl2Compatible": true, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0-only", + "GPLv2" + ], + "names": [ + "GNU General Public License v2.0 only", + "GNU General Public License (GPL) version 2" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0", + "http://spdx.org/licenses/GPL-2.0-only.json", + "http://www.gnu.org/licenses/gpl-2.0.html", + "https://www.gnu.org/licenses/license-list.html#GPLv2", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + ] + }, + "GPL-2.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "GPL-2.0-or-later", + "GPLv2" + ], + "names": [ + "GNU General Public License v2.0 or later", + "GNU General Public License (GPL) version 2" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0", + "http://spdx.org/licenses/GPL-2.0-or-later.json", + "http://www.gnu.org/licenses/gpl-2.0.html", + "https://www.gnu.org/licenses/license-list.html#GPLv2", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html" + ] + }, + "GPL-2.0-with-GCC-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0-with-GCC-exception" + ], + "names": [ + "GNU General Public License v2.0 w/GCC Runtime Library exception" + ], + "uris": [ + "https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10", + "http://spdx.org/licenses/GPL-2.0-with-GCC-exception.json" + ] + }, + "GPL-2.0-with-autoconf-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0-with-autoconf-exception" + ], + "names": [ + "GNU General Public License v2.0 w/Autoconf exception" + ], + "uris": [ + "http://ac-archive.sourceforge.net/doc/copyright.html", + "http://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json" + ] + }, + "GPL-2.0-with-bison-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0-with-bison-exception" + ], + "names": [ + "GNU General Public License v2.0 w/Bison exception" + ], + "uris": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141", + "http://spdx.org/licenses/GPL-2.0-with-bison-exception.json" + ] + }, + "GPL-2.0-with-classpath-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0-with-classpath-exception" + ], + "names": [ + "GNU General Public License v2.0 w/Classpath exception" + ], + "uris": [ + "https://www.gnu.org/software/classpath/license.html", + "http://spdx.org/licenses/GPL-2.0-with-classpath-exception.json" + ] + }, + "GPL-2.0-with-font-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-2.0-with-font-exception" + ], + "names": [ + "GNU General Public License v2.0 w/Font exception" + ], + "uris": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException", + "http://spdx.org/licenses/GPL-2.0-with-font-exception.json" + ] + }, + "GPL-3.0": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "GPL-3.0", + "GNUGPLv3" + ], + "names": [ + "GNU General Public License v3.0 only", + "GNU General Public License (GPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0", + "http://spdx.org/licenses/GPL-3.0.json", + "https://www.gnu.org/licenses/license-list.html#GNUGPLv3", + "https://www.gnu.org/licenses/gpl.html" + ] + }, + "GPL-3.0+": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "GPL-3.0+", + "GNUGPLv3" + ], + "names": [ + "GNU General Public License v3.0 or later", + "GNU General Public License (GPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0", + "http://spdx.org/licenses/GPL-3.0+.json", + "https://www.gnu.org/licenses/license-list.html#GNUGPLv3", + "https://www.gnu.org/licenses/gpl.html" + ] + }, + "GPL-3.0-only": { + "isDeprecatedLicenseId": false, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "GPL-3.0-only", + "GNUGPLv3" + ], + "names": [ + "GNU General Public License v3.0 only", + "GNU General Public License (GPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0", + "http://spdx.org/licenses/GPL-3.0-only.json", + "https://www.gnu.org/licenses/license-list.html#GNUGPLv3", + "https://www.gnu.org/licenses/gpl.html" + ] + }, + "GPL-3.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "GPL-3.0-or-later", + "GNUGPLv3" + ], + "names": [ + "GNU General Public License v3.0 or later", + "GNU General Public License (GPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0", + "http://spdx.org/licenses/GPL-3.0-or-later.json", + "https://www.gnu.org/licenses/license-list.html#GNUGPLv3", + "https://www.gnu.org/licenses/gpl.html" + ] + }, + "GPL-3.0-with-GCC-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-3.0-with-GCC-exception" + ], + "names": [ + "GNU General Public License v3.0 w/GCC Runtime Library exception" + ], + "uris": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html", + "http://spdx.org/licenses/GPL-3.0-with-GCC-exception.json" + ] + }, + "GPL-3.0-with-autoconf-exception": { + "isDeprecatedLicenseId": true, + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "GPL-3.0-with-autoconf-exception" + ], + "names": [ + "GNU General Public License v3.0 w/Autoconf exception" + ], + "uris": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html", + "http://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json" + ] + }, + "Giftware": { + "isDeprecatedLicenseId": false, + "name": "Giftware License", + "licenseId": "Giftware", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Giftware" + ], + "names": [ + "Giftware License" + ], + "uris": [ + "http://liballeg.org/license.html#allegro-4-the-giftware-license", + "http://spdx.org/licenses/Giftware.json" + ] + }, + "Glide": { + "isDeprecatedLicenseId": false, + "name": "3dfx Glide License", + "licenseId": "Glide", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Glide" + ], + "names": [ + "3dfx Glide License" + ], + "uris": [ + "http://www.users.on.net/~triforce/glidexp/COPYING.txt", + "http://spdx.org/licenses/Glide.json" + ] + }, + "Glulxe": { + "isDeprecatedLicenseId": false, + "name": "Glulxe License", + "licenseId": "Glulxe", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Glulxe" + ], + "names": [ + "Glulxe License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe", + "http://spdx.org/licenses/Glulxe.json" + ] + }, + "HPND": { + "isDeprecatedLicenseId": false, + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "HPND" + ], + "names": [ + "Historical Permission Notice and Disclaimer" + ], + "uris": [ + "https://opensource.org/licenses/HPND", + "http://spdx.org/licenses/HPND.json", + "https://www.gnu.org/licenses/license-list.html#HPND", + "http://directory.fsf.org/wiki/License:Historical_Permission_Notice_and_Disclaimer" + ] + }, + "HPND-sell-variant": { + "isDeprecatedLicenseId": false, + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "HPND-sell-variant" + ], + "names": [ + "Historical Permission Notice and Disclaimer - sell variant" + ], + "uris": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19", + "http://spdx.org/licenses/HPND-sell-variant.json" + ] + }, + "HaskellReport": { + "isDeprecatedLicenseId": false, + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "HaskellReport" + ], + "names": [ + "Haskell Language Report License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License", + "http://spdx.org/licenses/HaskellReport.json" + ] + }, + "IBM-pibs": { + "isDeprecatedLicenseId": false, + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "IBM-pibs" + ], + "names": [ + "IBM PowerPC Initialization and Boot Software" + ], + "uris": [ + "http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d", + "http://spdx.org/licenses/IBM-pibs.json" + ] + }, + "ICU": { + "isDeprecatedLicenseId": false, + "name": "ICU License", + "licenseId": "ICU", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ICU" + ], + "names": [ + "ICU License" + ], + "uris": [ + "http://source.icu-project.org/repos/icu/icu/trunk/license.html", + "http://spdx.org/licenses/ICU.json" + ] + }, + "IJG": { + "isDeprecatedLicenseId": false, + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "IJG", + "ijg" + ], + "names": [ + "Independent JPEG Group License" + ], + "uris": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2", + "http://spdx.org/licenses/IJG.json", + "https://www.gnu.org/licenses/license-list.html#ijg", + "http://directory.fsf.org/wiki?title=License:JPEG" + ] + }, + "IPA": { + "isDeprecatedLicenseId": false, + "name": "IPA Font License", + "licenseId": "IPA", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "IPA" + ], + "names": [ + "IPA Font License" + ], + "uris": [ + "https://opensource.org/licenses/IPA", + "http://spdx.org/licenses/IPA.json" + ] + }, + "IPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "IPL-1.0" + ], + "names": [ + "IBM Public License v1.0" + ], + "uris": [ + "https://opensource.org/licenses/IPL-1.0", + "http://spdx.org/licenses/IPL-1.0.json" + ] + }, + "ISC": { + "isDeprecatedLicenseId": false, + "name": "ISC License", + "licenseId": "ISC", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "ISC" + ], + "names": [ + "ISC License" + ], + "uris": [ + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC", + "http://spdx.org/licenses/ISC.json", + "https://www.gnu.org/licenses/license-list.html#ISC", + "http://directory.fsf.org/wiki/License:ISC" + ] + }, + "ImageMagick": { + "isDeprecatedLicenseId": false, + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ImageMagick" + ], + "names": [ + "ImageMagick License" + ], + "uris": [ + "http://www.imagemagick.org/script/license.php", + "http://spdx.org/licenses/ImageMagick.json" + ] + }, + "Imlib2": { + "isDeprecatedLicenseId": false, + "name": "Imlib2 License", + "licenseId": "Imlib2", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Imlib2", + "imlib" + ], + "names": [ + "Imlib2 License", + "License of imlib2" + ], + "uris": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING", + "http://spdx.org/licenses/Imlib2.json", + "https://www.gnu.org/licenses/license-list.html#imlib", + "http://directory.fsf.org/wiki/License:Imlib2" + ] + }, + "Info-ZIP": { + "isDeprecatedLicenseId": false, + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Info-ZIP" + ], + "names": [ + "Info-ZIP License" + ], + "uris": [ + "http://www.info-zip.org/license.html", + "http://spdx.org/licenses/Info-ZIP.json" + ] + }, + "Intel": { + "isDeprecatedLicenseId": false, + "name": "Intel Open Source License", + "licenseId": "Intel", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Intel", + "intel" + ], + "names": [ + "Intel Open Source License" + ], + "uris": [ + "https://opensource.org/licenses/Intel", + "http://spdx.org/licenses/Intel.json", + "https://www.gnu.org/licenses/license-list.html#intel", + "http://directory.fsf.org/wiki/License:IntelACPI" + ] + }, + "Intel-ACPI": { + "isDeprecatedLicenseId": false, + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Intel-ACPI" + ], + "names": [ + "Intel ACPI Software License Agreement" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement", + "http://spdx.org/licenses/Intel-ACPI.json" + ] + }, + "Interbase-1.0": { + "isDeprecatedLicenseId": false, + "name": "Interbase Public License v1.0", + "licenseId": "Interbase-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Interbase-1.0" + ], + "names": [ + "Interbase Public License v1.0" + ], + "uris": [ + "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html", + "http://spdx.org/licenses/Interbase-1.0.json" + ] + }, + "JSON": { + "isDeprecatedLicenseId": false, + "name": "JSON License", + "licenseId": "JSON", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "JSON" + ], + "names": [ + "JSON License" + ], + "uris": [ + "http://www.json.org/license.html", + "http://spdx.org/licenses/JSON.json" + ] + }, + "JasPer-2.0": { + "isDeprecatedLicenseId": false, + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "JasPer-2.0" + ], + "names": [ + "JasPer License" + ], + "uris": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE", + "http://spdx.org/licenses/JasPer-2.0.json" + ] + }, + "LAL-1.2": { + "isDeprecatedLicenseId": false, + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LAL-1.2" + ], + "names": [ + "Licence Art Libre 1.2" + ], + "uris": [ + "http://artlibre.org/licence/lal/licence-art-libre-12/", + "http://spdx.org/licenses/LAL-1.2.json" + ] + }, + "LAL-1.3": { + "isDeprecatedLicenseId": false, + "name": "Licence Art Libre 1.3", + "licenseId": "LAL-1.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LAL-1.3" + ], + "names": [ + "Licence Art Libre 1.3" + ], + "uris": [ + "http://artlibre.org/", + "http://spdx.org/licenses/LAL-1.3.json" + ] + }, + "LGPL-2.0": { + "isDeprecatedLicenseId": true, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LGPL-2.0" + ], + "names": [ + "GNU Library General Public License v2 only" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "http://spdx.org/licenses/LGPL-2.0.json" + ] + }, + "LGPL-2.0+": { + "isDeprecatedLicenseId": true, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LGPL-2.0+" + ], + "names": [ + "GNU Library General Public License v2 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "http://spdx.org/licenses/LGPL-2.0+.json" + ] + }, + "LGPL-2.0-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0-only", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LGPL-2.0-only" + ], + "names": [ + "GNU Library General Public License v2 only" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "http://spdx.org/licenses/LGPL-2.0-only.json" + ] + }, + "LGPL-2.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LGPL-2.0-or-later" + ], + "names": [ + "GNU Library General Public License v2 or later" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "http://spdx.org/licenses/LGPL-2.0-or-later.json" + ] + }, + "LGPL-2.1": { + "isDeprecatedLicenseId": true, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "LGPL-2.1", + "LGPLv2.1" + ], + "names": [ + "GNU Lesser General Public License v2.1 only", + "GNU Lesser General Public License (LGPL) version 2.1" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1", + "http://spdx.org/licenses/LGPL-2.1.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv2.1", + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" + ] + }, + "LGPL-2.1+": { + "isDeprecatedLicenseId": true, + "name": "GNU Library General Public License v2.1 or later", + "licenseId": "LGPL-2.1+", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "LGPL-2.1+", + "LGPLv2.1" + ], + "names": [ + "GNU Library General Public License v2.1 or later", + "GNU Lesser General Public License (LGPL) version 2.1" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1", + "http://spdx.org/licenses/LGPL-2.1+.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv2.1", + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" + ] + }, + "LGPL-2.1-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "LGPL-2.1-only", + "LGPLv2.1" + ], + "names": [ + "GNU Lesser General Public License v2.1 only", + "GNU Lesser General Public License (LGPL) version 2.1" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1", + "http://spdx.org/licenses/LGPL-2.1-only.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv2.1", + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" + ] + }, + "LGPL-2.1-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "LGPL-2.1-or-later", + "LGPLv2.1" + ], + "names": [ + "GNU Lesser General Public License v2.1 or later", + "GNU Lesser General Public License (LGPL) version 2.1" + ], + "uris": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1", + "http://spdx.org/licenses/LGPL-2.1-or-later.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv2.1", + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" + ] + }, + "LGPL-3.0": { + "isDeprecatedLicenseId": true, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "LGPL-3.0", + "LGPLv3" + ], + "names": [ + "GNU Lesser General Public License v3.0 only", + "GNU Lesser General Public License (LGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0", + "http://spdx.org/licenses/LGPL-3.0.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv3", + "https://www.gnu.org/licenses/lgpl.html" + ] + }, + "LGPL-3.0+": { + "isDeprecatedLicenseId": true, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "LGPL-3.0+", + "LGPLv3" + ], + "names": [ + "GNU Lesser General Public License v3.0 or later", + "GNU Lesser General Public License (LGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0", + "http://spdx.org/licenses/LGPL-3.0+.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv3", + "https://www.gnu.org/licenses/lgpl.html" + ] + }, + "LGPL-3.0-only": { + "isDeprecatedLicenseId": false, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "LGPL-3.0-only", + "LGPLv3" + ], + "names": [ + "GNU Lesser General Public License v3.0 only", + "GNU Lesser General Public License (LGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0", + "http://spdx.org/licenses/LGPL-3.0-only.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv3", + "https://www.gnu.org/licenses/lgpl.html" + ] + }, + "LGPL-3.0-or-later": { + "isDeprecatedLicenseId": false, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", + "isGpl2Compatible": false, + "isGpl3Compatible": true, + "ids": [ + "LGPL-3.0-or-later", + "LGPLv3" + ], + "names": [ + "GNU Lesser General Public License v3.0 or later", + "GNU Lesser General Public License (LGPL) version 3" + ], + "uris": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0", + "http://spdx.org/licenses/LGPL-3.0-or-later.json", + "https://www.gnu.org/licenses/license-list.html#LGPLv3", + "https://www.gnu.org/licenses/lgpl.html" + ] + }, + "LGPLLR": { + "isDeprecatedLicenseId": false, + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LGPLLR" + ], + "names": [ + "Lesser General Public License For Linguistic Resources" + ], + "uris": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html", + "http://spdx.org/licenses/LGPLLR.json" + ] + }, + "LPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPL-1.0" + ], + "names": [ + "Lucent Public License Version 1.0" + ], + "uris": [ + "https://opensource.org/licenses/LPL-1.0", + "http://spdx.org/licenses/LPL-1.0.json" + ] + }, + "LPL-1.02": { + "isDeprecatedLicenseId": false, + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPL-1.02" + ], + "names": [ + "Lucent Public License v1.02" + ], + "uris": [ + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02", + "http://spdx.org/licenses/LPL-1.02.json" + ] + }, + "LPPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPPL-1.0" + ], + "names": [ + "LaTeX Project Public License v1.0" + ], + "uris": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt", + "http://spdx.org/licenses/LPPL-1.0.json" + ] + }, + "LPPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPPL-1.1" + ], + "names": [ + "LaTeX Project Public License v1.1" + ], + "uris": [ + "http://www.latex-project.org/lppl/lppl-1-1.txt", + "http://spdx.org/licenses/LPPL-1.1.json" + ] + }, + "LPPL-1.2": { + "isDeprecatedLicenseId": false, + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPPL-1.2" + ], + "names": [ + "LaTeX Project Public License v1.2" + ], + "uris": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt", + "http://spdx.org/licenses/LPPL-1.2.json" + ] + }, + "LPPL-1.3a": { + "isDeprecatedLicenseId": false, + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPPL-1.3a" + ], + "names": [ + "LaTeX Project Public License v1.3a" + ], + "uris": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt", + "http://spdx.org/licenses/LPPL-1.3a.json" + ] + }, + "LPPL-1.3c": { + "isDeprecatedLicenseId": false, + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LPPL-1.3c" + ], + "names": [ + "LaTeX Project Public License v1.3c" + ], + "uris": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c", + "http://spdx.org/licenses/LPPL-1.3c.json" + ] + }, + "Latex2e": { + "isDeprecatedLicenseId": false, + "name": "Latex2e License", + "licenseId": "Latex2e", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Latex2e" + ], + "names": [ + "Latex2e License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e", + "http://spdx.org/licenses/Latex2e.json" + ] + }, + "Leptonica": { + "isDeprecatedLicenseId": false, + "name": "Leptonica License", + "licenseId": "Leptonica", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Leptonica" + ], + "names": [ + "Leptonica License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica", + "http://spdx.org/licenses/Leptonica.json" + ] + }, + "LiLiQ-P-1.1": { + "isDeprecatedLicenseId": false, + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LiLiQ-P-1.1" + ], + "names": [ + "Licence Libre du Québec – Permissive version 1.1" + ], + "uris": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1", + "http://spdx.org/licenses/LiLiQ-P-1.1.json" + ] + }, + "LiLiQ-R-1.1": { + "isDeprecatedLicenseId": false, + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LiLiQ-R-1.1" + ], + "names": [ + "Licence Libre du Québec – Réciprocité version 1.1" + ], + "uris": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1", + "http://spdx.org/licenses/LiLiQ-R-1.1.json" + ] + }, + "LiLiQ-Rplus-1.1": { + "isDeprecatedLicenseId": false, + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "LiLiQ-Rplus-1.1" + ], + "names": [ + "Licence Libre du Québec – Réciprocité forte version 1.1" + ], + "uris": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1", + "http://spdx.org/licenses/LiLiQ-Rplus-1.1.json" + ] + }, + "Libpng": { + "isDeprecatedLicenseId": false, + "name": "libpng License", + "licenseId": "Libpng", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Libpng" + ], + "names": [ + "libpng License" + ], + "uris": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", + "http://spdx.org/licenses/Libpng.json" + ] + }, + "Linux-OpenIB": { + "isDeprecatedLicenseId": false, + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Linux-OpenIB" + ], + "names": [ + "Linux Kernel Variant of OpenIB.org license" + ], + "uris": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h", + "http://spdx.org/licenses/Linux-OpenIB.json" + ] + }, + "MIT": { + "isDeprecatedLicenseId": false, + "name": "MIT License", + "licenseId": "MIT", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "MIT", + "Expat" + ], + "names": [ + "MIT License", + "Expat License" + ], + "uris": [ + "https://opensource.org/licenses/MIT", + "http://spdx.org/licenses/MIT.json", + "https://www.gnu.org/licenses/license-list.html#Expat", + "http://directory.fsf.org/wiki/License:Expat" + ] + }, + "MIT-0": { + "isDeprecatedLicenseId": false, + "name": "MIT No Attribution", + "licenseId": "MIT-0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MIT-0" + ], + "names": [ + "MIT No Attribution" + ], + "uris": [ + "https://github.com/aws/mit-0", + "https://romanrm.net/mit-zero", + "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE", + "http://spdx.org/licenses/MIT-0.json" + ] + }, + "MIT-CMU": { + "isDeprecatedLicenseId": false, + "name": "CMU License", + "licenseId": "MIT-CMU", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MIT-CMU" + ], + "names": [ + "CMU License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style", + "http://spdx.org/licenses/MIT-CMU.json" + ] + }, + "MIT-advertising": { + "isDeprecatedLicenseId": false, + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MIT-advertising" + ], + "names": [ + "Enlightenment License (e16)" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising", + "http://spdx.org/licenses/MIT-advertising.json" + ] + }, + "MIT-enna": { + "isDeprecatedLicenseId": false, + "name": "enna License", + "licenseId": "MIT-enna", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MIT-enna" + ], + "names": [ + "enna License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MIT#enna", + "http://spdx.org/licenses/MIT-enna.json" + ] + }, + "MIT-feh": { + "isDeprecatedLicenseId": false, + "name": "feh License", + "licenseId": "MIT-feh", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MIT-feh" + ], + "names": [ + "feh License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MIT#feh", + "http://spdx.org/licenses/MIT-feh.json" + ] + }, + "MITNFA": { + "isDeprecatedLicenseId": false, + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MITNFA" + ], + "names": [ + "MIT +no-false-attribs license" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MITNFA", + "http://spdx.org/licenses/MITNFA.json" + ] + }, + "MPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MPL-1.0" + ], + "names": [ + "Mozilla Public License 1.0" + ], + "uris": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0", + "http://spdx.org/licenses/MPL-1.0.json" + ] + }, + "MPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MPL-1.1" + ], + "names": [ + "Mozilla Public License 1.1" + ], + "uris": [ + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1", + "http://spdx.org/licenses/MPL-1.1.json" + ] + }, + "MPL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Mozilla Public License 2.0", + "licenseId": "MPL-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "MPL-2.0" + ], + "names": [ + "Mozilla Public License 2.0", + "Mozilla Public\n License (MPL) version 2.0" + ], + "uris": [ + "http://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0", + "http://spdx.org/licenses/MPL-2.0.json", + "https://www.gnu.org/licenses/license-list.html#MPL-2.0", + "http://directory.fsf.org/wiki/License:MPLv2.0" + ] + }, + "MPL-2.0-no-copyleft-exception": { + "isDeprecatedLicenseId": false, + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MPL-2.0-no-copyleft-exception" + ], + "names": [ + "Mozilla Public License 2.0 (no copyleft exception)" + ], + "uris": [ + "http://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0", + "http://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json" + ] + }, + "MS-PL": { + "isDeprecatedLicenseId": false, + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MS-PL" + ], + "names": [ + "Microsoft Public License" + ], + "uris": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL", + "http://spdx.org/licenses/MS-PL.json" + ] + }, + "MS-RL": { + "isDeprecatedLicenseId": false, + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MS-RL" + ], + "names": [ + "Microsoft Reciprocal License" + ], + "uris": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL", + "http://spdx.org/licenses/MS-RL.json" + ] + }, + "MTLL": { + "isDeprecatedLicenseId": false, + "name": "Matrix Template Library License", + "licenseId": "MTLL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MTLL" + ], + "names": [ + "Matrix Template Library License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License", + "http://spdx.org/licenses/MTLL.json" + ] + }, + "MakeIndex": { + "isDeprecatedLicenseId": false, + "name": "MakeIndex License", + "licenseId": "MakeIndex", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MakeIndex" + ], + "names": [ + "MakeIndex License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MakeIndex", + "http://spdx.org/licenses/MakeIndex.json" + ] + }, + "MirOS": { + "isDeprecatedLicenseId": false, + "name": "MirOS License", + "licenseId": "MirOS", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "MirOS" + ], + "names": [ + "MirOS License" + ], + "uris": [ + "https://opensource.org/licenses/MirOS", + "http://spdx.org/licenses/MirOS.json" + ] + }, + "Motosoto": { + "isDeprecatedLicenseId": false, + "name": "Motosoto License", + "licenseId": "Motosoto", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Motosoto" + ], + "names": [ + "Motosoto License" + ], + "uris": [ + "https://opensource.org/licenses/Motosoto", + "http://spdx.org/licenses/Motosoto.json" + ] + }, + "Multics": { + "isDeprecatedLicenseId": false, + "name": "Multics License", + "licenseId": "Multics", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Multics" + ], + "names": [ + "Multics License" + ], + "uris": [ + "https://opensource.org/licenses/Multics", + "http://spdx.org/licenses/Multics.json" + ] + }, + "Mup": { + "isDeprecatedLicenseId": false, + "name": "Mup License", + "licenseId": "Mup", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Mup" + ], + "names": [ + "Mup License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Mup", + "http://spdx.org/licenses/Mup.json" + ] + }, + "NASA-1.3": { + "isDeprecatedLicenseId": false, + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NASA-1.3" + ], + "names": [ + "NASA Open Source Agreement 1.3" + ], + "uris": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3", + "http://spdx.org/licenses/NASA-1.3.json" + ] + }, + "NBPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NBPL-1.0" + ], + "names": [ + "Net Boolean Public License v1" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894", + "http://spdx.org/licenses/NBPL-1.0.json" + ] + }, + "NCSA": { + "isDeprecatedLicenseId": false, + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "NCSA" + ], + "names": [ + "University of Illinois/NCSA Open Source License", + "NCSA/University of Illinois Open Source License" + ], + "uris": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA", + "http://spdx.org/licenses/NCSA.json", + "https://www.gnu.org/licenses/license-list.html#NCSA", + "http://directory.fsf.org/wiki/License:IllinoisNCSA" + ] + }, + "NGPL": { + "isDeprecatedLicenseId": false, + "name": "Nethack General Public License", + "licenseId": "NGPL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NGPL" + ], + "names": [ + "Nethack General Public License" + ], + "uris": [ + "https://opensource.org/licenses/NGPL", + "http://spdx.org/licenses/NGPL.json" + ] + }, + "NLOD-1.0": { + "isDeprecatedLicenseId": false, + "name": "Norwegian Licence for Open Government Data", + "licenseId": "NLOD-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NLOD-1.0" + ], + "names": [ + "Norwegian Licence for Open Government Data" + ], + "uris": [ + "http://data.norge.no/nlod/en/1.0", + "http://spdx.org/licenses/NLOD-1.0.json" + ] + }, + "NLPL": { + "isDeprecatedLicenseId": false, + "name": "No Limit Public License", + "licenseId": "NLPL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NLPL" + ], + "names": [ + "No Limit Public License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/NLPL", + "http://spdx.org/licenses/NLPL.json" + ] + }, + "NOSL": { + "isDeprecatedLicenseId": false, + "name": "Netizen Open Source License", + "licenseId": "NOSL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NOSL" + ], + "names": [ + "Netizen Open Source License" + ], + "uris": [ + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt", + "http://spdx.org/licenses/NOSL.json" + ] + }, + "NPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NPL-1.0" + ], + "names": [ + "Netscape Public License v1.0" + ], + "uris": [ + "http://www.mozilla.org/MPL/NPL/1.0/", + "http://spdx.org/licenses/NPL-1.0.json" + ] + }, + "NPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Netscape Public License v1.1", + "licenseId": "NPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NPL-1.1" + ], + "names": [ + "Netscape Public License v1.1" + ], + "uris": [ + "http://www.mozilla.org/MPL/NPL/1.1/", + "http://spdx.org/licenses/NPL-1.1.json" + ] + }, + "NPOSL-3.0": { + "isDeprecatedLicenseId": false, + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NPOSL-3.0" + ], + "names": [ + "Non-Profit Open Software License 3.0" + ], + "uris": [ + "https://opensource.org/licenses/NOSL3.0", + "http://spdx.org/licenses/NPOSL-3.0.json" + ] + }, + "NRL": { + "isDeprecatedLicenseId": false, + "name": "NRL License", + "licenseId": "NRL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NRL" + ], + "names": [ + "NRL License" + ], + "uris": [ + "http://web.mit.edu/network/isakmp/nrllicense.html", + "http://spdx.org/licenses/NRL.json" + ] + }, + "NTP": { + "isDeprecatedLicenseId": false, + "name": "NTP License", + "licenseId": "NTP", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NTP" + ], + "names": [ + "NTP License" + ], + "uris": [ + "https://opensource.org/licenses/NTP", + "http://spdx.org/licenses/NTP.json" + ] + }, + "Naumen": { + "isDeprecatedLicenseId": false, + "name": "Naumen Public License", + "licenseId": "Naumen", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Naumen" + ], + "names": [ + "Naumen Public License" + ], + "uris": [ + "https://opensource.org/licenses/Naumen", + "http://spdx.org/licenses/Naumen.json" + ] + }, + "Net-SNMP": { + "isDeprecatedLicenseId": false, + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Net-SNMP" + ], + "names": [ + "Net-SNMP License" + ], + "uris": [ + "http://net-snmp.sourceforge.net/about/license.html", + "http://spdx.org/licenses/Net-SNMP.json" + ] + }, + "NetCDF": { + "isDeprecatedLicenseId": false, + "name": "NetCDF license", + "licenseId": "NetCDF", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "NetCDF" + ], + "names": [ + "NetCDF license" + ], + "uris": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html", + "http://spdx.org/licenses/NetCDF.json" + ] + }, + "Newsletr": { + "isDeprecatedLicenseId": false, + "name": "Newsletr License", + "licenseId": "Newsletr", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Newsletr" + ], + "names": [ + "Newsletr License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr", + "http://spdx.org/licenses/Newsletr.json" + ] + }, + "Nokia": { + "isDeprecatedLicenseId": false, + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Nokia" + ], + "names": [ + "Nokia Open Source License" + ], + "uris": [ + "https://opensource.org/licenses/nokia", + "http://spdx.org/licenses/Nokia.json" + ] + }, + "Noweb": { + "isDeprecatedLicenseId": false, + "name": "Noweb License", + "licenseId": "Noweb", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Noweb" + ], + "names": [ + "Noweb License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Noweb", + "http://spdx.org/licenses/Noweb.json" + ] + }, + "Nunit": { + "isDeprecatedLicenseId": true, + "name": "Nunit License", + "licenseId": "Nunit", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Nunit", + "ZLib" + ], + "names": [ + "Nunit License", + "License of ZLib" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Nunit", + "http://spdx.org/licenses/Nunit.json", + "https://www.gnu.org/licenses/license-list.html#ZLib", + "http://directory.fsf.org/wiki/License:Zlib" + ] + }, + "OCCT-PL": { + "isDeprecatedLicenseId": false, + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OCCT-PL" + ], + "names": [ + "Open CASCADE Technology Public License" + ], + "uris": [ + "http://www.opencascade.com/content/occt-public-license", + "http://spdx.org/licenses/OCCT-PL.json" + ] + }, + "OCLC-2.0": { + "isDeprecatedLicenseId": false, + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OCLC-2.0" + ], + "names": [ + "OCLC Research Public License 2.0" + ], + "uris": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0", + "http://spdx.org/licenses/OCLC-2.0.json" + ] + }, + "ODC-By-1.0": { + "isDeprecatedLicenseId": false, + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ODC-By-1.0" + ], + "names": [ + "Open Data Commons Attribution License v1.0" + ], + "uris": [ + "https://opendatacommons.org/licenses/by/1.0/", + "http://spdx.org/licenses/ODC-By-1.0.json" + ] + }, + "ODbL-1.0": { + "isDeprecatedLicenseId": false, + "name": "ODC Open Database License v1.0", + "licenseId": "ODbL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ODbL-1.0" + ], + "names": [ + "ODC Open Database License v1.0" + ], + "uris": [ + "http://www.opendatacommons.org/licenses/odbl/1.0/", + "http://spdx.org/licenses/ODbL-1.0.json" + ] + }, + "OFL-1.0": { + "isDeprecatedLicenseId": false, + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OFL-1.0" + ], + "names": [ + "SIL Open Font License 1.0" + ], + "uris": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", + "http://spdx.org/licenses/OFL-1.0.json" + ] + }, + "OFL-1.1": { + "isDeprecatedLicenseId": false, + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OFL-1.1" + ], + "names": [ + "SIL Open Font License 1.1" + ], + "uris": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "https://opensource.org/licenses/OFL-1.1", + "http://spdx.org/licenses/OFL-1.1.json" + ] + }, + "OGL-UK-1.0": { + "isDeprecatedLicenseId": false, + "name": "Open Government Licence v1.0", + "licenseId": "OGL-UK-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OGL-UK-1.0" + ], + "names": [ + "Open Government Licence v1.0" + ], + "uris": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/", + "http://spdx.org/licenses/OGL-UK-1.0.json" + ] + }, + "OGL-UK-2.0": { + "isDeprecatedLicenseId": false, + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OGL-UK-2.0" + ], + "names": [ + "Open Government Licence v2.0" + ], + "uris": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/", + "http://spdx.org/licenses/OGL-UK-2.0.json" + ] + }, + "OGL-UK-3.0": { + "isDeprecatedLicenseId": false, + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OGL-UK-3.0" + ], + "names": [ + "Open Government Licence v3.0" + ], + "uris": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", + "http://spdx.org/licenses/OGL-UK-3.0.json" + ] + }, + "OGTSL": { + "isDeprecatedLicenseId": false, + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OGTSL" + ], + "names": [ + "Open Group Test Suite License" + ], + "uris": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL", + "http://spdx.org/licenses/OGTSL.json" + ] + }, + "OLDAP-1.1": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-1.1" + ], + "names": [ + "Open LDAP Public License v1.1" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f", + "http://spdx.org/licenses/OLDAP-1.1.json" + ] + }, + "OLDAP-1.2": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-1.2" + ], + "names": [ + "Open LDAP Public License v1.2" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7", + "http://spdx.org/licenses/OLDAP-1.2.json" + ] + }, + "OLDAP-1.3": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-1.3" + ], + "names": [ + "Open LDAP Public License v1.3" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1", + "http://spdx.org/licenses/OLDAP-1.3.json" + ] + }, + "OLDAP-1.4": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-1.4" + ], + "names": [ + "Open LDAP Public License v1.4" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941", + "http://spdx.org/licenses/OLDAP-1.4.json" + ] + }, + "OLDAP-2.0": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.0" + ], + "names": [ + "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea", + "http://spdx.org/licenses/OLDAP-2.0.json" + ] + }, + "OLDAP-2.0.1": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.0.1" + ], + "names": [ + "Open LDAP Public License v2.0.1" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e", + "http://spdx.org/licenses/OLDAP-2.0.1.json" + ] + }, + "OLDAP-2.1": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.1" + ], + "names": [ + "Open LDAP Public License v2.1" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715", + "http://spdx.org/licenses/OLDAP-2.1.json" + ] + }, + "OLDAP-2.2": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.2" + ], + "names": [ + "Open LDAP Public License v2.2" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3", + "http://spdx.org/licenses/OLDAP-2.2.json" + ] + }, + "OLDAP-2.2.1": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.2.1", + "licenseId": "OLDAP-2.2.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.2.1" + ], + "names": [ + "Open LDAP Public License v2.2.1" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e", + "http://spdx.org/licenses/OLDAP-2.2.1.json" + ] + }, + "OLDAP-2.2.2": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.2.2" + ], + "names": [ + "Open LDAP Public License 2.2.2" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188", + "http://spdx.org/licenses/OLDAP-2.2.2.json" + ] + }, + "OLDAP-2.3": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.3" + ], + "names": [ + "Open LDAP Public License v2.3" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3", + "http://spdx.org/licenses/OLDAP-2.3.json" + ] + }, + "OLDAP-2.4": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.4" + ], + "names": [ + "Open LDAP Public License v2.4" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386", + "http://spdx.org/licenses/OLDAP-2.4.json" + ] + }, + "OLDAP-2.5": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.5", + "licenseId": "OLDAP-2.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.5" + ], + "names": [ + "Open LDAP Public License v2.5" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf", + "http://spdx.org/licenses/OLDAP-2.5.json" + ] + }, + "OLDAP-2.6": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.6" + ], + "names": [ + "Open LDAP Public License v2.6" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205", + "http://spdx.org/licenses/OLDAP-2.6.json" + ] + }, + "OLDAP-2.7": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "OLDAP-2.7", + "newOpenLDAP" + ], + "names": [ + "Open LDAP Public License v2.7", + "OpenLDAP License, Version 2.7" + ], + "uris": [ + "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2", + "http://spdx.org/licenses/OLDAP-2.7.json", + "https://www.gnu.org/licenses/license-list.html#newOpenLDAP", + "http://directory.fsf.org/wiki/License:OpenLDAPv2.7" + ] + }, + "OLDAP-2.8": { + "isDeprecatedLicenseId": false, + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OLDAP-2.8" + ], + "names": [ + "Open LDAP Public License v2.8" + ], + "uris": [ + "http://www.openldap.org/software/release/license.html", + "http://spdx.org/licenses/OLDAP-2.8.json" + ] + }, + "OML": { + "isDeprecatedLicenseId": false, + "name": "Open Market License", + "licenseId": "OML", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OML" + ], + "names": [ + "Open Market License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License", + "http://spdx.org/licenses/OML.json" + ] + }, + "OPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OPL-1.0" + ], + "names": [ + "Open Public License v1.0" + ], + "uris": [ + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License", + "http://spdx.org/licenses/OPL-1.0.json" + ] + }, + "OSET-PL-2.1": { + "isDeprecatedLicenseId": false, + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OSET-PL-2.1" + ], + "names": [ + "OSET Public License version 2.1" + ], + "uris": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1", + "http://spdx.org/licenses/OSET-PL-2.1.json" + ] + }, + "OSL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OSL-1.0" + ], + "names": [ + "Open Software License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/OSL-1.0", + "http://spdx.org/licenses/OSL-1.0.json" + ] + }, + "OSL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OSL-1.1" + ], + "names": [ + "Open Software License 1.1" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1", + "http://spdx.org/licenses/OSL-1.1.json" + ] + }, + "OSL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Open Software License 2.0", + "licenseId": "OSL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OSL-2.0" + ], + "names": [ + "Open Software License 2.0" + ], + "uris": [ + "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html", + "http://spdx.org/licenses/OSL-2.0.json" + ] + }, + "OSL-2.1": { + "isDeprecatedLicenseId": false, + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OSL-2.1" + ], + "names": [ + "Open Software License 2.1" + ], + "uris": [ + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1", + "http://spdx.org/licenses/OSL-2.1.json" + ] + }, + "OSL-3.0": { + "isDeprecatedLicenseId": false, + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OSL-3.0" + ], + "names": [ + "Open Software License 3.0" + ], + "uris": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0", + "http://spdx.org/licenses/OSL-3.0.json" + ] + }, + "OpenSSL": { + "isDeprecatedLicenseId": false, + "name": "OpenSSL License", + "licenseId": "OpenSSL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "OpenSSL" + ], + "names": [ + "OpenSSL License" + ], + "uris": [ + "http://www.openssl.org/source/license.html", + "http://spdx.org/licenses/OpenSSL.json" + ] + }, + "PDDL-1.0": { + "isDeprecatedLicenseId": false, + "name": "ODC Public Domain Dedication & License 1.0", + "licenseId": "PDDL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "PDDL-1.0" + ], + "names": [ + "ODC Public Domain Dedication & License 1.0" + ], + "uris": [ + "http://opendatacommons.org/licenses/pddl/1.0/", + "http://spdx.org/licenses/PDDL-1.0.json" + ] + }, + "PHP-3.0": { + "isDeprecatedLicenseId": false, + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "PHP-3.0" + ], + "names": [ + "PHP License v3.0" + ], + "uris": [ + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0", + "http://spdx.org/licenses/PHP-3.0.json" + ] + }, + "PHP-3.01": { + "isDeprecatedLicenseId": false, + "name": "PHP License v3.01", + "licenseId": "PHP-3.01", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "PHP-3.01" + ], + "names": [ + "PHP License v3.01" + ], + "uris": [ + "http://www.php.net/license/3_01.txt", + "http://spdx.org/licenses/PHP-3.01.json" + ] + }, + "Plexus": { + "isDeprecatedLicenseId": false, + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Plexus" + ], + "names": [ + "Plexus Classworlds License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License", + "http://spdx.org/licenses/Plexus.json" + ] + }, + "PostgreSQL": { + "isDeprecatedLicenseId": false, + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "PostgreSQL" + ], + "names": [ + "PostgreSQL License" + ], + "uris": [ + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL", + "http://spdx.org/licenses/PostgreSQL.json" + ] + }, + "Python-2.0": { + "isDeprecatedLicenseId": false, + "name": "Python License 2.0", + "licenseId": "Python-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Python-2.0" + ], + "names": [ + "Python License 2.0" + ], + "uris": [ + "https://opensource.org/licenses/Python-2.0", + "http://spdx.org/licenses/Python-2.0.json" + ] + }, + "QPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "QPL-1.0" + ], + "names": [ + "Q Public License 1.0" + ], + "uris": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0", + "http://spdx.org/licenses/QPL-1.0.json" + ] + }, + "Qhull": { + "isDeprecatedLicenseId": false, + "name": "Qhull License", + "licenseId": "Qhull", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Qhull" + ], + "names": [ + "Qhull License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Qhull", + "http://spdx.org/licenses/Qhull.json" + ] + }, + "RHeCos-1.1": { + "isDeprecatedLicenseId": false, + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "RHeCos-1.1" + ], + "names": [ + "Red Hat eCos Public License v1.1" + ], + "uris": [ + "http://ecos.sourceware.org/old-license.html", + "http://spdx.org/licenses/RHeCos-1.1.json" + ] + }, + "RPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "RPL-1.1" + ], + "names": [ + "Reciprocal Public License 1.1" + ], + "uris": [ + "https://opensource.org/licenses/RPL-1.1", + "http://spdx.org/licenses/RPL-1.1.json" + ] + }, + "RPL-1.5": { + "isDeprecatedLicenseId": false, + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "RPL-1.5" + ], + "names": [ + "Reciprocal Public License 1.5" + ], + "uris": [ + "https://opensource.org/licenses/RPL-1.5", + "http://spdx.org/licenses/RPL-1.5.json" + ] + }, + "RPSL-1.0": { + "isDeprecatedLicenseId": false, + "name": "RealNetworks Public Source License v1.0", + "licenseId": "RPSL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "RPSL-1.0" + ], + "names": [ + "RealNetworks Public Source License v1.0" + ], + "uris": [ + "https://helixcommunity.org/content/rpsl", + "https://opensource.org/licenses/RPSL-1.0", + "http://spdx.org/licenses/RPSL-1.0.json" + ] + }, + "RSA-MD": { + "isDeprecatedLicenseId": false, + "name": "RSA Message-Digest License ", + "licenseId": "RSA-MD", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "RSA-MD" + ], + "names": [ + "RSA Message-Digest License " + ], + "uris": [ + "http://www.faqs.org/rfcs/rfc1321.html", + "http://spdx.org/licenses/RSA-MD.json" + ] + }, + "RSCPL": { + "isDeprecatedLicenseId": false, + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "RSCPL" + ], + "names": [ + "Ricoh Source Code Public License" + ], + "uris": [ + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL", + "http://spdx.org/licenses/RSCPL.json" + ] + }, + "Rdisc": { + "isDeprecatedLicenseId": false, + "name": "Rdisc License", + "licenseId": "Rdisc", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Rdisc" + ], + "names": [ + "Rdisc License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License", + "http://spdx.org/licenses/Rdisc.json" + ] + }, + "Ruby": { + "isDeprecatedLicenseId": false, + "name": "Ruby License", + "licenseId": "Ruby", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Ruby" + ], + "names": [ + "Ruby License", + "License of Ruby" + ], + "uris": [ + "http://www.ruby-lang.org/en/LICENSE.txt", + "http://spdx.org/licenses/Ruby.json", + "https://www.gnu.org/licenses/license-list.html#Ruby", + "http://directory.fsf.org/wiki/License:Ruby" + ] + }, + "SAX-PD": { + "isDeprecatedLicenseId": false, + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SAX-PD" + ], + "names": [ + "Sax Public Domain Notice" + ], + "uris": [ + "http://www.saxproject.org/copying.html", + "http://spdx.org/licenses/SAX-PD.json" + ] + }, + "SCEA": { + "isDeprecatedLicenseId": false, + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SCEA" + ], + "names": [ + "SCEA Shared Source License" + ], + "uris": [ + "http://research.scea.com/scea_shared_source_license.html", + "http://spdx.org/licenses/SCEA.json" + ] + }, + "SGI-B-1.0": { + "isDeprecatedLicenseId": false, + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SGI-B-1.0" + ], + "names": [ + "SGI Free Software License B v1.0" + ], + "uris": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html", + "http://spdx.org/licenses/SGI-B-1.0.json" + ] + }, + "SGI-B-1.1": { + "isDeprecatedLicenseId": false, + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SGI-B-1.1" + ], + "names": [ + "SGI Free Software License B v1.1" + ], + "uris": [ + "http://oss.sgi.com/projects/FreeB/", + "http://spdx.org/licenses/SGI-B-1.1.json" + ] + }, + "SGI-B-2.0": { + "isDeprecatedLicenseId": false, + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "SGI-B-2.0", + "SGIFreeB" + ], + "names": [ + "SGI Free Software License B v2.0", + "SGI Free Software License B, version 2.0" + ], + "uris": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf", + "http://spdx.org/licenses/SGI-B-2.0.json", + "https://www.gnu.org/licenses/license-list.html#SGIFreeB", + "http://directory.fsf.org/wiki/License:SGIFreeBv2" + ] + }, + "SISSL": { + "isDeprecatedLicenseId": false, + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SISSL" + ], + "names": [ + "Sun Industry Standards Source License v1.1" + ], + "uris": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL", + "http://spdx.org/licenses/SISSL.json" + ] + }, + "SISSL-1.2": { + "isDeprecatedLicenseId": false, + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SISSL-1.2" + ], + "names": [ + "Sun Industry Standards Source License v1.2" + ], + "uris": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html", + "http://spdx.org/licenses/SISSL-1.2.json" + ] + }, + "SMLNJ": { + "isDeprecatedLicenseId": false, + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "SMLNJ", + "StandardMLofNJ" + ], + "names": [ + "Standard ML of New Jersey License", + "Standard ML of New Jersey Copyright License" + ], + "uris": [ + "https://www.smlnj.org/license.html", + "http://spdx.org/licenses/SMLNJ.json", + "https://www.gnu.org/licenses/license-list.html#StandardMLofNJ", + "http://directory.fsf.org/wiki/License:StandardMLofNJ" + ] + }, + "SMPPL": { + "isDeprecatedLicenseId": false, + "name": "Secure Messaging Protocol Public License", + "licenseId": "SMPPL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SMPPL" + ], + "names": [ + "Secure Messaging Protocol Public License" + ], + "uris": [ + "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt", + "http://spdx.org/licenses/SMPPL.json" + ] + }, + "SNIA": { + "isDeprecatedLicenseId": false, + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SNIA" + ], + "names": [ + "SNIA Public License 1.1" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License", + "http://spdx.org/licenses/SNIA.json" + ] + }, + "SPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SPL-1.0" + ], + "names": [ + "Sun Public License v1.0" + ], + "uris": [ + "https://opensource.org/licenses/SPL-1.0", + "http://spdx.org/licenses/SPL-1.0.json" + ] + }, + "SWL": { + "isDeprecatedLicenseId": false, + "name": "Scheme Widget Library (SWL) Software License Agreement", + "licenseId": "SWL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SWL" + ], + "names": [ + "Scheme Widget Library (SWL) Software License Agreement" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/SWL", + "http://spdx.org/licenses/SWL.json" + ] + }, + "Saxpath": { + "isDeprecatedLicenseId": false, + "name": "Saxpath License", + "licenseId": "Saxpath", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Saxpath" + ], + "names": [ + "Saxpath License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License", + "http://spdx.org/licenses/Saxpath.json" + ] + }, + "Sendmail": { + "isDeprecatedLicenseId": false, + "name": "Sendmail License", + "licenseId": "Sendmail", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Sendmail" + ], + "names": [ + "Sendmail License" + ], + "uris": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "http://spdx.org/licenses/Sendmail.json" + ] + }, + "Sendmail-8.23": { + "isDeprecatedLicenseId": false, + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Sendmail-8.23" + ], + "names": [ + "Sendmail License 8.23" + ], + "uris": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "http://spdx.org/licenses/Sendmail-8.23.json" + ] + }, + "SimPL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SimPL-2.0" + ], + "names": [ + "Simple Public License 2.0" + ], + "uris": [ + "https://opensource.org/licenses/SimPL-2.0", + "http://spdx.org/licenses/SimPL-2.0.json" + ] + }, + "Sleepycat": { + "isDeprecatedLicenseId": false, + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Sleepycat", + "BerkeleyDB" + ], + "names": [ + "Sleepycat License", + "Berkeley Database License" + ], + "uris": [ + "https://opensource.org/licenses/Sleepycat", + "http://spdx.org/licenses/Sleepycat.json", + "https://www.gnu.org/licenses/license-list.html#BerkeleyDB", + "http://directory.fsf.org/wiki/License:Sleepycat" + ] + }, + "Spencer-86": { + "isDeprecatedLicenseId": false, + "name": "Spencer License 86", + "licenseId": "Spencer-86", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Spencer-86" + ], + "names": [ + "Spencer License 86" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "http://spdx.org/licenses/Spencer-86.json" + ] + }, + "Spencer-94": { + "isDeprecatedLicenseId": false, + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Spencer-94" + ], + "names": [ + "Spencer License 94" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "http://spdx.org/licenses/Spencer-94.json" + ] + }, + "Spencer-99": { + "isDeprecatedLicenseId": false, + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Spencer-99" + ], + "names": [ + "Spencer License 99" + ], + "uris": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c", + "http://spdx.org/licenses/Spencer-99.json" + ] + }, + "StandardML-NJ": { + "isDeprecatedLicenseId": true, + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "StandardML-NJ", + "StandardMLofNJ" + ], + "names": [ + "Standard ML of New Jersey License", + "Standard ML of New Jersey Copyright License" + ], + "uris": [ + "http://www.smlnj.org//license.html", + "http://spdx.org/licenses/StandardML-NJ.json", + "https://www.gnu.org/licenses/license-list.html#StandardMLofNJ", + "http://directory.fsf.org/wiki/License:StandardMLofNJ" + ] + }, + "SugarCRM-1.1.3": { + "isDeprecatedLicenseId": false, + "name": "SugarCRM Public License v1.1.3", + "licenseId": "SugarCRM-1.1.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "SugarCRM-1.1.3" + ], + "names": [ + "SugarCRM Public License v1.1.3" + ], + "uris": [ + "http://www.sugarcrm.com/crm/SPL", + "http://spdx.org/licenses/SugarCRM-1.1.3.json" + ] + }, + "TCL": { + "isDeprecatedLicenseId": false, + "name": "TCL/TK License", + "licenseId": "TCL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TCL" + ], + "names": [ + "TCL/TK License" + ], + "uris": [ + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL", + "http://spdx.org/licenses/TCL.json" + ] + }, + "TCP-wrappers": { + "isDeprecatedLicenseId": false, + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TCP-wrappers" + ], + "names": [ + "TCP Wrappers License" + ], + "uris": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers", + "http://spdx.org/licenses/TCP-wrappers.json" + ] + }, + "TMate": { + "isDeprecatedLicenseId": false, + "name": "TMate Open Source License", + "licenseId": "TMate", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TMate" + ], + "names": [ + "TMate Open Source License" + ], + "uris": [ + "http://svnkit.com/license.html", + "http://spdx.org/licenses/TMate.json" + ] + }, + "TORQUE-1.1": { + "isDeprecatedLicenseId": false, + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TORQUE-1.1" + ], + "names": [ + "TORQUE v2.5+ Software License v1.1" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1", + "http://spdx.org/licenses/TORQUE-1.1.json" + ] + }, + "TOSL": { + "isDeprecatedLicenseId": false, + "name": "Trusster Open Source License", + "licenseId": "TOSL", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TOSL" + ], + "names": [ + "Trusster Open Source License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/TOSL", + "http://spdx.org/licenses/TOSL.json" + ] + }, + "TU-Berlin-1.0": { + "isDeprecatedLicenseId": false, + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TU-Berlin-1.0" + ], + "names": [ + "Technische Universitaet Berlin License 1.0" + ], + "uris": [ + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT", + "http://spdx.org/licenses/TU-Berlin-1.0.json" + ] + }, + "TU-Berlin-2.0": { + "isDeprecatedLicenseId": false, + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "TU-Berlin-2.0" + ], + "names": [ + "Technische Universitaet Berlin License 2.0" + ], + "uris": [ + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt", + "http://spdx.org/licenses/TU-Berlin-2.0.json" + ] + }, + "UPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "UPL-1.0", + "UPL" + ], + "names": [ + "Universal Permissive License v1.0", + "Universal Permissive License (UPL)" + ], + "uris": [ + "https://opensource.org/licenses/UPL", + "http://spdx.org/licenses/UPL-1.0.json", + "https://www.gnu.org/licenses/license-list.html#UPL", + "http://directory.fsf.org/wiki/License:Universal_Permissive_License" + ] + }, + "Unicode-DFS-2015": { + "isDeprecatedLicenseId": false, + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Unicode-DFS-2015" + ], + "names": [ + "Unicode License Agreement - Data Files and Software (2015)" + ], + "uris": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html", + "http://spdx.org/licenses/Unicode-DFS-2015.json" + ] + }, + "Unicode-DFS-2016": { + "isDeprecatedLicenseId": false, + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Unicode-DFS-2016" + ], + "names": [ + "Unicode License Agreement - Data Files and Software (2016)" + ], + "uris": [ + "http://www.unicode.org/copyright.html", + "http://spdx.org/licenses/Unicode-DFS-2016.json" + ] + }, + "Unicode-TOU": { + "isDeprecatedLicenseId": false, + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Unicode-TOU" + ], + "names": [ + "Unicode Terms of Use" + ], + "uris": [ + "http://www.unicode.org/copyright.html", + "http://spdx.org/licenses/Unicode-TOU.json" + ] + }, + "Unlicense": { + "isDeprecatedLicenseId": false, + "name": "The Unlicense", + "licenseId": "Unlicense", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Unlicense" + ], + "names": [ + "The Unlicense" + ], + "uris": [ + "http://unlicense.org/", + "http://spdx.org/licenses/Unlicense.json", + "https://www.gnu.org/licenses/license-list.html#Unlicense", + "http://directory.fsf.org/wiki/License:TheUnlicense" + ] + }, + "VOSTROM": { + "isDeprecatedLicenseId": false, + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "VOSTROM" + ], + "names": [ + "VOSTROM Public License for Open Source" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/VOSTROM", + "http://spdx.org/licenses/VOSTROM.json" + ] + }, + "VSL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "VSL-1.0" + ], + "names": [ + "Vovida Software License v1.0" + ], + "uris": [ + "https://opensource.org/licenses/VSL-1.0", + "http://spdx.org/licenses/VSL-1.0.json" + ] + }, + "Vim": { + "isDeprecatedLicenseId": false, + "name": "Vim License", + "licenseId": "Vim", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Vim" + ], + "names": [ + "Vim License", + "License of Vim, Version 6.1 or later" + ], + "uris": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html", + "http://spdx.org/licenses/Vim.json", + "https://www.gnu.org/licenses/license-list.html#Vim", + "http://directory.fsf.org/wiki/License:Vim7.2" + ] + }, + "W3C": { + "isDeprecatedLicenseId": false, + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "W3C" + ], + "names": [ + "W3C Software Notice and License (2002-12-31)", + "W3C Software Notice and License" + ], + "uris": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C", + "http://spdx.org/licenses/W3C.json", + "https://www.gnu.org/licenses/license-list.html#W3C", + "http://directory.fsf.org/wiki/License:W3C_31Dec2002" + ] + }, + "W3C-19980720": { + "isDeprecatedLicenseId": false, + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "W3C-19980720" + ], + "names": [ + "W3C Software Notice and License (1998-07-20)" + ], + "uris": [ + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html", + "http://spdx.org/licenses/W3C-19980720.json" + ] + }, + "W3C-20150513": { + "isDeprecatedLicenseId": false, + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "W3C-20150513" + ], + "names": [ + "W3C Software Notice and Document License (2015-05-13)" + ], + "uris": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", + "http://spdx.org/licenses/W3C-20150513.json" + ] + }, + "WTFPL": { + "isDeprecatedLicenseId": false, + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "WTFPL" + ], + "names": [ + "Do What The F*ck You Want To Public License", + "WTFPL, Version 2" + ], + "uris": [ + "http://sam.zoy.org/wtfpl/COPYING", + "http://spdx.org/licenses/WTFPL.json", + "https://www.gnu.org/licenses/license-list.html#WTFPL" + ] + }, + "Watcom-1.0": { + "isDeprecatedLicenseId": false, + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Watcom-1.0" + ], + "names": [ + "Sybase Open Watcom Public License 1.0" + ], + "uris": [ + "https://opensource.org/licenses/Watcom-1.0", + "http://spdx.org/licenses/Watcom-1.0.json" + ] + }, + "Wsuipa": { + "isDeprecatedLicenseId": false, + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Wsuipa" + ], + "names": [ + "Wsuipa License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa", + "http://spdx.org/licenses/Wsuipa.json" + ] + }, + "X11": { + "isDeprecatedLicenseId": false, + "name": "X11 License", + "licenseId": "X11", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "X11", + "X11License" + ], + "names": [ + "X11 License" + ], + "uris": [ + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3", + "http://spdx.org/licenses/X11.json", + "https://www.gnu.org/licenses/license-list.html#X11License", + "http://directory.fsf.org/wiki/License:X11" + ] + }, + "XFree86-1.1": { + "isDeprecatedLicenseId": false, + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "XFree86-1.1", + "XFree861.1License" + ], + "names": [ + "XFree86 License 1.1", + "XFree86 1.1 License" + ], + "uris": [ + "http://www.xfree86.org/current/LICENSE4.html", + "http://spdx.org/licenses/XFree86-1.1.json", + "https://www.gnu.org/licenses/license-list.html#XFree861.1License", + "http://directory.fsf.org/wiki/License:XFree86_1.1" + ] + }, + "XSkat": { + "isDeprecatedLicenseId": false, + "name": "XSkat License", + "licenseId": "XSkat", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "XSkat" + ], + "names": [ + "XSkat License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License", + "http://spdx.org/licenses/XSkat.json" + ] + }, + "Xerox": { + "isDeprecatedLicenseId": false, + "name": "Xerox License", + "licenseId": "Xerox", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Xerox" + ], + "names": [ + "Xerox License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Xerox", + "http://spdx.org/licenses/Xerox.json" + ] + }, + "Xnet": { + "isDeprecatedLicenseId": false, + "name": "X.Net License", + "licenseId": "Xnet", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Xnet" + ], + "names": [ + "X.Net License" + ], + "uris": [ + "https://opensource.org/licenses/Xnet", + "http://spdx.org/licenses/Xnet.json" + ] + }, + "YPL-1.0": { + "isDeprecatedLicenseId": false, + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "YPL-1.0" + ], + "names": [ + "Yahoo! Public License v1.0" + ], + "uris": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html", + "http://spdx.org/licenses/YPL-1.0.json" + ] + }, + "YPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "YPL-1.1" + ], + "names": [ + "Yahoo! Public License v1.1" + ], + "uris": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html", + "http://spdx.org/licenses/YPL-1.1.json" + ] + }, + "ZPL-1.1": { + "isDeprecatedLicenseId": false, + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "ZPL-1.1" + ], + "names": [ + "Zope Public License 1.1" + ], + "uris": [ + "http://old.zope.org/Resources/License/ZPL-1.1", + "http://spdx.org/licenses/ZPL-1.1.json" + ] + }, + "ZPL-2.0": { + "isDeprecatedLicenseId": false, + "name": "Zope Public License 2.0", + "licenseId": "ZPL-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "ZPL-2.0", + "Zope2.0" + ], + "names": [ + "Zope Public License 2.0", + "Zope Public License, versions 2.0 and 2.1" + ], + "uris": [ + "http://old.zope.org/Resources/License/ZPL-2.0", + "https://opensource.org/licenses/ZPL-2.0", + "http://spdx.org/licenses/ZPL-2.0.json", + "https://www.gnu.org/licenses/license-list.html#Zope2.0", + "http://directory.fsf.org/wiki?title=License:ZopePLv2.1" + ] + }, + "ZPL-2.1": { + "isDeprecatedLicenseId": false, + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "ZPL-2.1", + "Zope2.1" + ], + "names": [ + "Zope Public License 2.1", + "Zope Public License, versions 2.0 and 2.1" + ], + "uris": [ + "http://old.zope.org/Resources/ZPL/", + "http://spdx.org/licenses/ZPL-2.1.json", + "https://www.gnu.org/licenses/license-list.html#Zope2.0", + "http://directory.fsf.org/wiki?title=License:ZopePLv2.1" + ] + }, + "Zed": { + "isDeprecatedLicenseId": false, + "name": "Zed License", + "licenseId": "Zed", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Zed" + ], + "names": [ + "Zed License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Zed", + "http://spdx.org/licenses/Zed.json" + ] + }, + "Zend-2.0": { + "isDeprecatedLicenseId": false, + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Zend-2.0" + ], + "names": [ + "Zend License v2.0" + ], + "uris": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt", + "http://spdx.org/licenses/Zend-2.0.json" + ] + }, + "Zimbra-1.3": { + "isDeprecatedLicenseId": false, + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Zimbra-1.3" + ], + "names": [ + "Zimbra Public License v1.3" + ], + "uris": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html", + "http://spdx.org/licenses/Zimbra-1.3.json" + ] + }, + "Zimbra-1.4": { + "isDeprecatedLicenseId": false, + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "Zimbra-1.4" + ], + "names": [ + "Zimbra Public License v1.4" + ], + "uris": [ + "http://www.zimbra.com/legal/zimbra-public-license-1-4", + "http://spdx.org/licenses/Zimbra-1.4.json" + ] + }, + "Zlib": { + "isDeprecatedLicenseId": false, + "name": "zlib License", + "licenseId": "Zlib", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "Zlib", + "ZLib" + ], + "names": [ + "zlib License", + "License of ZLib" + ], + "uris": [ + "http://www.zlib.net/zlib_license.html", + "https://opensource.org/licenses/Zlib", + "http://spdx.org/licenses/Zlib.json", + "https://www.gnu.org/licenses/license-list.html#ZLib", + "http://directory.fsf.org/wiki/License:Zlib" + ] + }, + "bzip2-1.0.5": { + "isDeprecatedLicenseId": false, + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "bzip2-1.0.5" + ], + "names": [ + "bzip2 and libbzip2 License v1.0.5" + ], + "uris": [ + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", + "http://spdx.org/licenses/bzip2-1.0.5.json" + ] + }, + "bzip2-1.0.6": { + "isDeprecatedLicenseId": false, + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "bzip2-1.0.6" + ], + "names": [ + "bzip2 and libbzip2 License v1.0.6" + ], + "uris": [ + "https://github.com/asimonov-im/bzip2/blob/master/LICENSE", + "http://spdx.org/licenses/bzip2-1.0.6.json" + ] + }, + "copyleft-next-0.3.0": { + "isDeprecatedLicenseId": false, + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "copyleft-next-0.3.0" + ], + "names": [ + "copyleft-next 0.3.0" + ], + "uris": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0", + "http://spdx.org/licenses/copyleft-next-0.3.0.json" + ] + }, + "copyleft-next-0.3.1": { + "isDeprecatedLicenseId": false, + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "copyleft-next-0.3.1" + ], + "names": [ + "copyleft-next 0.3.1" + ], + "uris": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1", + "http://spdx.org/licenses/copyleft-next-0.3.1.json" + ] + }, + "curl": { + "isDeprecatedLicenseId": false, + "name": "curl License", + "licenseId": "curl", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "curl" + ], + "names": [ + "curl License" + ], + "uris": [ + "https://github.com/bagder/curl/blob/master/COPYING", + "http://spdx.org/licenses/curl.json" + ] + }, + "diffmark": { + "isDeprecatedLicenseId": false, + "name": "diffmark license", + "licenseId": "diffmark", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "diffmark" + ], + "names": [ + "diffmark license" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/diffmark", + "http://spdx.org/licenses/diffmark.json" + ] + }, + "dvipdfm": { + "isDeprecatedLicenseId": false, + "name": "dvipdfm License", + "licenseId": "dvipdfm", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "dvipdfm" + ], + "names": [ + "dvipdfm License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/dvipdfm", + "http://spdx.org/licenses/dvipdfm.json" + ] + }, + "eCos-2.0": { + "isDeprecatedLicenseId": true, + "name": "eCos license version 2.0", + "licenseId": "eCos-2.0", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "eCos-2.0", + "eCos2.0" + ], + "names": [ + "eCos license version 2.0" + ], + "uris": [ + "https://www.gnu.org/licenses/ecos-license.html", + "http://spdx.org/licenses/eCos-2.0.json", + "https://www.gnu.org/licenses/license-list.html#eCos2.0", + "http://directory.fsf.org/wiki/License:ECos2.0" + ] + }, + "eGenix": { + "isDeprecatedLicenseId": false, + "name": "eGenix.com Public License 1.1.0", + "licenseId": "eGenix", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "eGenix" + ], + "names": [ + "eGenix.com Public License 1.1.0" + ], + "uris": [ + "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0", + "http://spdx.org/licenses/eGenix.json" + ] + }, + "gSOAP-1.3b": { + "isDeprecatedLicenseId": false, + "name": "gSOAP Public License v1.3b", + "licenseId": "gSOAP-1.3b", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "gSOAP-1.3b" + ], + "names": [ + "gSOAP Public License v1.3b" + ], + "uris": [ + "http://www.cs.fsu.edu/~engelen/license.html", + "http://spdx.org/licenses/gSOAP-1.3b.json" + ] + }, + "gnuplot": { + "isDeprecatedLicenseId": false, + "name": "gnuplot License", + "licenseId": "gnuplot", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "gnuplot" + ], + "names": [ + "gnuplot License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot", + "http://spdx.org/licenses/gnuplot.json" + ] + }, + "iMatix": { + "isDeprecatedLicenseId": false, + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "isGpl2Compatible": true, + "isGpl3Compatible": true, + "ids": [ + "iMatix" + ], + "names": [ + "iMatix Standard Function Library Agreement", + "License of the iMatix Standard Function Library" + ], + "uris": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license", + "http://spdx.org/licenses/iMatix.json", + "https://www.gnu.org/licenses/license-list.html#iMatix", + "http://directory.fsf.org/wiki?title=License:SFL" + ] + }, + "libtiff": { + "isDeprecatedLicenseId": false, + "name": "libtiff License", + "licenseId": "libtiff", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "libtiff" + ], + "names": [ + "libtiff License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/libtiff", + "http://spdx.org/licenses/libtiff.json" + ] + }, + "mpich2": { + "isDeprecatedLicenseId": false, + "name": "mpich2 License", + "licenseId": "mpich2", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "mpich2" + ], + "names": [ + "mpich2 License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/MIT", + "http://spdx.org/licenses/mpich2.json" + ] + }, + "psfrag": { + "isDeprecatedLicenseId": false, + "name": "psfrag License", + "licenseId": "psfrag", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "psfrag" + ], + "names": [ + "psfrag License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/psfrag", + "http://spdx.org/licenses/psfrag.json" + ] + }, + "psutils": { + "isDeprecatedLicenseId": false, + "name": "psutils License", + "licenseId": "psutils", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "psutils" + ], + "names": [ + "psutils License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/psutils", + "http://spdx.org/licenses/psutils.json" + ] + }, + "wxWindows": { + "isDeprecatedLicenseId": true, + "name": "wxWindows Library License", + "licenseId": "wxWindows", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "wxWindows" + ], + "names": [ + "wxWindows Library License" + ], + "uris": [ + "https://opensource.org/licenses/WXwindows", + "http://spdx.org/licenses/wxWindows.json" + ] + }, + "xinetd": { + "isDeprecatedLicenseId": false, + "name": "xinetd License", + "licenseId": "xinetd", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "xinetd" + ], + "names": [ + "xinetd License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License", + "http://spdx.org/licenses/xinetd.json" + ] + }, + "xpp": { + "isDeprecatedLicenseId": false, + "name": "XPP License", + "licenseId": "xpp", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "xpp" + ], + "names": [ + "XPP License" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/xpp", + "http://spdx.org/licenses/xpp.json" + ] + }, + "zlib-acknowledgement": { + "isDeprecatedLicenseId": false, + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "isGpl2Compatible": false, + "isGpl3Compatible": false, + "ids": [ + "zlib-acknowledgement" + ], + "names": [ + "zlib/libpng License with Acknowledgement" + ], + "uris": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement", + "http://spdx.org/licenses/zlib-acknowledgement.json" + ] + } +} diff --git a/assets/dev/scripts/index.js b/assets/dev/scripts/index.js index fe2c8b5..6944572 100644 --- a/assets/dev/scripts/index.js +++ b/assets/dev/scripts/index.js @@ -15,6 +15,9 @@ $( reportItemHeading: '.js-report-item-heading', reportReportTable: '.js-report-table', reportNoticeType: '.js-report-notice-type', + reportNoticeSource: '.js-report-notice-source', + reportItemBtn: '.js-annotation-button', + reportItemSource: '.js-annotation-source', reportItemLine: '.js-report-item-line', reportItemType: '.js-report-item-type', reportItemMessage: '.js-report-item-message', diff --git a/assets/dev/scripts/theme-sniffer.js b/assets/dev/scripts/theme-sniffer.js index 3cde6b0..837f2db 100644 --- a/assets/dev/scripts/theme-sniffer.js +++ b/assets/dev/scripts/theme-sniffer.js @@ -3,6 +3,9 @@ import $ from 'jquery'; import {ajax} from './utils/ajax'; +import Clipboard from 'clipboard'; +import SniffJs from './utils/sniff-js'; + export default class ThemeSniffer { constructor( options ) { this.SHOW_CLASS = 'is-shown'; @@ -11,12 +14,15 @@ export default class ThemeSniffer { this.DISABLED_CLASS = 'is-disabled'; this.IS_RAW_CLASS = 'is-raw'; - this.reportItemHeading = options.reportItemHeading; - this.reportReportTable = options.reportReportTable; - this.reportNoticeType = options.reportNoticeType; - this.reportItemLine = options.reportItemLine; - this.reportItemType = options.reportItemType; - this.reportItemMessage = options.reportItemMessage; + this.reportItemHeading = options.reportItemHeading; + this.reportReportTable = options.reportReportTable; + this.reportNoticeType = options.reportNoticeType; + this.reportNoticeSource = options.reportNoticeSource; + this.reportItemLine = options.reportItemLine; + this.reportItemType = options.reportItemType; + this.reportItemMessage = options.reportItemMessage; + this.reportItemBtn = options.reportItemBtn; + this.reportItemSource = options.reportItemSource; this.$sniffReport = options.sniffReport; this.$snifferInfo = options.snifferInfo; @@ -25,6 +31,8 @@ export default class ThemeSniffer { this.$reportItem = options.reportItem; this.$loader = options.loader; + this.clipboardInstance = null; + this.$startButton = $( options.startButton ); this.$stopButton = $( options.stopButton ); @@ -33,10 +41,6 @@ export default class ThemeSniffer { this.ajaxRequest = []; this.ajaxAllow = true; - - this.renderJSON = this.renderJSON.bind( this ); - this.showNotices = this.showNotices.bind( this ); - this.hideNotices = this.hideNotices.bind( this ); } enableAjax() { @@ -58,7 +62,6 @@ export default class ThemeSniffer { $.each( this.ajaxRequest, ( idx, jqXHR ) => { jqXHR.abort([ themeSnifferLocalization.ajaxAborted ]); }); - } renderRaw( data, element ) { @@ -66,14 +69,18 @@ export default class ThemeSniffer { } renderJSON( json ) { + if ( this.clipboardInstance ) { + this.clipboardInstance.destroy(); // Kill existing instance. + } + let report; report = this.$reportItem.clone().addClass( this.SHOW_CLASS ); - const $reportItemHeading = report.find( this.reportItemHeading ); - const $reportReportTable = report.find( this.reportReportTable ); - const $reportNoticeType = report.find( this.reportNoticeType ); - + const $reportItemHeading = report.find( this.reportItemHeading ); + const $reportReportTable = report.find( this.reportReportTable ); + const $reportNoticeType = report.find( this.reportNoticeType ); + const $reportNoticeSource = report.find( this.reportNoticeSource ); $reportItemHeading.text( json.filePath.split( '/themes/' )[1]); $.each( @@ -82,24 +89,69 @@ export default class ThemeSniffer { const line = value.line || 0; const message = value.message; const type = value.type; + const source = value.source; const $singleItem = $reportNoticeType.clone().addClass( type.toLowerCase() ); + const $msgSource = $reportNoticeSource.clone(); $singleItem.find( this.reportItemLine ).text( line ); $singleItem.find( this.reportItemType ).text( type ); - if ( message.includes( 'iframe' ) ) { + if ( value.source && ! value.source.includes( 'ThemeSniffer' ) ) { $singleItem.find( this.reportItemMessage ).text( message ); } else { - $singleItem.find( this.reportItemMessage ).html( message ); + let decoded = $( '

' ).html( message ).text(); + let msg = new DOMParser().parseFromString( decoded, 'text/html' ).body.childNodes; + $singleItem.find( this.reportItemMessage ).append( $( msg ) ); } + $singleItem.appendTo( $reportReportTable ); + + if ( source ) { + $msgSource.find( this.reportItemSource ) + .text( `// phpcs:ignore ${ source }` ); + + $msgSource.appendTo( $reportReportTable ); + } } ); $reportNoticeType.remove(); + $reportNoticeSource.remove(); + + // Setup Clipboards. + this.setupClipboards(); return report; } + setupClipboards() { + let clipboards = document.querySelectorAll( this.reportItemBtn ); + + // Create clipboard instance. + this.clipboardInstance = new Clipboard( clipboards, { + target: trigger => { + return trigger.lastElementChild; + } + }); + + // Clear selection after copy. + this.clipboardInstance.on( 'success', event => { + + // Store current label. + let currentLabel = event.trigger.parentElement.getAttribute( 'aria-label' ); + + // Set copy success message. + event.trigger.parentElement.setAttribute( 'aria-label', themeSnifferLocalization.copySuccess ); + + // Restore label. + $( event.trigger.parentElement ).mouseleave( () => { + event.trigger.parentElement.setAttribute( 'aria-label', currentLabel ); + }); + + // Clear selection text. + event.clearSelection(); + }); + } + showNotices( message ) { this.$startNotice.html( message ).addClass( this.SHOW_CLASS ); this.$checkNotice.removeClass( this.SHOW_CLASS ); @@ -163,11 +215,15 @@ export default class ThemeSniffer { return; } - $.each( - response.files, ( ind, val ) => { - this.$sniffReport.append( this.renderJSON( val ) ); - } - ); + for ( let file of response.files ) { + ( async() => { + if ( file.filePath.substr( file.filePath.length - 3 ) === '.js' ) { + let sniffer = new SniffJs( file ); + file = await sniffer.process(); + } + this.$sniffReport.append( this.renderJSON( file ) ); + })( file ); + } this.hideNotices( themeSnifferLocalization.checkCompleted, true ); } else { diff --git a/assets/dev/scripts/utils/sniff-js.js b/assets/dev/scripts/utils/sniff-js.js new file mode 100644 index 0000000..326a649 --- /dev/null +++ b/assets/dev/scripts/utils/sniff-js.js @@ -0,0 +1,101 @@ +/** + * Sniff a JavaScript file. + * + * @since 1.1.0 + * + * @prop {string} path - File's Path relative to WordPress' ABSPATH. + * @prop {object} fileObject - ThemeSniffer file sniff object. + * @prop {object} fileObject.filePath - Absolute path to file to sniff. + * @prop {object} fileObject.errors - Total errors on file to sniff. + * @prop {array} fileObject.messages - ThemeSniffer Error message objects for ouput. + * + * @type {SniffJs} + */ +export class SniffJs { + + /** + * Set object properties and instantiate. + * + * @param {Object} fileObject ThemeSniffer file sniff object. + * + * @since 1.1.0 + */ + constructor( fileObject ) { + this.fileObject = fileObject; + // Seems like syntax errors or empty results cause phpcs to provide a non-number for error count. + this.fileObject.errors = isNaN( this.fileObject.errors ) ? 0 : parseInt( this.fileObject.errors, 10 ); + this.path = this.getPath(); + } + + /** + * Get relative path to WordPress' ABSPATH from absolute path. + * + * @since 1.1.0 + * + * @return {string} Relative path from ABSPATH. + */ + getPath() { + let jsFile = this.fileObject.filePath.split( /((?:[^/]*\/)*)(.*)\/themes\//gmi ), + fp = jsFile.pop(), // Filepath relative to wp-content/themes/. + wpContent = jsFile.pop(); // Name of wpContent folder. + return `/${ wpContent }/themes/${ fp }`; + } + + /** + * Format Espirma errors for ThemeSniffer consumption. + * + * @param {Object} err An Espirma error. + * + * @since 1.1.0 + */ + format( err ) { + this.fileObject.errors++; + this.fileObject.messages.push( + { + line: err.lineNumber, + column: err.column, + message: err.description, + severity: 5, + type: 'ERROR', + fixable: false + } + ); + } + + /** + * Processes the fileObject class property. + * + * This will get the file contents of the file requested for sniff, and + * then will do syntax checks using Espirma. The tolerant mode for + * Espirma is on to allow multiple errors to come through if Esprima can + * continue syntax checking. It's not perfect, but it helps! Loc is on + * so we can include the col/line nums in our reporter, which are passed + * back to the fileObject. + * + * @since 1.1.0 + * + * @return {Promise|fileObject} A promise for the fileObject passed in the constructor. + */ + process() { + return new Promise( ( resolve, reject ) => { + fetch( this.path ) + .then( response => response.text() ) + .then( data => { + const errors = esprima.parse( data, + { + tolerant: true, + loc: true + } + ).errors; + + for ( let error of errors ) { + this.format( error ); + } + }) + .catch( error => this.format( error ) ) + .finally( () => this.fileObject.errors && resolve( this.fileObject ) ); + }); + } +} + +export default SniffJs; diff --git a/assets/dev/styles/components/_admin-screen.scss b/assets/dev/styles/components/_admin-screen.scss index b2d21f3..c8dc64b 100644 --- a/assets/dev/styles/components/_admin-screen.scss +++ b/assets/dev/styles/components/_admin-screen.scss @@ -1,3 +1,5 @@ +@import "primer-tooltips/index.scss"; + .theme-sniffer { background-color: $white-color; margin: 20px 20px 0 0; @@ -19,6 +21,7 @@ height: 34px !important; padding: 0; margin: 0; + margin-right: 10px; display: inline-block; vertical-align: top; border: 1px solid $graywhite-color; @@ -38,6 +41,21 @@ min-width: 200px; } + &-checkbox { + height: 28px !important; + width: 28px !important; + border: 1px solid $graywhite-color !important; + border-radius: 5px; + margin-right: 10px !important; + margin-bottom: 10px !important; + position: relative; + top: 4px; + + &::before { + font-size: 32px !important; + } + } + &-button { padding: 8px 18px; display: inline-block; @@ -124,18 +142,25 @@ &-table-row { display: block; - padding: 5px 15px; + padding: 10px 23px 0 23px; background-color: $dirtywhite-color; position: relative; - &::after { - content: ""; - background-color: $graywhite-color; - width: 90%; - height: 1px; - position: absolute; - bottom: 0; - left: 5%; + &.js-report-notice-source { + display: grid; + grid-template-columns: 125px auto; // result of calc(55px + 75px + 2px - 7px) table-line + table-type + 2px table border - 7px button padding. + padding-top: 4px; + padding-bottom: 11px; + + &::after { + content: ""; + background-color: $graywhite-color; + width: 90%; + height: 1px; + position: absolute; + bottom: 0; + left: 5%; + } } &.error { @@ -148,6 +173,7 @@ &:last-of-type { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; + padding-bottom: 11px; &::after { display: none; @@ -165,7 +191,6 @@ } &-table-line { - padding: 8px; font-weight: 500; width: 55px; } @@ -182,6 +207,32 @@ &.is-raw { white-space: pre-wrap; } + + &-copy-annotation { + + &-source { + color: #5c5c5c; + font-size: 0.9em; + font-style: italic; + font-weight: 400; + } + + &-btn { + background: transparent; + border: none; + cursor: copy; // Set cursor to copy for cross-OS + display: inline-flex; + padding: 7px; + width: 100%; + + .dashicons-clipboard { + width: 16px; + height: 16px; + font-size: 16px; + padding-right: 7px; + } + } + } } &__info { diff --git a/composer.json b/composer.json index af86fc2..90e9def 100644 --- a/composer.json +++ b/composer.json @@ -14,14 +14,15 @@ }], "require": { "php": ">=7.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "michelf/php-markdown": "^1.8", "squizlabs/php_codesniffer": "^3.3.0", - "wptrt/wpthemereview": "^0.1.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0" + "wptrt/wpthemereview": "^0.2.0" }, "require-dev": { "codedungeon/phpunit-result-printer": "^0.20.1", "phpcompatibility/php-compatibility": "^9.0", - "phpunit/phpunit": "^6.5", + "phpunit/phpunit": "^7", "roave/security-advisories": "dev-master" }, "autoload": { diff --git a/composer.lock b/composer.lock index 35ffd95..ac096b1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4dfac75996efbeb18a0ca1e7e55e6d77", + "content-hash": "9d83949456c5ede9038b16e76d47d66b", "packages": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -72,18 +72,64 @@ ], "time": "2018-10-26T13:21:45+00:00" }, + { + "name": "michelf/php-markdown", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/michelf/php-markdown.git", + "reference": "01ab082b355bf188d907b9929cd99b2923053495" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495", + "reference": "01ab082b355bf188d907b9929cd99b2923053495", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Michelf\\": "Michelf/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Michel Fortin", + "email": "michel.fortin@michelf.ca", + "homepage": "https://michelf.ca/", + "role": "Developer" + }, + { + "name": "John Gruber", + "homepage": "https://daringfireball.net/" + } + ], + "description": "PHP Markdown", + "homepage": "https://michelf.ca/projects/php-markdown/", + "keywords": [ + "markdown" + ], + "time": "2018-01-15T00:49:33+00:00" + }, { "name": "phpcompatibility/php-compatibility", - "version": "9.1.1", + "version": "9.2.0", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c" + "reference": "3db1bf1e28123fd574a4ae2e9a84072826d51b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/2b63c5d284ab8857f7b1d5c240ddb507a6b2293c", - "reference": "2b63c5d284ab8857f7b1d5c240ddb507a6b2293c", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/3db1bf1e28123fd574a4ae2e9a84072826d51b5e", + "reference": "3db1bf1e28123fd574a4ae2e9a84072826d51b5e", "shasum": "" }, "require": { @@ -97,7 +143,7 @@ "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, "type": "phpcodesniffer-standard", @@ -128,7 +174,7 @@ "phpcs", "standards" ], - "time": "2018-12-30T23:16:27+00:00" + "time": "2019-06-27T19:58:56+00:00" }, { "name": "phpcompatibility/phpcompatibility-paragonie", @@ -232,16 +278,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "379deb987e26c7cd103a7b387aea178baec96e48" + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48", - "reference": "379deb987e26c7cd103a7b387aea178baec96e48", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", "shasum": "" }, "require": { @@ -274,36 +320,38 @@ } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" ], - "time": "2018-12-19T23:57:18+00:00" + "time": "2019-04-10T23:49:02+00:00" }, { "name": "wp-coding-standards/wpcs", - "version": "1.2.1", + "version": "2.1.1", "source": { "type": "git", - "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git", - "reference": "f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c" + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "bd9c33152115e6741e3510ff7189605b35167908" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c", - "reference": "f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/bd9c33152115e6741e3510ff7189605b35167908", + "reference": "bd9c33152115e6741e3510ff7189605b35167908", "shasum": "" }, "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.9.0 || ^3.0.2" + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.3.1" }, "require-dev": { - "phpcompatibility/php-compatibility": "^9.0" + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." }, "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", @@ -322,36 +370,36 @@ "standards", "wordpress" ], - "time": "2018-12-18T09:43:51+00:00" + "time": "2019-05-21T02:50:00+00:00" }, { "name": "wptrt/wpthemereview", - "version": "0.1.0", + "version": "0.2.0", "source": { "type": "git", "url": "https://github.com/WPTRT/WPThemeReview.git", - "reference": "d9fa0dfff3e842efa9d7f804c9ec241408fd3c19" + "reference": "1141d45d12718e9fca0211b843c51e4dbf681f13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WPTRT/WPThemeReview/zipball/d9fa0dfff3e842efa9d7f804c9ec241408fd3c19", - "reference": "d9fa0dfff3e842efa9d7f804c9ec241408fd3c19", + "url": "https://api.github.com/repos/WPTRT/WPThemeReview/zipball/1141d45d12718e9fca0211b843c51e4dbf681f13", + "reference": "1141d45d12718e9fca0211b843c51e4dbf681f13", "shasum": "" }, "require": { "php": ">=5.4", "phpcompatibility/phpcompatibility-wp": "^2.0", - "squizlabs/php_codesniffer": "^3.3.0", - "wp-coding-standards/wpcs": "^1.0.0" + "squizlabs/php_codesniffer": "^3.3.1", + "wp-coding-standards/wpcs": "^2.1.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", "phpcompatibility/php-compatibility": "^9.0", "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0", "roave/security-advisories": "dev-master" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." }, "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", @@ -392,7 +440,7 @@ "themes", "wordpress" ], - "time": "2018-10-31T17:02:38+00:00" + "time": "2019-07-18T07:48:56+00:00" } ], "packages-dev": [ @@ -540,27 +588,29 @@ }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { @@ -585,12 +635,12 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2019-03-17T17:37:11+00:00" }, { "name": "hassankhan/config", @@ -651,16 +701,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", "shasum": "" }, "require": { @@ -695,26 +745,26 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2019-04-07T13:18:21+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^1.0.1", + "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", @@ -750,20 +800,20 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" + "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { @@ -797,7 +847,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -855,16 +905,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", "shasum": "" }, "require": { @@ -902,7 +952,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-04-30T17:48:53+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -953,16 +1003,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -983,8 +1033,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -1012,44 +1062,44 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.3.2", + "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", + "phpunit/php-token-stream": "^3.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", + "sebastian/environment": "^3.1 || ^4.0", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -1064,8 +1114,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", @@ -1075,29 +1125,32 @@ "testing", "xunit" ], - "time": "2018-04-06T15:36:58+00:00" + "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1112,7 +1165,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1122,7 +1175,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -1167,28 +1220,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -1203,7 +1256,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1212,33 +1265,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1261,57 +1314,57 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2019-07-25T05:29:42+00:00" }, { "name": "phpunit/phpunit", - "version": "6.5.14", + "version": "7.5.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2834789aeb9ac182ad69bfdf9ae91856a59945ff", + "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", "sebastian/exporter": "^3.1", "sebastian/global-state": "^2.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", + "sebastian/resource-operations": "^2.0", "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" + "phpunit/phpunit-mock-objects": "*" }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -1319,7 +1372,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5.x-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -1334,8 +1387,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "The PHP Unit Testing framework.", @@ -1345,67 +1398,7 @@ "testing", "xunit" ], - "time": "2019-02-01T05:22:47+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2018-08-09T05:50:03+00:00" + "time": "2019-07-15T06:24:08+00:00" }, { "name": "roave/security-advisories", @@ -1413,12 +1406,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "4e04718428742618a4bf24dafca45b8645c9320d" + "reference": "ea693fa060702164985511acc3ceb5389c9ac761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4e04718428742618a4bf24dafca45b8645c9320d", - "reference": "4e04718428742618a4bf24dafca45b8645c9320d", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ea693fa060702164985511acc3ceb5389c9ac761", + "reference": "ea693fa060702164985511acc3ceb5389c9ac761", "shasum": "" }, "conflict": { @@ -1432,14 +1425,14 @@ "aws/aws-sdk-php": ">=3,<3.2.1", "brightlocal/phpwhois": "<=4.2.5", "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4|>=3.4,<3.4.14|>=3.5,<3.5.17|>=3.6,<3.6.4", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7", "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1.0.0-alpha11", + "composer/composer": "<=1-alpha.11", "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/core": ">=2,<3.5.35", - "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8", + "contao/core": ">=2,<3.5.39", + "contao/core-bundle": ">=4,<4.4.39|>=4.5,<4.7.5", "contao/listing-bundle": ">=4,<4.4.8", "contao/newsletter-bundle": ">=4,<4.1", "david-garcia/phpwhois": "<=4.3.1", @@ -1453,9 +1446,10 @@ "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=7,<7.62|>=8,<8.5.11|>=8.6,<8.6.10", - "drupal/drupal": ">=7,<7.62|>=8,<8.5.11|>=8.6,<8.6.10", - "erusev/parsedown": "<1.7", + "drupal/core": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", + "drupal/drupal": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", + "erusev/parsedown": "<1.7.2", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.4", "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1", @@ -1468,7 +1462,7 @@ "fuel/core": "<1.8.1", "gree/jose": "<=2.2", "gregwar/rst": "<1.0.3", - "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1", "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", @@ -1482,10 +1476,10 @@ "la-haute-societe/tcpdf": "<6.2.22", "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "league/commonmark": ">=0.15.6,<0.18.1", - "magento/magento1ce": "<1.9.4", - "magento/magento1ee": ">=1.9,<1.14.4", - "magento/product-community-edition": ">=2,<2.2.7", + "league/commonmark": "<0.18.3", + "magento/magento1ce": "<1.9.4.1", + "magento/magento1ee": ">=1.9,<1.14.4.1", + "magento/product-community-edition": ">=2,<2.2.8|>=2.3,<2.3.1", "monolog/monolog": ">=1.8,<1.12", "namshi/jose": "<2.2", "onelogin/php-saml": "<2.10.4", @@ -1503,7 +1497,7 @@ "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", - "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", + "propel/propel": ">=2-alpha.1,<=2-alpha.7", "propel/propel1": ">=1,<=1.7.1", "pusher/pusher-php-server": "<2.2.1", "robrichards/xmlseclibs": ">=1,<3.0.2", @@ -1513,11 +1507,14 @@ "shopware/shopware": "<5.3.7", "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.0.7|>=4.1,<4.1.5|>=4.2,<4.2.4|>=4.3,<4.3.1", + "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.4", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", "silverstripe/userforms": "<3", "simple-updates/phpwhois": "<=1", "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", - "simplesamlphp/simplesamlphp": "<1.16.3", + "simplesamlphp/simplesamlphp": "<1.17.3", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", "slim/slim": "<2.6", "smarty/smarty": "<3.1.33", @@ -1527,39 +1524,45 @@ "stormpath/sdk": ">=0,<9.9.99", "swiftmailer/swiftmailer": ">=4,<5.4.5", "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "symfony/dependency-injection": ">=2,<2.0.17", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/sylius": ">=1,<1.1.18|>=1.2,<1.2.17|>=1.3,<1.3.12|>=1.4,<1.4.4", + "symfony/cache": ">=3.1,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", - "symfony/http-foundation": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/http-foundation": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/polyfill": ">=1,<1.10", "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.19|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/symfony": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/translation": ">=2,<2.0.17", "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", "tecnickcom/tcpdf": "<6.2.22", "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", + "thelia/thelia": ">=2.1-beta.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "titon/framework": ">=0,<9.9.99", "truckersmp/phpwhois": "<=4.3.1", - "twig/twig": "<1.20", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.23|>=9,<9.5.4", - "typo3/cms-core": ">=8,<8.7.23|>=9,<9.5.4", + "twig/twig": "<1.38|>=2,<2.7", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.27|>=9,<9.5.8", + "typo3/cms-core": ">=8,<8.7.27|>=9,<9.5.8", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", "ua-parser/uap-php": "<3.8", "wallabag/tcpdf": "<6.2.22", "willdurand/js-translation-bundle": "<2.1.1", @@ -1575,6 +1578,7 @@ "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", "zendframework/zend-diactoros": ">=1,<1.8.4", "zendframework/zend-feed": ">=1,<2.10.3", "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", @@ -1609,7 +1613,7 @@ } ], "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2019-02-26T21:14:50+00:00" + "time": "2019-07-18T15:17:58+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1658,30 +1662,30 @@ }, { "name": "sebastian/comparator", - "version": "2.1.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", + "php": "^7.1", + "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1718,32 +1722,33 @@ "compare", "equality" ], - "time": "2018-02-01T13:46:46+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1768,34 +1773,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "3.1.0", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1820,7 +1831,7 @@ "environment", "hhvm" ], - "time": "2017-07-01T08:51:00+00:00" + "time": "2019-05-05T09:05:15+00:00" }, { "name": "sebastian/exporter", @@ -2087,25 +2098,25 @@ }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2125,7 +2136,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2018-10-04T04:07:39+00:00" }, { "name": "sebastian/version", @@ -2172,16 +2183,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "reference": "82ebae02209c21113908c229e9883c419720738a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", "shasum": "" }, "require": { @@ -2193,7 +2204,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2226,20 +2237,20 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/yaml", - "version": "v4.2.3", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0" + "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0", - "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/34d29c2acd1ad65688f58452fd48a46bd996d5a6", + "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6", "shasum": "" }, "require": { @@ -2258,7 +2269,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2285,20 +2296,20 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-01-16T20:35:37+00:00" + "time": "2019-07-24T14:47:54+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { @@ -2325,7 +2336,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-06-13T22:48:21+00:00" }, { "name": "webmozart/assert", diff --git a/package-lock.json b/package-lock.json index b6b561c..a36166c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,79 +5,63 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "dev": true, "requires": { "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.3.tgz", - "integrity": "sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.3", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.3.3", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.2", - "@babel/types": "^7.3.3", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", + "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helpers": "^7.5.5", + "@babel/parser": "^7.5.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/generator": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz", - "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", - "dev": true, - "requires": { - "@babel/types": "^7.3.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/parser": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz", - "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "@babel/types": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", - "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" - } } } }, "@babel/generator": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", - "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", + "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", "dev": true, "requires": { - "@babel/types": "^7.2.2", + "@babel/types": "^7.5.5", "jsesc": "^2.5.1", - "lodash": "^4.17.10", + "lodash": "^4.17.13", "source-map": "^0.5.0", "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/helper-annotate-as-pure": { @@ -100,25 +84,25 @@ } }, "@babel/helper-call-delegate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", - "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-define-map": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", - "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", + "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" } }, "@babel/helper-explode-assignable-expression": { @@ -152,21 +136,21 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", - "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.5.5" } }, "@babel/helper-module-imports": { @@ -179,17 +163,17 @@ } }, "@babel/helper-module-transforms": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", - "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", + "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" } }, "@babel/helper-optimise-call-expression": { @@ -208,12 +192,12 @@ "dev": true }, "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { @@ -230,15 +214,15 @@ } }, "@babel/helper-replace-supers": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", - "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", + "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-member-expression-to-functions": "^7.5.5", "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" } }, "@babel/helper-simple-access": { @@ -252,12 +236,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-wrap-function": { @@ -273,33 +257,20 @@ } }, "@babel/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", + "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", "dev": true, "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.3.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", - "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -308,9 +279,9 @@ } }, "@babel/parser": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz", - "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", + "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -324,6 +295,16 @@ "@babel/plugin-syntax-async-generators": "^7.2.0" } }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", + "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0" + } + }, "@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", @@ -335,9 +316,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz", - "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", + "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -355,14 +336,14 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", - "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-syntax-async-generators": { @@ -374,6 +355,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", @@ -411,9 +401,9 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", - "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", + "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -431,28 +421,28 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", - "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz", + "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" + "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.3.tgz", - "integrity": "sha512-n0CLbsg7KOXsMF4tSTLCApNMoXk0wOPb0DYfsOO1e7SfIb9gOyfbpKI2MZ+AXfqvlfzq2qsflJ1nEns48Caf2w==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", + "@babel/helper-define-map": "^7.5.5", "@babel/helper-function-name": "^7.1.0", "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5", + "@babel/helper-split-export-declaration": "^7.4.4", "globals": "^11.1.0" } }, @@ -466,29 +456,29 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz", - "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz", + "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", - "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -505,18 +495,18 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", - "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", - "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", "dev": true, "requires": { "@babel/helper-function-name": "^7.1.0", @@ -532,35 +522,47 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-modules-amd": { + "@babel/plugin-transform-member-expression-literals": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", - "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", + "@babel/plugin-transform-modules-amd": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", "dev": true, "requires": { "@babel/helper-module-transforms": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz", + "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", - "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", + "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { @@ -574,51 +576,69 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", - "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", + "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", "dev": true, "requires": { - "regexp-tree": "^0.1.0" + "regexp-tree": "^0.1.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", - "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-replace-supers": "^7.5.5" } }, "@babel/plugin-transform-parameters": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz", - "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.1.0", + "@babel/helper-call-delegate": "^7.4.4", "@babel/helper-get-function-arity": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-transform-regenerator": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", - "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", "dev": true, "requires": { - "regenerator-transform": "^0.13.3" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-shorthand-properties": { @@ -650,9 +670,9 @@ } }, "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", @@ -669,112 +689,119 @@ } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", - "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/polyfill": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", - "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", "requires": { - "core-js": "^2.5.7", - "regenerator-runtime": "^0.12.0" + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" } }, "@babel/preset-env": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", - "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz", + "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-dynamic-import": "^7.5.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.1", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.5.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.2.0", - "@babel/plugin-transform-classes": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.5.5", + "@babel/plugin-transform-classes": "^7.5.5", "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.5.0", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.5.0", + "@babel/plugin-transform-modules-systemjs": "^7.5.0", "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.5.5", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", "@babel/plugin-transform-spread": "^7.2.0", "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.5.5", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" + "semver": "^5.5.0" } }, "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", + "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.5.5", + "@babel/types": "^7.5.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.10" + "lodash": "^4.17.13" } }, "@babel/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", - "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, @@ -794,16 +821,66 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@types/node": { - "version": "11.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.5.tgz", - "integrity": "sha512-vVjM0SVzgaOUpflq4GYBvCpozes8OgIIS5gVXVka+OfK3hvnkC1i93U8WiY2OtNE4XUWyyy/86Kf6e0IHTQw1Q==", + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, "@types/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz", - "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + }, + "@types/tapable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.4.tgz", + "integrity": "sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.4.tgz", + "integrity": "sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } }, "@types/unist": { "version": "2.0.3", @@ -832,179 +909,192 @@ "@types/unist": "*" } }, + "@types/webpack": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.32.0.tgz", + "integrity": "sha512-kpz5wHDyG/WEpzX9gcwFp/w0oSsq0n/rmFdJelk/QBMHmNIOZdiTDInV0Lj8itGKBahQrBgJGJRss/6UHgLuKg==", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "source-map": "^0.6.0" + } + }, "@webassemblyjs/ast": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.3.tgz", - "integrity": "sha512-xy3m06+Iu4D32+6soz6zLnwznigXJRuFNTovBX2M4GqVqLb0dnyWLbPnpcXvUSdEN+9DVyDeaq2jyH1eIL2LZQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/wast-parser": "1.8.3" + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.3.tgz", - "integrity": "sha512-vq1TISG4sts4f0lDwMUM0f3kpe0on+G3YyV5P0IySHFeaLKRYZ++n2fCFfG4TcCMYkqFeTUYFxm75L3ddlk2xA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.3.tgz", - "integrity": "sha512-BmWEynI4FnZbjk8CaYZXwcv9a6gIiu+rllRRouQUo73hglanXD3AGFJE7Q4JZCoVE0p5/jeX6kf5eKa3D4JxwQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.3.tgz", - "integrity": "sha512-iVIMhWnNHoFB94+/2l7LpswfCsXeMRnWfExKtqsZ/E2NxZyUx9nTeKK/MEMKTQNEpyfznIUX06OchBHQ+VKi/Q==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.3.tgz", - "integrity": "sha512-K1UxoJML7GKr1QXR+BG7eXqQkvu+eEeTjlSl5wUFQ6W6vaOc5OwSxTcb3oE9x/3+w4NHhrIKD4JXXCZmLdL2cg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.3" + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.3.tgz", - "integrity": "sha512-387zipfrGyO77/qm7/SDUiZBjQ5KGk4qkrVIyuoubmRNIiqn3g+6ijY8BhnlGqsCCQX5bYKOnttJobT5xoyviA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.3.tgz", - "integrity": "sha512-lPLFdQfaRssfnGEJit5Sk785kbBPPPK4ZS6rR5W/8hlUO/5v3F+rN8XuUcMj/Ny9iZiyKhhuinWGTUuYL4VKeQ==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", + "@webassemblyjs/ast": "1.8.5", "mamacro": "^0.0.3" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.3.tgz", - "integrity": "sha512-R1nJW7bjyJLjsJQR5t3K/9LJ0QWuZezl8fGa49DZq4IVaejgvkbNlKEQxLYTC579zgT4IIIVHb5JA59uBPHXyw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.3.tgz", - "integrity": "sha512-P6F7D61SJY73Yz+fs49Q3+OzlYAZP86OfSpaSY448KzUy65NdfzDmo2NPVte+Rw4562MxEAacvq/mnDuvRWOcg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-buffer": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/wasm-gen": "1.8.3" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" } }, "@webassemblyjs/ieee754": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.3.tgz", - "integrity": "sha512-UD4HuLU99hjIvWz1pD68b52qsepWQlYCxDYVFJQfHh3BHyeAyAlBJ+QzLR1nnS5J6hAzjki3I3AoJeobNNSZlg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.3.tgz", - "integrity": "sha512-XXd3s1BmkC1gpGABuCRLqCGOD6D2L+Ma2BpwpjrQEHeQATKWAQtxAyU9Z14/z8Ryx6IG+L4/NDkIGHrccEhRUg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.3.tgz", - "integrity": "sha512-Wv/WH9Zo5h5ZMyfCNpUrjFsLZ3X1amdfEuwdb7MLdG3cPAjRS6yc6ElULlpjLiiBTuzvmLhr3ENsuGyJ3wyCgg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.3.tgz", - "integrity": "sha512-nB19eUx3Yhi1Vvv3yev5r+bqQixZprMtaoCs1brg9Efyl8Hto3tGaUoZ0Yb4Umn/gQCyoEGFfUxPLp1/8+Jvnw==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-buffer": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/helper-wasm-section": "1.8.3", - "@webassemblyjs/wasm-gen": "1.8.3", - "@webassemblyjs/wasm-opt": "1.8.3", - "@webassemblyjs/wasm-parser": "1.8.3", - "@webassemblyjs/wast-printer": "1.8.3" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.3.tgz", - "integrity": "sha512-sDNmu2nLBJZ/huSzlJvd9IK8B1EjCsOl7VeMV9VJPmxKYgTJ47lbkSP+KAXMgZWGcArxmcrznqm7FrAPQ7vVGg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/ieee754": "1.8.3", - "@webassemblyjs/leb128": "1.8.3", - "@webassemblyjs/utf8": "1.8.3" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.3.tgz", - "integrity": "sha512-j8lmQVFR+FR4/645VNgV4R/Jz8i50eaPAj93GZyd3EIJondVshE/D9pivpSDIXyaZt+IkCodlzOoZUE4LnQbeA==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-buffer": "1.8.3", - "@webassemblyjs/wasm-gen": "1.8.3", - "@webassemblyjs/wasm-parser": "1.8.3" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.3.tgz", - "integrity": "sha512-NBI3SNNtRoy4T/KBsRZCAWUzE9lI94RH2nneLwa1KKIrt/2zzcTavWg6oY05ArCbb/PZDk3OUi63CD1RYtN65w==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-api-error": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/ieee754": "1.8.3", - "@webassemblyjs/leb128": "1.8.3", - "@webassemblyjs/utf8": "1.8.3" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.3.tgz", - "integrity": "sha512-gZPst4CNcmGtKC1eYQmgCx6gwQvxk4h/nPjfPBbRoD+Raw3Hs+BS3yhrfgyRKtlYP+BJ8LcY9iFODEQofl2qbg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/floating-point-hex-parser": "1.8.3", - "@webassemblyjs/helper-api-error": "1.8.3", - "@webassemblyjs/helper-code-frame": "1.8.3", - "@webassemblyjs/helper-fsm": "1.8.3", + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.3.tgz", - "integrity": "sha512-DTA6kpXuHK4PHu16yAD9QVuT1WZQRT7079oIFFmFSjqjLWGXS909I/7kiLTn931mcj7wGsaUNungjwNQ2lGQ3Q==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/wast-parser": "1.8.3", + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", "@xtuc/long": "4.2.2" } }, @@ -1027,15 +1117,9 @@ "dev": true }, "acorn": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz", - "integrity": "sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", + "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", "dev": true }, "acorn-jsx": { @@ -1045,9 +1129,9 @@ "dev": true }, "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -1063,9 +1147,9 @@ "dev": true }, "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, "alphanum-sort": { @@ -1100,13 +1184,13 @@ } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" }, "dependencies": { "normalize-path": { @@ -1180,10 +1264,13 @@ } }, "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } }, "arr-flatten": { "version": "1.1.0", @@ -1237,9 +1324,9 @@ "dev": true }, "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "arrify": { @@ -1269,11 +1356,12 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -1313,18 +1401,18 @@ "dev": true }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.14" } }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "async-foreach": { @@ -1346,41 +1434,17 @@ "dev": true }, "autoprefixer": { - "version": "9.4.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.8.tgz", - "integrity": "sha512-DIhd0KMi9Nql3oJkJ2HCeOVihrXFPtWXc6ckwaUNwliDOt9OGr0fk8vV8jCLWXnZc1EXvQ2uLUzGpcPxFAQHEQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", + "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", "requires": { - "browserslist": "^4.4.1", - "caniuse-lite": "^1.0.30000938", + "browserslist": "^4.6.3", + "caniuse-lite": "^1.0.30000980", + "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.14", - "postcss-value-parser": "^3.3.1" - }, - "dependencies": { - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } + "postcss": "^7.0.17", + "postcss-value-parser": "^4.0.0" } }, "aws-sign2": { @@ -1396,9 +1460,9 @@ "dev": true }, "babel-eslint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", - "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.2.tgz", + "integrity": "sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1410,15 +1474,24 @@ } }, "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", "dev": true, "requires": { "find-cache-dir": "^2.0.0", "loader-utils": "^1.0.2", "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" + "pify": "^4.0.1" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" } }, "babel-runtime": { @@ -1440,9 +1513,9 @@ } }, "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", + "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", "dev": true }, "balanced-match": { @@ -1503,6 +1576,18 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -1528,9 +1613,9 @@ "dev": true }, "binary-extensions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", - "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, "bl": { @@ -1553,9 +1638,9 @@ } }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", "dev": true }, "bn.js": { @@ -1580,32 +1665,14 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "brorand": { @@ -1686,13 +1753,13 @@ } }, "browserslist": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz", - "integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==", + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", + "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", "requires": { - "caniuse-lite": "^1.0.30000939", - "electron-to-chromium": "^1.3.113", - "node-releases": "^1.1.8" + "caniuse-lite": "^1.0.30000984", + "electron-to-chromium": "^1.3.191", + "node-releases": "^1.1.25" } }, "buffer": { @@ -1745,12 +1812,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -1758,22 +1819,22 @@ "dev": true }, "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", "dev": true, "requires": { - "bluebird": "^3.5.3", + "bluebird": "^3.5.5", "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", + "glob": "^7.1.4", "graceful-fs": "^4.1.15", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" @@ -1817,6 +1878,14 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "call-me-maybe": { @@ -1831,13 +1900,6 @@ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - } } }, "caller-path": { @@ -1849,15 +1911,14 @@ } }, "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "camelcase-keys": { @@ -1868,6 +1929,14 @@ "requires": { "camelcase": "^2.0.0", "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } } }, "caniuse-api": { @@ -1882,9 +1951,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000939", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000939.tgz", - "integrity": "sha512-oXB23ImDJOgQpGjRv1tCtzAvJr4/OvrHi5SO2vUgB0g0xpdZZoA/BxfImiWfdwoYdUTtQrPsXsvYU/dmCSM8gg==" + "version": "1.0.30000984", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz", + "integrity": "sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA==" }, "caseless": { "version": "0.12.0", @@ -1893,9 +1962,9 @@ "dev": true }, "ccount": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", - "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", + "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", "dev": true }, "chalk": { @@ -1909,27 +1978,27 @@ } }, "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", + "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==", "dev": true }, "character-entities-html4": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", - "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz", + "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==", "dev": true }, "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz", + "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==", "dev": true }, "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz", + "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", "dev": true }, "chardet": { @@ -1939,35 +2008,32 @@ "dev": true }, "chokidar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", - "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", + "is-glob": "^2.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.0" + "readdirp": "^2.0.0" } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2009,16 +2075,23 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, "clean-webpack-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-1.0.1.tgz", - "integrity": "sha512-gvwfMsqu3HBgTVvaBa1H3AZKO03CHpr5uP92SPIktP3827EovAitwW+1xoqXyTxCuXnLYpMHG5ytS4AoukHDWA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", "dev": true, "requires": { - "rimraf": "^2.6.1" + "@types/webpack": "^4.4.31", + "del": "^4.1.1" } }, "cli-cursor": { @@ -2036,6 +2109,16 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "clipboard": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", + "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -2094,16 +2177,32 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.0", "shallow-clone": "^1.0.0" - } + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } }, "clone-regexp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz", - "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", "dev": true, "requires": { - "is-regexp": "^1.0.0", - "is-supported-regexp-flag": "^1.0.0" + "is-regexp": "^2.0.0" } }, "coa": { @@ -2123,9 +2222,9 @@ "dev": true }, "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", + "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==", "dev": true }, "collection-visit": { @@ -2139,9 +2238,9 @@ } }, "color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", - "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -2169,24 +2268,19 @@ "simple-swizzle": "^0.2.2" } }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" - }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, "commondir": { @@ -2196,9 +2290,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "compress-commons": { @@ -2293,9 +2387,34 @@ "dev": true }, "core-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", - "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==" + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "core-js-compat": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz", + "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==", + "dev": true, + "requires": { + "browserslist": "^4.6.2", + "core-js-pure": "3.1.4", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz", + "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2304,30 +2423,14 @@ "dev": true }, "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", + "js-yaml": "^3.13.1", "parse-json": "^4.0.0" - }, - "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } } }, "cpx": { @@ -2347,142 +2450,6 @@ "safe-buffer": "^5.0.1", "shell-quote": "^1.6.1", "subarg": "^1.0.0" - }, - "dependencies": { - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } } }, "crc": { @@ -2514,6 +2481,16 @@ "elliptic": "^6.0.0" } }, + "create-file-webpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/create-file-webpack/-/create-file-webpack-1.0.2.tgz", + "integrity": "sha512-+J6kQTE+Wcobc6gHP8E2zmoeIC+J+p6IXqjFrzoxCl1VYlimWoincPUABAhODuXAJGrZcNZ/Up0PTqq1ISiwvA==", + "dev": true, + "requires": { + "path": "^0.12.7", + "write": "^1.0.3" + } + }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -2541,6 +2518,16 @@ "sha.js": "^2.4.8" } }, + "cross-env": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", + "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.5", + "is-windows": "^1.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -2588,21 +2575,31 @@ } }, "css-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.0.tgz", - "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.1.0.tgz", + "integrity": "sha512-MuL8WsF/KSrHCBCYaozBKlx+r7vIfUaDTEreo7wR7Vv3J6N0z6fqWjRk3e/6wjneitXN1r/Y9FTK1psYNOBdJQ==", "dev": true, "requires": { - "icss-utils": "^4.0.0", - "loader-utils": "^1.2.1", - "lodash": "^4.17.11", - "postcss": "^7.0.6", + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.17", "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.3", - "postcss-modules-scope": "^2.0.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.0", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + } } }, "css-select": { @@ -2621,80 +2618,36 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, + "css-tree": { + "version": "1.0.0-alpha.33", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.33.tgz", + "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==", "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "mdn-data": "2.0.4", + "source-map": "^0.5.3" }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, - "css-tree": { - "version": "1.0.0-alpha.28", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", - "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - }, "css-unit-converter": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" - }, "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" }, "cssnano": { "version": "4.1.10", @@ -2783,6 +2736,16 @@ "mdn-data": "~1.1.0", "source-map": "^0.5.3" } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -2899,15 +2862,47 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -2958,6 +2953,12 @@ "requires": { "pify": "^3.0.0" } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, @@ -3023,9 +3024,9 @@ "dev": true }, "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -3045,14 +3046,14 @@ } }, "electron-to-chromium": { - "version": "1.3.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", - "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==" + "version": "1.3.194", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.194.tgz", + "integrity": "sha512-w0LHR2YD9Ex1o+Sz4IN2hYzCB8vaFtMNW+yJcBf6SZlVqgFahkne/4rGVJdk4fPF98Gch9snY7PiabOh+vqHNg==" }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -3147,9 +3148,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", - "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3158,7 +3159,7 @@ "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.0", + "eslint-scope": "^4.0.3", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", "espree": "^5.0.1", @@ -3172,7 +3173,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", + "js-yaml": "^3.13.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", "lodash": "^4.17.11", @@ -3190,27 +3191,59 @@ "text-table": "^0.2.0" }, "dependencies": { - "ajv": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", - "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "eslint-scope": { + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "eslint-cli": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eslint-cli/-/eslint-cli-1.1.1.tgz", + "integrity": "sha512-Gu+fYzt7M+jIb5szUHLl5Ex0vFY7zErbi78D7ZaaLunvVTxHRvbOlfzmJlIUWsV5WDM4qyu9TD7WnGgDaDgaMA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "debug": "^2.6.8", + "resolve": "^1.3.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -3231,10 +3264,13 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", + "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } }, "eslint-visitor-keys": { "version": "1.0.0", @@ -3320,62 +3356,21 @@ } }, "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", "dev": true, "requires": { - "clone-regexp": "^1.0.0" + "clone-regexp": "^2.1.0" } }, "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -3385,48 +3380,6 @@ "dev": true, "requires": { "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "expand-tilde": { @@ -3466,9 +3419,9 @@ } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -3477,37 +3430,260 @@ } }, "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "is-extglob": "^1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "is-accessor-descriptor": { @@ -3538,35 +3714,83 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -3579,12 +3803,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -3621,6 +3839,34 @@ "make-dir": "^1.1.0", "mv": "^2.1.1", "rimraf": "^2.6.2" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "filename-regex": { @@ -3630,36 +3876,26 @@ "dev": true }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", + "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" } }, @@ -3679,25 +3915,320 @@ } }, "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dev": true, "requires": { "detect-file": "^1.0.0", - "is-glob": "^3.1.0", + "is-glob": "^4.0.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" }, "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -3713,19 +4244,19 @@ } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, "for-in": { @@ -3735,9 +4266,9 @@ "dev": true }, "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { "for-in": "^1.0.1" @@ -3786,12 +4317,12 @@ "dev": true }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } @@ -3815,14 +4346,14 @@ "dev": true }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -3900,12 +4431,12 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { @@ -4076,24 +4607,24 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.2.4", + "version": "2.3.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.3", + "version": "0.12.0", "bundled": true, "dev": true, "optional": true, @@ -4121,13 +4652,13 @@ } }, "npm-bundled": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.2.0", + "version": "1.4.1", "bundled": true, "dev": true, "optional": true, @@ -4266,7 +4797,7 @@ "optional": true }, "semver": { - "version": "5.6.0", + "version": "5.7.0", "bundled": true, "dev": true, "optional": true @@ -4363,9 +4894,9 @@ } }, "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -4454,9 +4985,9 @@ "dev": true }, "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, "get-stream": { @@ -4484,9 +5015,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4505,53 +5036,15 @@ "requires": { "glob-parent": "^2.0.0", "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-glob": "^2.0.0" } }, "glob-to-regexp": { @@ -4587,33 +5080,39 @@ "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "globby": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.0.0.tgz", - "integrity": "sha512-q0qiO/p1w/yJ0hk8V9x1UXlgsXUxlGd0AHUOXZVXBO6aznDtpx7M8D1kBrCAItoPm+4l8r6ATXV1JpjY2SBQOw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "array-union": "^1.0.2", - "dir-glob": "^2.2.1", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } } @@ -4636,9 +5135,9 @@ } }, "gonzales-pe": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.3.tgz", - "integrity": "sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", + "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", "dev": true, "requires": { "minimist": "1.1.x" @@ -4652,10 +5151,18 @@ } } }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" + } + }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", "dev": true }, "har-schema": { @@ -4724,6 +5231,14 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "has-values": { @@ -4736,6 +5251,26 @@ "kind-of": "^4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -4814,9 +5349,9 @@ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.0.0.tgz", + "integrity": "sha512-xiXEBjihaNI+VZ2mKEoI5ZPxqUsevTKM+aeeJ/W4KAg2deGE35minmCJMn51BvwJZmiHaeAxrb2LAS0yZJxuuA==", "dev": true }, "htmlparser2": { @@ -4834,9 +5369,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -4864,21 +5399,68 @@ "dev": true }, "husky": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-2.7.0.tgz", + "integrity": "sha512-LIi8zzT6PyFpcYKdvWRCn/8X+6SuG2TgYYMrM6ckEYhlp44UcEduVymZGIZNLiwOUjrEud+78w/AsAiqJA/kRg==", "dev": true, "requires": { - "cosmiconfig": "^5.0.7", + "cosmiconfig": "^5.2.0", "execa": "^1.0.0", "find-up": "^3.0.0", - "get-stdin": "^6.0.0", + "get-stdin": "^7.0.0", "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", + "pkg-dir": "^4.1.0", "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", + "read-pkg": "^5.1.1", "run-node": "^1.0.0", - "slash": "^2.0.0" + "slash": "^3.0.0" + }, + "dependencies": { + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + } + } + } } }, "iconv-lite": { @@ -4890,25 +5472,19 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "icss-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.0.0.tgz", - "integrity": "sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", "dev": true, "requires": { - "postcss": "^7.0.5" + "postcss": "^7.0.14" } }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, "iferr": { @@ -4924,19 +5500,18 @@ "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, "import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, "import-local": { @@ -4975,12 +5550,6 @@ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4992,9 +5561,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "ini": { @@ -5004,9 +5573,9 @@ "dev": true }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -5015,28 +5584,28 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "^4.1.0" } } } @@ -5074,23 +5643,12 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", + "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", "dev": true }, "is-alphanumeric": { @@ -5100,9 +5658,9 @@ "dev": true }, "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", + "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", "dev": true, "requires": { "is-alphabetical": "^1.0.0", @@ -5129,15 +5687,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", @@ -5172,17 +5721,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-date-object": { @@ -5191,9 +5729,9 @@ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, "is-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", + "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", "dev": true }, "is-descriptor": { @@ -5242,9 +5780,9 @@ "dev": true }, "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-finite": { @@ -5263,38 +5801,27 @@ "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "^1.0.0" } }, "is-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", + "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-obj": { @@ -5302,6 +5829,30 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -5315,6 +5866,14 @@ "dev": true, "requires": { "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "is-posix-bracket": { @@ -5344,9 +5903,9 @@ } }, "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, "is-resolvable": { @@ -5360,12 +5919,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-supported-regexp-flag": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz", - "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==", - "dev": true - }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -5395,9 +5948,9 @@ "dev": true }, "is-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", + "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", "dev": true }, "is-windows": { @@ -5407,9 +5960,15 @@ "dev": true }, "is-word-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", + "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { @@ -5425,10 +5984,13 @@ "dev": true }, "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, "isstream": { "version": "0.1.2", @@ -5437,14 +5999,14 @@ "dev": true }, "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" }, "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", "dev": true }, "js-levenshtein": { @@ -5460,9 +6022,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -5516,6 +6078,14 @@ "dev": true, "requires": { "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "jsonfile": { @@ -5546,15 +6116,18 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } }, "known-css-properties": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.11.0.tgz", - "integrity": "sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.14.0.tgz", + "integrity": "sha512-P+0a/gBzLgVlCnK8I7VcD0yuYJscmWn66wH9tlKsQnmVdg689tLEmziwB9PuazZYLkcm07fvWOKCJJqI55sD5Q==", "dev": true }, "lazystream": { @@ -5576,9 +6149,9 @@ } }, "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, "levn": { @@ -5591,6 +6164,12 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -5646,6 +6225,12 @@ "requires": { "minimist": "^1.2.0" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -5660,9 +6245,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash.assign": { @@ -5671,12 +6256,6 @@ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -5706,12 +6285,6 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true - }, "lodash.tail": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", @@ -5736,18 +6309,18 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "^2.4.2" } }, "longest-streak": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", - "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", + "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", "dev": true }, "loose-envify": { @@ -5780,12 +6353,13 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, "mamacro": { @@ -5825,15 +6399,15 @@ } }, "markdown-escapes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", + "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", "dev": true }, "markdown-table": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", - "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, "math-random": { @@ -5843,9 +6417,9 @@ "dev": true }, "mathml-tag-names": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.0.tgz", - "integrity": "sha512-3Zs9P/0zzwTob2pdgT0CHZuMbnSUSp8MB1bddfm+HDmnFWHGT4jvEZRf+2RuPoa+cjdn/z25SEt5gFTqdhvJAg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", + "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", "dev": true }, "md5.js": { @@ -5860,28 +6434,36 @@ } }, "mdast-util-compact": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz", - "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", + "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", "dev": true, "requires": { "unist-util-visit": "^1.1.0" } }, "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } } }, "memory-fs": { @@ -5910,6 +6492,14 @@ "read-pkg-up": "^1.0.1", "redent": "^1.0.0", "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "merge2": { @@ -5919,24 +6509,35 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } } }, "miller-rabin": { @@ -5950,18 +6551,18 @@ } }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "1.40.0" } }, "mimic-fn": { @@ -5971,14 +6572,40 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", - "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz", + "integrity": "sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ==", "dev": true, "requires": { "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "minimalistic-assert": { @@ -6003,10 +6630,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "minimist-options": { "version": "3.0.2", @@ -6037,9 +6663,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -6081,13 +6707,6 @@ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } } }, "move-concurrently": { @@ -6105,9 +6724,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "mute-stream": { @@ -6152,9 +6771,9 @@ } }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true }, "nanomatch": { @@ -6174,6 +6793,26 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "natural-compare": { @@ -6189,9 +6828,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "nice-try": { @@ -6229,9 +6868,9 @@ } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -6244,7 +6883,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -6256,7 +6895,7 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { "buffer": { @@ -6279,17 +6918,17 @@ } }, "node-releases": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.8.tgz", - "integrity": "sha512-gQm+K9mGCiT/NXHy+V/ZZS1N/LOaGGqRAAJJs3X9Ah1g+CIbRcBgNyoNYQ+SEtcyAtB9KqDruu+fF7nWjsqRaA==", + "version": "1.1.25", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz", + "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==", "requires": { "semver": "^5.3.0" } }, "node-sass": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", - "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", + "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -6299,12 +6938,10 @@ "get-stdin": "^4.0.1", "glob": "^7.0.3", "in-publish": "^2.0.0", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.3.2", - "lodash.mergewith": "^4.6.0", + "lodash": "^4.17.11", "meow": "^3.7.0", "mkdirp": "^0.5.1", - "nan": "^2.10.0", + "nan": "^2.13.2", "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", @@ -6381,13 +7018,13 @@ } }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -6485,22 +7122,13 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } } } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -6509,6 +7137,26 @@ "dev": true, "requires": { "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, "object.getownpropertydescriptors": { @@ -6528,17 +7176,6 @@ "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } } }, "object.pick": { @@ -6548,6 +7185,14 @@ "dev": true, "requires": { "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, "object.values": { @@ -6643,15 +7288,15 @@ "dev": true }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -6666,16 +7311,22 @@ "p-limit": "^2.0.0" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", "dev": true }, "parallel-transform": { @@ -6690,12 +7341,20 @@ } }, "parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } } }, "parse-asn1": { @@ -6713,9 +7372,9 @@ } }, "parse-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", - "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", "dev": true, "requires": { "character-entities": "^1.0.0", @@ -6736,23 +7395,6 @@ "is-dotfile": "^1.0.0", "is-extglob": "^1.0.0", "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } } }, "parse-json": { @@ -6776,10 +7418,37 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -6856,10 +7525,16 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", + "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "dev": true + }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pinkie": { @@ -6902,20 +7577,15 @@ "dev": true }, "postcss": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.11.tgz", - "integrity": "sha512-9AXb//5UcjeOEof9T+yPw3XTa5SL207ZOIC/lHYP4mbUTEh4M0rDAQekQpVANCZdwQwKhBtFZCk3i3h3h2hdWg==", + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -6935,6 +7605,13 @@ "postcss": "^7.0.5", "postcss-selector-parser": "^5.0.0-rc.4", "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-colormin": { @@ -6947,6 +7624,13 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-convert-values": { @@ -6956,6 +7640,13 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-discard-comments": { @@ -7000,49 +7691,21 @@ } }, "postcss-jsx": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.0.tgz", - "integrity": "sha512-/lWOSXSX5jlITCKFkuYU2WLFdrncZmjSVyNpHAunEgirZXLwI8RjU556e3Uz4mv0WVHnJA9d3JWb36lK9Yx99g==", + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.1.tgz", + "integrity": "sha512-xaZpy01YR7ijsFUtu5rViYCFHurFIPHir+faiOQp8g/NfTfWqZCKDhKrydQZ4d8WlSAmVdXGwLjpFbsNUI26Sw==", "dev": true, "requires": { - "@babel/core": ">=7.1.0" + "@babel/core": ">=7.2.2" } }, "postcss-less": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.2.tgz", - "integrity": "sha512-66ZBVo1JGkQ7r13M97xcHcyarWpgg21RaqIZWZXHE3XOtb5+ywK1uZWeY1DYkYRkIX/l8Hvxnx9iSKB68nFr+w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", "dev": true, "requires": { "postcss": "^7.0.14" - }, - "dependencies": { - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-markdown": { @@ -7070,6 +7733,13 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-merge-rules": { @@ -7104,6 +7774,13 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-minify-gradients": { @@ -7115,6 +7792,13 @@ "is-color-stop": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-minify-params": { @@ -7128,6 +7812,13 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-minify-selectors": { @@ -7163,33 +7854,72 @@ } }, "postcss-modules-local-by-default": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.4.tgz", - "integrity": "sha512-WvuSaTKXUqYJbnT7R3YrsNrHv/C5vRfr5VglS4bFOk0MYT4CLBfc/xgExA+x2RftlYgiBDvWmVs191Xv8S8gZQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6", - "postcss-value-parser": "^3.3.1" + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } } }, "postcss-modules-scope": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz", - "integrity": "sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz", + "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6" + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } } }, "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", + "icss-utils": "^4.0.0", "postcss": "^7.0.6" } }, @@ -7209,6 +7939,13 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-positions": { @@ -7220,6 +7957,13 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-repeat-style": { @@ -7231,6 +7975,13 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-string": { @@ -7241,6 +7992,13 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-timing-functions": { @@ -7251,6 +8009,13 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-unicode": { @@ -7261,6 +8026,13 @@ "browserslist": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-url": { @@ -7272,6 +8044,13 @@ "normalize-url": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-normalize-whitespace": { @@ -7281,6 +8060,13 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-ordered-values": { @@ -7291,6 +8077,13 @@ "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-reduce-initial": { @@ -7313,6 +8106,13 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-reporter": { @@ -7325,6 +8125,17 @@ "lodash": "^4.17.11", "log-symbols": "^2.2.0", "postcss": "^7.0.7" + }, + "dependencies": { + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + } } }, "postcss-resolve-nested-selector": { @@ -7369,13 +8180,6 @@ "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - } } }, "postcss-svgo": { @@ -7387,6 +8191,13 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } } }, "postcss-syntax": { @@ -7406,9 +8217,9 @@ } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz", + "integrity": "sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ==" }, "prelude-ls": { "version": "1.1.2", @@ -7416,12 +8227,31 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, + "primer-support": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/primer-support/-/primer-support-5.0.0.tgz", + "integrity": "sha512-inUxVSsGirn5IkPxBhFsMBgm8ZHyfOUmOWyDCN8cBXtbaLiCIAjHsPI46yS1zrWxnn0J2kvq8haomkrlHGF08g==" + }, + "primer-tooltips": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/primer-tooltips/-/primer-tooltips-2.0.0.tgz", + "integrity": "sha512-cNF3r3hG6sXLr71GbYyJw3BXCBhspW4FjzJ0Hx/BO+lP3XCrNAX/wqd57+vvnWSuaLif2O8s3/Prs3VBF50hVQ==", + "requires": { + "primer-support": "5.0.0" + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -7435,9 +8265,9 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -7465,9 +8295,9 @@ "dev": true }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", "dev": true }, "public-encrypt": { @@ -7534,6 +8364,16 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -7568,6 +8408,12 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -7591,14 +8437,29 @@ } }, "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + } } }, "read-pkg-up": { @@ -7630,45 +8491,336 @@ "pinkie-promise": "^2.0.0" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -7686,23 +8838,23 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" }, "regenerator-transform": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", - "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", "dev": true, "requires": { "private": "^0.1.6" @@ -7728,9 +8880,9 @@ } }, "regexp-tree": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", - "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", + "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==", "dev": true }, "regexpp": { @@ -7740,17 +8892,17 @@ "dev": true }, "regexpu-core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", - "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", + "regenerate-unicode-properties": "^8.0.2", "regjsgen": "^0.5.0", "regjsparser": "^0.6.0", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" + "unicode-match-property-value-ecmascript": "^1.1.0" } }, "regjsgen": { @@ -7906,9 +9058,9 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -7921,14 +9073,6 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "resolve-dir": { @@ -7968,10 +9112,9 @@ } }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, "resolve-url": { "version": "0.2.1", @@ -8049,9 +9192,9 @@ } }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -8102,6 +9245,14 @@ "neo-async": "^2.5.0", "pify": "^3.0.0", "semver": "^5.5.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "sax": { @@ -8110,13 +9261,12 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.0.1.tgz", + "integrity": "sha512-HJFKJ4JixDpRur06QHwi8uu2kZbng318ahWEKgBjc0ZklcE4FDvmm2wghb448q0IRaABxIESt8vqPFvwgMB80A==", "dev": true, "requires": { "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } }, @@ -8141,10 +9291,15 @@ } } }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "semver-compare": { "version": "1.0.0", @@ -8153,9 +9308,9 @@ "dev": true }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", "dev": true }, "set-blocking": { @@ -8165,9 +9320,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -8271,9 +9426,9 @@ } }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { @@ -8335,6 +9490,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -8386,6 +9547,18 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -8396,17 +9569,15 @@ "dev": true, "requires": { "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" } }, "source-list-map": { @@ -8416,9 +9587,9 @@ "dev": true }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { "version": "0.5.2", @@ -8434,21 +9605,13 @@ } }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "source-map-url": { @@ -8484,9 +9647,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "specificity": { @@ -8510,9 +9673,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -8541,9 +9704,9 @@ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, "state-toggle": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", - "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz", + "integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==", "dev": true }, "static-extend": { @@ -8615,6 +9778,12 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -8701,6 +9870,19 @@ "requires": { "loader-utils": "^1.1.0", "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "style-search": { @@ -8732,66 +9914,76 @@ } }, "stylelint": { - "version": "9.10.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-9.10.1.tgz", - "integrity": "sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-10.1.0.tgz", + "integrity": "sha512-OmlUXrgzEMLQYj1JPTpyZPR9G4bl0StidfHnGJEMpdiQ0JyTq0MPg1xkHk1/xVJ2rTPESyJCDWjG8Kbpoo7Kuw==", "dev": true, "requires": { - "autoprefixer": "^9.0.0", + "autoprefixer": "^9.5.1", "balanced-match": "^1.0.0", - "chalk": "^2.4.1", - "cosmiconfig": "^5.0.0", - "debug": "^4.0.0", - "execall": "^1.0.0", - "file-entry-cache": "^4.0.0", - "get-stdin": "^6.0.0", + "chalk": "^2.4.2", + "cosmiconfig": "^5.2.0", + "debug": "^4.1.1", + "execall": "^2.0.0", + "file-entry-cache": "^5.0.1", + "get-stdin": "^7.0.0", "global-modules": "^2.0.0", - "globby": "^9.0.0", + "globby": "^9.2.0", "globjoin": "^0.1.4", - "html-tags": "^2.0.0", - "ignore": "^5.0.4", - "import-lazy": "^3.1.0", + "html-tags": "^3.0.0", + "ignore": "^5.0.6", + "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.11.0", - "leven": "^2.1.0", - "lodash": "^4.17.4", - "log-symbols": "^2.0.0", - "mathml-tag-names": "^2.0.1", + "known-css-properties": "^0.14.0", + "leven": "^3.1.0", + "lodash": "^4.17.11", + "log-symbols": "^3.0.0", + "mathml-tag-names": "^2.1.0", "meow": "^5.0.0", - "micromatch": "^3.1.10", + "micromatch": "^4.0.0", "normalize-selector": "^0.2.0", - "pify": "^4.0.0", - "postcss": "^7.0.13", + "pify": "^4.0.1", + "postcss": "^7.0.14", "postcss-html": "^0.36.0", - "postcss-jsx": "^0.36.0", - "postcss-less": "^3.1.0", + "postcss-jsx": "^0.36.1", + "postcss-less": "^3.1.4", "postcss-markdown": "^0.36.0", "postcss-media-query-parser": "^0.2.3", - "postcss-reporter": "^6.0.0", + "postcss-reporter": "^6.0.1", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.0", + "postcss-safe-parser": "^4.0.1", "postcss-sass": "^0.3.5", "postcss-scss": "^2.0.0", "postcss-selector-parser": "^3.1.0", "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^3.3.0", - "resolve-from": "^4.0.0", + "postcss-value-parser": "^3.3.1", + "resolve-from": "^5.0.0", "signal-exit": "^3.0.2", - "slash": "^2.0.0", + "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^3.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.2.0", "style-search": "^0.1.0", "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^5.0.0" + "table": "^5.2.3" }, "dependencies": { "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -8809,13 +10001,19 @@ "quick-lru": "^1.0.0" } }, - "file-entry-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-4.0.0.tgz", - "integrity": "sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "to-regex-range": "^5.0.1" } }, "find-up": { @@ -8827,10 +10025,40 @@ "locate-path": "^2.0.0" } }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, "ignore": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.5.tgz", - "integrity": "sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz", + "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==", "dev": true }, "indent-string": { @@ -8839,6 +10067,18 @@ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8892,6 +10132,16 @@ "yargs-parser": "^10.0.0" } }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -8933,23 +10183,6 @@ } } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, "postcss-selector-parser": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", @@ -8961,6 +10194,12 @@ "uniq": "^1.0.1" } }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -8992,30 +10231,30 @@ "strip-indent": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "string-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz", - "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" } }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "^4.1.0" } }, "strip-bom": { @@ -9030,13 +10269,13 @@ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "is-number": "^7.0.0" } }, "trim-newlines": { @@ -9057,57 +10296,57 @@ } }, "stylelint-config-recommended": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-2.1.0.tgz", - "integrity": "sha512-ajMbivOD7JxdsnlS5945KYhvt7L/HwN6YeYF2BH6kE4UCLJR0YvXMf+2j7nQpJyYLZx9uZzU5G1ZOSBiWAc6yA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha512-bZ+d4RiNEfmoR74KZtCKmsABdBJr4iXRiCso+6LtMJPw5rd/KnxUWTxht7TbafrTJK1YRjNgnN0iVZaJfc3xJA==", "dev": true }, "stylelint-config-recommended-scss": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-3.2.0.tgz", - "integrity": "sha512-M8BFHMRf8KNz5EQPKJd8nMCGmBd2o5coDEObfHVbEkyLDgjIf1V+U5dHjaGgvhm0zToUxshxN+Gc5wpbOOew4g==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-3.3.0.tgz", + "integrity": "sha512-BvuuLYwoet8JutOP7K1a8YaiENN+0HQn390eDi0SWe1h7Uhx6O3GUQ6Ubgie9b/AmHX4Btmp+ZzVGbzriFTBcA==", "dev": true, "requires": { - "stylelint-config-recommended": "^2.0.0" + "stylelint-config-recommended": "^2.2.0" } }, "stylelint-config-wordpress": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-wordpress/-/stylelint-config-wordpress-13.1.0.tgz", - "integrity": "sha512-dpKj2/d3/XjDVoOvQzd54GoM8Rj5zldluOZKkVhBCc4JYMc6r1VYL5hpcgIjqy/i2Hyqg4Rh7zTafE/2AWq//w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-wordpress/-/stylelint-config-wordpress-14.0.0.tgz", + "integrity": "sha512-Qo5I9Qa3yOy2AF+DwL9wjdNSm10ykT4lM+JvnCMDT2VBOl+5yMgpbQ9Xaa0gQXeCdcHdLprtmkBbrvDqf6DWSg==", "dev": true, "requires": { - "stylelint-config-recommended": "^2.1.0", + "stylelint-config-recommended": "^2.2.0", "stylelint-config-recommended-scss": "^3.2.0", - "stylelint-scss": "^3.3.0" + "stylelint-scss": "^3.6.0" } }, "stylelint-scss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.4.4.tgz", - "integrity": "sha512-GquwsRegF2gsVRePaUN93cYf9aJDygr03X/QRiwk9O5lOe7QZHlM4Vzrb8JAu+pZ0xodPRpN6W259yA6ApM3WA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.9.2.tgz", + "integrity": "sha512-VUh173p3T1qJf016P7yeJ6nxkUpqF5qQ+VSDw3J8P6wEJbA1loaNgBHR3k3skHvUkF+9brLO1ibCHA00pjW3cw==", "dev": true, "requires": { "lodash": "^4.17.11", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^5.0.0", - "postcss-value-parser": "^3.3.1" + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" }, "dependencies": { "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "cssesc": "^2.0.0", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -9121,6 +10360,14 @@ "dev": true, "requires": { "minimist": "^1.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "sugarss": { @@ -9147,92 +10394,79 @@ "dev": true }, "svgo": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz", - "integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.0.tgz", + "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==", "requires": { - "coa": "~2.0.1", - "colors": "~1.1.2", + "chalk": "^2.4.1", + "coa": "^2.0.2", "css-select": "^2.0.0", - "css-select-base-adapter": "~0.1.0", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "^1.1.0", - "csso": "^3.5.0", - "js-yaml": "^3.12.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.33", + "csso": "^3.5.1", + "js-yaml": "^3.13.1", "mkdirp": "~0.5.1", - "object.values": "^1.0.4", + "object.values": "^1.1.0", "sax": "~1.2.4", - "stable": "~0.1.6", + "stable": "^0.1.8", "unquote": "~1.1.1", "util.promisify": "~1.0.0" } }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.4.tgz", + "integrity": "sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.9.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", - "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "string-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz", - "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "^4.1.0" } } } }, "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", "dev": true, "requires": { "block-stream": "*", - "fstream": "^1.0.2", + "fstream": "^1.0.12", "inherits": "2" } }, @@ -9252,45 +10486,44 @@ } }, "terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.2.tgz", + "integrity": "sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==", "dev": true, "requires": { - "commander": "~2.17.1", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.9" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "source-map-support": "~0.5.12" } }, "terser-webpack-plugin": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", - "integrity": "sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", "dev": true, "requires": { - "cacache": "^11.0.2", + "cacache": "^11.3.2", "find-cache-dir": "^2.0.0", + "is-wsl": "^1.1.0", + "loader-utils": "^1.2.3", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "serialize-javascript": "^1.7.0", "source-map": "^0.6.1", - "terser": "^3.16.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "terser": "^4.0.0", + "webpack-sources": "^1.3.0", + "worker-farm": "^1.7.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } } } }, @@ -9330,6 +10563,11 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -9364,17 +10602,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "to-regex": { @@ -9397,6 +10624,17 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } } }, "tough-cookie": { @@ -9436,15 +10674,15 @@ "dev": true }, "trim-trailing-lines": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", - "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", + "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", "dev": true }, "trough": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.3.tgz", - "integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", + "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", "dev": true }, "true-case-path": { @@ -9457,9 +10695,9 @@ } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, "tty-browserify": { @@ -9492,58 +10730,22 @@ "prelude-ls": "~1.1.2" } }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.1.tgz", - "integrity": "sha512-TQEcyMNkObX/H+FfcKjiDgs5RcXX8vW2UUUrDTOfQgg3lrafztfeM5WAwXo+AzqozJK6NP9w98xNpG/dutzSsg==", - "dev": true, - "requires": { - "cacache": "^11.2.0", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-js": "^3.0.0", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "unherit": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", - "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", + "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -9567,15 +10769,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", "dev": true }, "unified": { @@ -9595,38 +10797,15 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { @@ -9649,33 +10828,33 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, "unist-util-find-all-after": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.2.tgz", - "integrity": "sha512-nDl79mKpffXojLpCimVXnxhlH/jjaTnDuScznU9J4jjsaUtBdDbxmlc109XtcqxY4SDO0SwzngsxxW8DIISt1w==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz", + "integrity": "sha512-CaxvMjTd+yF93BKLJvZnEfqdM7fgEACsIpQqz8vIj9CJnUb9VpyymFS3tg6TCtgrF7vfCJBF5jbT2Ox9CBRYRQ==", "dev": true, "requires": { - "unist-util-is": "^2.0.0" + "unist-util-is": "^3.0.0" } }, "unist-util-is": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", "dev": true }, "unist-util-remove-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", - "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz", + "integrity": "sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==", "dev": true, "requires": { "unist-util-visit": "^1.1.0" @@ -9688,21 +10867,21 @@ "dev": true }, "unist-util-visit": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", - "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dev": true, "requires": { "unist-util-visit-parents": "^2.0.0" } }, "unist-util-visit-parents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz", - "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, "requires": { - "unist-util-is": "^2.1.2" + "unist-util-is": "^3.0.0" } }, "universalify": { @@ -9753,13 +10932,19 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true }, "uri-js": { @@ -9808,6 +10993,14 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "util-deprecate": { @@ -9832,9 +11025,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", "dev": true }, "validate-npm-package-license": { @@ -9848,9 +11041,9 @@ } }, "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==" }, "verror": { "version": "1.10.0", @@ -9884,9 +11077,9 @@ } }, "vfile-location": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.4.tgz", - "integrity": "sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz", + "integrity": "sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==", "dev": true }, "vfile-message": { @@ -9899,13 +11092,10 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true }, "watchpack": { "version": "1.6.0", @@ -9916,20 +11106,387 @@ "chokidar": "^2.0.2", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "webpack": { - "version": "4.29.5", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.5.tgz", - "integrity": "sha512-DuWlYUT982c7XVHodrLO9quFbNpVq5FNxLrMUfYUTlgKW0+yPimynYf1kttSQpEneAL1FH3P3OLNgkyImx8qIQ==", + "version": "4.36.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.36.1.tgz", + "integrity": "sha512-Ej01/N9W8DVyhEpeQnbUdGvOECw0L46FxS12cCOs8gSK7bhUlrbHRnWkjiXckGlHjUrmL89kDpTRIkUk6Y+fKg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-module-context": "1.8.3", - "@webassemblyjs/wasm-edit": "1.8.3", - "@webassemblyjs/wasm-parser": "1.8.3", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.0", "ajv": "^6.1.0", "ajv-keywords": "^3.1.0", "chrome-trace-event": "^1.0.0", @@ -9950,78 +11507,360 @@ "webpack-sources": "^1.3.0" }, "dependencies": { - "eslint-scope": { + "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } - } - } - }, - "webpack-cli": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.3.tgz", - "integrity": "sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.4" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "global-modules": { + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "kind-of": "^6.0.0" } }, - "global-prefix": { + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-cli": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", + "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", @@ -10048,36 +11887,87 @@ "mem": "^4.0.0" } }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -10095,6 +11985,19 @@ "fs-extra": "^7.0.0", "lodash": ">=3.5 <5", "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, "webpack-sources": { @@ -10105,14 +12008,6 @@ "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "which": { @@ -10146,14 +12041,19 @@ "dev": true }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" } }, + "wp-license-compatibility": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wp-license-compatibility/-/wp-license-compatibility-1.0.0.tgz", + "integrity": "sha512-tnDsMDBFp2hnNk6CaV1lSF+0DBwEN/sWw5TRRsEUXrXA02gRLDRzoplClOBnmqs3qkpPnx47n7VZYJ7Dn/q+XA==" + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -10223,9 +12123,9 @@ "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { diff --git a/package.json b/package.json index 007b40d..2640cf1 100644 --- a/package.json +++ b/package.json @@ -4,39 +4,46 @@ "description": "Theme Sniffer plugin using sniffs. `WordPress-Theme` standard is used from WPTRT/WordPress-Coding-Standards.", "main": "", "dependencies": { - "@babel/polyfill": "^7.0.0", - "autoprefixer": "^9.4.8", + "@babel/polyfill": "^7.4.4", + "autoprefixer": "^9.6.0", + "clipboard": "^2.0.4", "cssnano": "^4.1.10", - "jquery": "^3.3.1" + "jquery": "^3.4.1", + "primer-tooltips": "^2.0.0", + "wp-license-compatibility": "^1.0.0" }, "devDependencies": { - "@babel/core": "^7.3.3", - "@babel/preset-env": "^7.3.1", + "@babel/core": "^7.4.5", + "@babel/preset-env": "^7.4.5", "archiver": "^3.0.0", - "babel-eslint": "^10.0.1", - "babel-loader": "^8.0.5", - "clean-webpack-plugin": "^1.0.1", - "css-loader": "^2.1.0", - "eslint": "^5.14.1", + "babel-eslint": "^10.0.2", + "babel-loader": "^8.0.6", + "clean-webpack-plugin": "^3.0.0", + "create-file-webpack": "^1.0.2", + "cross-env": "^5.2.0", + "css-loader": "^3.0.0", + "eslint": "^5.16.0", + "eslint-cli": "^1.1.1", "eslint-config-wordpress": "^2.0.0", "filemanager-webpack-plugin": "^2.0.5", - "fs-extra": "^7.0.1", - "husky": "^1.3.1", - "mini-css-extract-plugin": "^0.5.0", - "node-sass": "^4.11.0", + "fs-extra": "^8.0.1", + "husky": "^2.4.1", + "mini-css-extract-plugin": "^0.7.0", + "node-sass": "^4.12.0", "rimraf": "^2.6.3", "sass-loader": "^7.1.0", "style-loader": "^0.23.1", - "stylelint": "^9.10.1", - "stylelint-config-wordpress": "^13.1.0", - "uglifyjs-webpack-plugin": "^2.1.1", - "webpack": "^4.29.5", - "webpack-cli": "^3.2.3", - "webpack-manifest-plugin": "^2.0.3" + "stylelint": "^10.1.0", + "stylelint-config-wordpress": "^14.0.0", + "terser-webpack-plugin": "^1.3.0", + "webpack": "^4.35.0", + "webpack-cli": "^3.3.4", + "webpack-manifest-plugin": "^2.0.4" }, "scripts": { - "start": "NODE_ENV=development webpack --progress --watch --display-error-details --display-modules --display-reasons --mode development", - "build": "composer dump-autoload && NODE_ENV=production webpack -p --progress --mode production" + "start": "cross-env NODE_ENV=development && webpack --progress --watch --display-error-details --display-modules --display-reasons --mode development", + "build": "composer dump-autoload && cross-env NODE_ENV=production webpack -p --progress --mode production", + "precommit": "eslint assets/dev/scripts/*.js --fix && stylelint \"assets/dev/styles/**/*.scss\" --syntax scss && ./vendor/bin/phpcs --ignore=*/vendor/*,*/node_modules/* ." }, "repository": { "type": "git", @@ -70,7 +77,7 @@ ], "husky": { "hooks": { - "pre-commit": "eslint assets/dev/scripts/*.js && stylelint \"assets/dev/styles/**/*.scss\" --syntax scss && ./vendor/bin/phpcs --ignore=*/vendor/*,*/node_modules/* ." + "pre-commit": "npm run precommit" } } } diff --git a/phpunit.integration.xml.dist b/phpunit.integration.xml.dist index 5e6e993..6a3fff4 100644 --- a/phpunit.integration.xml.dist +++ b/phpunit.integration.xml.dist @@ -4,6 +4,7 @@ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.5/phpunit.xsd" backupGlobals="false" backupStaticAttributes="false" + beStrictAboutCoversAnnotation="true" bootstrap="tests/bootstrap-integration.php" colors="true" convertErrorsToExceptions="true" @@ -33,7 +34,7 @@ - + diff --git a/readme.txt b/readme.txt index 81b2c2f..9f38719 100644 --- a/readme.txt +++ b/readme.txt @@ -1,10 +1,10 @@ === Theme Sniffer === -Contributors: dingo_d, rabmalin, grapplerulrich, timph +Contributors: dingo_d, rabmalin, grapplerulrich, timph, vyskoczilova, abdullahramzan, williampatton Tags: check, checker, coding standards, theme, tool Requires at least: 4.7 -Tested up to: 5.1.0 +Tested up to: 5.2.2 Requires PHP: 7.0 -Stable tag: 1.0.0 +Stable tag: 1.1.1 License: MIT License URI: https://opensource.org/licenses/MIT @@ -61,7 +61,12 @@ Go to the official repo on Github (https://github.com/WPTRT/theme-sniffer), fork = Contributors and testers thanks = -Thanks to Danny Cooper, Liton Arefin and metallicarosetail (slack) for testing the plugin and finding bugs in the development stage. Thanks to the TRT for the support. +Thanks to Danny Cooper, Liton Arefin and metallicarosetail (slack) for testing the plugin and finding bugs in the development stage. + +Thanks to Abdullah Ramzan for fixing minor typos, William Patton for help with the required files checks. Thanks to Karolína Vyskočilová for finding out the issue with cross-env issue. + +Thanks to the TRT for the support. + == Upgrade Notice == @@ -69,14 +74,32 @@ The latest upgrade mostly with development changes and some minor improvements i == Changelog == += 1.1.1 = +* Fixed bug in the screenshot ratio calculation + += 1.1.0 = +* Added sniff codes that can be copied for easier whitelisting of the false issues +* Added readme validator +* Added Screenshot validator +* Added required files checks +* Added checks for core minimum PHP version +* Added a license validator +* Updated WPThemeReview coding standards to the 0.2.0 version +* Moved JS checking to esprima +* Moved installation error to admin notice +* Validation improvements +* Fixed annotation issue - the ingore annotation checkbox worked counter to what it should +* Fixed cross-env issue for development on Windows machines +* Minor fixes + = 1.0.0 = -* Refactored the code structure to more modern workflow -* Updated the PHPCS version to the latest one, as well as WPCS version * Added the WPThemeReview standard * Added the theme prefix checks * Added `Check only PHP files`option -* Theme tags are pulled from the API * Added additional functionality +* Updated the PHPCS version to the latest one, as well as WPCS version +* Refactored the code structure to more modern workflow +* Theme tags are pulled from the API = 0.1.5 = * Change the development process diff --git a/screenshot.png b/screenshot.png index 1b389bfb3a9be66deca5e165e836a13858669278..8fc2cb7882f6ff4fec3fea6041f11669022758f1 100644 GIT binary patch literal 69583 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

`yu$1))Is(%ZlqA85fziUFxu0N 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 esc_html__( 'Check in progress', 'theme-sniffer' ), 'errorReport' => esc_html__( 'Error', 'theme-sniffer' ), 'ajaxAborted' => esc_html__( 'Checking stopped', 'theme-sniffer' ), + 'copySuccess' => esc_attr__( 'Copied!', 'theme-sniffer' ), ] ); @@ -146,8 +147,9 @@ protected function process_attributes( $atts ) : array { $atts['error'] = esc_html( $e->getMessage() ); } - $atts['standards'] = $this->get_wpcs_standards(); - $atts['php_versions'] = $this->get_php_versions(); + $atts['standards'] = $this->get_wpcs_standards(); + $atts['php_versions'] = $this->get_php_versions(); + $atts['minimum_php_version'] = $this->get_minimum_php_version(); return $atts; } diff --git a/src/api/class-template-tags-request.php b/src/api/class-template-tags-request.php index 0136c8b..b769a07 100644 --- a/src/api/class-template-tags-request.php +++ b/src/api/class-template-tags-request.php @@ -9,7 +9,6 @@ namespace Theme_Sniffer\Api; use Theme_Sniffer\Core\Service; -use Theme_Sniffer\Exception; /** * Class that will handle getting template tags and setting them in a transient. @@ -26,16 +25,15 @@ class Template_Tags_Request implements Service { * Register the service. */ public function register() { - add_action( 'init', [ $this, 'check_template_tags' ] ); + add_action( 'load-toplevel_page_theme-sniffer', [ $this, 'check_template_tags' ] ); } /** * Checks the WordPress API for the template tags and stores them in a transient */ public function check_template_tags() { - if ( get_transient( self::TEMPLATE_TRANSIENT ) === false ) { + if ( empty( get_transient( self::TEMPLATE_TRANSIENT ) ) ) { $tags = $this->get_template_tags(); - set_transient( self::TEMPLATE_TRANSIENT, $tags, DAY_IN_SECONDS ); } } @@ -46,14 +44,16 @@ public function check_template_tags() { * Calls and returns the list of template tags, categorized like in the API * response. * - * @throws Api_Response_Error If API is down. * @return array Array of allowed template tags. */ private function get_template_tags() { $tags_response = wp_remote_get( self::TEMPLATE_API_URL ); if ( is_wp_error( $tags_response ) ) { - throw Api_Response_Error::message( $tags_response->get_error_message() ); + $this->error = $tags_response->get_error_message(); + add_action( 'admin_notices', [ $this, 'notice' ] ); + + return false; } $tags_decoded = json_decode( wp_remote_retrieve_body( $tags_response ), true ); @@ -67,4 +67,19 @@ private function get_template_tags() { ), ]; } + + /** + * Notice Markup. + * + * This is displayed in admin notice when tags request fails. + * + * @since 1.1.0 + */ + public function notice() { + ?> +

+ $check_php_only, 'show_warnings' => $show_warnings, 'minimum_php_version' => $minimum_php_version, 'args' => $args, @@ -475,21 +478,31 @@ function( $standard ) use ( $standards ) { $total_fixable = $sniffer_results[ self::TOTALS ][ self::FIXABLE ]; $total_files = $sniffer_results[ self::FILES ]; - $required_results = $this->required_files_check( self::$theme_slug, $check_php_only ); - - $total_errors += $required_results[ self::TOTALS ][ self::ERRORS ]; - $total_files += $required_results[ self::FILES ]; - if ( ! $check_php_only ) { // Check theme headers. $theme_header_checks = $this->style_headers_check( self::$theme_slug, $theme, $show_warnings ); $screenshot_checks = $this->screenshot_check(); + $readme_checks = $this->readme_check(); + + foreach ( $screenshot_checks as $file ) { + $total_errors += $file[ self::ERRORS ]; + $total_warning += $file[ self::WARNINGS ]; + } + + $total_files += $screenshot_checks; - $total_errors += $theme_header_checks[ self::TOTALS ][ self::ERRORS ] + $screenshot_checks[ self::TOTALS ][ self::ERRORS ]; + foreach ( $readme_checks as $file ) { + $total_errors += $file[ self::ERRORS ]; + $total_warning += $file[ self::WARNINGS ]; + } + + $total_files += $readme_checks; + + $total_errors += $theme_header_checks[ self::TOTALS ][ self::ERRORS ]; $total_warning += $theme_header_checks[ self::TOTALS ][ self::WARNINGS ]; $total_fixable += $theme_header_checks[ self::TOTALS ][ self::FIXABLE ]; - $total_files += $theme_header_checks[ self::FILES ] + $screenshot_checks[ self::FILES ]; + $total_files += $theme_header_checks[ self::FILES ]; } // Filtering the files for easier JS handling. @@ -497,7 +510,9 @@ function( $standard ) use ( $standards ) { $files = []; foreach ( $total_files as $file_path => $file_sniff_results ) { - if ( $file_sniff_results[ self::ERRORS ] === 0 && $file_sniff_results[ self::WARNINGS ] === 0 ) { + + // Allow the file list to pass any .js through for further handling, and remove all others with no errors or warnings. + if ( substr( $file_path, -3 ) !== '.js' && ( $file_sniff_results[ self::ERRORS ] === 0 && $file_sniff_results[ self::WARNINGS ] === 0 ) ) { continue; } @@ -533,6 +548,7 @@ protected function get_sniff_results( ...$arguments ) { $minimum_php_version = $arguments[0]['minimum_php_version']; $args = $arguments[0]['args']; $theme_prefixes = $arguments[0]['theme_prefixes']; + $extensions = $arguments[0]['extensions']; $all_files = $arguments[0]['all_files']; $standards_array = $arguments[0]['standards_array']; $ignore_annotations = $arguments[0]['ignore_annotations']; @@ -545,13 +561,20 @@ protected function get_sniff_results( ...$arguments ) { $config_args = [ '-s', '-p' ]; if ( $show_warnings === '0' ) { - $config_args = [ '-s', '-p', '-n' ]; + $config_args[] = '-n'; } $runner->config = new Config( $config_args ); $all_files = array_values( $all_files ); + if ( $extensions ) { + $runner->config->extensions = [ + 'php' => 'PHP', + 'inc' => 'PHP', + ]; + } + $runner->config->standards = $standards_array; $runner->config->files = $all_files; $runner->config->annotations = $ignore_annotations; @@ -633,7 +656,7 @@ protected function style_headers_check( $theme_slug, \WP_Theme $theme, $show_war ]; } - if ( strpos( $theme_slug, 'wordpress' ) || strpos( $theme_slug, 'theme' ) ) { // WPCS: spelling ok. + if ( strpos( $theme_slug, 'wordpress' ) || strpos( $theme_slug, 'theme' ) ) { // phpcs:ignore $notices[] = [ self::MESSAGE => esc_html__( 'The theme name cannot contain WordPress or Theme as a part of its name.', 'theme-sniffer' ), self::SEVERITY => self::ERROR, @@ -769,155 +792,25 @@ protected function style_headers_check( $theme_slug, \WP_Theme $theme, $show_war } /** - * Required Files Check + * Performs readme.txt sniffs. * - * @since 1.0.0 + * @since 1.1.0 * - * @param string $theme_slug The theme's slug to check for required files. - * @param bool $check_php_only Is checking only PHP files. - * - * @return array $required_file_check Array to send to reporter. + * @return array $check Sniffer file report. */ - protected function required_files_check( $theme_slug, $check_php_only ) { - - $required_files = [ 'comments.php', 'functions.php', 'readme.txt', 'screenshot.png' ]; - - if ( $check_php_only ) { - $required_files = array_filter( - $required_files, - function( $file ) { - return strpos( $file, '.php' ) !== false; - } - ); - } - - $required_file_check = [ - self::TOTALS => [ - self::ERRORS => 0, - self::WARNINGS => 0, - self::FIXABLE => 0, - ], - self::FILES => [], - ]; - - $theme_root = get_theme_root( $theme_slug ); - - foreach ( $required_files as $file ) { - $required = self::$theme_root . "/{$theme_slug}/{$file}"; - if ( ! file_exists( $required ) ) { - self::$missing_files[] = [ $file => $required ]; - $required_file_check[ self::TOTALS ][ self::ERRORS ]++; - $required_file_check[ self::FILES ][ $required ] = [ - self::ERRORS => 1, - self::WARNINGS => 0, - self::MESSAGES => [ - [ - self::MESSAGE => sprintf( - /* translators: The filename that is missing. */ - esc_html__( 'Theme is missing %s! This file is required for all WordPress themes.', 'theme-sniffer' ), - $file - ), - self::SEVERITY => self::ERROR, - self::FIXABLE => false, - self::TYPE => strtoupper( self::ERROR ), - ], - ], - ]; - } - } - - return $required_file_check; + protected function readme_check() { + $validator = new Readme( self::$theme_slug ); + return $validator->get_results(); } /** - * Perform screenshot.png checks. - * - * This will check for: - * - Invalid png image. - * - Valid mime type. - * - Dimensions not exceeeding 1200x900. + * Perform screenshot sniffs. * * @since 1.0.0 */ protected function screenshot_check() { - $screenshot = 'screenshot.png'; - if ( isset( self::$missing_files[ $screenshot ] ) ) { - return; - } - - $file = implode( '/', [ self::$theme_root, self::$theme_slug, $screenshot ] ); - $check = [ - self::TOTALS => [ - self::ERRORS => 0, - self::WARNINGS => 0, - self::FIXABLE => 0, - ], - self::FILES => [ - $file => [ - self::ERRORS => 0, - self::WARNINGS => 0, - self::MESSAGES => [], - ], - ], - ]; - - $mime_type = wp_get_image_mime( $file ); - - // Missing mime type. - if ( ! $mime_type ) { - $check[ self::TOTALS ][ self::ERRORS ]++; - $check[ self::FILES ][ $file ][ self::ERRORS ]++; - $check[ self::FILES ][ $file ][ self::MESSAGES ][] = [ - self::MESSAGE => sprintf( - esc_html__( 'Screenshot mime type could not be determined, screenshots must have a mime type of "img/png".', 'theme-sniffer' ), - $mime_type - ), - self::SEVERITY => self::ERROR, - self::FIXABLE => false, - self::TYPE => strtoupper( self::ERROR ), - ]; - - return $check; - } - - // Valid mime type returned, but not a png. - if ( $mime_type !== 'image/png' ) { - $check[ self::TOTALS ][ self::ERRORS ]++; - $check[ self::FILES ][ $file ][ self::ERRORS ]++; - $check[ self::FILES ][ $file ][ self::MESSAGES ][] = [ - self::MESSAGE => sprintf( - /* translators: The screenshot.png's mime type. */ - esc_html__( 'Screenshot has mime type of "%s", but requires a mimetype of "img/png".', 'theme-sniffer' ), - $mime_type - ), - self::SEVERITY => self::ERROR, - self::FIXABLE => false, - self::TYPE => strtoupper( self::ERROR ), - ]; - - return $check; - } - - // Screenshot mime validated at this point, so check dimensions - no need for fileinfo. - list( $width, $height ) = getimagesize( $file ); - - if ( $width > 1200 || $height > 900 ) { - $check[ self::TOTALS ][ self::ERRORS ]++; - $check[ self::FILES ][ $file ][ self::ERRORS ]++; - $check[ self::FILES ][ $file ][ self::MESSAGES ][] = [ - self::MESSAGE => sprintf( - /* translators: 1: screenshot width 2: screenshot height */ - esc_html__( 'The size of your screenshot should not exceed 1200x900, but screenshot.png is currently %1$dx%2$d.', 'theme-sniffer' ), - $width, - $height - ), - self::SEVERITY => self::ERROR, - self::FIXABLE => false, - self::TYPE => strtoupper( self::ERROR ), - ]; - } - - return $check; + $validator = new Screenshot( self::$theme_slug ); + return $validator->get_results(); } /** diff --git a/src/class-plugin.php b/src/class-plugin.php index 5218644..fff0775 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -53,6 +53,11 @@ public function __construct( Assets_Handler $assets_handler = null ) { * @throws Exception\Plugin_Activation_Failure If a condition for plugin activation isn't met. */ public function activate() { + if ( ! is_callable( 'shell_exec' ) || false !== stripos( ini_get( 'disable_functions' ), 'shell_exec' ) ) { + $error_message = esc_html__( 'Theme Sniffer requires shell_exec to be enabled to function.', 'theme-sniffer' ); + throw Exception\Plugin_Activation_Failure::activation_message( $error_message ); + }; + if ( ! function_exists( 'is_plugin_active_for_network' ) ) { include_once ABSPATH . '/wp-admin/includes/plugin.php'; } diff --git a/src/helpers/file-helpers-trait.php b/src/helpers/file-helpers-trait.php new file mode 100644 index 0000000..fc9aa07 --- /dev/null +++ b/src/helpers/file-helpers-trait.php @@ -0,0 +1,47 @@ +license_data = $this->set_license_data(); + } + + /** + * Gets license validation data. + * + * @since 1.1.0 + * + * @return array License validation data. + */ + public function set_license_data() : array { + $licenses_path = WP_PLUGIN_DIR . plugin_dir_path( '/theme-sniffer/assets/build/licenses.json' ); + $licenses_file = file_get_contents( $licenses_path . 'licenses.json' ); + return json_decode( $licenses_file, true ); + } + + /** + * Find license matches. + * + * @since 1.1.0 + * + * @param string $id License identififier. + * + * @return object $reponse Object containing license critera and match information. + */ + public function find_license( $id ) { + $response = (object) []; + $response->provided = $id; + $response->deprecated = []; + $response->live = []; + + // SPDX ID exact match, so skip loop. + $found = $this->license_data[ $response->provided ] ?? []; + + // Check if license is deprecated. Set data. + if ( $found ) { + $response->id = $found['licenseId']; + if ( $found['isDeprecatedLicenseId'] ) { + $response->deprecated[ $response->provided ] = $found; + } else { + $response->live[ $response->provided ] = $found; + } + } else { + foreach ( $this->license_data as $license => $details ) { + if ( in_array( $response->provided, $details['names'], true ) || in_array( $response->provided, $details['ids'], true ) ) { + if ( $this->license_data[ $license ]['isDeprecatedLicenseId'] ) { + $response->deprecated[ $license ] = $details; + } else { + $response->live[ $license ] = $details; + } + } + } + } + + return $this->get_response_message( $response ); + } + + /** + * Get license match messages. + * + * @since 1.1.0 + * + * @param Object $response Object containing license critera and match information. + * + * @return Object $response Object containing license critera and match information. + */ + public function get_response_message( $response ) { + + // Non-deprecated license matches found - check here. Names can match deprecated licenses as well. + if ( ! empty( $response->live ) ) { + + // Single live license match. + if ( count( $response->live ) === 1 ) { + $details = current( $response->live ); + + // Set the ID for easier lookup in other checks. + $response->id = $details['licenseId']; + + // Provided a SPDX name that matched. + if ( $response->provided === $details['name'] ) { + $response->status = 'warning'; + /* translators: 1: a SPDX license name. 2: the recommended SPDX ID to use instead. */ + $response->message = sprintf( esc_html__( 'Found a valid SPDX name, %1$s, but it is better to use the SPDX ID: %2$s', 'theme-sniffer' ), $response->provided, $details['licenseId'] ); + } elseif ( $response->provided === $details['licenseId'] ) { // A Valid SPDX ID was found, no message required. + $response->status = 'success'; + $response->message = null; + } else { // A single match was found for FSF critera. + $response->status = 'warning'; + /* translators: 1: a SPDX license name. 2: the recommended SPDX ID to use instead. */ + $response->message = sprintf( esc_html__( 'Found valid license information based on FSF naming: %1$s, but it is better to use the SPDX ID: %2$s', 'theme-sniffer' ), $response->provided, $details['licenseId'] ); + } + } else { // Multiple matches returned, so it's FSF provided critera. + $matches = array_keys( $response->live ); + $response->status = 'warning'; + /* translators: %s: listing of license IDs matched. */ + $response->message = sprintf( esc_html__( 'Found multiple records matching these licenses: %s, it\'s required to use a single SPDX Idenitfier!', 'theme-sniffer' ), implode( ', ', $matches ) ); + } + } elseif ( ! empty( $response->deprecated ) ) { // Deprecated match found. + $response->status = 'warning'; + /* translators: %s: User provided license identifier. */ + $response->message = sprintf( esc_html__( 'The license identification provided, $s, indicates a deprecated license! Please use a valid SPDX Identifier!', 'theme-sniffer' ), $response->provided ); + } else { // No matches found. + $response->status = 'warning'; + /* translators: %s: unrecognized user provided license identifier */ + $response->message = sprintf( esc_html__( 'No matching license critera could be determined from: %s!', 'theme-sniffer' ), $response->provided ); + } + + return $response; + } + + /** + * Check if a license critera object is gpl compatible. + * + * @since 1.1.0 + * + * @param Object $license A license critera object. + * + * @return bool License critera is GPLv2 compatible. + */ + public function is_gpl2_or_later_compatible( $license ) { + $gpl = false; + + if ( ! empty( $license->id ) ) { + + // Check if license is flagged as GPLv2.0 Compatible. + $gpl = $this->license_data[ $license->id ]['isGpl2Compatible'] || $this->license_data[ $license->id ]['isGpl3Compatible']; + } + + return $gpl; + } + + /** + * Get blacklisted resources. + * + * @since 1.1.0 + * + * @return array Blacklisted resource urls. + */ + public function get_blacklist() : array { + return [ + 'unsplash', + 'sxc.hu', + 'photopin.com', + 'publicdomainpictures.net', + 'splitshire.com', + 'pixabay.com', + ]; + } +} diff --git a/src/helpers/sniffer-helpers-trait.php b/src/helpers/sniffer-helpers-trait.php index 81a2733..f58c849 100644 --- a/src/helpers/sniffer-helpers-trait.php +++ b/src/helpers/sniffer-helpers-trait.php @@ -162,4 +162,135 @@ public function get_required_headers() { 'TextDomain', ]; } + + /** + * Check WP Core's Required PHP Version + * + * The functionality to check WP core wasn't added until 5.1.0, so this will + * address users who are on older WP versions and fetch from the API. The + * code is copied from the core function wp_check_php_version. + * + * @link https://developer.wordpress.org/reference/functions/wp_check_php_version/ + * + * @since 1.1.0 + * + * @return string|false $response String containing minimum PHP version required for user's install of WP. False on failure. + */ + public function get_wp_minimum_php_version() { + if ( function_exists( 'wp_check_php_version' ) ) { + $response = wp_check_php_version(); + } else { + $version = phpversion(); + $key = md5( $version ); + + $response = get_site_transient( 'php_check_' . $key ); + if ( false === $response ) { + $url = 'http://api.wordpress.org/core/serve-happy/1.0/'; + if ( wp_http_supports( array( 'ssl' ) ) ) { + $url = set_url_scheme( $url, 'https' ); + } + + $url = add_query_arg( 'php_version', $version, $url ); + + $response = wp_remote_get( $url ); + + if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { + return false; + } + + /** + * Response should be an array with: + * 'recommended_version' - string - The PHP version recommended by WordPress. + * 'is_supported' - boolean - Whether the PHP version is actively supported. + * 'is_secure' - boolean - Whether the PHP version receives security updates. + * 'is_acceptable' - boolean - Whether the PHP version is still acceptable for WordPress. + */ + $response = json_decode( wp_remote_retrieve_body( $response ), true ); + + if ( ! is_array( $response ) ) { + return false; + } + + set_site_transient( 'php_check_' . $key, $response, WEEK_IN_SECONDS ); + } + + if ( isset( $response['is_acceptable'] ) && $response['is_acceptable'] ) { + /** + * Filters whether the active PHP version is considered acceptable by WordPress. + * + * Returning false will trigger a PHP version warning to show up in the admin dashboard to administrators. + * + * This filter is only run if the wordpress.org Serve Happy API considers the PHP version acceptable, ensuring + * that this filter can only make this check stricter, but not loosen it. + * + * @since 5.1.1 + * + * @param bool $is_acceptable Whether the PHP version is considered acceptable. Default true. + * @param string $version PHP version checked. + */ + $response['is_acceptable'] = (bool) apply_filters( 'wp_is_php_version_acceptable', true, $version ); + } + } + + if ( ! isset( $response['minimum_version'] ) ) { + return false; + } + + return $response['minimum_version']; + } + + /** + * Helper method to get the minimum PHP version supplied by theme + * or the WP core default. + * + * @since 1.1.0 + * + * @return string Minimum PHP Version String. + */ + public function get_minimum_php_version() { + + // WP Core minimum PHP version - only used for fallback if API fails, and no transient stored. + $minimum_php_version = '5.2'; + + // Check API for minimum WP core version supported. + $php_check = $this->get_wp_minimum_php_version(); + + // Checks response success or transient data. + if ( $php_check !== false ) { + $minimum_php_version = $php_check; + } + + $readme = wp_normalize_path( get_template_directory() . '/readme.txt' ); + + if ( file_exists( $readme ) ) { + + // Check if theme has set minimum PHP version in it's readme.txt file. + $theme_php_version = get_file_data( $readme, [ 'minimum_php_version' => 'Requires PHP' ] ); + + // Theme has provided an override to minimum PHP version defined by WP Core. + if ( ! empty( $theme_php_version['minimum_php_version'] ) ) { + $minimum_php_version = $theme_php_version['minimum_php_version']; + } + } + + // Theme Sniffer's supported PHP version strings are X.X format. + $minimum_php_version = substr( $minimum_php_version, 0, 3 ); + + // Check Theme Sniffer's supported PHP Versions and find closest PHP version. + $supported_php_version = null; + $theme_sniffer_versions = $this->get_php_versions(); + + foreach ( $theme_sniffer_versions as $php_version ) { + if ( $supported_php_version === null || abs( $minimum_php_version - $supported_php_version ) > abs( $php_version - $minimum_php_version ) ) { + $supported_php_version = $php_version; + } + } + + // Ensure a supported version was found or just use the minimum PHP version determined appropriate. + if ( $supported_php_version !== null ) { + $minimum_php_version = $supported_php_version; + } + + return $minimum_php_version; + } } diff --git a/src/sniffs/class-result.php b/src/sniffs/class-result.php new file mode 100644 index 0000000..a4d4d29 --- /dev/null +++ b/src/sniffs/class-result.php @@ -0,0 +1,198 @@ +file = $file; + $this->results = $this->set_format(); + $this->results = $this->set_results( $results ); + } + + /** + * Set results class property. + * + * @since 1.1.0 + * + * @param string $results Results of sniffs. + * + * @return string $results Formatted results of sniffs. + */ + private function set_results( $results ) { + if ( $results ) { + + // Loop results and assign. + foreach ( $results as $result ) { + if ( $result[ self::SEVERITY ] === self::ERROR ) { + $this->results[ $this->file ][ self::ERRORS ]++; + } + + if ( $result[ self::SEVERITY ] === self::WARNING ) { + $this->results[ $this->file ][ self::WARNINGS ]++; + } + + $this->results[ $this->file ][ self::MESSAGES ][] = [ + self::MESSAGE => esc_html( $result[ self::MESSAGE ] ?? '' ), + self::SOURCE => $result[ self::SOURCE ] ?? null, + self::SEVERITY => $result[ self::SEVERITY ] ?? null, + self::FIXABLE => $result[ self::FIXABLE ] ?? false, + self::TYPE => strtoupper( $result[ self::SEVERITY ] ?? '' ), + ]; + } + } + + return $this->results; + } + + /** + * Set format for results class property. + * + * @since 1.1.0 + * + * @return array Formatted result. + */ + private function set_format() { + return [ + $this->file => [ + self::ERRORS => 0, + self::WARNINGS => 0, + self::MESSAGES => [], + ], + ]; + } + + /** + * Return results from all validator parts ran. + * + * @since 1.1.0 + * + * @return array $results Validator warnings/messages. + */ + public function get_results() { + $result = empty( $this->results[ $this->file ][ self::MESSAGES ] ) ? false : $this->results; + return $this->results; + } +} diff --git a/src/sniffs/class-validate-file.php b/src/sniffs/class-validate-file.php new file mode 100644 index 0000000..a68f493 --- /dev/null +++ b/src/sniffs/class-validate-file.php @@ -0,0 +1,154 @@ +theme_slug = $slug; + $this->theme_root = get_theme_root( $this->theme_slug ); + $this->file = $this->set_file(); + $this->validate( $this->file ); + } + + /** + * Set file class property. + * + * @since 1.1.0 + * + * @return string $file Found file. + */ + public function set_file() { + $file = false; + foreach ( $this->extensions as $extenstion ) { + $file = implode( '/', [ $this->theme_root, $this->theme_slug, $this->filename . '.' . $extenstion ] ); + $file = $this->file_exists( $file ); + if ( $file !== false ) { + break; + } + } + + return $file; + } + + /** + * Runs validation. + * + * @since 1.1.0 + * + * @param string $file File to validate. + */ + public function validate( $file ) { + + // No file. + if ( $file === false ) { + + // Set file class property for result output. + $this->file = implode( '/', [ $this->theme_root, $this->theme_slug, $this->filename . '.' . $this->extensions[0] ] ); + + $this->results[] = [ + 'severity' => 'error', + 'message' => sprintf( + /* translators: 1: the file required including name and extension. */ + esc_html__( 'Themes are required to provide %1$s', 'theme-sniffer' ), + $this->filename . '.' . $this->extensions[0] + ), + ]; + + return; + } + + // Valid file but not recommended extension. + $pathinfo = pathinfo( $file ); + + if ( $pathinfo['extension'] !== $this->extensions[0] ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => sprintf( + /* translators: 1: filename being validated 2: file extension found 3: recommended file extension to use */ + esc_html__( '%1$s.%2$s is valid, but %1$s.%3$s is recommended.', 'theme-sniffer' ), + $this->filename, + $pathinfo['extension'], + $this->extensions[0] + ), + ]; + + return; + } + } + + /** + * Return results from all validator parts ran. + * + * @since 1.1.0 + * + * @return array $results Validator errors/warnings/messages. + */ + public function get_results() { + $result = new Result( $this->file, $this->results ); + return $result->get_results(); + } +} diff --git a/src/sniffs/class-validate.php b/src/sniffs/class-validate.php new file mode 100644 index 0000000..83b0e38 --- /dev/null +++ b/src/sniffs/class-validate.php @@ -0,0 +1,67 @@ +args = $args; + $this->init(); + $this->check(); + } + + /** + * Additional initialization logic before check. + * + * @since 1.1.0 + * + * @return void + */ + public function init() {} + + /** + * Classes should check to perform validation in check(). + * + * @since 1.1.0 + * + * @return void + */ + abstract public function check(); + + /** + * Retrieve the results from the validate check method. + * + * @since 1.1.0 + * + * @return array $results Results from validation check. + */ + public function get_results() { + return $this->results; + } +} diff --git a/src/sniffs/has-results-interface.php b/src/sniffs/has-results-interface.php new file mode 100644 index 0000000..8ce8e7c --- /dev/null +++ b/src/sniffs/has-results-interface.php @@ -0,0 +1,23 @@ +args ) { + return; + } + + // Check each user's profile in list. + foreach ( $this->args as $contributor ) { + $profile = "https://profiles.wordpress.org/{$contributor}/"; + $response = wp_remote_head( $profile, [ 'timeout' => 20 ] ); + + // Error with remote request. + if ( is_wp_error( $response ) ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => esc_html__( 'Something went wrong when remotely reaching out to WordPress.org to valid the contributors in readme.txt' ), + ]; + + continue; + } + + $status = wp_remote_retrieve_response_code( $response ); + + // Successful validatation. + if ( $status === 200 ) { + continue; + } + + // Profile page redirect. + if ( $status === 302 ) { + $this->results[] = [ + 'severity' => 'error', + /* translators: %s: a contributor's username for WordPress.org that wasn't found. */ + 'message' => sprintf( esc_html__( 'The user %s, is not a valid WordPress.org username!', 'theme-sniffer' ), $contributor ), + ]; + + continue; + } + + // Catch all error if something beyond this.. + $this->results[] = [ + 'severity' => 'warning', + 'message' => esc_html__( 'Something went wrong when validating readme.txt\'s contributors list!', 'theme-sniffer' ), + ]; + } + } +} diff --git a/src/sniffs/readme/class-license-uri.php b/src/sniffs/readme/class-license-uri.php new file mode 100644 index 0000000..3f2ead1 --- /dev/null +++ b/src/sniffs/readme/class-license-uri.php @@ -0,0 +1,85 @@ +license_uri_helpers(); + } + + /** + * Check License URI from readme.txt + * + * @since 1.1.0 + */ + public function check() { + $license = $this->find_license( $this->args->primary ); + + // Still report errors when license status is warning (or success of course). + if ( $license->status !== 'warning' ) { + $uris = $this->license_data[ $license->id ]['uris']; + + // Missing License URI field warning. + if ( empty( $this->args->uri ) ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => esc_html__( 'All themes are required to provide a License URI in their readme.txt!', 'theme-sniffer' ), + ]; + } + + // URI field is invalid. + if ( empty( preg_grep( '/^' . preg_quote( $this->args->uri, '/' ) . '$/i', $uris ) ) ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => wp_kses( + sprintf( + /* translators: 1: the user provided License URI in readme.txt 2: the license comparing against in readme.txt 3: a list of suitable license URIs that could be used */ + __( 'The License URI provided: %1$s, is not a known URI reference for the license %2$s. These are recognized URIs for the license provided:
%3$s', 'theme-sniffer' ), + $this->args->uri, + $this->args->primary, + implode( '
', $uris ) + ), + [ + 'br' => [], + ] + ), + ]; + } + } else { + // Unable to determine License URI without valid License. + $this->results[] = [ + 'severity' => 'warning', + 'message' => esc_html__( 'Unable to determine License URI with an invalid License supplied in readme.txt!', 'theme-sniffer' ), + ]; + } + } +} diff --git a/src/sniffs/readme/class-license.php b/src/sniffs/readme/class-license.php new file mode 100644 index 0000000..2e70477 --- /dev/null +++ b/src/sniffs/readme/class-license.php @@ -0,0 +1,67 @@ +license_helpers(); + } + + /** + * Check license from readme.txt + * + * @since 1.1.0 + */ + public function check() { + $license_data = $this->find_license( $this->args ); + + // Only report errors. + if ( $license_data->status !== 'success' ) { + $this->results[] = [ + 'severity' => $license_data->status, + 'message' => $license_data->message, + ]; + } + + // Check if GPLv2 compatible if no errors found with License Identifier so far. + if ( $license_data->status !== 'warning' && ! $this->is_gpl2_or_later_compatible( $license_data ) ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => sprintf( + /* translators: %s: the license specified in readme.txt */ + esc_html__( 'The license specified, %s is not compatible with WordPress\' license of GPL-2.0-or-later. All themes must meet this requirement!' ), + $this->args + ), + ]; + } + } +} diff --git a/src/sniffs/readme/class-parser.php b/src/sniffs/readme/class-parser.php new file mode 100644 index 0000000..089fecb --- /dev/null +++ b/src/sniffs/readme/class-parser.php @@ -0,0 +1,789 @@ + to + * + * @var array + */ + private $alias_sections = [ + 'frequently_asked_questions' => 'faq', + 'change_log' => 'changelog', + ]; + + /** + * These are the valid header mappings for the header. + * + * @var array + */ + private $valid_headers = [ + 'tested' => 'tested', + 'tested up to' => 'tested', + 'requires' => 'requires', + 'requires at least' => 'requires', + 'requires php' => 'requires_php', + 'tags' => 'tags', + 'contributors' => 'contributors', + 'donate link' => 'donate_link', + 'stable tag' => 'stable_tag', + 'license' => 'license', + 'license uri' => 'license_uri', + 'resources' => 'resources', + ]; + + /** + * These plugin tags are ignored. + * + * @var array + */ + private $ignore_tags = []; + + /** + * Parser constructor. + * + * @param string $file + */ + public function __construct( $file ) { + if ( $file ) { + $this->parse_readme( $file ); + } + } + + /** + * @param string $file + * @return bool + */ + protected function parse_readme( $file ) { + $contents = file_get_contents( $file ); + if ( preg_match( '!!u', $contents ) ) { + $contents = preg_split( '!\R!u', $contents ); + } else { + $contents = preg_split( '!\R!', $contents ); // regex failed due to invalid UTF8 in $contents, see #2298 + } + $contents = array_map( [ $this, 'strip_newlines' ], $contents ); + + // Strip UTF8 BOM if present. + if ( 0 === strpos( $contents[0], "\xEF\xBB\xBF" ) ) { + $contents[0] = substr( $contents[0], 3 ); + } + + // Convert UTF-16 files. + if ( 0 === strpos( $contents[0], "\xFF\xFE" ) ) { + foreach ( $contents as $i => $line ) { + $contents[ $i ] = mb_convert_encoding( $line, 'UTF-8', 'UTF-16' ); + } + } + + $line = $this->get_first_nonwhitespace( $contents ); + $this->name = $this->sanitize_text( trim( $line, "#= \t\0\x0B" ) ); + + // Strip Github style header\n==== underlines. + if ( ! empty( $contents ) && '' === trim( $contents[0], '=-' ) ) { + array_shift( $contents ); + } + + // Handle readme's which do `=== Plugin Name ===\nMy SuperAwesomePlugin Name\n...` + if ( 'plugin name' == strtolower( $this->name ) ) { + $this->name = $line = $this->get_first_nonwhitespace( $contents ); + + // Ensure that the line read wasn't an actual header or description. + if ( strlen( $line ) > 50 || preg_match( '~^(' . implode( '|', array_keys( $this->valid_headers ) ) . ')\s*:~i', $line ) ) { + $this->name = false; + array_unshift( $contents, $line ); + } + } + + // Parse headers. + $headers = []; + + $line = $this->get_first_nonwhitespace( $contents ); + do { + $value = null; + if ( false === strpos( $line, ':' ) ) { + + // Some plugins have line-breaks within the headers. + if ( empty( $line ) ) { + break; + } else { + continue; + } + } + + $bits = explode( ':', trim( $line ), 2 ); + list( $key, $value ) = $bits; + $key = strtolower( trim( $key, " \t*-\r\n" ) ); + if ( isset( $this->valid_headers[ $key ] ) ) { + $headers[ $this->valid_headers[ $key ] ] = trim( $value ); + } + } while ( ( $line = array_shift( $contents ) ) !== null ); + array_unshift( $contents, $line ); + + if ( ! empty( $headers['tags'] ) ) { + $this->tags = explode( ',', $headers['tags'] ); + $this->tags = array_map( 'trim', $this->tags ); + $this->tags = array_filter( $this->tags ); + $this->tags = array_diff( $this->tags, $this->ignore_tags ); + } + + if ( ! empty( $headers['requires'] ) ) { + $this->requires = $this->sanitize_requires_version( $headers['requires'] ); + } + + if ( ! empty( $headers['tested'] ) ) { + $this->tested = $this->sanitize_tested_version( $headers['tested'] ); + } + + if ( ! empty( $headers['requires_php'] ) ) { + $this->requires_php = $this->sanitize_requires_php( $headers['requires_php'] ); + } + + if ( ! empty( $headers['contributors'] ) ) { + $this->contributors = explode( ',', $headers['contributors'] ); + $this->contributors = array_map( 'trim', $this->contributors ); + } + + if ( ! empty( $headers['stable_tag'] ) ) { + $this->stable_tag = $this->sanitize_stable_tag( $headers['stable_tag'] ); + } + + if ( ! empty( $headers['donate_link'] ) ) { + $this->donate_link = $headers['donate_link']; + } + + if ( ! empty( $headers['license'] ) ) { + + // Handle the many cases of "License: GPLv2 - http://..." + if ( empty( $headers['license_uri'] ) && preg_match( '!(https?://\S+)!i', $headers['license'], $url ) ) { + $headers['license_uri'] = $url[1]; + $headers['license'] = trim( str_replace( $url[1], '', $headers['license'] ), " -*\t\n\r\n" ); + } + + $this->license = $headers['license']; + } + + if ( ! empty( $headers['license_uri'] ) ) { + $this->license_uri = $headers['license_uri']; + } + + // Parse the short description. + while ( ( $line = array_shift( $contents ) ) !== null ) { + $trimmed = trim( $line ); + + if ( empty( $trimmed ) ) { + $this->short_description .= "\n"; + continue; + } + + if ( ( '=' === $trimmed[0] && isset( $trimmed[1] ) && '=' === $trimmed[1] ) || + ( '#' === $trimmed[0] && isset( $trimmed[1] ) && '#' === $trimmed[1] ) + ) { + + // Stop after any Markdown heading. + array_unshift( $contents, $line ); + break; + } + + $this->short_description .= $line . "\n"; + } + $this->short_description = trim( $this->short_description ); + + /* + * Parse the rest of the body. + * Pre-fill the sections, we'll filter out empty sections later. + */ + $this->sections = array_fill_keys( $this->expected_sections, '' ); + $current = $section_name = $section_title = ''; + + while ( ( $line = array_shift( $contents ) ) !== null ) { + $trimmed = trim( $line ); + if ( empty( $trimmed ) ) { + $current .= "\n"; + continue; + } + + // Stop only after a ## Markdown header, not a ###. + if ( ( '=' === $trimmed[0] && isset( $trimmed[1] ) && '=' === $trimmed[1] ) || + ( '#' === $trimmed[0] && isset( $trimmed[1] ) && '#' === $trimmed[1] && isset( $trimmed[2] ) && '#' !== $trimmed[2] ) + ) { + + if ( ! empty( $section_name ) ) { + $this->sections[ $section_name ] .= trim( $current ); + } + + $current = ''; + $section_title = trim( $line, "#= \t" ); + $section_name = strtolower( str_replace( ' ', '_', $section_title ) ); + + if ( isset( $this->alias_sections[ $section_name ] ) ) { + $section_name = $this->alias_sections[ $section_name ]; + } + + // If we encounter an unknown section header, include the provided Title, we'll filter it to other_notes later. + if ( ! in_array( $section_name, $this->expected_sections ) ) { + $current .= '

' . $section_title . '

'; + $section_name = 'other_notes'; + } + + continue; + } + + $current .= $line . "\n"; + } + + if ( ! empty( $section_name ) ) { + $this->sections[ $section_name ] .= trim( $current ); + } + + // Filter out any empty sections. + $this->sections = array_filter( $this->sections ); + + // Use the short description for the description section if not provided. + if ( empty( $this->sections['description'] ) ) { + $this->sections['description'] = $this->short_description; + } + + // Suffix the Other Notes section to the description. + if ( ! empty( $this->sections['other_notes'] ) ) { + $this->sections['description'] .= "\n" . $this->sections['other_notes']; + unset( $this->sections['other_notes'] ); + } + + // Parse out the Upgrade Notice section into it's own data. + if ( isset( $this->sections['upgrade_notice'] ) ) { + $this->upgrade_notice = $this->parse_section( $this->sections['upgrade_notice'] ); + $this->upgrade_notice = array_map( array( $this, 'sanitize_text' ), $this->upgrade_notice ); + unset( $this->sections['upgrade_notice'] ); + } + + // Display FAQs as a definition list. + if ( isset( $this->sections['faq'] ) ) { + $this->faq = $this->parse_section( $this->sections['faq'] ); + $this->sections['faq'] = ''; + } + + // Markdownify! + $this->sections = array_map( array( $this, 'parse_markdown' ), $this->sections ); + $this->upgrade_notice = array_map( array( $this, 'parse_markdown' ), $this->upgrade_notice ); + $this->faq = array_map( array( $this, 'parse_markdown' ), $this->faq ); + + // Use the first line of the description for the short description if not provided. + if ( ! $this->short_description && ! empty( $this->sections['description'] ) ) { + $this->short_description = array_filter( explode( "\n", $this->sections['description'] ) )[0]; + } + + // Sanitize and trim the short_description to match requirements. + $this->short_description = $this->sanitize_text( $this->short_description ); + $this->short_description = $this->parse_markdown( $this->short_description ); + $this->short_description = wp_strip_all_tags( $this->short_description ); + $this->short_description = $this->trim_length( $this->short_description, 150 ); + + if ( ! empty( $this->faq ) ) { + // If the FAQ contained data we couldn't parse, we'll treat it as freeform and display it before any questions which are found. + if ( isset( $this->faq[''] ) ) { + $this->sections['faq'] .= $this->faq['']; + unset( $this->faq[''] ); + } + + if ( $this->faq ) { + $this->sections['faq'] .= "\n
\n"; + foreach ( $this->faq as $question => $answer ) { + $question_slug = sanitize_title_with_dashes( $question ); + $this->sections['faq'] .= "
{$question}
\n
{$answer}
\n"; + } + $this->sections['faq'] .= "\n
\n"; + } + } + + // Filter the HTML. + $this->sections = array_map( array( $this, 'filter_text' ), $this->sections ); + + return true; + } + + /** + * @access protected + * + * @param string $contents + * @return string + */ + protected function get_first_nonwhitespace( &$contents ) { + while ( ( $line = array_shift( $contents ) ) !== null ) { + $trimmed = trim( $line ); + if ( ! empty( $trimmed ) ) { + break; + } + } + + return $line; + } + + /** + * @access protected + * + * @param string $line + * @return string + */ + protected function strip_newlines( $line ) { + return rtrim( $line, "\r\n" ); + } + + /** + * @access protected + * + * @param string $desc + * @param int $length + * @return string + */ + protected function trim_length( $desc, $length = 150 ) { + if ( mb_strlen( $desc ) > $length ) { + $desc = mb_substr( $desc, 0, $length ) . ' …'; + + // If not a full sentence, and one ends within 20% of the end, trim it to that. + if ( '.' !== mb_substr( $desc, -1 ) && ( $pos = mb_strrpos( $desc, '.' ) ) > ( 0.8 * $length ) ) { + $desc = mb_substr( $desc, 0, $pos + 1 ); + } + } + + return trim( $desc ); + } + + /** + * Filters text passed in through wp_kses, and force balances + * HTML tags that aren't properly closed. + * + * @access protected + * + * @param string $text Text to filter. + * + * @return string $text The filtered text. + */ + protected function filter_text( $text ) { + $text = trim( $text ); + + $allowed = [ + 'a' => [ + 'href' => true, + 'title' => true, + 'rel' => true, + ], + 'blockquote' => [ + 'cite' => true, + ], + 'br' => [], + 'p' => [], + 'code' => [], + 'pre' => [], + 'em' => [], + 'strong' => [], + 'ul' => [], + 'ol' => [], + 'dl' => [], + 'dt' => [], + 'dd' => [], + 'li' => [], + 'h3' => [], + 'h4' => [], + ]; + + $text = force_balance_tags( $text ); + + $text = wp_kses( $text, $allowed ); + + // wpautop() will eventually replace all \n's with
s, and that isn't what we want (The text may be line-wrapped in the readme, we don't want that, we want paragraph-wrapped text). + // TODO: This incorrectly also applies within `` tags which we don't want either: $text = preg_replace( "/(? ])\n/", ' ', $text );. + $text = trim( $text ); + + return $text; + } + + /** + * Sanitize text. + * + * @access protected + * + * @param string $text Text to sanitize. + * + * @return string $text Cleaned text. + */ + protected function sanitize_text( $text ) { + // not fancy. + $text = wp_strip_all_tags( $text ); + $text = esc_html( $text ); + $text = trim( $text ); + + return $text; + } + + /** + * Sanitize the provided stable tag to something we expect. + * + * @param string $stable_tag the raw Stable Tag line from the readme. + * + * @return string $stable_tag The sanitized stable tag. + */ + protected function sanitize_stable_tag( $stable_tag ) { + $stable_tag = trim( $stable_tag ); + $stable_tag = trim( $stable_tag, '"\'' ); + $stable_tag = preg_replace( '!^/?tags/!i', '', $stable_tag ); // Matches for: "tags/1.2.3". + $stable_tag = preg_replace( '![^a-z0-9_.-]!i', '', $stable_tag ); + + // If the stable_tag begins with a ., we treat it as 0.blah. + if ( '.' === substr( $stable_tag, 0, 1 ) ) { + $stable_tag = "0{$stable_tag}"; + } + + return $stable_tag; + } + + /** + * Sanitizes the Requires PHP header to ensure that it's a valid version header. + * + * @param string $version The version number passed in the header. + * + * @return string $version The sanitized version number. + */ + protected function sanitize_requires_php( $version ) { + $version = trim( $version ); + + // x.y or x.y.z version number. + if ( $version && ! preg_match( '!^\d+(\.\d+){1,2}$!', $version ) ) { + $this->warnings['requires_php_header_ignored'] = true; + + // Ignore the readme value. + $version = ''; + } + + return $version; + } + + /** + * Sanitizes the Tested header to ensure that it's a valid version header. + * + * @param string $version The version number from header. + * + * @return string $version The sanitized version number. + */ + protected function sanitize_tested_version( $version ) { + $version = trim( $version ); + + if ( $version ) { + + // Handle the edge-case of 'WordPress 5.0' and 'WP 5.0' for historical purposes. + $strip_phrases = [ + 'WordPress', + 'WP', + ]; + + $version = trim( str_ireplace( $strip_phrases, '', $version ) ); + + // Strip off any -alpha, -RC, -beta suffixes, as these complicate comparisons and are rarely used. + list( $version, ) = explode( '-', $version ); + + if ( + + // x.y or x.y.z version number. + ! preg_match( '!^\d+\.\d(\.\d+)?$!', $version ) || + + // Allow plugins to mark themselves as compatible with Stable+0.1 (trunk/master) but not higher. + defined( 'WP_CORE_STABLE_BRANCH' ) && ( (float) $version > (float) WP_CORE_STABLE_BRANCH + 0.1 ) + ) { + $this->warnings['tested_header_ignored'] = true; + + // Ignore the readme value. + $version = ''; + } + } + + return $version; + } + + /** + * Sanitizes the Requires at least header to ensure that it's a valid version header. + * + * @param string $version The version number from header. + * + * @return string $version The sanitized version number. + */ + protected function sanitize_requires_version( $version ) { + $version = trim( $version ); + + if ( $version ) { + + // Handle the edge-case of 'WordPress 5.0' and 'WP 5.0' for historical purposes. + $strip_phrases = [ + 'WordPress', + 'WP', + 'or higher', + 'and above', + '+', + ]; + + $version = trim( str_ireplace( $strip_phrases, '', $version ) ); + + // Strip off any -alpha, -RC, -beta suffixes, as these complicate comparisons and are rarely used. + list( $version, ) = explode( '-', $version ); + + if ( + + // x.y or x.y.z version number. + ! preg_match( '!^\d+\.\d(\.\d+)?$!', $version ) || + + // Allow plugins to mark themselves as requireing Stable+0.1 (trunk/master) but not higher. + defined( 'WP_CORE_STABLE_BRANCH' ) && ( (float) $version > (float) WP_CORE_STABLE_BRANCH + 0.1 ) + ) { + $this->warnings['requires_header_ignored'] = true; + + // Ignore the readme value. + $version = ''; + } + } + + return $version; + } + + /** + * Parses a slice of lines from the file into an array of Heading => Content. + * + * We assume that every heading encountered is a new item, and not a sub heading. + * We support headings which are either `= Heading`, `# Heading` or `** Heading`. + * + * @param string|array $lines The lines of the section to parse. + * + * @return array + */ + protected function parse_section( $lines ) { + $return = []; + $key = $value = ''; + + if ( ! is_array( $lines ) ) { + $lines = explode( "\n", $lines ); + } + + $trimmed_lines = array_map( 'trim', $lines ); + + /* + * The heading style being matched in the block. Can be 'heading' or 'bold'. + * Standard Markdown headings (## .. and == ... ==) are used, but if none are present. + * full line bolding will be used as a heading style. + */ + $heading_style = 'bold'; + foreach ( $trimmed_lines as $trimmed ) { + if ( $trimmed && ( $trimmed[0] === '#' || $trimmed[0] === '=' ) ) { + $heading_style = 'heading'; + break; + } + } + + $line_count = count( $lines ); + for ( $i = 0; $i < $line_count; $i++ ) { + $line = &$lines[ $i ]; + $trimmed = &$trimmed_lines[ $i ]; + if ( ! $trimmed ) { + $value .= "\n"; + continue; + } + + $is_heading = false; + if ( 'heading' === $heading_style && ( $trimmed[0] === '#' || $trimmed[0] === '=' ) ) { + $is_heading = true; + } elseif ( 'bold' === $heading_style && ( substr( $trimmed, 0, 2 ) === '**' && substr( $trimmed, -2 ) === '**' ) ) { + $is_heading = true; + } + + if ( $is_heading ) { + if ( $value ) { + $return[ $key ] = trim( $value ); + } + + $value = ''; + + // Trim off the first character of the line, as we know that's the heading style we're expecting to remove. + $key = trim( $line, $trimmed[0] . " \t" ); + continue; + } + + $value .= $line . "\n"; + } + + if ( $key || $value ) { + $return[ $key ] = trim( $value ); + } + + return $return; + } + + /** + * Parse markdown from sections. + * + * This isn't required as we are just wanting data, so eventually + * can be removed along with Markdown dep. + * + * @param string $text Text to apply transformation to. + * + * @return string Transformed text to HTML. + */ + protected function parse_markdown( $text ) { + static $markdown = null; + + if ( is_null( $markdown ) ) { + $markdown = new MarkdownExtra(); + } + + return $markdown->transform( $text ); + } + + /** + * Determine if the readme contains unique installation instructions. + * + * When phrases are added here, the affected plugins will need to be reparsed to pick it up. + * + * @return bool Whether the instructions differ from default instructions. + */ + protected function has_unique_installation_instructions() { + if ( ! isset( $this->sections['installation'] ) ) { + return false; + } + + // If the plugin installation section contains any of these phrases, skip it as it's not useful. + $common_phrases = array( + 'This section describes how to install the plugin and get it working.', // Default readme.txt content. + ); + + foreach ( $common_phrases as $phrase ) { + if ( false !== stripos( $this->sections['installation'], $phrase ) ) { + return false; + } + } + + return true; + } +} diff --git a/src/sniffs/readme/class-validator.php b/src/sniffs/readme/class-validator.php new file mode 100644 index 0000000..c70dbd6 --- /dev/null +++ b/src/sniffs/readme/class-validator.php @@ -0,0 +1,103 @@ +license ) && ! empty( $parser->license_uri ) ) { + $parser->license_uri = (object) [ + 'primary' => $parser->license, + 'uri' => $parser->license_uri, + ]; + } + + return $parser; + } + + /** + * Runs any existing validators set on parser. + * + * @since 1.1.0 + * + * @param string $file file to validate. + */ + public function validate( $file ) { + + // Validate file. + parent::validate( $file ); + + // No need to continue if file validation contains error for file not existing. + if ( ! empty( $this->results ) && in_array( 'error', array_column( $this->results, 'severity' ), true ) ) { + return; + } + + $parser = new Parser( $this->file ); + $this->parser = $this->set_defaults( $parser ); + + foreach ( $this->parser as $name => $args ) { + $class = __NAMESPACE__ . '\\' . ucwords( $name, '_' ); + + if ( class_exists( $class ) ) { + $validator = new $class( $args ); + $results = $validator->get_results(); + + if ( is_array( $results ) ) { + $this->results = array_merge( $this->results, $results ); + } + } + } + } +} diff --git a/src/sniffs/screenshot/class-validator.php b/src/sniffs/screenshot/class-validator.php new file mode 100644 index 0000000..7a11fc7 --- /dev/null +++ b/src/sniffs/screenshot/class-validator.php @@ -0,0 +1,130 @@ +results ) && in_array( 'error', array_column( $this->results, 'severity' ), true ) ) { + return; + } + + // Image mime. + $mime_type = wp_get_image_mime( $file ); + + // Missing mime type. + if ( ! $mime_type ) { + $this->results[] = [ + 'severity' => 'error', + 'message' => sprintf( + esc_html__( 'Screenshot mime type could not be determined, screenshots must have a mime type of "img/png" or "img/jpg".', 'theme-sniffer' ), + $mime_type + ), + ]; + + return; + } + + // Valid mime type returned, but not a png. + if ( $mime_type !== 'image/png' ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => sprintf( + /* translators: 1: screenshot mime type found */ + esc_html__( 'Screenshot has mime type of "%1$s", but a mimetype of "img/png" is recommended.', 'theme-sniffer' ), + $mime_type + ), + ]; + + return; + } + + // Screenshot validated at this point, so check dimensions - no need for fileinfo. + // props @Otto42(WP.org, Github) for aspect ratio logic from Theme Check: https://github.com/WordPress/theme-check/blob/master/checks/screenshot.php. + list( $width, $height ) = getimagesize( $file ); + + // Screenshot too big. + if ( $width > 1200 || $height > 900 ) { + $this->results[] = [ + 'severity' => 'error', + 'message' => sprintf( + /* translators: 1: screenshot width 2: screenshot height */ + esc_html__( 'The size of your screenshot should not exceed 1200x900, but screenshot.png is currently %1$dx%2$d.', 'theme-sniffer' ), + $width, + $height + ), + ]; + + return; + } + + // Aspect Ratio. + if ( $height / $width !== 0.75 ) { + $this->results[] = [ + 'severity' => 'error', + 'message' => esc_html__( 'Screenshot aspect ratio must be 4:3!', 'theme-sniffer' ), + ]; + + return; + } + + // Recommended size. + if ( $width !== 1200 || $height !== 900 ) { + $this->results[] = [ + 'severity' => 'warning', + 'message' => esc_html__( 'Screenshot size of 1200x900 is recommended to account for HiDPI displays.', 'theme-sniffer' ), + ]; + + return; + } + } +} diff --git a/src/sniffs/validatable-interface.php b/src/sniffs/validatable-interface.php new file mode 100644 index 0000000..98ed651 --- /dev/null +++ b/src/sniffs/validatable-interface.php @@ -0,0 +1,23 @@ +error ) ) { ?> @@ -35,7 +33,7 @@ // Predefined values. $current_theme = get_stylesheet(); -$minimum_php_version = '5.2'; +$minimum_php_version = $this->minimum_php_version; $hide_warning = 0; $raw_output = 0; $ignore_annotations = 0; @@ -64,25 +62,25 @@

-
+

$standard ) : ?>

-    -    -    -    +    +    +    +   
diff --git a/webpack.config.js b/webpack.config.js index 1f7873f..650fef8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,11 +1,13 @@ const path = require( 'path' ); const webpack = require( 'webpack' ); -const CleanWebpackPlugin = require( 'clean-webpack-plugin' ); +const { CleanWebpackPlugin } = require( 'clean-webpack-plugin' ); const MiniCssExtractPlugin = require( 'mini-css-extract-plugin' ); -const UglifyJsPlugin = require( 'uglifyjs-webpack-plugin' ); +const TerserPlugin = require( 'terser-webpack-plugin' ); const ManifestPlugin = require( 'webpack-manifest-plugin' ); const FileManagerPlugin = require( 'filemanager-webpack-plugin' ); +const CreateFileWebpack = require( 'create-file-webpack' ); +const Licenses = require( 'wp-license-compatibility' ); const DEV = process.env.NODE_ENV !== 'production'; @@ -34,7 +36,6 @@ const allModules = { }, { test: /\.scss$/, - exclude: /node_modules/, use: [ MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader' @@ -44,7 +45,7 @@ const allModules = { }; const allPlugins = [ - new CleanWebpackPlugin([ pluginPublicPath ]), + new CleanWebpackPlugin(), new MiniCssExtractPlugin( { filename: outputCss @@ -82,25 +83,20 @@ const allOptimizations = { // Use only for production build if ( ! DEV ) { allOptimizations.minimizer = [ - new UglifyJsPlugin( - { - cache: true, - parallel: true, - sourceMap: true, - uglifyOptions: { - output: { - comments: false - }, - compress: { - warnings: false, - drop_console: true // eslint-disable-line camelcase - } - } - } - ) + new TerserPlugin({ + cache: true, + parallel: true, + sourceMap: true + }) ]; allPlugins.push( + new CreateFileWebpack({ + path: './assets/build/', + fileName: 'licenses.json', + content: JSON.stringify( Licenses, null, 2 ) + }), + new FileManagerPlugin({ onEnd: [ { @@ -115,16 +111,14 @@ if ( ! DEV ) { delete: [ './theme-sniffer/assets/dev', './theme-sniffer/node_modules', - './theme-sniffer/tests', './theme-sniffer/composer.json', './theme-sniffer/composer.lock', './theme-sniffer/package.json', './theme-sniffer/package-lock.json', './theme-sniffer/phpcs.xml.dist', - './theme-sniffer/phpunit.integration.xml.dist', - './theme-sniffer/phpunit.xml.dist', - './theme-sniffer/phpunit-printer.yml', - './theme-sniffer/webpack.config.js' + './theme-sniffer/webpack.config.js', + './theme-sniffer/CODE_OF_CONDUCT.md', + './theme-sniffer/CONTRIBUTING.md' ] }, { @@ -145,7 +139,6 @@ if ( ! DEV ) { './theme-sniffer' ] } - ] }) ); @@ -167,7 +160,8 @@ module.exports = [ }, externals: { - jquery: 'jQuery' + jquery: 'jQuery', + esprima: 'esprima' }, optimization: allOptimizations, From 14f64fe9e19e5efa3ddb61f980a66690e2cf2ede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Thu, 15 Aug 2019 19:30:51 +0200 Subject: [PATCH 11/13] Add more integration tests, update configuration --- composer.json | 17 +- composer.lock | 2207 ++++++++++++++++++++++++++--- phpunit.integration.xml.dist | 5 +- phpunit.xml.dist | 7 +- tests/bootstrap-integration.php | 11 +- tests/integration/test-plugin.php | 43 +- 6 files changed, 2061 insertions(+), 229 deletions(-) diff --git a/composer.json b/composer.json index 90e9def..a80f013 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "php": ">=7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", "michelf/php-markdown": "^1.8", + "pcov/clobber": "^2.0", "squizlabs/php_codesniffer": "^3.3.0", "wptrt/wpthemereview": "^0.2.0" }, @@ -32,13 +33,15 @@ ] }, "scripts": { - "phpcs-i": "@php ./vendor/bin/phpcs -i", - "check-cs": "@php ./vendor/bin/phpcs --ignore=*/vendor/*,*/node_modules/*", - "fix-cs": "@php ./vendor/bin/phpcbf --ignore=*/vendor/*,*/node_modules/*", - "punit": "@php ./vendor/bin/phpunit -c phpunit.xml.dist --no-coverage --colors=always", - "punit-cov": "@php ./vendor/bin/phpunit -c phpunit.xml.dist --colors=always", - "pint": "@php ./vendor/bin/phpunit -c phpunit.integration.xml.dist --no-coverage --colors=always", - "pint-cov": "@php ./vendor/bin/phpunit -c phpunit.integration.xml.dist --colors=always" + "phpcs-i": "@php ./vendor/squizlabs/php_codesniffer/bin/phpcs -i", + "check-cs": "@php ./vendor/squizlabs/php_codesniffer/bin/phpcs", + "fix-cs": "@php ./vendor/squizlabs/php_codesniffer/bin/phpcbf", + "run-tests-unit": "@php ./vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist --no-coverage --colors=always --testdox", + "run-tests-unit-cov": "@php ./vendor/phpunit/phpunit/phpunit -c phpunit.xml.dist --colors=always", + "run-tests-integ": "@php ./vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml.dist --no-coverage --colors=always --testdox", + "run-tests-integ-cov": "@php ./vendor/phpunit/phpunit/phpunit -c phpunit.integration.xml.dist --colors=always", + "clobber": "@php ./vendor/pcov/clobber/bin/pcov clobber", + "unclobber": "@php ./vendor/pcov/clobber/bin/pcov unclobber" }, "config": { "sort-packages": true, diff --git a/composer.lock b/composer.lock index ab0fef8..25771cd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5ab964ea600900d432e90c81775a1599", + "content-hash": "5a00145165c94353c2e6d4c45d77f5fd", "packages": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -118,6 +118,87 @@ ], "time": "2018-01-15T00:49:33+00:00" }, + { + "name": "nikic/php-parser", + "version": "v4.2.3", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "e612609022e935f3d0337c1295176505b41188c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e612609022e935f3d0337c1295176505b41188c8", + "reference": "e612609022e935f3d0337c1295176505b41188c8", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2019-08-12T20:17:41+00:00" + }, + { + "name": "pcov/clobber", + "version": "v2.0.2", + "source": { + "type": "git", + "url": "https://github.com/krakjoe/pcov-clobber.git", + "reference": "191f54df9a60fc38f1891248d9e3220121a43e6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/krakjoe/pcov-clobber/zipball/191f54df9a60fc38f1891248d9e3220121a43e6b", + "reference": "191f54df9a60fc38f1891248d9e3220121a43e6b", + "shasum": "" + }, + "require": { + "ext-pcov": "^1.0", + "nikic/php-parser": "^4.2" + }, + "bin": [ + "bin/pcov" + ], + "type": "library", + "autoload": { + "psr-4": { + "pcov\\Clobber\\": "src/pcov/clobber" + } + }, + "notification-url": "https://packagist.org/downloads/", + "time": "2019-08-02T04:24:11+00:00" + }, { "name": "phpcompatibility/php-compatibility", "version": "9.2.0", @@ -445,219 +526,1949 @@ ], "packages-dev": [ { - "name": "roave/security-advisories", - "version": "dev-master", + "name": "2bj/phanybar", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "ea693fa060702164985511acc3ceb5389c9ac761" + "url": "https://github.com/2bj/Phanybar.git", + "reference": "88ff671e18f30c2047a34f8cf2465a7ff93c819b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ea693fa060702164985511acc3ceb5389c9ac761", - "reference": "ea693fa060702164985511acc3ceb5389c9ac761", + "url": "https://api.github.com/repos/2bj/Phanybar/zipball/88ff671e18f30c2047a34f8cf2465a7ff93c819b", + "reference": "88ff671e18f30c2047a34f8cf2465a7ff93c819b", "shasum": "" }, - "conflict": { - "3f/pygmentize": "<1.2", - "adodb/adodb-php": "<5.20.12", - "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", - "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", - "aws/aws-sdk-php": ">=3,<3.2.1", - "brightlocal/phpwhois": "<=4.2.5", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1-alpha.11", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/core": ">=2,<3.5.39", - "contao/core-bundle": ">=4,<4.4.39|>=4.5,<4.7.5", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/newsletter-bundle": ">=4,<4.1", - "david-garcia/phpwhois": "<=4.3.1", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", - "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", - "drupal/drupal": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", - "erusev/parsedown": "<1.7.2", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.4", - "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", - "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1", - "ezyang/htmlpurifier": "<4.1.1", - "firebase/php-jwt": "<2", - "fooman/tcpdf": "<6.2.22", - "fossar/tcpdf-parser": "<6.2.22", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "fuel/core": "<1.8.1", - "gree/jose": "<=2.2", - "gregwar/rst": "<1.0.3", - "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", - "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", - "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", - "ivankristianto/phpwhois": "<=4.3", - "james-heinrich/getid3": "<1.9.9", - "joomla/session": "<1.3.1", - "jsmitty12/phpwhois": "<5.1", - "kazist/phpwhois": "<=4.2.6", - "kreait/firebase-php": ">=3.2,<3.8.1", - "la-haute-societe/tcpdf": "<6.2.22", - "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "league/commonmark": "<0.18.3", - "magento/magento1ce": "<1.9.4.1", - "magento/magento1ee": ">=1.9,<1.14.4.1", - "magento/product-community-edition": ">=2,<2.2.8|>=2.3,<2.3.1", - "monolog/monolog": ">=1.8,<1.12", - "namshi/jose": "<2.2", - "onelogin/php-saml": "<2.10.4", - "openid/php-openid": "<2.3", - "oro/crm": ">=1.7,<1.7.4", - "oro/platform": ">=1.7,<1.7.4", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": ">=0,<3", - "paragonie/random_compat": "<2", - "paypal/merchant-sdk-php": "<3.12", - "pear/archive_tar": "<1.4.4", - "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6", - "phpoffice/phpexcel": "<=1.8.1", - "phpoffice/phpspreadsheet": "<=1.5", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpwhois/phpwhois": "<=4.2.5", - "phpxmlrpc/extras": "<0.6.1", - "propel/propel": ">=2-alpha.1,<=2-alpha.7", - "propel/propel1": ">=1,<=1.7.1", - "pusher/pusher-php-server": "<2.2.1", - "robrichards/xmlseclibs": ">=1,<3.0.2", - "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "sensiolabs/connect": "<4.2.3", - "serluck/phpwhois": "<=4.2.6", - "shopware/shopware": "<5.3.7", - "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.4", - "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2", - "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", - "silverstripe/userforms": "<3", - "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", - "simplesamlphp/simplesamlphp": "<1.17.3", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "slim/slim": "<2.6", - "smarty/smarty": "<3.1.33", - "socalnick/scn-social-auth": "<1.15.2", - "spoonity/tcpdf": "<6.2.22", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "stormpath/sdk": ">=0,<9.9.99", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", - "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", - "sylius/sylius": ">=1,<1.1.18|>=1.2,<1.2.17|>=1.3,<1.3.12|>=1.4,<1.4.4", - "symfony/cache": ">=3.1,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/http-foundation": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/polyfill": ">=1,<1.10", - "symfony/polyfill-php55": ">=1,<1.10", - "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", - "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/translation": ">=2,<2.0.17", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "tecnickcom/tcpdf": "<6.2.22", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1-beta.1,<2.1.3", - "theonedemon/phpwhois": "<=4.2.5", - "titon/framework": ">=0,<9.9.99", - "truckersmp/phpwhois": "<=4.3.1", - "twig/twig": "<1.38|>=2,<2.7", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.27|>=9,<9.5.8", - "typo3/cms-core": ">=8,<8.7.27|>=9,<9.5.8", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", - "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", - "ua-parser/uap-php": "<3.8", - "wallabag/tcpdf": "<6.2.22", - "willdurand/js-translation-bundle": "<2.1.1", - "yiisoft/yii": ">=1.1.14,<1.1.15", - "yiisoft/yii2": "<2.0.15", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.15", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<2.0.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", - "zendframework/zend-diactoros": ">=1,<1.8.4", - "zendframework/zend-feed": ">=1,<2.10.3", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": ">=1,<2.8.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": "<2.5.1", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2" + "require": { + "php": ">=5.3.0" + }, + "bin": [ + "bin/phanybar" + ], + "type": "library", + "autoload": { + "psr-4": { + "Bakyt\\": [ + "src/" + ] + } }, - "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Marco Pivetta", + "name": "Bakyt Turgumbaev", + "email": "dev2bj@gmail.com" + } + ], + "description": "Control AnyBar from your php", + "keywords": [ + "anybar", + "phanybar" + ], + "time": "2015-03-06T12:14:28+00:00" + }, + { + "name": "codedungeon/php-cli-colors", + "version": "1.10.7", + "source": { + "type": "git", + "url": "https://github.com/mikeerickson/php-cli-colors.git", + "reference": "5649ef76ec0c9ed626e95bf40fdfaf4b8efcf79b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikeerickson/php-cli-colors/zipball/5649ef76ec0c9ed626e95bf40fdfaf4b8efcf79b", + "reference": "5649ef76ec0c9ed626e95bf40fdfaf4b8efcf79b", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": ">=5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codedungeon\\PHPCliColors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike Erickson", + "email": "codedungeon@gmail.com" + } + ], + "description": "PHP Package for using color output in CLI commands", + "homepage": "https://github.com/mikeerickson/php-cli-colors", + "keywords": [ + "color", + "colors", + "composer", + "package", + "php" + ], + "time": "2018-05-17T01:34:14+00:00" + }, + { + "name": "codedungeon/phpunit-result-printer", + "version": "0.20.3", + "source": { + "type": "git", + "url": "https://github.com/mikeerickson/phpunit-pretty-result-printer.git", + "reference": "3d5773927969ab71ba5acd8bb90c3a183c406118" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mikeerickson/phpunit-pretty-result-printer/zipball/3d5773927969ab71ba5acd8bb90c3a183c406118", + "reference": "3d5773927969ab71ba5acd8bb90c3a183c406118", + "shasum": "" + }, + "require": { + "2bj/phanybar": "^1.0", + "codedungeon/php-cli-colors": "^1.10.2", + "hassankhan/config": "^0.11.2", + "php": "^7.1", + "symfony/yaml": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "phpunit/phpunit": "7.1.1", + "spatie/phpunit-watcher": "^1.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codedungeon\\PHPUnitPrettyResultPrinter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike Erickson", + "email": "codedungeon@gmail.com" + } + ], + "description": "PHPUnit Pretty Result Printer", + "keywords": [ + "TDD", + "composer", + "package", + "phpunit", + "printer", + "result-printer", + "testing" + ], + "time": "2018-09-20T03:43:34+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "a2c590166b2133a4633738648b6b064edae0814a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "role": "maintainer" + "homepage": "http://ocramius.github.com/" } ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2019-07-18T15:17:58+00:00" + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2019-03-17T17:37:11+00:00" + }, + { + "name": "hassankhan/config", + "version": "0.11.2", + "source": { + "type": "git", + "url": "https://github.com/hassankhan/config.git", + "reference": "7fbc236c32dc6cc53a7b00992a2739cf8b41c085" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hassankhan/config/zipball/7fbc236c32dc6cc53a7b00992a2739cf8b41c085", + "reference": "7fbc236c32dc6cc53a7b00992a2739cf8b41c085", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "scrutinizer/ocular": "~1.1", + "squizlabs/php_codesniffer": "~2.2" + }, + "suggest": { + "symfony/yaml": "~2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Noodlehaus\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Hassan Khan", + "homepage": "http://hassankhan.me/", + "role": "Developer" + } + ], + "description": "Lightweight configuration file loader that supports PHP, INI, XML, JSON, and YAML files", + "homepage": "http://hassankhan.me/config/", + "keywords": [ + "config", + "configuration", + "ini", + "json", + "microphp", + "unframework", + "xml", + "yaml", + "yml" + ], + "time": "2017-11-07T22:49:43+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2019-08-09T12:45:53+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2019-04-30T17:48:53+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2019-06-13T12:50:23+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sebastian@phpunit.de" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-06-07T04:22:29+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2019-07-25T05:29:42+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.14", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2834789aeb9ac182ad69bfdf9ae91856a59945ff", + "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sebastian@phpunit.de" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-07-15T06:24:08+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "ea693fa060702164985511acc3ceb5389c9ac761" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ea693fa060702164985511acc3ceb5389c9ac761", + "reference": "ea693fa060702164985511acc3ceb5389c9ac761", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.12", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "aws/aws-sdk-php": ">=3,<3.2.1", + "brightlocal/phpwhois": "<=4.2.5", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1-alpha.11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.39", + "contao/core-bundle": ">=4,<4.4.39|>=4.5,<4.7.5", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/newsletter-bundle": ">=4,<4.1", + "david-garcia/phpwhois": "<=4.3.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", + "drupal/drupal": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", + "erusev/parsedown": "<1.7.2", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.4", + "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1", + "ezyang/htmlpurifier": "<4.1.1", + "firebase/php-jwt": "<2", + "fooman/tcpdf": "<6.2.22", + "fossar/tcpdf-parser": "<6.2.22", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "fuel/core": "<1.8.1", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "ivankristianto/phpwhois": "<=4.3", + "james-heinrich/getid3": "<1.9.9", + "joomla/session": "<1.3.1", + "jsmitty12/phpwhois": "<5.1", + "kazist/phpwhois": "<=4.2.6", + "kreait/firebase-php": ">=3.2,<3.8.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "league/commonmark": "<0.18.3", + "magento/magento1ce": "<1.9.4.1", + "magento/magento1ee": ">=1.9,<1.14.4.1", + "magento/product-community-edition": ">=2,<2.2.8|>=2.3,<2.3.1", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "onelogin/php-saml": "<2.10.4", + "openid/php-openid": "<2.3", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": ">=0,<3", + "paragonie/random_compat": "<2", + "paypal/merchant-sdk-php": "<3.12", + "pear/archive_tar": "<1.4.4", + "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6", + "phpoffice/phpexcel": "<=1.8.1", + "phpoffice/phpspreadsheet": "<=1.5", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "propel/propel": ">=2-alpha.1,<=2-alpha.7", + "propel/propel1": ">=1,<=1.7.1", + "pusher/pusher-php-server": "<2.2.1", + "robrichards/xmlseclibs": ">=1,<3.0.2", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "shopware/shopware": "<5.3.7", + "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.6.7|>=3.7,<3.7.3|>=4,<4.4", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", + "silverstripe/userforms": "<3", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/simplesamlphp": "<1.17.3", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "slim/slim": "<2.6", + "smarty/smarty": "<3.1.33", + "socalnick/scn-social-auth": "<1.15.2", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "stormpath/sdk": ">=0,<9.9.99", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/sylius": ">=1,<1.1.18|>=1.2,<1.2.17|>=1.3,<1.3.12|>=1.4,<1.4.4", + "symfony/cache": ">=3.1,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/http-foundation": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "tecnickcom/tcpdf": "<6.2.22", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1-beta.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "titon/framework": ">=0,<9.9.99", + "truckersmp/phpwhois": "<=4.3.1", + "twig/twig": "<1.38|>=2,<2.7", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.27|>=9,<9.5.8", + "typo3/cms-core": ">=8,<8.7.27|>=9,<9.5.8", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "ua-parser/uap-php": "<3.8", + "wallabag/tcpdf": "<6.2.22", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.15", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": ">=1,<1.8.4", + "zendframework/zend-feed": ">=1,<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=1,<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "time": "2019-07-18T15:17:58+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-05-05T09:05:15+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "06a9a5947f47b3029d76118eb5c22802e5869687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/06a9a5947f47b3029d76118eb5c22802e5869687", + "reference": "06a9a5947f47b3029d76118eb5c22802e5869687", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2019-08-11T12:43:14+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/34d29c2acd1ad65688f58452fd48a46bd996d5a6", + "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2019-07-24T14:47:54+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-12-25T11:19:39+00:00" } ], "aliases": [], @@ -671,4 +2482,4 @@ "php": ">=7.0" }, "platform-dev": [] -} \ No newline at end of file +} diff --git a/phpunit.integration.xml.dist b/phpunit.integration.xml.dist index 6a3fff4..0923123 100644 --- a/phpunit.integration.xml.dist +++ b/phpunit.integration.xml.dist @@ -1,7 +1,5 @@ diff --git a/phpunit.xml.dist b/phpunit.xml.dist index eb0eda1..593e203 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,7 +1,5 @@ @@ -33,7 +32,7 @@
- + diff --git a/tests/bootstrap-integration.php b/tests/bootstrap-integration.php index 2b4ba80..54ee5b1 100644 --- a/tests/bootstrap-integration.php +++ b/tests/bootstrap-integration.php @@ -24,11 +24,12 @@ /** * Manually load the plugin being tested. */ -function _manually_load_plugin() { - require dirname( __FILE__, 2 ) . '/theme-sniffer.php'; -} - -tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' ); +tests_add_filter( + 'muplugins_loaded', + function() { + require dirname( __FILE__, 2 ) . '/theme-sniffer.php'; + } +); // Start up the WP testing environment. require $_tests_dir . '/includes/bootstrap.php'; diff --git a/tests/integration/test-plugin.php b/tests/integration/test-plugin.php index 5a883f3..176263b 100644 --- a/tests/integration/test-plugin.php +++ b/tests/integration/test-plugin.php @@ -13,12 +13,12 @@ /** * Class that tests the Main plugin functionality. */ -class Plugin_Integration_Test extends WP_UnitTestCase { +class Main_Plugin_Functionality extends WP_UnitTestCase { /** * Plugin class instance * - * @var object + * @var Plugin */ private $plugin; @@ -28,7 +28,7 @@ class Plugin_Integration_Test extends WP_UnitTestCase { public function setUp() { parent::setUp(); - $this->plugin = new Plugin(); + $this->plugin = Plugin_Factory::create(); $this->plugin->register(); } @@ -44,7 +44,7 @@ public function tearDown() { /** * Test if all the hooks were registered. */ - public function test_registered_hooks() { + public function test_hooks_are_registered() { $this->assertEquals( \has_action( 'plugins_loaded', [ $this->plugin, 'register_services' ] ), 10 ); $this->assertEquals( \has_action( 'init', [ $this->plugin, 'register_assets_handler' ] ), 10 ); $this->assertEquals( \has_action( 'plugin_action_links_' . PLUGIN_BASENAME, [ $this->plugin, 'plugin_settings_link' ] ), 10 ); @@ -52,9 +52,9 @@ public function test_registered_hooks() { } /** - * Method that tests the activate() method that runs when plugin is activated + * Method that tests the activate() method that runs when plugin is activated. */ - public function test_plugin_activate() { + public function test_plugin_activate_method_is_called() { $this->user_id = $this->factory()->user->create( [ 'role' => 'administrator', @@ -71,9 +71,9 @@ public function test_plugin_activate() { } /** - * Method that tests the deactivate() method that runs when ACF plugin is missing + * Method that tests the deactivate() method that runs when plugin is deactivated. */ - public function test_plugin_deactivate() { + public function test_plugin_deactivate_method_is_called() { $this->user_id = $this->factory()->user->create( [ 'role' => 'administrator', @@ -90,9 +90,9 @@ public function test_plugin_deactivate() { } /** - * Test register asset manifest failure + * Test register asset manifest failure. */ - public function test_register_assets_manifest() { + public function test_assets_manifest_is_registered() { $this->plugin->register_assets_manifest_data(); $this->assertTrue( defined( 'ASSETS_MANIFEST' ) ); @@ -101,7 +101,7 @@ public function test_register_assets_manifest() { /** * Test for plugin settings link */ - public function test_plugin_settings_link() { + public function test_plugin_settings_link_works() { $links = $this->plugin->plugin_settings_link( [] ); $this->assertTrue( gettype( $links ) === 'array' ); @@ -111,7 +111,7 @@ public function test_plugin_settings_link() { /** * Test for extra headers added */ - public function test_extra_headers() { + public function test_extra_headers_are_set() { $headers = $this->plugin->add_headers( [] ); $theme_object = wp_get_theme(); @@ -132,4 +132,23 @@ public function test_extra_headers() { $this->assertArrayHasKey( 'License URI', $theme_headers_added ); $this->assertArrayHasKey( 'Template Version', $theme_headers_added ); } + + /** + * Test the getter for the assets handler instance + */ + public function test_assets_handler_getter() { + $assets_handler = $this->plugin->get_assets_handler(); + + $this->assertTrue( class_exists( get_class( $assets_handler ) ) ); + } + + /** + * Test the setter for the assets handler instance + */ + public function test_assets_handler_setter() { + $this->plugin->register_assets_handler(); + $assets_handler = $this->plugin->get_assets_handler(); + + $this->assertTrue( class_exists( get_class( $assets_handler ) ) ); + } } From 3003c0ba51022035887de57d0c630cd250ba89ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Wed, 21 Aug 2019 09:23:37 +0200 Subject: [PATCH 12/13] Add the Makefile For easier usage on unix systems --- Makefile | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..10b7c13 --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ +#!make + +SETUP_TESTSUITE=bash bin/install-wp-tests.sh wordpress_test root '' localhost latest + +DEFAULT_GOAL := help +help: + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-27s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +.PHONY: build-project +build-project: ## Runs the npm and composer installations, and builds the zip file + composer install && npm install && npm run build + +.PHONY: build-dev +build-dev: ## Runs the npm and composer installations without the zip file + composer install && npm install && npm run dev + +.PHONY: run-dev +run-dev: ## Runs the dev npm script + npm run dev + +.PHONY: run-watch +run-watch: ## Runs the watch npm script + npm run watch + +.PHONY: setup-testsuite +setup-testsuite: ## Set up the default testsuite - install test WordPress and database + $(shell $(SETUP_TESTSUITE)) + +.PHONY: clobber +clobber: ## Run pcov clobber script - to use pcov instead of Xdebug + composer clobber + +.PHONY: unclobber +unclobber: ## Run pcov unclobber script - to revert the usage of pcov instead of Xdebug + composer unclobber + +.PHONY: test-unit +test-unit: ## Run unit tests + composer run-tests-unit + +.PHONY: test-unit-coverage +test-unit-coverage: ## Run unit tests with code coverage + composer run-tests-unit-cov + +.PHONY: test-integration +test-integration: ## Run integration tests + composer run-tests-integ + +.PHONY: test-integration-coverage +test-integration-coverage: ## Run integration tests with code coverage + composer run-tests-integ-cov + +.PHONY: check-cs +check-cs: ## Check the code with PHPCS against the coding standards + composer check-cs + +.PHONY: fix-cs +fix-cs: ## Run the PHPCBF command for code beautification according to coding standards + composer fix-cs From dcfd2f181fae0ea17c99e461ebf2bc7be571e64f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C5=BDoljom?= Date: Wed, 21 Aug 2019 10:11:53 +0200 Subject: [PATCH 13/13] Update composer scripts --- composer.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.lock b/composer.lock index 25771cd..7cb2c18 100644 --- a/composer.lock +++ b/composer.lock @@ -1399,16 +1399,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.14", + "version": "7.5.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff" + "reference": "d79c053d972856b8b941bb233e39dc521a5093f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2834789aeb9ac182ad69bfdf9ae91856a59945ff", - "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d79c053d972856b8b941bb233e39dc521a5093f0", + "reference": "d79c053d972856b8b941bb233e39dc521a5093f0", "shasum": "" }, "require": { @@ -1479,7 +1479,7 @@ "testing", "xunit" ], - "time": "2019-07-15T06:24:08+00:00" + "time": "2019-08-21T07:05:16+00:00" }, { "name": "roave/security-advisories",