aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2019-07-27 12:30:33 +0200
committerArthurHoaro <arthur@hoa.ro>2019-07-27 12:30:33 +0200
commit1b8ed48a0d3964186f4d66d443783f4d250e7147 (patch)
tree23597f312507ba0c1b461755b9aa086106374a4d
parent1aa24ed8d2974cda98733f74b36844b02942cc11 (diff)
parented3365325d231e044dedc32608fde87b1b39fa34 (diff)
downloadShaarli-1b8ed48a0d3964186f4d66d443783f4d250e7147.tar.gz
Shaarli-1b8ed48a0d3964186f4d66d443783f4d250e7147.tar.zst
Shaarli-1b8ed48a0d3964186f4d66d443783f4d250e7147.zip
Merge tag 'v0.11.0' into latest
Release v0.11.0
-rw-r--r--.dev/.sasslintrc8
-rw-r--r--.gitignore7
-rw-r--r--.readthedocs.yml15
-rw-r--r--.travis.yml2
-rw-r--r--AUTHORS11
-rw-r--r--CHANGELOG.md64
-rw-r--r--Dockerfile.armhf2
-rw-r--r--Doxyfile2377
-rw-r--r--Makefile7
-rw-r--r--README.md4
-rw-r--r--application/ApplicationUtils.php75
-rw-r--r--application/FileUtils.php8
-rw-r--r--application/History.php12
-rw-r--r--application/Languages.php1
-rw-r--r--application/Router.php49
-rw-r--r--application/Thumbnailer.php2
-rw-r--r--application/api/ApiMiddleware.php9
-rw-r--r--application/api/ApiUtils.php8
-rw-r--r--application/api/controllers/ApiController.php7
-rw-r--r--application/api/controllers/HistoryController.php (renamed from application/api/controllers/History.php)2
-rw-r--r--application/api/controllers/Tags.php1
-rw-r--r--application/api/exceptions/ApiLinkNotFoundException.php2
-rw-r--r--application/api/exceptions/ApiTagNotFoundException.php2
-rw-r--r--application/bookmark/LinkDB.php (renamed from application/LinkDB.php)102
-rw-r--r--application/bookmark/LinkFilter.php (renamed from application/LinkFilter.php)42
-rw-r--r--application/bookmark/LinkUtils.php (renamed from application/LinkUtils.php)126
-rw-r--r--application/bookmark/exception/LinkNotFoundException.php15
-rw-r--r--application/config/ConfigJson.php2
-rw-r--r--application/config/ConfigManager.php7
-rw-r--r--application/config/ConfigPhp.php4
-rw-r--r--application/exceptions/IOException.php5
-rw-r--r--application/feed/Cache.php (renamed from application/Cache.php)0
-rw-r--r--application/feed/CachedPage.php (renamed from application/CachedPage.php)5
-rw-r--r--application/feed/FeedBuilder.php (renamed from application/FeedBuilder.php)45
-rw-r--r--application/http/Base64Url.php (renamed from application/Base64Url.php)2
-rw-r--r--application/http/HttpUtils.php (renamed from application/HttpUtils.php)5
-rw-r--r--application/http/Url.php (renamed from application/Url.php)97
-rw-r--r--application/http/UrlUtils.php88
-rw-r--r--application/netscape/NetscapeBookmarkUtils.php (renamed from application/NetscapeBookmarkUtils.php)33
-rw-r--r--application/plugin/PluginManager.php (renamed from application/PluginManager.php)39
-rw-r--r--application/plugin/exception/PluginFileNotFoundException.php23
-rw-r--r--application/render/PageBuilder.php (renamed from application/PageBuilder.php)22
-rw-r--r--application/render/ThemeUtils.php (renamed from application/ThemeUtils.php)2
-rw-r--r--application/security/BanManager.php213
-rw-r--r--application/security/LoginManager.php103
-rw-r--r--application/updater/Updater.php (renamed from application/Updater.php)139
-rw-r--r--application/updater/UpdaterUtils.php39
-rw-r--r--application/updater/exception/UpdaterException.php60
-rw-r--r--assets/default/img/icon.pngbin530 -> 0 bytes
-rw-r--r--assets/default/js/base.js22
-rw-r--r--assets/default/scss/shaarli.scss94
-rw-r--r--composer.json24
-rw-r--r--composer.lock328
-rw-r--r--doc/md/Community-&-Related-software.md3
-rw-r--r--doc/md/Download-and-Installation.md6
-rw-r--r--doc/md/Plugin-System.md17
-rw-r--r--doc/md/Plugins.md4
-rw-r--r--doc/md/Server-configuration.md4
-rw-r--r--doc/md/Shaarli-configuration.md19
-rw-r--r--inc/languages/fr/LC_MESSAGES/shaarli.po735
-rw-r--r--index.php156
-rw-r--r--package.json4
-rw-r--r--phpdoc.dist.xml21
-rw-r--r--plugins/addlink_toolbar/addlink_toolbar.php2
-rw-r--r--plugins/archiveorg/archiveorg.php2
-rw-r--r--plugins/default_colors/default_colors.css.template3
-rw-r--r--plugins/default_colors/default_colors.meta5
-rw-r--r--plugins/default_colors/default_colors.php111
-rw-r--r--plugins/demo_plugin/demo_plugin.meta3
-rw-r--r--plugins/demo_plugin/demo_plugin.php21
-rw-r--r--plugins/isso/isso.php2
-rw-r--r--plugins/markdown/markdown.php2
-rw-r--r--plugins/piwik/piwik.php2
-rw-r--r--plugins/playvideos/playvideos.php3
-rw-r--r--plugins/pubsubhubbub/pubsubhubbub.php3
-rw-r--r--plugins/qrcode/qrcode.html2
-rw-r--r--plugins/qrcode/qrcode.php4
-rw-r--r--plugins/wallabag/WallabagInstance.php1
-rw-r--r--plugins/wallabag/wallabag.php6
-rw-r--r--shaarli_version.php2
-rw-r--r--tests/ApplicationUtilsTest.php27
-rw-r--r--tests/FileUtilsTest.php12
-rw-r--r--tests/HistoryTest.php6
-rw-r--r--tests/LanguagesTest.php2
-rw-r--r--tests/PluginManagerTest.php10
-rw-r--r--tests/RouterTest.php9
-rw-r--r--tests/TimeZoneTest.php2
-rw-r--r--tests/UtilsTest.php2
-rw-r--r--tests/api/ApiMiddlewareTest.php3
-rw-r--r--tests/api/ApiUtilsTest.php4
-rw-r--r--tests/api/controllers/history/HistoryTest.php28
-rw-r--r--tests/api/controllers/info/InfoTest.php5
-rw-r--r--tests/api/controllers/links/DeleteLinkTest.php18
-rw-r--r--tests/api/controllers/links/GetLinkIdTest.php7
-rw-r--r--tests/api/controllers/links/GetLinksTest.php10
-rw-r--r--tests/api/controllers/links/PostLinkTest.php19
-rw-r--r--tests/api/controllers/links/PutLinkTest.php17
-rw-r--r--tests/api/controllers/tags/DeleteTagTest.php22
-rw-r--r--tests/api/controllers/tags/GetTagNameTest.php6
-rw-r--r--tests/api/controllers/tags/GetTagsTest.php8
-rw-r--r--tests/api/controllers/tags/PutTagTest.php17
-rw-r--r--tests/bookmark/LinkDBTest.php (renamed from tests/LinkDBTest.php)65
-rw-r--r--tests/bookmark/LinkFilterTest.php (renamed from tests/LinkFilterTest.php)23
-rw-r--r--tests/bookmark/LinkUtilsTest.php (renamed from tests/LinkUtilsTest.php)401
-rw-r--r--tests/config/ConfigJsonTest.php6
-rw-r--r--tests/config/ConfigManagerTest.php2
-rw-r--r--tests/config/ConfigPhpTest.php2
-rw-r--r--tests/config/ConfigPluginTest.php2
-rw-r--r--tests/feed/CacheTest.php (renamed from tests/CacheTest.php)23
-rw-r--r--tests/feed/CachedPageTest.php (renamed from tests/CachedPageTest.php)9
-rw-r--r--tests/feed/FeedBuilderTest.php (renamed from tests/FeedBuilderTest.php)11
-rw-r--r--tests/http/HttpUtils/ClientIpIdTest.php (renamed from tests/HttpUtils/ClientIpIdTest.php)6
-rw-r--r--tests/http/HttpUtils/GetHttpUrlTest.php (renamed from tests/HttpUtils/GetHttpUrlTest.php)10
-rw-r--r--tests/http/HttpUtils/GetIpAdressFromProxyTest.php (renamed from tests/HttpUtils/GetIpAdressFromProxyTest.php)6
-rw-r--r--tests/http/HttpUtils/IndexUrlTest.php (renamed from tests/HttpUtils/IndexUrlTest.php)6
-rw-r--r--tests/http/HttpUtils/IsHttpsTest.php (renamed from tests/HttpUtils/IsHttpsTest.php)5
-rw-r--r--tests/http/HttpUtils/PageUrlTest.php (renamed from tests/HttpUtils/PageUrlTest.php)6
-rw-r--r--tests/http/HttpUtils/ServerUrlTest.php (renamed from tests/HttpUtils/ServerUrlTest.php)6
-rw-r--r--tests/http/UrlTest.php (renamed from tests/Url/UrlTest.php)24
-rw-r--r--tests/http/UrlUtils/CleanupUrlTest.php (renamed from tests/Url/CleanupUrlTest.php)6
-rw-r--r--tests/http/UrlUtils/GetUrlSchemeTest.php (renamed from tests/Url/GetUrlSchemeTest.php)10
-rw-r--r--tests/http/UrlUtils/UnparseUrlTest.php (renamed from tests/Url/UnparseUrlTest.php)8
-rw-r--r--tests/http/UrlUtils/WhitelistProtocolsTest.php (renamed from tests/Url/WhitelistProtocolsTest.php)8
-rw-r--r--tests/languages/fr/LanguagesFrTest.php2
-rw-r--r--tests/netscape/BookmarkExportTest.php (renamed from tests/NetscapeBookmarkUtils/BookmarkExportTest.php)11
-rw-r--r--tests/netscape/BookmarkImportTest.php (renamed from tests/NetscapeBookmarkUtils/BookmarkImportTest.php)8
-rw-r--r--tests/netscape/input/empty.htm (renamed from tests/NetscapeBookmarkUtils/input/empty.htm)0
-rw-r--r--tests/netscape/input/internet_explorer_encoding.htm (renamed from tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm)0
-rw-r--r--tests/netscape/input/lowercase_doctype.htm (renamed from tests/NetscapeBookmarkUtils/input/lowercase_doctype.htm)0
-rw-r--r--tests/netscape/input/netscape_basic.htm (renamed from tests/NetscapeBookmarkUtils/input/netscape_basic.htm)0
-rw-r--r--tests/netscape/input/netscape_nested.htm (renamed from tests/NetscapeBookmarkUtils/input/netscape_nested.htm)0
-rw-r--r--tests/netscape/input/no_doctype.htm (renamed from tests/NetscapeBookmarkUtils/input/no_doctype.htm)0
-rw-r--r--tests/netscape/input/same_date.htm (renamed from tests/NetscapeBookmarkUtils/input/same_date.htm)0
-rw-r--r--tests/plugins/PluginAddlinkTest.php10
-rw-r--r--tests/plugins/PluginArchiveorgTest.php5
-rw-r--r--tests/plugins/PluginDefaultColorsTest.php195
-rw-r--r--tests/plugins/PluginIssoTest.php7
-rw-r--r--tests/plugins/PluginMarkdownTest.php8
-rw-r--r--tests/plugins/PluginPlayvideosTest.php7
-rw-r--r--tests/plugins/PluginPubsubhubbubTest.php7
-rw-r--r--tests/plugins/PluginQrcodeTest.php8
-rw-r--r--tests/plugins/PluginWallabagTest.php9
-rw-r--r--tests/plugins/WallabagInstanceTest.php5
-rw-r--r--tests/render/ThemeUtilsTest.php (renamed from tests/ThemeUtilsTest.php)4
-rw-r--r--tests/security/BanManagerTest.php393
-rw-r--r--tests/security/LoginManagerTest.php115
-rw-r--r--tests/security/SessionManagerTest.php4
-rw-r--r--tests/updater/DummyUpdater.php (renamed from tests/Updater/DummyUpdater.php)9
-rw-r--r--tests/updater/UpdaterTest.php (renamed from tests/Updater/UpdaterTest.php)50
-rw-r--r--tests/utils/CurlUtils.php94
-rw-r--r--tests/utils/FakeApplicationUtils.php19
-rw-r--r--tests/utils/ReferenceHistory.php3
-rw-r--r--tests/utils/ReferenceLinkDB.php3
-rw-r--r--tests/utils/config/configPhp.php2
-rw-r--r--tpl/default/404.html4
-rw-r--r--tpl/default/addlink.html2
-rw-r--r--tpl/default/changepassword.html6
-rw-r--r--tpl/default/changetag.html8
-rw-r--r--tpl/default/configure.html18
-rw-r--r--tpl/default/daily.html9
-rw-r--r--tpl/default/editlink.html2
-rw-r--r--tpl/default/export.html2
-rw-r--r--tpl/default/import.html2
-rw-r--r--tpl/default/install.html2
-rw-r--r--tpl/default/linklist.html43
-rw-r--r--tpl/default/linklist.paging.html26
-rw-r--r--tpl/default/loginform.html16
-rw-r--r--tpl/default/page.footer.html5
-rw-r--r--tpl/default/page.header.html39
-rw-r--r--tpl/default/picwall.html2
-rw-r--r--tpl/default/pluginsadmin.html2
-rw-r--r--tpl/default/tag.cloud.html2
-rw-r--r--tpl/default/tag.list.html2
-rw-r--r--tpl/default/tag.sort.html6
-rw-r--r--tpl/default/thumbnails.html2
-rw-r--r--tpl/default/tools.html2
-rw-r--r--tpl/vintage/configure.html8
-rw-r--r--tpl/vintage/daily.html3
-rw-r--r--yarn.lock3100
179 files changed, 5561 insertions, 5113 deletions
diff --git a/.dev/.sasslintrc b/.dev/.sasslintrc
index ac406d7b..47c3145d 100644
--- a/.dev/.sasslintrc
+++ b/.dev/.sasslintrc
@@ -2,9 +2,11 @@ options:
2 max-warnings: 0 2 max-warnings: 0
3rules: 3rules:
4 property-sort-order: 4 property-sort-order:
5 - 1 5 - 0
6 - 6# Sort order rule does not work with CSS variables: https://github.com/sasstools/sass-lint/issues/1161
7 order: 'concentric' 7# - 1
8# -
9# order: 'concentric'
8 no-important: 10 no-important:
9 - 0 11 - 0
10 no-vendor-prefixes: 12 no-vendor-prefixes:
diff --git a/.gitignore b/.gitignore
index 414ff6d5..b21d2118 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,15 +22,17 @@ inc/languages/*/LC_MESSAGES/shaarli.mo
22 22
23# Development and test resources 23# Development and test resources
24coverage 24coverage
25doxygen
26sandbox 25sandbox
27phpmd.html 26phpmd.html
27phpdoc.xml
28 28
29# User plugin configuration 29# User plugin configuration
30plugins/*/config.php 30plugins/*/config.php
31plugins/default_colors/default_colors.css
31 32
32# HTML documentation 33# HTML documentation
33doc/html/ 34doc/html/
35doc/phpdoc/
34 36
35# 3rd party themes 37# 3rd party themes
36tpl/* 38tpl/*
@@ -46,3 +48,6 @@ tpl/default/img
46tpl/vintage/js 48tpl/vintage/js
47tpl/vintage/css 49tpl/vintage/css
48tpl/vintage/img 50tpl/vintage/img
51
52# Documented scripts
53generate_templates.php
diff --git a/.readthedocs.yml b/.readthedocs.yml
new file mode 100644
index 00000000..09e5a6a5
--- /dev/null
+++ b/.readthedocs.yml
@@ -0,0 +1,15 @@
1# .readthedocs.yml
2# Read the Docs configuration file
3# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
5# Required
6version: 2
7
8# Build documentation with MkDocs
9mkdocs:
10 configuration: mkdocs.yml
11
12# Optionally set the version of Python and requirements required to build your docs
13# https://github.com/rtfd/readthedocs.org/issues/5250
14python:
15 version: 3.5 \ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index cb81846f..c6400eef 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,6 +4,8 @@ dist: trusty
4matrix: 4matrix:
5 include: 5 include:
6 - language: php 6 - language: php
7 php: 7.3
8 - language: php
7 php: 7.2 9 php: 7.2
8 - language: php 10 - language: php
9 php: 7.1 11 php: 7.1
diff --git a/AUTHORS b/AUTHORS
index f91a770e..755d1bae 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,9 +1,10 @@
1 716 ArthurHoaro <arthur@hoa.ro> 1 769 ArthurHoaro <arthur@hoa.ro>
2 372 VirtualTam <virtualtam@flibidi.net> 2 401 VirtualTam <virtualtam@flibidi.net>
3 208 nodiscc <nodiscc@gmail.com> 3 216 nodiscc <nodiscc@gmail.com>
4 56 Sébastien Sauvage <sebsauvage@sebsauvage.net> 4 56 Sébastien Sauvage <sebsauvage@sebsauvage.net>
5 15 Florian Eula <eula.florian@gmail.com> 5 15 Florian Eula <eula.florian@gmail.com>
6 13 Emilien Klein <emilien@klein.st> 6 13 Emilien Klein <emilien@klein.st>
7 13 Luce Carević <lcarevic@access42.net>
7 12 Nicolas Danelon <hi@nicolasmd.com.ar> 8 12 Nicolas Danelon <hi@nicolasmd.com.ar>
8 9 Willi Eggeling <thewilli@gmail.com> 9 9 Willi Eggeling <thewilli@gmail.com>
9 8 Christophe HENRY <christophe.henry@sbgodin.fr> 10 8 Christophe HENRY <christophe.henry@sbgodin.fr>
@@ -15,12 +16,12 @@
15 4 Alexandre Alapetite <alexandre@alapetite.fr> 16 4 Alexandre Alapetite <alexandre@alapetite.fr>
16 4 David Sferruzza <david.sferruzza@gmail.com> 17 4 David Sferruzza <david.sferruzza@gmail.com>
17 4 Immánuel Fodor <immanuelfactor+github@gmail.com> 18 4 Immánuel Fodor <immanuelfactor+github@gmail.com>
19 3 Agurato <mail.vmonot@gmail.com>
18 3 Teromene <teromene@teromene.fr> 20 3 Teromene <teromene@teromene.fr>
19 2 Alexandre G.-Raymond <alex@ndre.gr> 21 2 Alexandre G.-Raymond <alex@ndre.gr>
20 2 Chris Kuethe <chris.kuethe@gmail.com> 22 2 Chris Kuethe <chris.kuethe@gmail.com>
21 2 Felix Bartels <felix@host-consultants.de> 23 2 Felix Bartels <felix@host-consultants.de>
22 2 Knah Tsaeb <Knah-Tsaeb@knah-tsaeb.org> 24 2 Knah Tsaeb <Knah-Tsaeb@knah-tsaeb.org>
23 2 Luce Carević <lcarevic@access42.net>
24 2 Mathieu Chabanon <git@matchab.fr> 25 2 Mathieu Chabanon <git@matchab.fr>
25 2 Miloš Jovanović <mjovanovic@gmail.com> 26 2 Miloš Jovanović <mjovanovic@gmail.com>
26 2 Qwerty <champlywood@free.fr> 27 2 Qwerty <champlywood@free.fr>
@@ -29,6 +30,7 @@
29 2 julienCXX <software@chmodplusx.eu> 30 2 julienCXX <software@chmodplusx.eu>
30 2 philipp-r <philipp-r@users.noreply.github.com> 31 2 philipp-r <philipp-r@users.noreply.github.com>
31 2 pips <pips@e5150.fr> 32 2 pips <pips@e5150.fr>
33 2 trailjeep <trailjeep@gmail.com>
32 1 Adrien Oliva <adrien.oliva@yapbreak.fr> 34 1 Adrien Oliva <adrien.oliva@yapbreak.fr>
33 1 Adrien le Maire <adrien@alemaire.be> 35 1 Adrien le Maire <adrien@alemaire.be>
34 1 Alexis J <alexis@effingo.be> 36 1 Alexis J <alexis@effingo.be>
@@ -56,6 +58,7 @@
56 1 Mark Gerarts <mark.gerarts@gmail.com> 58 1 Mark Gerarts <mark.gerarts@gmail.com>
57 1 Marsup <marsup@gmail.com> 59 1 Marsup <marsup@gmail.com>
58 1 Neros <contact@neros.fr> 60 1 Neros <contact@neros.fr>
61 1 Rajat Hans <rajathans9@gmail.com>
59 1 Sbgodin <Sbgodin@users.noreply.github.com> 62 1 Sbgodin <Sbgodin@users.noreply.github.com>
60 1 TsT <tst2005@gmail.com> 63 1 TsT <tst2005@gmail.com>
61 1 dimtion <zizou.xena@gmail.com> 64 1 dimtion <zizou.xena@gmail.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c08e42ee..189ed13d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,9 +4,54 @@ All notable changes to this project will be documented in this file.
4The format is based on [Keep a Changelog](http://keepachangelog.com/) 4The format is based on [Keep a Changelog](http://keepachangelog.com/)
5and this project adheres to [Semantic Versioning](http://semver.org/). 5and this project adheres to [Semantic Versioning](http://semver.org/).
6 6
7## [v0.10.4](https://github.com/shaarli/Shaarli/releases/tag/v0.10.4) - 2019-04-16 7## [v0.11.0](https://github.com/shaarli/Shaarli/releases/tag/v0.11.0) - 2019-07-27
8
9**Shaarli no longer officially support PHP 5.6 and PHP 7.0 as they've reached end of life.**
10
11**Shaarli classes now use namespace, third party plugins need to update.**
12
13### Added
14- Add optional PHP extension to composer suggestions.
15- composer: enforce PHP security advisories
16- phpDocumentor configuration and make target
17- Run unit tests against PHP 7.3
18- Bunch of accessibility improvements to the default template, thanks to @llune
19- Bulk actions: set visibility
20- Display sticky label in linklist
21- Add print CSS rules to the default template
22- New setting to automatically retrieve description for new bookmarks
23- Plugin to override default template colors
24
25### Changed
26- Shaarli now uses namespaces for its classes.
27- Rewrite IP ban management
28- Default template: slightly lighten visited link color
29- Hide select all button on mobile view
30- Switch from FontAwesome v4.x to ForkAwesome
31- Daily - display the current day instead of the previous one
8 32
9### Fixed 33### Fixed
34- Do not check the IP address with session protection disabled
35- API: update test regexes to comply with PCRE2
36- Optimize and cleanup imports
37- ensure HTML tags are stripped from OpenGraph description
38- Documentation invalid links
39- Thumbnails disabling if PHP GD is not installed
40- Warning if links sticky status isn't set
41- Fix button overlapping on mobile in linklist
42- Do not try to retrieve thumbnails for internal link
43- Update node-sass to fix a vulnerability in node tar dependency
44- armhf Dockerfile
45- Default template: Responsive issue with delete button fix
46- Persist sticky status on bookmark update
47
48### Removed
49- Doxygen configuration
50- redirector setting
51- QRCode link to an external service
52
53## [v0.10.4](https://github.com/shaarli/Shaarli/releases/tag/v0.10.4) - 2019-04-16
54### Fixed
10- Fix thumbnails disabling if PHP GD is not installed 55- Fix thumbnails disabling if PHP GD is not installed
11- Fix a warning if links sticky status isn't set 56- Fix a warning if links sticky status isn't set
12 57
@@ -121,6 +166,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
121### Security 166### Security
122- Update `.htaccess` to prevent accessing Git metadata when using a Git-based installation 167- Update `.htaccess` to prevent accessing Git metadata when using a Git-based installation
123 168
169
124## [v0.9.7](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) - 2018-06-20 170## [v0.9.7](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) - 2018-06-20
125### Changed 171### Changed
126- Build the Docker images from the local Git sources 172- Build the Docker images from the local Git sources
@@ -340,22 +386,6 @@ Theming:
340### Security 386### Security
341- Markdown plugin: escape HTML entities by default 387- Markdown plugin: escape HTML entities by default
342 388
343## [v0.8.4](https://github.com/shaarli/Shaarli/releases/tag/v0.8.4) - 2017-03-04
344### Security
345- Markdown plugin: escape HTML entities by default
346
347
348## [v0.8.3](https://github.com/shaarli/Shaarli/releases/tag/v0.8.3) - 2017-01-20
349
350### Fixed
351
352- PHP 7.1 compatibility: add ConfigManager parameter to anti-bruteforce function call in login template.
353
354## [v0.8.2](https://github.com/shaarli/Shaarli/releases/tag/v0.8.2) - 2016-12-15
355
356### Fixed
357
358- Editing a link created before the new ID system would change its permalink.
359 389
360## [v0.8.7](https://github.com/shaarli/Shaarli/releases/tag/v0.8.7) - 2018-06-20 390## [v0.8.7](https://github.com/shaarli/Shaarli/releases/tag/v0.8.7) - 2018-06-20
361### Changed 391### Changed
diff --git a/Dockerfile.armhf b/Dockerfile.armhf
index 1185e2df..b75663bb 100644
--- a/Dockerfile.armhf
+++ b/Dockerfile.armhf
@@ -12,7 +12,7 @@ RUN apk --update --no-cache add py2-pip \
12# - Resolve PHP dependencies with Composer 12# - Resolve PHP dependencies with Composer
13FROM arm32v6/alpine:3.8 as composer 13FROM arm32v6/alpine:3.8 as composer
14COPY --from=docs /usr/src/app/shaarli /app/shaarli 14COPY --from=docs /usr/src/app/shaarli /app/shaarli
15RUN apk --update --no-cache add php7-mbstring composer \ 15RUN apk --update --no-cache add php7-curl php7-mbstring composer \
16 && cd /app/shaarli \ 16 && cd /app/shaarli \
17 && composer --prefer-dist --no-dev install 17 && composer --prefer-dist --no-dev install
18 18
diff --git a/Doxyfile b/Doxyfile
deleted file mode 100644
index a7f6e04f..00000000
--- a/Doxyfile
+++ /dev/null
@@ -1,2377 +0,0 @@
1# Doxyfile 1.8.9.1
2
3# This file describes the settings to be used by the documentation system
4# doxygen (www.doxygen.org) for a project.
5#
6# All text after a double hash (##) is considered a comment and is placed in
7# front of the TAG it is preceding.
8#
9# All text after a single hash (#) is considered a comment and will be ignored.
10# The format is:
11# TAG = value [value, ...]
12# For lists, items can also be appended using:
13# TAG += value [value, ...]
14# Values that contain spaces should be placed between quotes (\" \").
15
16#---------------------------------------------------------------------------
17# Project related configuration options
18#---------------------------------------------------------------------------
19
20# This tag specifies the encoding used for all characters in the config file
21# that follow. The default is UTF-8 which is also the encoding used for all text
22# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
23# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
24# for the list of possible encodings.
25# The default value is: UTF-8.
26
27DOXYFILE_ENCODING = UTF-8
28
29# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
30# double-quotes, unless you are using Doxywizard) that should identify the
31# project for which the documentation is generated. This name is used in the
32# title of most generated pages and in a few other places.
33# The default value is: My Project.
34
35PROJECT_NAME = Shaarli
36
37# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
38# could be handy for archiving the generated documentation or if some version
39# control system is used.
40
41PROJECT_NUMBER =
42
43# Using the PROJECT_BRIEF tag one can provide an optional one line description
44# for a project that appears at the top of each page and should give viewer a
45# quick idea about the purpose of the project. Keep the description short.
46
47PROJECT_BRIEF = "The personal, minimalist, super-fast, no-database delicious clone"
48
49# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
50# in the documentation. The maximum height of the logo should not exceed 55
51# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
52# the logo to the output directory.
53
54PROJECT_LOGO = doc/md/images/logo.png
55
56# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
57# into which the generated documentation will be written. If a relative path is
58# entered, it will be relative to the location where doxygen was started. If
59# left blank the current directory will be used.
60
61OUTPUT_DIRECTORY = .
62
63# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
64# directories (in 2 levels) under the output directory of each output format and
65# will distribute the generated files over these directories. Enabling this
66# option can be useful when feeding doxygen a huge amount of source files, where
67# putting all generated files in the same directory would otherwise causes
68# performance problems for the file system.
69# The default value is: NO.
70
71CREATE_SUBDIRS = NO
72
73# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
74# characters to appear in the names of generated files. If set to NO, non-ASCII
75# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
76# U+3044.
77# The default value is: NO.
78
79ALLOW_UNICODE_NAMES = NO
80
81# The OUTPUT_LANGUAGE tag is used to specify the language in which all
82# documentation generated by doxygen is written. Doxygen will use this
83# information to generate all constant output in the proper language.
84# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
85# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
86# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
87# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
88# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
89# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
90# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
91# Ukrainian and Vietnamese.
92# The default value is: English.
93
94OUTPUT_LANGUAGE = English
95
96# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
97# descriptions after the members that are listed in the file and class
98# documentation (similar to Javadoc). Set to NO to disable this.
99# The default value is: YES.
100
101BRIEF_MEMBER_DESC = YES
102
103# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
104# description of a member or function before the detailed description
105#
106# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
107# brief descriptions will be completely suppressed.
108# The default value is: YES.
109
110REPEAT_BRIEF = YES
111
112# This tag implements a quasi-intelligent brief description abbreviator that is
113# used to form the text in various listings. Each string in this list, if found
114# as the leading text of the brief description, will be stripped from the text
115# and the result, after processing the whole list, is used as the annotated
116# text. Otherwise, the brief description is used as-is. If left blank, the
117# following values are used ($name is automatically replaced with the name of
118# the entity):The $name class, The $name widget, The $name file, is, provides,
119# specifies, contains, represents, a, an and the.
120
121ABBREVIATE_BRIEF = "The $name class" \
122 "The $name widget" \
123 "The $name file" \
124 is \
125 provides \
126 specifies \
127 contains \
128 represents \
129 a \
130 an \
131 the
132
133# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
134# doxygen will generate a detailed section even if there is only a brief
135# description.
136# The default value is: NO.
137
138ALWAYS_DETAILED_SEC = NO
139
140# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
141# inherited members of a class in the documentation of that class as if those
142# members were ordinary class members. Constructors, destructors and assignment
143# operators of the base classes will not be shown.
144# The default value is: NO.
145
146INLINE_INHERITED_MEMB = NO
147
148# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
149# before files name in the file list and in the header files. If set to NO the
150# shortest path that makes the file name unique will be used
151# The default value is: YES.
152
153FULL_PATH_NAMES = YES
154
155# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
156# Stripping is only done if one of the specified strings matches the left-hand
157# part of the path. The tag can be used to show relative paths in the file list.
158# If left blank the directory from which doxygen is run is used as the path to
159# strip.
160#
161# Note that you can specify absolute paths here, but also relative paths, which
162# will be relative from the directory where doxygen is started.
163# This tag requires that the tag FULL_PATH_NAMES is set to YES.
164
165STRIP_FROM_PATH =
166
167# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
168# path mentioned in the documentation of a class, which tells the reader which
169# header file to include in order to use a class. If left blank only the name of
170# the header file containing the class definition is used. Otherwise one should
171# specify the list of include paths that are normally passed to the compiler
172# using the -I flag.
173
174STRIP_FROM_INC_PATH =
175
176# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
177# less readable) file names. This can be useful is your file systems doesn't
178# support long names like on DOS, Mac, or CD-ROM.
179# The default value is: NO.
180
181SHORT_NAMES = NO
182
183# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
184# first line (until the first dot) of a Javadoc-style comment as the brief
185# description. If set to NO, the Javadoc-style will behave just like regular Qt-
186# style comments (thus requiring an explicit @brief command for a brief
187# description.)
188# The default value is: NO.
189
190JAVADOC_AUTOBRIEF = NO
191
192# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
193# line (until the first dot) of a Qt-style comment as the brief description. If
194# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
195# requiring an explicit \brief command for a brief description.)
196# The default value is: NO.
197
198QT_AUTOBRIEF = NO
199
200# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
201# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
202# a brief description. This used to be the default behavior. The new default is
203# to treat a multi-line C++ comment block as a detailed description. Set this
204# tag to YES if you prefer the old behavior instead.
205#
206# Note that setting this tag to YES also means that rational rose comments are
207# not recognized any more.
208# The default value is: NO.
209
210MULTILINE_CPP_IS_BRIEF = NO
211
212# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
213# documentation from any documented member that it re-implements.
214# The default value is: YES.
215
216INHERIT_DOCS = YES
217
218# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
219# page for each member. If set to NO, the documentation of a member will be part
220# of the file/class/namespace that contains it.
221# The default value is: NO.
222
223SEPARATE_MEMBER_PAGES = NO
224
225# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
226# uses this value to replace tabs by spaces in code fragments.
227# Minimum value: 1, maximum value: 16, default value: 4.
228
229TAB_SIZE = 4
230
231# This tag can be used to specify a number of aliases that act as commands in
232# the documentation. An alias has the form:
233# name=value
234# For example adding
235# "sideeffect=@par Side Effects:\n"
236# will allow you to put the command \sideeffect (or @sideeffect) in the
237# documentation, which will result in a user-defined paragraph with heading
238# "Side Effects:". You can put \n's in the value part of an alias to insert
239# newlines.
240
241ALIASES =
242
243# This tag can be used to specify a number of word-keyword mappings (TCL only).
244# A mapping has the form "name=value". For example adding "class=itcl::class"
245# will allow you to use the command class in the itcl::class meaning.
246
247TCL_SUBST =
248
249# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
250# only. Doxygen will then generate output that is more tailored for C. For
251# instance, some of the names that are used will be different. The list of all
252# members will be omitted, etc.
253# The default value is: NO.
254
255OPTIMIZE_OUTPUT_FOR_C = YES
256
257# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
258# Python sources only. Doxygen will then generate output that is more tailored
259# for that language. For instance, namespaces will be presented as packages,
260# qualified scopes will look different, etc.
261# The default value is: NO.
262
263OPTIMIZE_OUTPUT_JAVA = NO
264
265# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
266# sources. Doxygen will then generate output that is tailored for Fortran.
267# The default value is: NO.
268
269OPTIMIZE_FOR_FORTRAN = NO
270
271# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
272# sources. Doxygen will then generate output that is tailored for VHDL.
273# The default value is: NO.
274
275OPTIMIZE_OUTPUT_VHDL = NO
276
277# Doxygen selects the parser to use depending on the extension of the files it
278# parses. With this tag you can assign which parser to use for a given
279# extension. Doxygen has a built-in mapping, but you can override or extend it
280# using this tag. The format is ext=language, where ext is a file extension, and
281# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
282# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
283# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
284# Fortran. In the later case the parser tries to guess whether the code is fixed
285# or free formatted code, this is the default for Fortran type files), VHDL. For
286# instance to make doxygen treat .inc files as Fortran files (default is PHP),
287# and .f files as C (default is Fortran), use: inc=Fortran f=C.
288#
289# Note: For files without extension you can use no_extension as a placeholder.
290#
291# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
292# the files are not read by doxygen.
293
294EXTENSION_MAPPING =
295
296# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
297# according to the Markdown format, which allows for more readable
298# documentation. See http://daringfireball.net/projects/markdown/ for details.
299# The output of markdown processing is further processed by doxygen, so you can
300# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
301# case of backward compatibilities issues.
302# The default value is: YES.
303
304MARKDOWN_SUPPORT = YES
305
306# When enabled doxygen tries to link words that correspond to documented
307# classes, or namespaces to their corresponding documentation. Such a link can
308# be prevented in individual cases by putting a % sign in front of the word or
309# globally by setting AUTOLINK_SUPPORT to NO.
310# The default value is: YES.
311
312AUTOLINK_SUPPORT = YES
313
314# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
315# to include (a tag file for) the STL sources as input, then you should set this
316# tag to YES in order to let doxygen match functions declarations and
317# definitions whose arguments contain STL classes (e.g. func(std::string);
318# versus func(std::string) {}). This also make the inheritance and collaboration
319# diagrams that involve STL classes more complete and accurate.
320# The default value is: NO.
321
322BUILTIN_STL_SUPPORT = NO
323
324# If you use Microsoft's C++/CLI language, you should set this option to YES to
325# enable parsing support.
326# The default value is: NO.
327
328CPP_CLI_SUPPORT = NO
329
330# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
331# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
332# will parse them like normal C++ but will assume all classes use public instead
333# of private inheritance when no explicit protection keyword is present.
334# The default value is: NO.
335
336SIP_SUPPORT = NO
337
338# For Microsoft's IDL there are propget and propput attributes to indicate
339# getter and setter methods for a property. Setting this option to YES will make
340# doxygen to replace the get and set methods by a property in the documentation.
341# This will only work if the methods are indeed getting or setting a simple
342# type. If this is not the case, or you want to show the methods anyway, you
343# should set this option to NO.
344# The default value is: YES.
345
346IDL_PROPERTY_SUPPORT = YES
347
348# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
349# tag is set to YES then doxygen will reuse the documentation of the first
350# member in the group (if any) for the other members of the group. By default
351# all members of a group must be documented explicitly.
352# The default value is: NO.
353
354DISTRIBUTE_GROUP_DOC = NO
355
356# Set the SUBGROUPING tag to YES to allow class member groups of the same type
357# (for instance a group of public functions) to be put as a subgroup of that
358# type (e.g. under the Public Functions section). Set it to NO to prevent
359# subgrouping. Alternatively, this can be done per class using the
360# \nosubgrouping command.
361# The default value is: YES.
362
363SUBGROUPING = YES
364
365# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
366# are shown inside the group in which they are included (e.g. using \ingroup)
367# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
368# and RTF).
369#
370# Note that this feature does not work in combination with
371# SEPARATE_MEMBER_PAGES.
372# The default value is: NO.
373
374INLINE_GROUPED_CLASSES = NO
375
376# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
377# with only public data fields or simple typedef fields will be shown inline in
378# the documentation of the scope in which they are defined (i.e. file,
379# namespace, or group documentation), provided this scope is documented. If set
380# to NO, structs, classes, and unions are shown on a separate page (for HTML and
381# Man pages) or section (for LaTeX and RTF).
382# The default value is: NO.
383
384INLINE_SIMPLE_STRUCTS = NO
385
386# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
387# enum is documented as struct, union, or enum with the name of the typedef. So
388# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
389# with name TypeT. When disabled the typedef will appear as a member of a file,
390# namespace, or class. And the struct will be named TypeS. This can typically be
391# useful for C code in case the coding convention dictates that all compound
392# types are typedef'ed and only the typedef is referenced, never the tag name.
393# The default value is: NO.
394
395TYPEDEF_HIDES_STRUCT = NO
396
397# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
398# cache is used to resolve symbols given their name and scope. Since this can be
399# an expensive process and often the same symbol appears multiple times in the
400# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
401# doxygen will become slower. If the cache is too large, memory is wasted. The
402# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
403# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
404# symbols. At the end of a run doxygen will report the cache usage and suggest
405# the optimal cache size from a speed point of view.
406# Minimum value: 0, maximum value: 9, default value: 0.
407
408LOOKUP_CACHE_SIZE = 0
409
410#---------------------------------------------------------------------------
411# Build related configuration options
412#---------------------------------------------------------------------------
413
414# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
415# documentation are documented, even if no documentation was available. Private
416# class members and static file members will be hidden unless the
417# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
418# Note: This will also disable the warnings about undocumented members that are
419# normally produced when WARNINGS is set to YES.
420# The default value is: NO.
421
422EXTRACT_ALL = YES
423
424# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
425# be included in the documentation.
426# The default value is: NO.
427
428EXTRACT_PRIVATE = YES
429
430# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
431# scope will be included in the documentation.
432# The default value is: NO.
433
434EXTRACT_PACKAGE = YES
435
436# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
437# included in the documentation.
438# The default value is: NO.
439
440EXTRACT_STATIC = YES
441
442# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
443# locally in source files will be included in the documentation. If set to NO,
444# only classes defined in header files are included. Does not have any effect
445# for Java sources.
446# The default value is: YES.
447
448EXTRACT_LOCAL_CLASSES = YES
449
450# This flag is only useful for Objective-C code. If set to YES, local methods,
451# which are defined in the implementation section but not in the interface are
452# included in the documentation. If set to NO, only methods in the interface are
453# included.
454# The default value is: NO.
455
456EXTRACT_LOCAL_METHODS = YES
457
458# If this flag is set to YES, the members of anonymous namespaces will be
459# extracted and appear in the documentation as a namespace called
460# 'anonymous_namespace{file}', where file will be replaced with the base name of
461# the file that contains the anonymous namespace. By default anonymous namespace
462# are hidden.
463# The default value is: NO.
464
465EXTRACT_ANON_NSPACES = YES
466
467# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
468# undocumented members inside documented classes or files. If set to NO these
469# members will be included in the various overviews, but no documentation
470# section is generated. This option has no effect if EXTRACT_ALL is enabled.
471# The default value is: NO.
472
473HIDE_UNDOC_MEMBERS = NO
474
475# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
476# undocumented classes that are normally visible in the class hierarchy. If set
477# to NO, these classes will be included in the various overviews. This option
478# has no effect if EXTRACT_ALL is enabled.
479# The default value is: NO.
480
481HIDE_UNDOC_CLASSES = NO
482
483# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
484# (class|struct|union) declarations. If set to NO, these declarations will be
485# included in the documentation.
486# The default value is: NO.
487
488HIDE_FRIEND_COMPOUNDS = NO
489
490# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
491# documentation blocks found inside the body of a function. If set to NO, these
492# blocks will be appended to the function's detailed documentation block.
493# The default value is: NO.
494
495HIDE_IN_BODY_DOCS = NO
496
497# The INTERNAL_DOCS tag determines if documentation that is typed after a
498# \internal command is included. If the tag is set to NO then the documentation
499# will be excluded. Set it to YES to include the internal documentation.
500# The default value is: NO.
501
502INTERNAL_DOCS = NO
503
504# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
505# names in lower-case letters. If set to YES, upper-case letters are also
506# allowed. This is useful if you have classes or files whose names only differ
507# in case and if your file system supports case sensitive file names. Windows
508# and Mac users are advised to set this option to NO.
509# The default value is: system dependent.
510
511CASE_SENSE_NAMES = NO
512
513# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
514# their full class and namespace scopes in the documentation. If set to YES, the
515# scope will be hidden.
516# The default value is: NO.
517
518HIDE_SCOPE_NAMES = YES
519
520# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
521# append additional text to a page's title, such as Class Reference. If set to
522# YES the compound reference will be hidden.
523# The default value is: NO.
524
525HIDE_COMPOUND_REFERENCE= NO
526
527# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
528# the files that are included by a file in the documentation of that file.
529# The default value is: YES.
530
531SHOW_INCLUDE_FILES = YES
532
533# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
534# grouped member an include statement to the documentation, telling the reader
535# which file to include in order to use the member.
536# The default value is: NO.
537
538SHOW_GROUPED_MEMB_INC = NO
539
540# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
541# files with double quotes in the documentation rather than with sharp brackets.
542# The default value is: NO.
543
544FORCE_LOCAL_INCLUDES = NO
545
546# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
547# documentation for inline members.
548# The default value is: YES.
549
550INLINE_INFO = YES
551
552# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
553# (detailed) documentation of file and class members alphabetically by member
554# name. If set to NO, the members will appear in declaration order.
555# The default value is: YES.
556
557SORT_MEMBER_DOCS = YES
558
559# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
560# descriptions of file, namespace and class members alphabetically by member
561# name. If set to NO, the members will appear in declaration order. Note that
562# this will also influence the order of the classes in the class list.
563# The default value is: NO.
564
565SORT_BRIEF_DOCS = NO
566
567# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
568# (brief and detailed) documentation of class members so that constructors and
569# destructors are listed first. If set to NO the constructors will appear in the
570# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
571# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
572# member documentation.
573# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
574# detailed member documentation.
575# The default value is: NO.
576
577SORT_MEMBERS_CTORS_1ST = NO
578
579# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
580# of group names into alphabetical order. If set to NO the group names will
581# appear in their defined order.
582# The default value is: NO.
583
584SORT_GROUP_NAMES = NO
585
586# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
587# fully-qualified names, including namespaces. If set to NO, the class list will
588# be sorted only by class name, not including the namespace part.
589# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
590# Note: This option applies only to the class list, not to the alphabetical
591# list.
592# The default value is: NO.
593
594SORT_BY_SCOPE_NAME = NO
595
596# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
597# type resolution of all parameters of a function it will reject a match between
598# the prototype and the implementation of a member function even if there is
599# only one candidate or it is obvious which candidate to choose by doing a
600# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
601# accept a match between prototype and implementation in such cases.
602# The default value is: NO.
603
604STRICT_PROTO_MATCHING = NO
605
606# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
607# list. This list is created by putting \todo commands in the documentation.
608# The default value is: YES.
609
610GENERATE_TODOLIST = YES
611
612# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
613# list. This list is created by putting \test commands in the documentation.
614# The default value is: YES.
615
616GENERATE_TESTLIST = YES
617
618# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
619# list. This list is created by putting \bug commands in the documentation.
620# The default value is: YES.
621
622GENERATE_BUGLIST = YES
623
624# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
625# the deprecated list. This list is created by putting \deprecated commands in
626# the documentation.
627# The default value is: YES.
628
629GENERATE_DEPRECATEDLIST= YES
630
631# The ENABLED_SECTIONS tag can be used to enable conditional documentation
632# sections, marked by \if <section_label> ... \endif and \cond <section_label>
633# ... \endcond blocks.
634
635ENABLED_SECTIONS =
636
637# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
638# initial value of a variable or macro / define can have for it to appear in the
639# documentation. If the initializer consists of more lines than specified here
640# it will be hidden. Use a value of 0 to hide initializers completely. The
641# appearance of the value of individual variables and macros / defines can be
642# controlled using \showinitializer or \hideinitializer command in the
643# documentation regardless of this setting.
644# Minimum value: 0, maximum value: 10000, default value: 30.
645
646MAX_INITIALIZER_LINES = 30
647
648# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
649# the bottom of the documentation of classes and structs. If set to YES, the
650# list will mention the files that were used to generate the documentation.
651# The default value is: YES.
652
653SHOW_USED_FILES = YES
654
655# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
656# will remove the Files entry from the Quick Index and from the Folder Tree View
657# (if specified).
658# The default value is: YES.
659
660SHOW_FILES = YES
661
662# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
663# page. This will remove the Namespaces entry from the Quick Index and from the
664# Folder Tree View (if specified).
665# The default value is: YES.
666
667SHOW_NAMESPACES = NO
668
669# The FILE_VERSION_FILTER tag can be used to specify a program or script that
670# doxygen should invoke to get the current version for each file (typically from
671# the version control system). Doxygen will invoke the program by executing (via
672# popen()) the command command input-file, where command is the value of the
673# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
674# by doxygen. Whatever the program writes to standard output is used as the file
675# version. For an example see the documentation.
676
677FILE_VERSION_FILTER =
678
679# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
680# by doxygen. The layout file controls the global structure of the generated
681# output files in an output format independent way. To create the layout file
682# that represents doxygen's defaults, run doxygen with the -l option. You can
683# optionally specify a file name after the option, if omitted DoxygenLayout.xml
684# will be used as the name of the layout file.
685#
686# Note that if you run doxygen from a directory containing a file called
687# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
688# tag is left empty.
689
690LAYOUT_FILE =
691
692# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
693# the reference definitions. This must be a list of .bib files. The .bib
694# extension is automatically appended if omitted. This requires the bibtex tool
695# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
696# For LaTeX the style of the bibliography can be controlled using
697# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
698# search path. See also \cite for info how to create references.
699
700CITE_BIB_FILES =
701
702#---------------------------------------------------------------------------
703# Configuration options related to warning and progress messages
704#---------------------------------------------------------------------------
705
706# The QUIET tag can be used to turn on/off the messages that are generated to
707# standard output by doxygen. If QUIET is set to YES this implies that the
708# messages are off.
709# The default value is: NO.
710
711QUIET = NO
712
713# The WARNINGS tag can be used to turn on/off the warning messages that are
714# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
715# this implies that the warnings are on.
716#
717# Tip: Turn warnings on while writing the documentation.
718# The default value is: YES.
719
720WARNINGS = YES
721
722# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
723# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
724# will automatically be disabled.
725# The default value is: YES.
726
727WARN_IF_UNDOCUMENTED = YES
728
729# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
730# potential errors in the documentation, such as not documenting some parameters
731# in a documented function, or documenting parameters that don't exist or using
732# markup commands wrongly.
733# The default value is: YES.
734
735WARN_IF_DOC_ERROR = YES
736
737# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
738# are documented, but have no documentation for their parameters or return
739# value. If set to NO, doxygen will only warn about wrong or incomplete
740# parameter documentation, but not about the absence of documentation.
741# The default value is: NO.
742
743WARN_NO_PARAMDOC = NO
744
745# The WARN_FORMAT tag determines the format of the warning messages that doxygen
746# can produce. The string should contain the $file, $line, and $text tags, which
747# will be replaced by the file and line number from which the warning originated
748# and the warning text. Optionally the format may contain $version, which will
749# be replaced by the version of the file (if it could be obtained via
750# FILE_VERSION_FILTER)
751# The default value is: $file:$line: $text.
752
753WARN_FORMAT = "$file:$line: $text"
754
755# The WARN_LOGFILE tag can be used to specify a file to which warning and error
756# messages should be written. If left blank the output is written to standard
757# error (stderr).
758
759WARN_LOGFILE =
760
761#---------------------------------------------------------------------------
762# Configuration options related to the input files
763#---------------------------------------------------------------------------
764
765# The INPUT tag is used to specify the files and/or directories that contain
766# documented source files. You may enter file names like myfile.cpp or
767# directories like /usr/src/myproject. Separate the files or directories with
768# spaces.
769# Note: If this tag is empty the current directory is searched.
770
771INPUT = .
772
773# This tag can be used to specify the character encoding of the source files
774# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
775# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
776# documentation (see: http://www.gnu.org/software/libiconv) for the list of
777# possible encodings.
778# The default value is: UTF-8.
779
780INPUT_ENCODING = UTF-8
781
782# If the value of the INPUT tag contains directories, you can use the
783# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
784# *.h) to filter out the source-files in the directories. If left blank the
785# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
786# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
787# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
788# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
789# *.qsf, *.as and *.js.
790
791FILE_PATTERNS = *.php
792
793# The RECURSIVE tag can be used to specify whether or not subdirectories should
794# be searched for input files as well.
795# The default value is: NO.
796
797RECURSIVE = YES
798
799# The EXCLUDE tag can be used to specify files and/or directories that should be
800# excluded from the INPUT source files. This way you can easily exclude a
801# subdirectory from a directory tree whose root is specified with the INPUT tag.
802#
803# Note that relative paths are relative to the directory from which doxygen is
804# run.
805
806EXCLUDE = vendor \
807 data \
808 tpl \
809 inc \
810 doc \
811 tmp
812
813# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
814# directories that are symbolic links (a Unix file system feature) are excluded
815# from the input.
816# The default value is: NO.
817
818EXCLUDE_SYMLINKS = YES
819
820# If the value of the INPUT tag contains directories, you can use the
821# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
822# certain files from those directories.
823#
824# Note that the wildcards are matched against the file with absolute path, so to
825# exclude all test directories for example use the pattern */test/*
826
827EXCLUDE_PATTERNS =
828
829# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
830# (namespaces, classes, functions, etc.) that should be excluded from the
831# output. The symbol name can be a fully qualified name, a word, or if the
832# wildcard * is used, a substring. Examples: ANamespace, AClass,
833# AClass::ANamespace, ANamespace::*Test
834#
835# Note that the wildcards are matched against the file with absolute path, so to
836# exclude all test directories use the pattern */test/*
837
838EXCLUDE_SYMBOLS =
839
840# The EXAMPLE_PATH tag can be used to specify one or more files or directories
841# that contain example code fragments that are included (see the \include
842# command).
843
844EXAMPLE_PATH =
845
846# If the value of the EXAMPLE_PATH tag contains directories, you can use the
847# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
848# *.h) to filter out the source-files in the directories. If left blank all
849# files are included.
850
851EXAMPLE_PATTERNS = *
852
853# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
854# searched for input files to be used with the \include or \dontinclude commands
855# irrespective of the value of the RECURSIVE tag.
856# The default value is: NO.
857
858EXAMPLE_RECURSIVE = NO
859
860# The IMAGE_PATH tag can be used to specify one or more files or directories
861# that contain images that are to be included in the documentation (see the
862# \image command).
863
864IMAGE_PATH =
865
866# The INPUT_FILTER tag can be used to specify a program that doxygen should
867# invoke to filter for each input file. Doxygen will invoke the filter program
868# by executing (via popen()) the command:
869#
870# <filter> <input-file>
871#
872# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
873# name of an input file. Doxygen will then use the output that the filter
874# program writes to standard output. If FILTER_PATTERNS is specified, this tag
875# will be ignored.
876#
877# Note that the filter must not add or remove lines; it is applied before the
878# code is scanned, but not when the output code is generated. If lines are added
879# or removed, the anchors will not be placed correctly.
880
881INPUT_FILTER =
882
883# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
884# basis. Doxygen will compare the file name with each pattern and apply the
885# filter if there is a match. The filters are a list of the form: pattern=filter
886# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
887# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
888# patterns match the file name, INPUT_FILTER is applied.
889
890FILTER_PATTERNS =
891
892# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
893# INPUT_FILTER) will also be used to filter the input files that are used for
894# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
895# The default value is: NO.
896
897FILTER_SOURCE_FILES = NO
898
899# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
900# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
901# it is also possible to disable source filtering for a specific pattern using
902# *.ext= (so without naming a filter).
903# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
904
905FILTER_SOURCE_PATTERNS =
906
907# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
908# is part of the input, its contents will be placed on the main page
909# (index.html). This can be useful if you have a project on for instance GitHub
910# and want to reuse the introduction page also for the doxygen output.
911
912USE_MDFILE_AS_MAINPAGE =
913
914#---------------------------------------------------------------------------
915# Configuration options related to source browsing
916#---------------------------------------------------------------------------
917
918# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
919# generated. Documented entities will be cross-referenced with these sources.
920#
921# Note: To get rid of all source code in the generated output, make sure that
922# also VERBATIM_HEADERS is set to NO.
923# The default value is: NO.
924
925SOURCE_BROWSER = YES
926
927# Setting the INLINE_SOURCES tag to YES will include the body of functions,
928# classes and enums directly into the documentation.
929# The default value is: NO.
930
931INLINE_SOURCES = NO
932
933# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
934# special comment blocks from generated source code fragments. Normal C, C++ and
935# Fortran comments will always remain visible.
936# The default value is: YES.
937
938STRIP_CODE_COMMENTS = YES
939
940# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
941# function all documented functions referencing it will be listed.
942# The default value is: NO.
943
944REFERENCED_BY_RELATION = NO
945
946# If the REFERENCES_RELATION tag is set to YES then for each documented function
947# all documented entities called/used by that function will be listed.
948# The default value is: NO.
949
950REFERENCES_RELATION = NO
951
952# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
953# to YES then the hyperlinks from functions in REFERENCES_RELATION and
954# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
955# link to the documentation.
956# The default value is: YES.
957
958REFERENCES_LINK_SOURCE = YES
959
960# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
961# source code will show a tooltip with additional information such as prototype,
962# brief description and links to the definition and documentation. Since this
963# will make the HTML file larger and loading of large files a bit slower, you
964# can opt to disable this feature.
965# The default value is: YES.
966# This tag requires that the tag SOURCE_BROWSER is set to YES.
967
968SOURCE_TOOLTIPS = YES
969
970# If the USE_HTAGS tag is set to YES then the references to source code will
971# point to the HTML generated by the htags(1) tool instead of doxygen built-in
972# source browser. The htags tool is part of GNU's global source tagging system
973# (see http://www.gnu.org/software/global/global.html). You will need version
974# 4.8.6 or higher.
975#
976# To use it do the following:
977# - Install the latest version of global
978# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
979# - Make sure the INPUT points to the root of the source tree
980# - Run doxygen as normal
981#
982# Doxygen will invoke htags (and that will in turn invoke gtags), so these
983# tools must be available from the command line (i.e. in the search path).
984#
985# The result: instead of the source browser generated by doxygen, the links to
986# source code will now point to the output of htags.
987# The default value is: NO.
988# This tag requires that the tag SOURCE_BROWSER is set to YES.
989
990USE_HTAGS = NO
991
992# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
993# verbatim copy of the header file for each class for which an include is
994# specified. Set to NO to disable this.
995# See also: Section \class.
996# The default value is: YES.
997
998VERBATIM_HEADERS = YES
999
1000#---------------------------------------------------------------------------
1001# Configuration options related to the alphabetical class index
1002#---------------------------------------------------------------------------
1003
1004# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
1005# compounds will be generated. Enable this if the project contains a lot of
1006# classes, structs, unions or interfaces.
1007# The default value is: YES.
1008
1009ALPHABETICAL_INDEX = YES
1010
1011# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
1012# which the alphabetical index list will be split.
1013# Minimum value: 1, maximum value: 20, default value: 5.
1014# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
1015
1016COLS_IN_ALPHA_INDEX = 5
1017
1018# In case all classes in a project start with a common prefix, all classes will
1019# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
1020# can be used to specify a prefix (or a list of prefixes) that should be ignored
1021# while generating the index headers.
1022# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
1023
1024IGNORE_PREFIX =
1025
1026#---------------------------------------------------------------------------
1027# Configuration options related to the HTML output
1028#---------------------------------------------------------------------------
1029
1030# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
1031# The default value is: YES.
1032
1033GENERATE_HTML = YES
1034
1035# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
1036# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1037# it.
1038# The default directory is: html.
1039# This tag requires that the tag GENERATE_HTML is set to YES.
1040
1041HTML_OUTPUT = doxygen
1042
1043# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
1044# generated HTML page (for example: .htm, .php, .asp).
1045# The default value is: .html.
1046# This tag requires that the tag GENERATE_HTML is set to YES.
1047
1048HTML_FILE_EXTENSION = .html
1049
1050# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
1051# each generated HTML page. If the tag is left blank doxygen will generate a
1052# standard header.
1053#
1054# To get valid HTML the header file that includes any scripts and style sheets
1055# that doxygen needs, which is dependent on the configuration options used (e.g.
1056# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
1057# default header using
1058# doxygen -w html new_header.html new_footer.html new_stylesheet.css
1059# YourConfigFile
1060# and then modify the file new_header.html. See also section "Doxygen usage"
1061# for information on how to generate the default header that doxygen normally
1062# uses.
1063# Note: The header is subject to change so you typically have to regenerate the
1064# default header when upgrading to a newer version of doxygen. For a description
1065# of the possible markers and block names see the documentation.
1066# This tag requires that the tag GENERATE_HTML is set to YES.
1067
1068HTML_HEADER =
1069
1070# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
1071# generated HTML page. If the tag is left blank doxygen will generate a standard
1072# footer. See HTML_HEADER for more information on how to generate a default
1073# footer and what special commands can be used inside the footer. See also
1074# section "Doxygen usage" for information on how to generate the default footer
1075# that doxygen normally uses.
1076# This tag requires that the tag GENERATE_HTML is set to YES.
1077
1078HTML_FOOTER =
1079
1080# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
1081# sheet that is used by each HTML page. It can be used to fine-tune the look of
1082# the HTML output. If left blank doxygen will generate a default style sheet.
1083# See also section "Doxygen usage" for information on how to generate the style
1084# sheet that doxygen normally uses.
1085# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
1086# it is more robust and this tag (HTML_STYLESHEET) will in the future become
1087# obsolete.
1088# This tag requires that the tag GENERATE_HTML is set to YES.
1089
1090HTML_STYLESHEET =
1091
1092# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1093# cascading style sheets that are included after the standard style sheets
1094# created by doxygen. Using this option one can overrule certain style aspects.
1095# This is preferred over using HTML_STYLESHEET since it does not replace the
1096# standard style sheet and is therefore more robust against future updates.
1097# Doxygen will copy the style sheet files to the output directory.
1098# Note: The order of the extra style sheet files is of importance (e.g. the last
1099# style sheet in the list overrules the setting of the previous ones in the
1100# list). For an example see the documentation.
1101# This tag requires that the tag GENERATE_HTML is set to YES.
1102
1103HTML_EXTRA_STYLESHEET =
1104
1105# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
1106# other source files which should be copied to the HTML output directory. Note
1107# that these files will be copied to the base HTML output directory. Use the
1108# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
1109# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
1110# files will be copied as-is; there are no commands or markers available.
1111# This tag requires that the tag GENERATE_HTML is set to YES.
1112
1113HTML_EXTRA_FILES =
1114
1115# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
1116# will adjust the colors in the style sheet and background images according to
1117# this color. Hue is specified as an angle on a colorwheel, see
1118# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
1119# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
1120# purple, and 360 is red again.
1121# Minimum value: 0, maximum value: 359, default value: 220.
1122# This tag requires that the tag GENERATE_HTML is set to YES.
1123
1124HTML_COLORSTYLE_HUE = 220
1125
1126# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
1127# in the HTML output. For a value of 0 the output will use grayscales only. A
1128# value of 255 will produce the most vivid colors.
1129# Minimum value: 0, maximum value: 255, default value: 100.
1130# This tag requires that the tag GENERATE_HTML is set to YES.
1131
1132HTML_COLORSTYLE_SAT = 100
1133
1134# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
1135# luminance component of the colors in the HTML output. Values below 100
1136# gradually make the output lighter, whereas values above 100 make the output
1137# darker. The value divided by 100 is the actual gamma applied, so 80 represents
1138# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
1139# change the gamma.
1140# Minimum value: 40, maximum value: 240, default value: 80.
1141# This tag requires that the tag GENERATE_HTML is set to YES.
1142
1143HTML_COLORSTYLE_GAMMA = 80
1144
1145# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1146# page will contain the date and time when the page was generated. Setting this
1147# to NO can help when comparing the output of multiple runs.
1148# The default value is: YES.
1149# This tag requires that the tag GENERATE_HTML is set to YES.
1150
1151HTML_TIMESTAMP = YES
1152
1153# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1154# documentation will contain sections that can be hidden and shown after the
1155# page has loaded.
1156# The default value is: NO.
1157# This tag requires that the tag GENERATE_HTML is set to YES.
1158
1159HTML_DYNAMIC_SECTIONS = NO
1160
1161# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
1162# shown in the various tree structured indices initially; the user can expand
1163# and collapse entries dynamically later on. Doxygen will expand the tree to
1164# such a level that at most the specified number of entries are visible (unless
1165# a fully collapsed tree already exceeds this amount). So setting the number of
1166# entries 1 will produce a full collapsed tree by default. 0 is a special value
1167# representing an infinite number of entries and will result in a full expanded
1168# tree by default.
1169# Minimum value: 0, maximum value: 9999, default value: 100.
1170# This tag requires that the tag GENERATE_HTML is set to YES.
1171
1172HTML_INDEX_NUM_ENTRIES = 100
1173
1174# If the GENERATE_DOCSET tag is set to YES, additional index files will be
1175# generated that can be used as input for Apple's Xcode 3 integrated development
1176# environment (see: http://developer.apple.com/tools/xcode/), introduced with
1177# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
1178# Makefile in the HTML output directory. Running make will produce the docset in
1179# that directory and running make install will install the docset in
1180# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
1181# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1182# for more information.
1183# The default value is: NO.
1184# This tag requires that the tag GENERATE_HTML is set to YES.
1185
1186GENERATE_DOCSET = NO
1187
1188# This tag determines the name of the docset feed. A documentation feed provides
1189# an umbrella under which multiple documentation sets from a single provider
1190# (such as a company or product suite) can be grouped.
1191# The default value is: Doxygen generated docs.
1192# This tag requires that the tag GENERATE_DOCSET is set to YES.
1193
1194DOCSET_FEEDNAME = "Doxygen generated docs"
1195
1196# This tag specifies a string that should uniquely identify the documentation
1197# set bundle. This should be a reverse domain-name style string, e.g.
1198# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
1199# The default value is: org.doxygen.Project.
1200# This tag requires that the tag GENERATE_DOCSET is set to YES.
1201
1202DOCSET_BUNDLE_ID = org.doxygen.Project
1203
1204# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
1205# the documentation publisher. This should be a reverse domain-name style
1206# string, e.g. com.mycompany.MyDocSet.documentation.
1207# The default value is: org.doxygen.Publisher.
1208# This tag requires that the tag GENERATE_DOCSET is set to YES.
1209
1210DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1211
1212# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
1213# The default value is: Publisher.
1214# This tag requires that the tag GENERATE_DOCSET is set to YES.
1215
1216DOCSET_PUBLISHER_NAME = Publisher
1217
1218# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
1219# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
1220# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
1221# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
1222# Windows.
1223#
1224# The HTML Help Workshop contains a compiler that can convert all HTML output
1225# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
1226# files are now used as the Windows 98 help format, and will replace the old
1227# Windows help format (.hlp) on all Windows platforms in the future. Compressed
1228# HTML files also contain an index, a table of contents, and you can search for
1229# words in the documentation. The HTML workshop also contains a viewer for
1230# compressed HTML files.
1231# The default value is: NO.
1232# This tag requires that the tag GENERATE_HTML is set to YES.
1233
1234GENERATE_HTMLHELP = NO
1235
1236# The CHM_FILE tag can be used to specify the file name of the resulting .chm
1237# file. You can add a path in front of the file if the result should not be
1238# written to the html output directory.
1239# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1240
1241CHM_FILE =
1242
1243# The HHC_LOCATION tag can be used to specify the location (absolute path
1244# including file name) of the HTML help compiler (hhc.exe). If non-empty,
1245# doxygen will try to run the HTML help compiler on the generated index.hhp.
1246# The file has to be specified with full path.
1247# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1248
1249HHC_LOCATION =
1250
1251# The GENERATE_CHI flag controls if a separate .chi index file is generated
1252# (YES) or that it should be included in the master .chm file (NO).
1253# The default value is: NO.
1254# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1255
1256GENERATE_CHI = NO
1257
1258# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
1259# and project file content.
1260# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1261
1262CHM_INDEX_ENCODING =
1263
1264# The BINARY_TOC flag controls whether a binary table of contents is generated
1265# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
1266# enables the Previous and Next buttons.
1267# The default value is: NO.
1268# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1269
1270BINARY_TOC = NO
1271
1272# The TOC_EXPAND flag can be set to YES to add extra items for group members to
1273# the table of contents of the HTML help documentation and to the tree view.
1274# The default value is: NO.
1275# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1276
1277TOC_EXPAND = NO
1278
1279# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1280# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
1281# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
1282# (.qch) of the generated HTML documentation.
1283# The default value is: NO.
1284# This tag requires that the tag GENERATE_HTML is set to YES.
1285
1286GENERATE_QHP = NO
1287
1288# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
1289# the file name of the resulting .qch file. The path specified is relative to
1290# the HTML output folder.
1291# This tag requires that the tag GENERATE_QHP is set to YES.
1292
1293QCH_FILE =
1294
1295# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
1296# Project output. For more information please see Qt Help Project / Namespace
1297# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
1298# The default value is: org.doxygen.Project.
1299# This tag requires that the tag GENERATE_QHP is set to YES.
1300
1301QHP_NAMESPACE = org.doxygen.Project
1302
1303# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
1304# Help Project output. For more information please see Qt Help Project / Virtual
1305# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
1306# folders).
1307# The default value is: doc.
1308# This tag requires that the tag GENERATE_QHP is set to YES.
1309
1310QHP_VIRTUAL_FOLDER = doc
1311
1312# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
1313# filter to add. For more information please see Qt Help Project / Custom
1314# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
1315# filters).
1316# This tag requires that the tag GENERATE_QHP is set to YES.
1317
1318QHP_CUST_FILTER_NAME =
1319
1320# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
1321# custom filter to add. For more information please see Qt Help Project / Custom
1322# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
1323# filters).
1324# This tag requires that the tag GENERATE_QHP is set to YES.
1325
1326QHP_CUST_FILTER_ATTRS =
1327
1328# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1329# project's filter section matches. Qt Help Project / Filter Attributes (see:
1330# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
1331# This tag requires that the tag GENERATE_QHP is set to YES.
1332
1333QHP_SECT_FILTER_ATTRS =
1334
1335# The QHG_LOCATION tag can be used to specify the location of Qt's
1336# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
1337# generated .qhp file.
1338# This tag requires that the tag GENERATE_QHP is set to YES.
1339
1340QHG_LOCATION =
1341
1342# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
1343# generated, together with the HTML files, they form an Eclipse help plugin. To
1344# install this plugin and make it available under the help contents menu in
1345# Eclipse, the contents of the directory containing the HTML and XML files needs
1346# to be copied into the plugins directory of eclipse. The name of the directory
1347# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
1348# After copying Eclipse needs to be restarted before the help appears.
1349# The default value is: NO.
1350# This tag requires that the tag GENERATE_HTML is set to YES.
1351
1352GENERATE_ECLIPSEHELP = NO
1353
1354# A unique identifier for the Eclipse help plugin. When installing the plugin
1355# the directory name containing the HTML and XML files should also have this
1356# name. Each documentation set should have its own identifier.
1357# The default value is: org.doxygen.Project.
1358# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
1359
1360ECLIPSE_DOC_ID = org.doxygen.Project
1361
1362# If you want full control over the layout of the generated HTML pages it might
1363# be necessary to disable the index and replace it with your own. The
1364# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
1365# of each HTML page. A value of NO enables the index and the value YES disables
1366# it. Since the tabs in the index contain the same information as the navigation
1367# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
1368# The default value is: NO.
1369# This tag requires that the tag GENERATE_HTML is set to YES.
1370
1371DISABLE_INDEX = NO
1372
1373# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1374# structure should be generated to display hierarchical information. If the tag
1375# value is set to YES, a side panel will be generated containing a tree-like
1376# index structure (just like the one that is generated for HTML Help). For this
1377# to work a browser that supports JavaScript, DHTML, CSS and frames is required
1378# (i.e. any modern browser). Windows users are probably better off using the
1379# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
1380# further fine-tune the look of the index. As an example, the default style
1381# sheet generated by doxygen has an example that shows how to put an image at
1382# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
1383# the same information as the tab index, you could consider setting
1384# DISABLE_INDEX to YES when enabling this option.
1385# The default value is: NO.
1386# This tag requires that the tag GENERATE_HTML is set to YES.
1387
1388GENERATE_TREEVIEW = YES
1389
1390# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
1391# doxygen will group on one line in the generated HTML documentation.
1392#
1393# Note that a value of 0 will completely suppress the enum values from appearing
1394# in the overview section.
1395# Minimum value: 0, maximum value: 20, default value: 4.
1396# This tag requires that the tag GENERATE_HTML is set to YES.
1397
1398ENUM_VALUES_PER_LINE = 4
1399
1400# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
1401# to set the initial width (in pixels) of the frame in which the tree is shown.
1402# Minimum value: 0, maximum value: 1500, default value: 250.
1403# This tag requires that the tag GENERATE_HTML is set to YES.
1404
1405TREEVIEW_WIDTH = 250
1406
1407# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
1408# external symbols imported via tag files in a separate window.
1409# The default value is: NO.
1410# This tag requires that the tag GENERATE_HTML is set to YES.
1411
1412EXT_LINKS_IN_WINDOW = NO
1413
1414# Use this tag to change the font size of LaTeX formulas included as images in
1415# the HTML documentation. When you change the font size after a successful
1416# doxygen run you need to manually remove any form_*.png images from the HTML
1417# output directory to force them to be regenerated.
1418# Minimum value: 8, maximum value: 50, default value: 10.
1419# This tag requires that the tag GENERATE_HTML is set to YES.
1420
1421FORMULA_FONTSIZE = 10
1422
1423# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1424# generated for formulas are transparent PNGs. Transparent PNGs are not
1425# supported properly for IE 6.0, but are supported on all modern browsers.
1426#
1427# Note that when changing this option you need to delete any form_*.png files in
1428# the HTML output directory before the changes have effect.
1429# The default value is: YES.
1430# This tag requires that the tag GENERATE_HTML is set to YES.
1431
1432FORMULA_TRANSPARENT = YES
1433
1434# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
1435# http://www.mathjax.org) which uses client side Javascript for the rendering
1436# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
1437# installed or if you want to formulas look prettier in the HTML output. When
1438# enabled you may also need to install MathJax separately and configure the path
1439# to it using the MATHJAX_RELPATH option.
1440# The default value is: NO.
1441# This tag requires that the tag GENERATE_HTML is set to YES.
1442
1443USE_MATHJAX = NO
1444
1445# When MathJax is enabled you can set the default output format to be used for
1446# the MathJax output. See the MathJax site (see:
1447# http://docs.mathjax.org/en/latest/output.html) for more details.
1448# Possible values are: HTML-CSS (which is slower, but has the best
1449# compatibility), NativeMML (i.e. MathML) and SVG.
1450# The default value is: HTML-CSS.
1451# This tag requires that the tag USE_MATHJAX is set to YES.
1452
1453MATHJAX_FORMAT = HTML-CSS
1454
1455# When MathJax is enabled you need to specify the location relative to the HTML
1456# output directory using the MATHJAX_RELPATH option. The destination directory
1457# should contain the MathJax.js script. For instance, if the mathjax directory
1458# is located at the same level as the HTML output directory, then
1459# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
1460# Content Delivery Network so you can quickly see the result without installing
1461# MathJax. However, it is strongly recommended to install a local copy of
1462# MathJax from http://www.mathjax.org before deployment.
1463# The default value is: http://cdn.mathjax.org/mathjax/latest.
1464# This tag requires that the tag USE_MATHJAX is set to YES.
1465
1466MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1467
1468# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
1469# extension names that should be enabled during MathJax rendering. For example
1470# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
1471# This tag requires that the tag USE_MATHJAX is set to YES.
1472
1473MATHJAX_EXTENSIONS =
1474
1475# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
1476# of code that will be used on startup of the MathJax code. See the MathJax site
1477# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
1478# example see the documentation.
1479# This tag requires that the tag USE_MATHJAX is set to YES.
1480
1481MATHJAX_CODEFILE =
1482
1483# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
1484# the HTML output. The underlying search engine uses javascript and DHTML and
1485# should work on any modern browser. Note that when using HTML help
1486# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
1487# there is already a search function so this one should typically be disabled.
1488# For large projects the javascript based search engine can be slow, then
1489# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
1490# search using the keyboard; to jump to the search box use <access key> + S
1491# (what the <access key> is depends on the OS and browser, but it is typically
1492# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
1493# key> to jump into the search results window, the results can be navigated
1494# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
1495# the search. The filter options can be selected when the cursor is inside the
1496# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
1497# to select a filter and <Enter> or <escape> to activate or cancel the filter
1498# option.
1499# The default value is: YES.
1500# This tag requires that the tag GENERATE_HTML is set to YES.
1501
1502SEARCHENGINE = YES
1503
1504# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1505# implemented using a web server instead of a web client using Javascript. There
1506# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
1507# setting. When disabled, doxygen will generate a PHP script for searching and
1508# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
1509# and searching needs to be provided by external tools. See the section
1510# "External Indexing and Searching" for details.
1511# The default value is: NO.
1512# This tag requires that the tag SEARCHENGINE is set to YES.
1513
1514SERVER_BASED_SEARCH = NO
1515
1516# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
1517# script for searching. Instead the search results are written to an XML file
1518# which needs to be processed by an external indexer. Doxygen will invoke an
1519# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
1520# search results.
1521#
1522# Doxygen ships with an example indexer (doxyindexer) and search engine
1523# (doxysearch.cgi) which are based on the open source search engine library
1524# Xapian (see: http://xapian.org/).
1525#
1526# See the section "External Indexing and Searching" for details.
1527# The default value is: NO.
1528# This tag requires that the tag SEARCHENGINE is set to YES.
1529
1530EXTERNAL_SEARCH = NO
1531
1532# The SEARCHENGINE_URL should point to a search engine hosted by a web server
1533# which will return the search results when EXTERNAL_SEARCH is enabled.
1534#
1535# Doxygen ships with an example indexer (doxyindexer) and search engine
1536# (doxysearch.cgi) which are based on the open source search engine library
1537# Xapian (see: http://xapian.org/). See the section "External Indexing and
1538# Searching" for details.
1539# This tag requires that the tag SEARCHENGINE is set to YES.
1540
1541SEARCHENGINE_URL =
1542
1543# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1544# search data is written to a file for indexing by an external tool. With the
1545# SEARCHDATA_FILE tag the name of this file can be specified.
1546# The default file is: searchdata.xml.
1547# This tag requires that the tag SEARCHENGINE is set to YES.
1548
1549SEARCHDATA_FILE = searchdata.xml
1550
1551# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
1552# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1553# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1554# projects and redirect the results back to the right project.
1555# This tag requires that the tag SEARCHENGINE is set to YES.
1556
1557EXTERNAL_SEARCH_ID =
1558
1559# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1560# projects other than the one defined by this configuration file, but that are
1561# all added to the same external search index. Each project needs to have a
1562# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
1563# to a relative location where the documentation can be found. The format is:
1564# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
1565# This tag requires that the tag SEARCHENGINE is set to YES.
1566
1567EXTRA_SEARCH_MAPPINGS =
1568
1569#---------------------------------------------------------------------------
1570# Configuration options related to the LaTeX output
1571#---------------------------------------------------------------------------
1572
1573# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
1574# The default value is: YES.
1575
1576GENERATE_LATEX = NO
1577
1578# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
1579# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1580# it.
1581# The default directory is: latex.
1582# This tag requires that the tag GENERATE_LATEX is set to YES.
1583
1584LATEX_OUTPUT = latex
1585
1586# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1587# invoked.
1588#
1589# Note that when enabling USE_PDFLATEX this option is only used for generating
1590# bitmaps for formulas in the HTML output, but not in the Makefile that is
1591# written to the output directory.
1592# The default file is: latex.
1593# This tag requires that the tag GENERATE_LATEX is set to YES.
1594
1595LATEX_CMD_NAME = latex
1596
1597# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
1598# index for LaTeX.
1599# The default file is: makeindex.
1600# This tag requires that the tag GENERATE_LATEX is set to YES.
1601
1602MAKEINDEX_CMD_NAME = makeindex
1603
1604# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
1605# documents. This may be useful for small projects and may help to save some
1606# trees in general.
1607# The default value is: NO.
1608# This tag requires that the tag GENERATE_LATEX is set to YES.
1609
1610COMPACT_LATEX = NO
1611
1612# The PAPER_TYPE tag can be used to set the paper type that is used by the
1613# printer.
1614# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
1615# 14 inches) and executive (7.25 x 10.5 inches).
1616# The default value is: a4.
1617# This tag requires that the tag GENERATE_LATEX is set to YES.
1618
1619PAPER_TYPE = a4
1620
1621# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
1622# that should be included in the LaTeX output. To get the times font for
1623# instance you can specify
1624# EXTRA_PACKAGES=times
1625# If left blank no extra packages will be included.
1626# This tag requires that the tag GENERATE_LATEX is set to YES.
1627
1628EXTRA_PACKAGES =
1629
1630# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
1631# generated LaTeX document. The header should contain everything until the first
1632# chapter. If it is left blank doxygen will generate a standard header. See
1633# section "Doxygen usage" for information on how to let doxygen write the
1634# default header to a separate file.
1635#
1636# Note: Only use a user-defined header if you know what you are doing! The
1637# following commands have a special meaning inside the header: $title,
1638# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
1639# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
1640# string, for the replacement values of the other commands the user is referred
1641# to HTML_HEADER.
1642# This tag requires that the tag GENERATE_LATEX is set to YES.
1643
1644LATEX_HEADER =
1645
1646# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
1647# generated LaTeX document. The footer should contain everything after the last
1648# chapter. If it is left blank doxygen will generate a standard footer. See
1649# LATEX_HEADER for more information on how to generate a default footer and what
1650# special commands can be used inside the footer.
1651#
1652# Note: Only use a user-defined footer if you know what you are doing!
1653# This tag requires that the tag GENERATE_LATEX is set to YES.
1654
1655LATEX_FOOTER =
1656
1657# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1658# LaTeX style sheets that are included after the standard style sheets created
1659# by doxygen. Using this option one can overrule certain style aspects. Doxygen
1660# will copy the style sheet files to the output directory.
1661# Note: The order of the extra style sheet files is of importance (e.g. the last
1662# style sheet in the list overrules the setting of the previous ones in the
1663# list).
1664# This tag requires that the tag GENERATE_LATEX is set to YES.
1665
1666LATEX_EXTRA_STYLESHEET =
1667
1668# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
1669# other source files which should be copied to the LATEX_OUTPUT output
1670# directory. Note that the files will be copied as-is; there are no commands or
1671# markers available.
1672# This tag requires that the tag GENERATE_LATEX is set to YES.
1673
1674LATEX_EXTRA_FILES =
1675
1676# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
1677# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
1678# contain links (just like the HTML output) instead of page references. This
1679# makes the output suitable for online browsing using a PDF viewer.
1680# The default value is: YES.
1681# This tag requires that the tag GENERATE_LATEX is set to YES.
1682
1683PDF_HYPERLINKS = YES
1684
1685# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
1686# the PDF file directly from the LaTeX files. Set this option to YES, to get a
1687# higher quality PDF documentation.
1688# The default value is: YES.
1689# This tag requires that the tag GENERATE_LATEX is set to YES.
1690
1691USE_PDFLATEX = YES
1692
1693# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
1694# command to the generated LaTeX files. This will instruct LaTeX to keep running
1695# if errors occur, instead of asking the user for help. This option is also used
1696# when generating formulas in HTML.
1697# The default value is: NO.
1698# This tag requires that the tag GENERATE_LATEX is set to YES.
1699
1700LATEX_BATCHMODE = NO
1701
1702# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
1703# index chapters (such as File Index, Compound Index, etc.) in the output.
1704# The default value is: NO.
1705# This tag requires that the tag GENERATE_LATEX is set to YES.
1706
1707LATEX_HIDE_INDICES = NO
1708
1709# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
1710# code with syntax highlighting in the LaTeX output.
1711#
1712# Note that which sources are shown also depends on other settings such as
1713# SOURCE_BROWSER.
1714# The default value is: NO.
1715# This tag requires that the tag GENERATE_LATEX is set to YES.
1716
1717LATEX_SOURCE_CODE = NO
1718
1719# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1720# bibliography, e.g. plainnat, or ieeetr. See
1721# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
1722# The default value is: plain.
1723# This tag requires that the tag GENERATE_LATEX is set to YES.
1724
1725LATEX_BIB_STYLE = plain
1726
1727#---------------------------------------------------------------------------
1728# Configuration options related to the RTF output
1729#---------------------------------------------------------------------------
1730
1731# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
1732# RTF output is optimized for Word 97 and may not look too pretty with other RTF
1733# readers/editors.
1734# The default value is: NO.
1735
1736GENERATE_RTF = NO
1737
1738# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
1739# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1740# it.
1741# The default directory is: rtf.
1742# This tag requires that the tag GENERATE_RTF is set to YES.
1743
1744RTF_OUTPUT = rtf
1745
1746# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
1747# documents. This may be useful for small projects and may help to save some
1748# trees in general.
1749# The default value is: NO.
1750# This tag requires that the tag GENERATE_RTF is set to YES.
1751
1752COMPACT_RTF = NO
1753
1754# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
1755# contain hyperlink fields. The RTF file will contain links (just like the HTML
1756# output) instead of page references. This makes the output suitable for online
1757# browsing using Word or some other Word compatible readers that support those
1758# fields.
1759#
1760# Note: WordPad (write) and others do not support links.
1761# The default value is: NO.
1762# This tag requires that the tag GENERATE_RTF is set to YES.
1763
1764RTF_HYPERLINKS = NO
1765
1766# Load stylesheet definitions from file. Syntax is similar to doxygen's config
1767# file, i.e. a series of assignments. You only have to provide replacements,
1768# missing definitions are set to their default value.
1769#
1770# See also section "Doxygen usage" for information on how to generate the
1771# default style sheet that doxygen normally uses.
1772# This tag requires that the tag GENERATE_RTF is set to YES.
1773
1774RTF_STYLESHEET_FILE =
1775
1776# Set optional variables used in the generation of an RTF document. Syntax is
1777# similar to doxygen's config file. A template extensions file can be generated
1778# using doxygen -e rtf extensionFile.
1779# This tag requires that the tag GENERATE_RTF is set to YES.
1780
1781RTF_EXTENSIONS_FILE =
1782
1783# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
1784# with syntax highlighting in the RTF output.
1785#
1786# Note that which sources are shown also depends on other settings such as
1787# SOURCE_BROWSER.
1788# The default value is: NO.
1789# This tag requires that the tag GENERATE_RTF is set to YES.
1790
1791RTF_SOURCE_CODE = NO
1792
1793#---------------------------------------------------------------------------
1794# Configuration options related to the man page output
1795#---------------------------------------------------------------------------
1796
1797# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
1798# classes and files.
1799# The default value is: NO.
1800
1801GENERATE_MAN = NO
1802
1803# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
1804# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1805# it. A directory man3 will be created inside the directory specified by
1806# MAN_OUTPUT.
1807# The default directory is: man.
1808# This tag requires that the tag GENERATE_MAN is set to YES.
1809
1810MAN_OUTPUT = man
1811
1812# The MAN_EXTENSION tag determines the extension that is added to the generated
1813# man pages. In case the manual section does not start with a number, the number
1814# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
1815# optional.
1816# The default value is: .3.
1817# This tag requires that the tag GENERATE_MAN is set to YES.
1818
1819MAN_EXTENSION = .3
1820
1821# The MAN_SUBDIR tag determines the name of the directory created within
1822# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
1823# MAN_EXTENSION with the initial . removed.
1824# This tag requires that the tag GENERATE_MAN is set to YES.
1825
1826MAN_SUBDIR =
1827
1828# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
1829# will generate one additional man file for each entity documented in the real
1830# man page(s). These additional files only source the real man page, but without
1831# them the man command would be unable to find the correct page.
1832# The default value is: NO.
1833# This tag requires that the tag GENERATE_MAN is set to YES.
1834
1835MAN_LINKS = NO
1836
1837#---------------------------------------------------------------------------
1838# Configuration options related to the XML output
1839#---------------------------------------------------------------------------
1840
1841# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
1842# captures the structure of the code including all documentation.
1843# The default value is: NO.
1844
1845GENERATE_XML = NO
1846
1847# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
1848# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1849# it.
1850# The default directory is: xml.
1851# This tag requires that the tag GENERATE_XML is set to YES.
1852
1853XML_OUTPUT = xml
1854
1855# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
1856# listings (including syntax highlighting and cross-referencing information) to
1857# the XML output. Note that enabling this will significantly increase the size
1858# of the XML output.
1859# The default value is: YES.
1860# This tag requires that the tag GENERATE_XML is set to YES.
1861
1862XML_PROGRAMLISTING = YES
1863
1864#---------------------------------------------------------------------------
1865# Configuration options related to the DOCBOOK output
1866#---------------------------------------------------------------------------
1867
1868# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
1869# that can be used to generate PDF.
1870# The default value is: NO.
1871
1872GENERATE_DOCBOOK = NO
1873
1874# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
1875# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
1876# front of it.
1877# The default directory is: docbook.
1878# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
1879
1880DOCBOOK_OUTPUT = docbook
1881
1882# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
1883# program listings (including syntax highlighting and cross-referencing
1884# information) to the DOCBOOK output. Note that enabling this will significantly
1885# increase the size of the DOCBOOK output.
1886# The default value is: NO.
1887# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
1888
1889DOCBOOK_PROGRAMLISTING = NO
1890
1891#---------------------------------------------------------------------------
1892# Configuration options for the AutoGen Definitions output
1893#---------------------------------------------------------------------------
1894
1895# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
1896# AutoGen Definitions (see http://autogen.sf.net) file that captures the
1897# structure of the code including all documentation. Note that this feature is
1898# still experimental and incomplete at the moment.
1899# The default value is: NO.
1900
1901GENERATE_AUTOGEN_DEF = NO
1902
1903#---------------------------------------------------------------------------
1904# Configuration options related to the Perl module output
1905#---------------------------------------------------------------------------
1906
1907# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
1908# file that captures the structure of the code including all documentation.
1909#
1910# Note that this feature is still experimental and incomplete at the moment.
1911# The default value is: NO.
1912
1913GENERATE_PERLMOD = NO
1914
1915# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
1916# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
1917# output from the Perl module output.
1918# The default value is: NO.
1919# This tag requires that the tag GENERATE_PERLMOD is set to YES.
1920
1921PERLMOD_LATEX = NO
1922
1923# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
1924# formatted so it can be parsed by a human reader. This is useful if you want to
1925# understand what is going on. On the other hand, if this tag is set to NO, the
1926# size of the Perl module output will be much smaller and Perl will parse it
1927# just the same.
1928# The default value is: YES.
1929# This tag requires that the tag GENERATE_PERLMOD is set to YES.
1930
1931PERLMOD_PRETTY = YES
1932
1933# The names of the make variables in the generated doxyrules.make file are
1934# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
1935# so different doxyrules.make files included by the same Makefile don't
1936# overwrite each other's variables.
1937# This tag requires that the tag GENERATE_PERLMOD is set to YES.
1938
1939PERLMOD_MAKEVAR_PREFIX =
1940
1941#---------------------------------------------------------------------------
1942# Configuration options related to the preprocessor
1943#---------------------------------------------------------------------------
1944
1945# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
1946# C-preprocessor directives found in the sources and include files.
1947# The default value is: YES.
1948
1949ENABLE_PREPROCESSING = YES
1950
1951# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
1952# in the source code. If set to NO, only conditional compilation will be
1953# performed. Macro expansion can be done in a controlled way by setting
1954# EXPAND_ONLY_PREDEF to YES.
1955# The default value is: NO.
1956# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1957
1958MACRO_EXPANSION = NO
1959
1960# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
1961# the macro expansion is limited to the macros specified with the PREDEFINED and
1962# EXPAND_AS_DEFINED tags.
1963# The default value is: NO.
1964# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1965
1966EXPAND_ONLY_PREDEF = NO
1967
1968# If the SEARCH_INCLUDES tag is set to YES, the include files in the
1969# INCLUDE_PATH will be searched if a #include is found.
1970# The default value is: YES.
1971# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1972
1973SEARCH_INCLUDES = YES
1974
1975# The INCLUDE_PATH tag can be used to specify one or more directories that
1976# contain include files that are not input files but should be processed by the
1977# preprocessor.
1978# This tag requires that the tag SEARCH_INCLUDES is set to YES.
1979
1980INCLUDE_PATH =
1981
1982# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1983# patterns (like *.h and *.hpp) to filter out the header-files in the
1984# directories. If left blank, the patterns specified with FILE_PATTERNS will be
1985# used.
1986# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1987
1988INCLUDE_FILE_PATTERNS =
1989
1990# The PREDEFINED tag can be used to specify one or more macro names that are
1991# defined before the preprocessor is started (similar to the -D option of e.g.
1992# gcc). The argument of the tag is a list of macros of the form: name or
1993# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
1994# is assumed. To prevent a macro definition from being undefined via #undef or
1995# recursively expanded use the := operator instead of the = operator.
1996# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1997
1998PREDEFINED =
1999
2000# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
2001# tag can be used to specify a list of macro names that should be expanded. The
2002# macro definition that is found in the sources will be used. Use the PREDEFINED
2003# tag if you want to use a different macro definition that overrules the
2004# definition found in the source code.
2005# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2006
2007EXPAND_AS_DEFINED =
2008
2009# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
2010# remove all references to function-like macros that are alone on a line, have
2011# an all uppercase name, and do not end with a semicolon. Such function macros
2012# are typically used for boiler-plate code, and will confuse the parser if not
2013# removed.
2014# The default value is: YES.
2015# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2016
2017SKIP_FUNCTION_MACROS = NO
2018
2019#---------------------------------------------------------------------------
2020# Configuration options related to external references
2021#---------------------------------------------------------------------------
2022
2023# The TAGFILES tag can be used to specify one or more tag files. For each tag
2024# file the location of the external documentation should be added. The format of
2025# a tag file without this location is as follows:
2026# TAGFILES = file1 file2 ...
2027# Adding location for the tag files is done as follows:
2028# TAGFILES = file1=loc1 "file2 = loc2" ...
2029# where loc1 and loc2 can be relative or absolute paths or URLs. See the
2030# section "Linking to external documentation" for more information about the use
2031# of tag files.
2032# Note: Each tag file must have a unique name (where the name does NOT include
2033# the path). If a tag file is not located in the directory in which doxygen is
2034# run, you must also specify the path to the tagfile here.
2035
2036TAGFILES =
2037
2038# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
2039# tag file that is based on the input files it reads. See section "Linking to
2040# external documentation" for more information about the usage of tag files.
2041
2042GENERATE_TAGFILE =
2043
2044# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
2045# the class index. If set to NO, only the inherited external classes will be
2046# listed.
2047# The default value is: NO.
2048
2049ALLEXTERNALS = NO
2050
2051# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
2052# in the modules index. If set to NO, only the current project's groups will be
2053# listed.
2054# The default value is: YES.
2055
2056EXTERNAL_GROUPS = YES
2057
2058# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
2059# the related pages index. If set to NO, only the current project's pages will
2060# be listed.
2061# The default value is: YES.
2062
2063EXTERNAL_PAGES = YES
2064
2065# The PERL_PATH should be the absolute path and name of the perl script
2066# interpreter (i.e. the result of 'which perl').
2067# The default file (with absolute path) is: /usr/bin/perl.
2068
2069PERL_PATH = /usr/bin/perl
2070
2071#---------------------------------------------------------------------------
2072# Configuration options related to the dot tool
2073#---------------------------------------------------------------------------
2074
2075# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
2076# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
2077# NO turns the diagrams off. Note that this option also works with HAVE_DOT
2078# disabled, but it is recommended to install and use dot, since it yields more
2079# powerful graphs.
2080# The default value is: YES.
2081
2082CLASS_DIAGRAMS = NO
2083
2084# You can define message sequence charts within doxygen comments using the \msc
2085# command. Doxygen will then run the mscgen tool (see:
2086# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
2087# documentation. The MSCGEN_PATH tag allows you to specify the directory where
2088# the mscgen tool resides. If left empty the tool is assumed to be found in the
2089# default search path.
2090
2091MSCGEN_PATH =
2092
2093# You can include diagrams made with dia in doxygen documentation. Doxygen will
2094# then run dia to produce the diagram and insert it in the documentation. The
2095# DIA_PATH tag allows you to specify the directory where the dia binary resides.
2096# If left empty dia is assumed to be found in the default search path.
2097
2098DIA_PATH =
2099
2100# If set to YES the inheritance and collaboration graphs will hide inheritance
2101# and usage relations if the target is undocumented or is not a class.
2102# The default value is: YES.
2103
2104HIDE_UNDOC_RELATIONS = YES
2105
2106# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2107# available from the path. This tool is part of Graphviz (see:
2108# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
2109# Bell Labs. The other options in this section have no effect if this option is
2110# set to NO
2111# The default value is: NO.
2112
2113HAVE_DOT = NO
2114
2115# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
2116# to run in parallel. When set to 0 doxygen will base this on the number of
2117# processors available in the system. You can set it explicitly to a value
2118# larger than 0 to get control over the balance between CPU load and processing
2119# speed.
2120# Minimum value: 0, maximum value: 32, default value: 0.
2121# This tag requires that the tag HAVE_DOT is set to YES.
2122
2123DOT_NUM_THREADS = 0
2124
2125# When you want a differently looking font in the dot files that doxygen
2126# generates you can specify the font name using DOT_FONTNAME. You need to make
2127# sure dot is able to find the font, which can be done by putting it in a
2128# standard location or by setting the DOTFONTPATH environment variable or by
2129# setting DOT_FONTPATH to the directory containing the font.
2130# The default value is: Helvetica.
2131# This tag requires that the tag HAVE_DOT is set to YES.
2132
2133DOT_FONTNAME = Helvetica
2134
2135# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
2136# dot graphs.
2137# Minimum value: 4, maximum value: 24, default value: 10.
2138# This tag requires that the tag HAVE_DOT is set to YES.
2139
2140DOT_FONTSIZE = 10
2141
2142# By default doxygen will tell dot to use the default font as specified with
2143# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
2144# the path where dot can find it using this tag.
2145# This tag requires that the tag HAVE_DOT is set to YES.
2146
2147DOT_FONTPATH =
2148
2149# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
2150# each documented class showing the direct and indirect inheritance relations.
2151# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
2152# The default value is: YES.
2153# This tag requires that the tag HAVE_DOT is set to YES.
2154
2155CLASS_GRAPH = YES
2156
2157# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
2158# graph for each documented class showing the direct and indirect implementation
2159# dependencies (inheritance, containment, and class references variables) of the
2160# class with other documented classes.
2161# The default value is: YES.
2162# This tag requires that the tag HAVE_DOT is set to YES.
2163
2164COLLABORATION_GRAPH = YES
2165
2166# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
2167# groups, showing the direct groups dependencies.
2168# The default value is: YES.
2169# This tag requires that the tag HAVE_DOT is set to YES.
2170
2171GROUP_GRAPHS = YES
2172
2173# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
2174# collaboration diagrams in a style similar to the OMG's Unified Modeling
2175# Language.
2176# The default value is: NO.
2177# This tag requires that the tag HAVE_DOT is set to YES.
2178
2179UML_LOOK = NO
2180
2181# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
2182# class node. If there are many fields or methods and many nodes the graph may
2183# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
2184# number of items for each type to make the size more manageable. Set this to 0
2185# for no limit. Note that the threshold may be exceeded by 50% before the limit
2186# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
2187# but if the number exceeds 15, the total amount of fields shown is limited to
2188# 10.
2189# Minimum value: 0, maximum value: 100, default value: 10.
2190# This tag requires that the tag HAVE_DOT is set to YES.
2191
2192UML_LIMIT_NUM_FIELDS = 10
2193
2194# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
2195# collaboration graphs will show the relations between templates and their
2196# instances.
2197# The default value is: NO.
2198# This tag requires that the tag HAVE_DOT is set to YES.
2199
2200TEMPLATE_RELATIONS = NO
2201
2202# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
2203# YES then doxygen will generate a graph for each documented file showing the
2204# direct and indirect include dependencies of the file with other documented
2205# files.
2206# The default value is: YES.
2207# This tag requires that the tag HAVE_DOT is set to YES.
2208
2209INCLUDE_GRAPH = YES
2210
2211# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
2212# set to YES then doxygen will generate a graph for each documented file showing
2213# the direct and indirect include dependencies of the file with other documented
2214# files.
2215# The default value is: YES.
2216# This tag requires that the tag HAVE_DOT is set to YES.
2217
2218INCLUDED_BY_GRAPH = YES
2219
2220# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
2221# dependency graph for every global function or class method.
2222#
2223# Note that enabling this option will significantly increase the time of a run.
2224# So in most cases it will be better to enable call graphs for selected
2225# functions only using the \callgraph command.
2226# The default value is: NO.
2227# This tag requires that the tag HAVE_DOT is set to YES.
2228
2229CALL_GRAPH = NO
2230
2231# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
2232# dependency graph for every global function or class method.
2233#
2234# Note that enabling this option will significantly increase the time of a run.
2235# So in most cases it will be better to enable caller graphs for selected
2236# functions only using the \callergraph command.
2237# The default value is: NO.
2238# This tag requires that the tag HAVE_DOT is set to YES.
2239
2240CALLER_GRAPH = NO
2241
2242# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
2243# hierarchy of all classes instead of a textual one.
2244# The default value is: YES.
2245# This tag requires that the tag HAVE_DOT is set to YES.
2246
2247GRAPHICAL_HIERARCHY = YES
2248
2249# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
2250# dependencies a directory has on other directories in a graphical way. The
2251# dependency relations are determined by the #include relations between the
2252# files in the directories.
2253# The default value is: YES.
2254# This tag requires that the tag HAVE_DOT is set to YES.
2255
2256DIRECTORY_GRAPH = YES
2257
2258# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
2259# generated by dot.
2260# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
2261# to make the SVG files visible in IE 9+ (other browsers do not have this
2262# requirement).
2263# Possible values are: png, jpg, gif and svg.
2264# The default value is: png.
2265# This tag requires that the tag HAVE_DOT is set to YES.
2266
2267DOT_IMAGE_FORMAT = png
2268
2269# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
2270# enable generation of interactive SVG images that allow zooming and panning.
2271#
2272# Note that this requires a modern browser other than Internet Explorer. Tested
2273# and working are Firefox, Chrome, Safari, and Opera.
2274# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
2275# the SVG files visible. Older versions of IE do not have SVG support.
2276# The default value is: NO.
2277# This tag requires that the tag HAVE_DOT is set to YES.
2278
2279INTERACTIVE_SVG = NO
2280
2281# The DOT_PATH tag can be used to specify the path where the dot tool can be
2282# found. If left blank, it is assumed the dot tool can be found in the path.
2283# This tag requires that the tag HAVE_DOT is set to YES.
2284
2285DOT_PATH =
2286
2287# The DOTFILE_DIRS tag can be used to specify one or more directories that
2288# contain dot files that are included in the documentation (see the \dotfile
2289# command).
2290# This tag requires that the tag HAVE_DOT is set to YES.
2291
2292DOTFILE_DIRS =
2293
2294# The MSCFILE_DIRS tag can be used to specify one or more directories that
2295# contain msc files that are included in the documentation (see the \mscfile
2296# command).
2297
2298MSCFILE_DIRS =
2299
2300# The DIAFILE_DIRS tag can be used to specify one or more directories that
2301# contain dia files that are included in the documentation (see the \diafile
2302# command).
2303
2304DIAFILE_DIRS =
2305
2306# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
2307# path where java can find the plantuml.jar file. If left blank, it is assumed
2308# PlantUML is not used or called during a preprocessing step. Doxygen will
2309# generate a warning when it encounters a \startuml command in this case and
2310# will not generate output for the diagram.
2311
2312PLANTUML_JAR_PATH =
2313
2314# When using plantuml, the specified paths are searched for files specified by
2315# the !include statement in a plantuml block.
2316
2317PLANTUML_INCLUDE_PATH =
2318
2319# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
2320# that will be shown in the graph. If the number of nodes in a graph becomes
2321# larger than this value, doxygen will truncate the graph, which is visualized
2322# by representing a node as a red box. Note that doxygen if the number of direct
2323# children of the root node in a graph is already larger than
2324# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
2325# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
2326# Minimum value: 0, maximum value: 10000, default value: 50.
2327# This tag requires that the tag HAVE_DOT is set to YES.
2328
2329DOT_GRAPH_MAX_NODES = 50
2330
2331# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
2332# generated by dot. A depth value of 3 means that only nodes reachable from the
2333# root by following a path via at most 3 edges will be shown. Nodes that lay
2334# further from the root node will be omitted. Note that setting this option to 1
2335# or 2 may greatly reduce the computation time needed for large code bases. Also
2336# note that the size of a graph can be further restricted by
2337# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
2338# Minimum value: 0, maximum value: 1000, default value: 0.
2339# This tag requires that the tag HAVE_DOT is set to YES.
2340
2341MAX_DOT_GRAPH_DEPTH = 0
2342
2343# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
2344# background. This is disabled by default, because dot on Windows does not seem
2345# to support this out of the box.
2346#
2347# Warning: Depending on the platform used, enabling this option may lead to
2348# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
2349# read).
2350# The default value is: NO.
2351# This tag requires that the tag HAVE_DOT is set to YES.
2352
2353DOT_TRANSPARENT = NO
2354
2355# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
2356# files in one run (i.e. multiple -o and -T options on the command line). This
2357# makes dot run faster, but since only newer versions of dot (>1.8.10) support
2358# this, this feature is disabled by default.
2359# The default value is: NO.
2360# This tag requires that the tag HAVE_DOT is set to YES.
2361
2362DOT_MULTI_TARGETS = NO
2363
2364# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
2365# explaining the meaning of the various boxes and arrows in the dot generated
2366# graphs.
2367# The default value is: YES.
2368# This tag requires that the tag HAVE_DOT is set to YES.
2369
2370GENERATE_LEGEND = YES
2371
2372# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
2373# files that are used to generate the various graphs.
2374# The default value is: YES.
2375# This tag requires that the tag HAVE_DOT is set to YES.
2376
2377DOT_CLEANUP = YES
diff --git a/Makefile b/Makefile
index b758d1fd..286d2c90 100644
--- a/Makefile
+++ b/Makefile
@@ -146,10 +146,9 @@ authors:
146 @git shortlog -sne > AUTHORS 146 @git shortlog -sne > AUTHORS
147 @rm .mailmap 147 @rm .mailmap
148 148
149### generate Doxygen documentation 149### generate phpDocumentor documentation
150doxygen: clean 150phpdoc: clean
151 @rm -rf doxygen 151 @docker run --rm -v $(PWD):/data -u `id -u`:`id -g` phpdoc/phpdoc
152 @doxygen Doxyfile
153 152
154### generate HTML documentation from Markdown pages with MkDocs 153### generate HTML documentation from Markdown pages with MkDocs
155htmldoc: 154htmldoc:
diff --git a/README.md b/README.md
index 0e23e33d..21f2eae7 100644
--- a/README.md
+++ b/README.md
@@ -9,10 +9,10 @@ _It is designed to be personal (single-user), fast and handy._
9[![](https://img.shields.io/badge/stable-v0.9.7-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) 9[![](https://img.shields.io/badge/stable-v0.9.7-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7)
10[![](https://img.shields.io/travis/shaarli/Shaarli/stable.svg?label=stable)](https://travis-ci.org/shaarli/Shaarli) 10[![](https://img.shields.io/travis/shaarli/Shaarli/stable.svg?label=stable)](https://travis-ci.org/shaarli/Shaarli)
11&bull; 11&bull;
12[![](https://img.shields.io/badge/latest-v0.10.2-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.10.2) 12[![](https://img.shields.io/badge/latest-v0.10.4-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.10.4)
13[![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli) 13[![](https://img.shields.io/travis/shaarli/Shaarli/latest.svg?label=latest)](https://travis-ci.org/shaarli/Shaarli)
14&bull; 14&bull;
15[![](https://img.shields.io/badge/master-v0.10.x-blue.svg)](https://github.com/shaarli/Shaarli) 15[![](https://img.shields.io/badge/master-v0.11.x-blue.svg)](https://github.com/shaarli/Shaarli)
16[![](https://img.shields.io/travis/shaarli/Shaarli.svg?label=master)](https://travis-ci.org/shaarli/Shaarli) 16[![](https://img.shields.io/travis/shaarli/Shaarli.svg?label=master)](https://travis-ci.org/shaarli/Shaarli)
17 17
18[![Join the chat at https://gitter.im/shaarli/Shaarli](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/shaarli/Shaarli) 18[![Join the chat at https://gitter.im/shaarli/Shaarli](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/shaarli/Shaarli)
diff --git a/application/ApplicationUtils.php b/application/ApplicationUtils.php
index a3b2dcb1..7fe3cb32 100644
--- a/application/ApplicationUtils.php
+++ b/application/ApplicationUtils.php
@@ -1,4 +1,9 @@
1<?php 1<?php
2namespace Shaarli;
3
4use Exception;
5use Shaarli\Config\ConfigManager;
6
2/** 7/**
3 * Shaarli (application) utilities 8 * Shaarli (application) utilities
4 */ 9 */
@@ -51,7 +56,7 @@ class ApplicationUtils
51 return false; 56 return false;
52 } 57 }
53 } else { 58 } else {
54 if (! is_file($remote)) { 59 if (!is_file($remote)) {
55 return false; 60 return false;
56 } 61 }
57 $data = file_get_contents($remote); 62 $data = file_get_contents($remote);
@@ -97,7 +102,7 @@ class ApplicationUtils
97 // Do not check versions for visitors 102 // Do not check versions for visitors
98 // Do not check if the user doesn't want to 103 // Do not check if the user doesn't want to
99 // Do not check with dev version 104 // Do not check with dev version
100 if (! $isLoggedIn || empty($enableCheck) || $currentVersion === 'dev') { 105 if (!$isLoggedIn || empty($enableCheck) || $currentVersion === 'dev') {
101 return false; 106 return false;
102 } 107 }
103 108
@@ -111,7 +116,7 @@ class ApplicationUtils
111 return false; 116 return false;
112 } 117 }
113 118
114 if (! in_array($branch, self::$GIT_BRANCHES)) { 119 if (!in_array($branch, self::$GIT_BRANCHES)) {
115 throw new Exception( 120 throw new Exception(
116 'Invalid branch selected for updates: "' . $branch . '"' 121 'Invalid branch selected for updates: "' . $branch . '"'
117 ); 122 );
@@ -123,7 +128,7 @@ class ApplicationUtils
123 self::$GIT_URL . '/' . $branch . '/' . self::$VERSION_FILE 128 self::$GIT_URL . '/' . $branch . '/' . self::$VERSION_FILE
124 ); 129 );
125 130
126 if (! $latestVersion) { 131 if (!$latestVersion) {
127 // Only update the file's modification date 132 // Only update the file's modification date
128 file_put_contents($updateFile, $currentVersion); 133 file_put_contents($updateFile, $currentVersion);
129 return false; 134 return false;
@@ -152,9 +157,9 @@ class ApplicationUtils
152 if (version_compare($curVersion, $minVersion) < 0) { 157 if (version_compare($curVersion, $minVersion) < 0) {
153 $msg = t( 158 $msg = t(
154 'Your PHP version is obsolete!' 159 'Your PHP version is obsolete!'
155 . ' Shaarli requires at least PHP %s, and thus cannot run.' 160 . ' Shaarli requires at least PHP %s, and thus cannot run.'
156 . ' Your PHP version has known security vulnerabilities and should be' 161 . ' Your PHP version has known security vulnerabilities and should be'
157 . ' updated as soon as possible.' 162 . ' updated as soon as possible.'
158 ); 163 );
159 throw new Exception(sprintf($msg, $minVersion)); 164 throw new Exception(sprintf($msg, $minVersion));
160 } 165 }
@@ -174,50 +179,50 @@ class ApplicationUtils
174 179
175 // Check script and template directories are readable 180 // Check script and template directories are readable
176 foreach (array( 181 foreach (array(
177 'application', 182 'application',
178 'inc', 183 'inc',
179 'plugins', 184 'plugins',
180 $rainTplDir, 185 $rainTplDir,
181 $rainTplDir.'/'.$conf->get('resource.theme'), 186 $rainTplDir . '/' . $conf->get('resource.theme'),
182 ) as $path) { 187 ) as $path) {
183 if (! is_readable(realpath($path))) { 188 if (!is_readable(realpath($path))) {
184 $errors[] = '"'.$path.'" '. t('directory is not readable'); 189 $errors[] = '"' . $path . '" ' . t('directory is not readable');
185 } 190 }
186 } 191 }
187 192
188 // Check cache and data directories are readable and writable 193 // Check cache and data directories are readable and writable
189 foreach (array( 194 foreach (array(
190 $conf->get('resource.thumbnails_cache'), 195 $conf->get('resource.thumbnails_cache'),
191 $conf->get('resource.data_dir'), 196 $conf->get('resource.data_dir'),
192 $conf->get('resource.page_cache'), 197 $conf->get('resource.page_cache'),
193 $conf->get('resource.raintpl_tmp'), 198 $conf->get('resource.raintpl_tmp'),
194 ) as $path) { 199 ) as $path) {
195 if (! is_readable(realpath($path))) { 200 if (!is_readable(realpath($path))) {
196 $errors[] = '"'.$path.'" '. t('directory is not readable'); 201 $errors[] = '"' . $path . '" ' . t('directory is not readable');
197 } 202 }
198 if (! is_writable(realpath($path))) { 203 if (!is_writable(realpath($path))) {
199 $errors[] = '"'.$path.'" '. t('directory is not writable'); 204 $errors[] = '"' . $path . '" ' . t('directory is not writable');
200 } 205 }
201 } 206 }
202 207
203 // Check configuration files are readable and writable 208 // Check configuration files are readable and writable
204 foreach (array( 209 foreach (array(
205 $conf->getConfigFileExt(), 210 $conf->getConfigFileExt(),
206 $conf->get('resource.datastore'), 211 $conf->get('resource.datastore'),
207 $conf->get('resource.ban_file'), 212 $conf->get('resource.ban_file'),
208 $conf->get('resource.log'), 213 $conf->get('resource.log'),
209 $conf->get('resource.update_check'), 214 $conf->get('resource.update_check'),
210 ) as $path) { 215 ) as $path) {
211 if (! is_file(realpath($path))) { 216 if (!is_file(realpath($path))) {
212 # the file may not exist yet 217 # the file may not exist yet
213 continue; 218 continue;
214 } 219 }
215 220
216 if (! is_readable(realpath($path))) { 221 if (!is_readable(realpath($path))) {
217 $errors[] = '"'.$path.'" '. t('file is not readable'); 222 $errors[] = '"' . $path . '" ' . t('file is not readable');
218 } 223 }
219 if (! is_writable(realpath($path))) { 224 if (!is_writable(realpath($path))) {
220 $errors[] = '"'.$path.'" '. t('file is not writable'); 225 $errors[] = '"' . $path . '" ' . t('file is not writable');
221 } 226 }
222 } 227 }
223 228
diff --git a/application/FileUtils.php b/application/FileUtils.php
index b89ea12b..30560bfc 100644
--- a/application/FileUtils.php
+++ b/application/FileUtils.php
@@ -1,6 +1,8 @@
1<?php 1<?php
2 2
3require_once 'exceptions/IOException.php'; 3namespace Shaarli;
4
5use Shaarli\Exceptions\IOException;
4 6
5/** 7/**
6 * Class FileUtils 8 * Class FileUtils
@@ -44,7 +46,7 @@ class FileUtils
44 46
45 return file_put_contents( 47 return file_put_contents(
46 $file, 48 $file,
47 self::$phpPrefix.base64_encode(gzdeflate(serialize($content))).self::$phpSuffix 49 self::$phpPrefix . base64_encode(gzdeflate(serialize($content))) . self::$phpSuffix
48 ); 50 );
49 } 51 }
50 52
@@ -62,7 +64,7 @@ class FileUtils
62 { 64 {
63 // Note that gzinflate is faster than gzuncompress. 65 // Note that gzinflate is faster than gzuncompress.
64 // See: http://www.php.net/manual/en/function.gzdeflate.php#96439 66 // See: http://www.php.net/manual/en/function.gzdeflate.php#96439
65 if (! is_readable($file)) { 67 if (!is_readable($file)) {
66 return $default; 68 return $default;
67 } 69 }
68 70
diff --git a/application/History.php b/application/History.php
index 35ec016a..a5846652 100644
--- a/application/History.php
+++ b/application/History.php
@@ -1,4 +1,8 @@
1<?php 1<?php
2namespace Shaarli;
3
4use DateTime;
5use Exception;
2 6
3/** 7/**
4 * Class History 8 * Class History
@@ -66,7 +70,7 @@ class History
66 * History constructor. 70 * History constructor.
67 * 71 *
68 * @param string $historyFilePath History file path. 72 * @param string $historyFilePath History file path.
69 * @param int $retentionTime History content rentention time in seconds. 73 * @param int $retentionTime History content retention time in seconds.
70 * 74 *
71 * @throws Exception if something goes wrong. 75 * @throws Exception if something goes wrong.
72 */ 76 */
@@ -166,11 +170,11 @@ class History
166 */ 170 */
167 protected function check() 171 protected function check()
168 { 172 {
169 if (! is_file($this->historyFilePath)) { 173 if (!is_file($this->historyFilePath)) {
170 FileUtils::writeFlatDB($this->historyFilePath, []); 174 FileUtils::writeFlatDB($this->historyFilePath, []);
171 } 175 }
172 176
173 if (! is_writable($this->historyFilePath)) { 177 if (!is_writable($this->historyFilePath)) {
174 throw new Exception(t('History file isn\'t readable or writable')); 178 throw new Exception(t('History file isn\'t readable or writable'));
175 } 179 }
176 } 180 }
@@ -191,7 +195,7 @@ class History
191 */ 195 */
192 protected function write() 196 protected function write()
193 { 197 {
194 $comparaison = new DateTime('-'. $this->retentionTime . ' seconds'); 198 $comparaison = new DateTime('-' . $this->retentionTime . ' seconds');
195 foreach ($this->history as $key => $value) { 199 foreach ($this->history as $key => $value) {
196 if ($value['datetime'] < $comparaison) { 200 if ($value['datetime'] < $comparaison) {
197 unset($this->history[$key]); 201 unset($this->history[$key]);
diff --git a/application/Languages.php b/application/Languages.php
index b9c5d0e8..5cda802e 100644
--- a/application/Languages.php
+++ b/application/Languages.php
@@ -3,7 +3,6 @@
3namespace Shaarli; 3namespace Shaarli;
4 4
5use Gettext\GettextTranslator; 5use Gettext\GettextTranslator;
6use Gettext\Merge;
7use Gettext\Translations; 6use Gettext\Translations;
8use Gettext\Translator; 7use Gettext\Translator;
9use Gettext\TranslatorInterface; 8use Gettext\TranslatorInterface;
diff --git a/application/Router.php b/application/Router.php
index beb3165b..d7187487 100644
--- a/application/Router.php
+++ b/application/Router.php
@@ -1,4 +1,5 @@
1<?php 1<?php
2namespace Shaarli;
2 3
3/** 4/**
4 * Class Router 5 * Class Router
@@ -37,6 +38,8 @@ class Router
37 38
38 public static $PAGE_DELETELINK = 'delete_link'; 39 public static $PAGE_DELETELINK = 'delete_link';
39 40
41 public static $PAGE_CHANGE_VISIBILITY = 'change_visibility';
42
40 public static $PAGE_PINLINK = 'pin'; 43 public static $PAGE_PINLINK = 'pin';
41 44
42 public static $PAGE_EXPORT = 'export'; 45 public static $PAGE_EXPORT = 'export';
@@ -75,43 +78,43 @@ class Router
75 return self::$PAGE_LINKLIST; 78 return self::$PAGE_LINKLIST;
76 } 79 }
77 80
78 if (startsWith($query, 'do='. self::$PAGE_LOGIN) && $loggedIn === false) { 81 if (startsWith($query, 'do=' . self::$PAGE_LOGIN) && $loggedIn === false) {
79 return self::$PAGE_LOGIN; 82 return self::$PAGE_LOGIN;
80 } 83 }
81 84
82 if (startsWith($query, 'do='. self::$PAGE_PICWALL)) { 85 if (startsWith($query, 'do=' . self::$PAGE_PICWALL)) {
83 return self::$PAGE_PICWALL; 86 return self::$PAGE_PICWALL;
84 } 87 }
85 88
86 if (startsWith($query, 'do='. self::$PAGE_TAGCLOUD)) { 89 if (startsWith($query, 'do=' . self::$PAGE_TAGCLOUD)) {
87 return self::$PAGE_TAGCLOUD; 90 return self::$PAGE_TAGCLOUD;
88 } 91 }
89 92
90 if (startsWith($query, 'do='. self::$PAGE_TAGLIST)) { 93 if (startsWith($query, 'do=' . self::$PAGE_TAGLIST)) {
91 return self::$PAGE_TAGLIST; 94 return self::$PAGE_TAGLIST;
92 } 95 }
93 96
94 if (startsWith($query, 'do='. self::$PAGE_OPENSEARCH)) { 97 if (startsWith($query, 'do=' . self::$PAGE_OPENSEARCH)) {
95 return self::$PAGE_OPENSEARCH; 98 return self::$PAGE_OPENSEARCH;
96 } 99 }
97 100
98 if (startsWith($query, 'do='. self::$PAGE_DAILY)) { 101 if (startsWith($query, 'do=' . self::$PAGE_DAILY)) {
99 return self::$PAGE_DAILY; 102 return self::$PAGE_DAILY;
100 } 103 }
101 104
102 if (startsWith($query, 'do='. self::$PAGE_FEED_ATOM)) { 105 if (startsWith($query, 'do=' . self::$PAGE_FEED_ATOM)) {
103 return self::$PAGE_FEED_ATOM; 106 return self::$PAGE_FEED_ATOM;
104 } 107 }
105 108
106 if (startsWith($query, 'do='. self::$PAGE_FEED_RSS)) { 109 if (startsWith($query, 'do=' . self::$PAGE_FEED_RSS)) {
107 return self::$PAGE_FEED_RSS; 110 return self::$PAGE_FEED_RSS;
108 } 111 }
109 112
110 if (startsWith($query, 'do='. self::$PAGE_THUMBS_UPDATE)) { 113 if (startsWith($query, 'do=' . self::$PAGE_THUMBS_UPDATE)) {
111 return self::$PAGE_THUMBS_UPDATE; 114 return self::$PAGE_THUMBS_UPDATE;
112 } 115 }
113 116
114 if (startsWith($query, 'do='. self::$AJAX_THUMB_UPDATE)) { 117 if (startsWith($query, 'do=' . self::$AJAX_THUMB_UPDATE)) {
115 return self::$AJAX_THUMB_UPDATE; 118 return self::$AJAX_THUMB_UPDATE;
116 } 119 }
117 120
@@ -120,23 +123,23 @@ class Router
120 return self::$PAGE_LINKLIST; 123 return self::$PAGE_LINKLIST;
121 } 124 }
122 125
123 if (startsWith($query, 'do='. self::$PAGE_TOOLS)) { 126 if (startsWith($query, 'do=' . self::$PAGE_TOOLS)) {
124 return self::$PAGE_TOOLS; 127 return self::$PAGE_TOOLS;
125 } 128 }
126 129
127 if (startsWith($query, 'do='. self::$PAGE_CHANGEPASSWORD)) { 130 if (startsWith($query, 'do=' . self::$PAGE_CHANGEPASSWORD)) {
128 return self::$PAGE_CHANGEPASSWORD; 131 return self::$PAGE_CHANGEPASSWORD;
129 } 132 }
130 133
131 if (startsWith($query, 'do='. self::$PAGE_CONFIGURE)) { 134 if (startsWith($query, 'do=' . self::$PAGE_CONFIGURE)) {
132 return self::$PAGE_CONFIGURE; 135 return self::$PAGE_CONFIGURE;
133 } 136 }
134 137
135 if (startsWith($query, 'do='. self::$PAGE_CHANGETAG)) { 138 if (startsWith($query, 'do=' . self::$PAGE_CHANGETAG)) {
136 return self::$PAGE_CHANGETAG; 139 return self::$PAGE_CHANGETAG;
137 } 140 }
138 141
139 if (startsWith($query, 'do='. self::$PAGE_ADDLINK)) { 142 if (startsWith($query, 'do=' . self::$PAGE_ADDLINK)) {
140 return self::$PAGE_ADDLINK; 143 return self::$PAGE_ADDLINK;
141 } 144 }
142 145
@@ -148,27 +151,31 @@ class Router
148 return self::$PAGE_DELETELINK; 151 return self::$PAGE_DELETELINK;
149 } 152 }
150 153
151 if (startsWith($query, 'do='. self::$PAGE_PINLINK)) { 154 if (isset($get[self::$PAGE_CHANGE_VISIBILITY])) {
155 return self::$PAGE_CHANGE_VISIBILITY;
156 }
157
158 if (startsWith($query, 'do=' . self::$PAGE_PINLINK)) {
152 return self::$PAGE_PINLINK; 159 return self::$PAGE_PINLINK;
153 } 160 }
154 161
155 if (startsWith($query, 'do='. self::$PAGE_EXPORT)) { 162 if (startsWith($query, 'do=' . self::$PAGE_EXPORT)) {
156 return self::$PAGE_EXPORT; 163 return self::$PAGE_EXPORT;
157 } 164 }
158 165
159 if (startsWith($query, 'do='. self::$PAGE_IMPORT)) { 166 if (startsWith($query, 'do=' . self::$PAGE_IMPORT)) {
160 return self::$PAGE_IMPORT; 167 return self::$PAGE_IMPORT;
161 } 168 }
162 169
163 if (startsWith($query, 'do='. self::$PAGE_PLUGINSADMIN)) { 170 if (startsWith($query, 'do=' . self::$PAGE_PLUGINSADMIN)) {
164 return self::$PAGE_PLUGINSADMIN; 171 return self::$PAGE_PLUGINSADMIN;
165 } 172 }
166 173
167 if (startsWith($query, 'do='. self::$PAGE_SAVE_PLUGINSADMIN)) { 174 if (startsWith($query, 'do=' . self::$PAGE_SAVE_PLUGINSADMIN)) {
168 return self::$PAGE_SAVE_PLUGINSADMIN; 175 return self::$PAGE_SAVE_PLUGINSADMIN;
169 } 176 }
170 177
171 if (startsWith($query, 'do='. self::$GET_TOKEN)) { 178 if (startsWith($query, 'do=' . self::$GET_TOKEN)) {
172 return self::$GET_TOKEN; 179 return self::$GET_TOKEN;
173 } 180 }
174 181
diff --git a/application/Thumbnailer.php b/application/Thumbnailer.php
index 167d6296..d5f5ac28 100644
--- a/application/Thumbnailer.php
+++ b/application/Thumbnailer.php
@@ -3,9 +3,9 @@
3namespace Shaarli; 3namespace Shaarli;
4 4
5use Shaarli\Config\ConfigManager; 5use Shaarli\Config\ConfigManager;
6use WebThumbnailer\Application\ConfigManager as WTConfigManager;
6use WebThumbnailer\Exception\WebThumbnailerException; 7use WebThumbnailer\Exception\WebThumbnailerException;
7use WebThumbnailer\WebThumbnailer; 8use WebThumbnailer\WebThumbnailer;
8use WebThumbnailer\Application\ConfigManager as WTConfigManager;
9 9
10/** 10/**
11 * Class Thumbnailer 11 * Class Thumbnailer
diff --git a/application/api/ApiMiddleware.php b/application/api/ApiMiddleware.php
index 66eac133..2d55bda6 100644
--- a/application/api/ApiMiddleware.php
+++ b/application/api/ApiMiddleware.php
@@ -1,9 +1,8 @@
1<?php 1<?php
2namespace Shaarli\Api; 2namespace Shaarli\Api;
3 3
4use Shaarli\Api\Exceptions\ApiException;
5use Shaarli\Api\Exceptions\ApiAuthorizationException; 4use Shaarli\Api\Exceptions\ApiAuthorizationException;
6 5use Shaarli\Api\Exceptions\ApiException;
7use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
8use Slim\Container; 7use Slim\Container;
9use Slim\Http\Request; 8use Slim\Http\Request;
@@ -127,12 +126,10 @@ class ApiMiddleware
127 */ 126 */
128 protected function setLinkDb($conf) 127 protected function setLinkDb($conf)
129 { 128 {
130 $linkDb = new \LinkDB( 129 $linkDb = new \Shaarli\Bookmark\LinkDB(
131 $conf->get('resource.datastore'), 130 $conf->get('resource.datastore'),
132 true, 131 true,
133 $conf->get('privacy.hide_public_links'), 132 $conf->get('privacy.hide_public_links')
134 $conf->get('redirector.url'),
135 $conf->get('redirector.encode_url')
136 ); 133 );
137 $this->container['db'] = $linkDb; 134 $this->container['db'] = $linkDb;
138 } 135 }
diff --git a/application/api/ApiUtils.php b/application/api/ApiUtils.php
index fc5ecaf1..1e3ac02e 100644
--- a/application/api/ApiUtils.php
+++ b/application/api/ApiUtils.php
@@ -1,8 +1,8 @@
1<?php 1<?php
2namespace Shaarli\Api; 2namespace Shaarli\Api;
3 3
4use Shaarli\Base64Url;
5use Shaarli\Api\Exceptions\ApiAuthorizationException; 4use Shaarli\Api\Exceptions\ApiAuthorizationException;
5use Shaarli\Http\Base64Url;
6 6
7/** 7/**
8 * REST API utilities 8 * REST API utilities
@@ -12,7 +12,7 @@ class ApiUtils
12 /** 12 /**
13 * Validates a JWT token authenticity. 13 * Validates a JWT token authenticity.
14 * 14 *
15 * @param string $token JWT token extracted from the headers. 15 * @param string $token JWT token extracted from the headers.
16 * @param string $secret API secret set in the settings. 16 * @param string $secret API secret set in the settings.
17 * 17 *
18 * @throws ApiAuthorizationException the token is not valid. 18 * @throws ApiAuthorizationException the token is not valid.
@@ -50,7 +50,7 @@ class ApiUtils
50 /** 50 /**
51 * Format a Link for the REST API. 51 * Format a Link for the REST API.
52 * 52 *
53 * @param array $link Link data read from the datastore. 53 * @param array $link Link data read from the datastore.
54 * @param string $indexUrl Shaarli's index URL (used for relative URL). 54 * @param string $indexUrl Shaarli's index URL (used for relative URL).
55 * 55 *
56 * @return array Link data formatted for the REST API. 56 * @return array Link data formatted for the REST API.
@@ -59,7 +59,7 @@ class ApiUtils
59 { 59 {
60 $out['id'] = $link['id']; 60 $out['id'] = $link['id'];
61 // Not an internal link 61 // Not an internal link
62 if ($link['url'][0] != '?') { 62 if (! is_note($link['url'])) {
63 $out['url'] = $link['url']; 63 $out['url'] = $link['url'];
64 } else { 64 } else {
65 $out['url'] = $indexUrl . $link['url']; 65 $out['url'] = $indexUrl . $link['url'];
diff --git a/application/api/controllers/ApiController.php b/application/api/controllers/ApiController.php
index 9edefcf6..a6e7cbab 100644
--- a/application/api/controllers/ApiController.php
+++ b/application/api/controllers/ApiController.php
@@ -2,8 +2,9 @@
2 2
3namespace Shaarli\Api\Controllers; 3namespace Shaarli\Api\Controllers;
4 4
5use Shaarli\Bookmark\LinkDB;
5use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
6use \Slim\Container; 7use Slim\Container;
7 8
8/** 9/**
9 * Abstract Class ApiController 10 * Abstract Class ApiController
@@ -25,12 +26,12 @@ abstract class ApiController
25 protected $conf; 26 protected $conf;
26 27
27 /** 28 /**
28 * @var \LinkDB 29 * @var LinkDB
29 */ 30 */
30 protected $linkDb; 31 protected $linkDb;
31 32
32 /** 33 /**
33 * @var \History 34 * @var HistoryController
34 */ 35 */
35 protected $history; 36 protected $history;
36 37
diff --git a/application/api/controllers/History.php b/application/api/controllers/HistoryController.php
index 4582e8b2..9afcfa26 100644
--- a/application/api/controllers/History.php
+++ b/application/api/controllers/HistoryController.php
@@ -14,7 +14,7 @@ use Slim\Http\Response;
14 * 14 *
15 * @package Shaarli\Api\Controllers 15 * @package Shaarli\Api\Controllers
16 */ 16 */
17class History extends ApiController 17class HistoryController extends ApiController
18{ 18{
19 /** 19 /**
20 * Service providing operation regarding Shaarli datastore and settings. 20 * Service providing operation regarding Shaarli datastore and settings.
diff --git a/application/api/controllers/Tags.php b/application/api/controllers/Tags.php
index 6dd78750..82f3ef74 100644
--- a/application/api/controllers/Tags.php
+++ b/application/api/controllers/Tags.php
@@ -4,7 +4,6 @@ namespace Shaarli\Api\Controllers;
4 4
5use Shaarli\Api\ApiUtils; 5use Shaarli\Api\ApiUtils;
6use Shaarli\Api\Exceptions\ApiBadParametersException; 6use Shaarli\Api\Exceptions\ApiBadParametersException;
7use Shaarli\Api\Exceptions\ApiLinkNotFoundException;
8use Shaarli\Api\Exceptions\ApiTagNotFoundException; 7use Shaarli\Api\Exceptions\ApiTagNotFoundException;
9use Slim\Http\Request; 8use Slim\Http\Request;
10use Slim\Http\Response; 9use Slim\Http\Response;
diff --git a/application/api/exceptions/ApiLinkNotFoundException.php b/application/api/exceptions/ApiLinkNotFoundException.php
index c727f4f0..7c2bb56e 100644
--- a/application/api/exceptions/ApiLinkNotFoundException.php
+++ b/application/api/exceptions/ApiLinkNotFoundException.php
@@ -2,8 +2,6 @@
2 2
3namespace Shaarli\Api\Exceptions; 3namespace Shaarli\Api\Exceptions;
4 4
5use Slim\Http\Response;
6
7/** 5/**
8 * Class ApiLinkNotFoundException 6 * Class ApiLinkNotFoundException
9 * 7 *
diff --git a/application/api/exceptions/ApiTagNotFoundException.php b/application/api/exceptions/ApiTagNotFoundException.php
index eee152fe..66ace8bf 100644
--- a/application/api/exceptions/ApiTagNotFoundException.php
+++ b/application/api/exceptions/ApiTagNotFoundException.php
@@ -2,8 +2,6 @@
2 2
3namespace Shaarli\Api\Exceptions; 3namespace Shaarli\Api\Exceptions;
4 4
5use Slim\Http\Response;
6
7/** 5/**
8 * Class ApiTagNotFoundException 6 * Class ApiTagNotFoundException
9 * 7 *
diff --git a/application/LinkDB.php b/application/bookmark/LinkDB.php
index 803757ca..76ba95f0 100644
--- a/application/LinkDB.php
+++ b/application/bookmark/LinkDB.php
@@ -1,4 +1,15 @@
1<?php 1<?php
2
3namespace Shaarli\Bookmark;
4
5use ArrayAccess;
6use Countable;
7use DateTime;
8use Iterator;
9use Shaarli\Bookmark\Exception\LinkNotFoundException;
10use Shaarli\Exceptions\IOException;
11use Shaarli\FileUtils;
12
2/** 13/**
3 * Data storage for links. 14 * Data storage for links.
4 * 15 *
@@ -18,10 +29,10 @@
18 * - private: Is this link private? 0=no, other value=yes 29 * - private: Is this link private? 0=no, other value=yes
19 * - tags: tags attached to this entry (separated by spaces) 30 * - tags: tags attached to this entry (separated by spaces)
20 * - title Title of the link 31 * - title Title of the link
21 * - url URL of the link. Used for displayable links (no redirector, relative, etc.). 32 * - url URL of the link. Used for displayable links.
22 * Can be absolute or relative. 33 * Can be absolute or relative in the database but the relative links
23 * Relative URLs are permalinks (e.g.'?m-ukcw') 34 * will be converted to absolute ones in templates.
24 * - real_url Absolute processed URL. 35 * - real_url Raw URL in stored in the DB (absolute or relative).
25 * - shorturl Permalink smallhash 36 * - shorturl Permalink smallhash
26 * 37 *
27 * Implements 3 interfaces: 38 * Implements 3 interfaces:
@@ -77,19 +88,6 @@ class LinkDB implements Iterator, Countable, ArrayAccess
77 // Hide public links 88 // Hide public links
78 private $hidePublicLinks; 89 private $hidePublicLinks;
79 90
80 // link redirector set in user settings.
81 private $redirector;
82
83 /**
84 * Set this to `true` to urlencode link behind redirector link, `false` to leave it untouched.
85 *
86 * Example:
87 * anonym.to needs clean URL while dereferer.org needs urlencoded URL.
88 *
89 * @var boolean $redirectorEncode parameter: true or false
90 */
91 private $redirectorEncode;
92
93 /** 91 /**
94 * Creates a new LinkDB 92 * Creates a new LinkDB
95 * 93 *
@@ -98,21 +96,16 @@ class LinkDB implements Iterator, Countable, ArrayAccess
98 * @param string $datastore datastore file path. 96 * @param string $datastore datastore file path.
99 * @param boolean $isLoggedIn is the user logged in? 97 * @param boolean $isLoggedIn is the user logged in?
100 * @param boolean $hidePublicLinks if true all links are private. 98 * @param boolean $hidePublicLinks if true all links are private.
101 * @param string $redirector link redirector set in user settings.
102 * @param boolean $redirectorEncode Enable urlencode on redirected urls (default: true).
103 */ 99 */
104 public function __construct( 100 public function __construct(
105 $datastore, 101 $datastore,
106 $isLoggedIn, 102 $isLoggedIn,
107 $hidePublicLinks, 103 $hidePublicLinks
108 $redirector = '',
109 $redirectorEncode = true
110 ) { 104 ) {
105
111 $this->datastore = $datastore; 106 $this->datastore = $datastore;
112 $this->loggedIn = $isLoggedIn; 107 $this->loggedIn = $isLoggedIn;
113 $this->hidePublicLinks = $hidePublicLinks; 108 $this->hidePublicLinks = $hidePublicLinks;
114 $this->redirector = $redirector;
115 $this->redirectorEncode = $redirectorEncode === true;
116 $this->check(); 109 $this->check();
117 $this->read(); 110 $this->read();
118 } 111 }
@@ -137,7 +130,7 @@ class LinkDB implements Iterator, Countable, ArrayAccess
137 if (!isset($value['id']) || empty($value['url'])) { 130 if (!isset($value['id']) || empty($value['url'])) {
138 die(t('Internal Error: A link should always have an id and URL.')); 131 die(t('Internal Error: A link should always have an id and URL.'));
139 } 132 }
140 if (($offset !== null && ! is_int($offset)) || ! is_int($value['id'])) { 133 if (($offset !== null && !is_int($offset)) || !is_int($value['id'])) {
141 die(t('You must specify an integer as a key.')); 134 die(t('You must specify an integer as a key.'));
142 } 135 }
143 if ($offset !== null && $offset !== $value['id']) { 136 if ($offset !== null && $offset !== $value['id']) {
@@ -247,19 +240,19 @@ class LinkDB implements Iterator, Countable, ArrayAccess
247 $this->links = array(); 240 $this->links = array();
248 $link = array( 241 $link = array(
249 'id' => 1, 242 'id' => 1,
250 'title'=> t('The personal, minimalist, super-fast, database free, bookmarking service'), 243 'title' => t('The personal, minimalist, super-fast, database free, bookmarking service'),
251 'url'=>'https://shaarli.readthedocs.io', 244 'url' => 'https://shaarli.readthedocs.io',
252 'description'=>t( 245 'description' => t(
253 'Welcome to Shaarli! This is your first public bookmark. ' 246 'Welcome to Shaarli! This is your first public bookmark. '
254 .'To edit or delete me, you must first login. 247 . 'To edit or delete me, you must first login.
255 248
256To learn how to use Shaarli, consult the link "Documentation" at the bottom of this page. 249To learn how to use Shaarli, consult the link "Documentation" at the bottom of this page.
257 250
258You use the community supported version of the original Shaarli project, by Sebastien Sauvage.' 251You use the community supported version of the original Shaarli project, by Sebastien Sauvage.'
259 ), 252 ),
260 'private'=>0, 253 'private' => 0,
261 'created'=> new DateTime(), 254 'created' => new DateTime(),
262 'tags'=>'opensource software', 255 'tags' => 'opensource software',
263 'sticky' => false, 256 'sticky' => false,
264 ); 257 );
265 $link['shorturl'] = link_small_hash($link['created'], $link['id']); 258 $link['shorturl'] = link_small_hash($link['created'], $link['id']);
@@ -267,12 +260,12 @@ You use the community supported version of the original Shaarli project, by Seba
267 260
268 $link = array( 261 $link = array(
269 'id' => 0, 262 'id' => 0,
270 'title'=> t('My secret stuff... - Pastebin.com'), 263 'title' => t('My secret stuff... - Pastebin.com'),
271 'url'=>'http://sebsauvage.net/paste/?8434b27936c09649#bR7XsXhoTiLcqCpQbmOpBi3rq2zzQUC5hBI7ZT1O3x8=', 264 'url' => 'http://sebsauvage.net/paste/?8434b27936c09649#bR7XsXhoTiLcqCpQbmOpBi3rq2zzQUC5hBI7ZT1O3x8=',
272 'description'=> t('Shhhh! I\'m a private link only YOU can see. You can delete me too.'), 265 'description' => t('Shhhh! I\'m a private link only YOU can see. You can delete me too.'),
273 'private'=>1, 266 'private' => 1,
274 'created'=> new DateTime('1 minute ago'), 267 'created' => new DateTime('1 minute ago'),
275 'tags'=>'secretstuff', 268 'tags' => 'secretstuff',
276 'sticky' => false, 269 'sticky' => false,
277 ); 270 );
278 $link['shorturl'] = link_small_hash($link['created'], $link['id']); 271 $link['shorturl'] = link_small_hash($link['created'], $link['id']);
@@ -299,7 +292,7 @@ You use the community supported version of the original Shaarli project, by Seba
299 292
300 $toremove = array(); 293 $toremove = array();
301 foreach ($this->links as $key => &$link) { 294 foreach ($this->links as $key => &$link) {
302 if (! $this->loggedIn && $link['private'] != 0) { 295 if (!$this->loggedIn && $link['private'] != 0) {
303 // Transition for not upgraded databases. 296 // Transition for not upgraded databases.
304 unset($this->links[$key]); 297 unset($this->links[$key]);
305 continue; 298 continue;
@@ -309,29 +302,19 @@ You use the community supported version of the original Shaarli project, by Seba
309 sanitizeLink($link); 302 sanitizeLink($link);
310 303
311 // Remove private tags if the user is not logged in. 304 // Remove private tags if the user is not logged in.
312 if (! $this->loggedIn) { 305 if (!$this->loggedIn) {
313 $link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']); 306 $link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']);
314 } 307 }
315 308
316 // Do not use the redirector for internal links (Shaarli note URL starting with a '?'). 309 $link['real_url'] = $link['url'];
317 if (!empty($this->redirector) && !startsWith($link['url'], '?')) {
318 $link['real_url'] = $this->redirector;
319 if ($this->redirectorEncode) {
320 $link['real_url'] .= urlencode(unescape($link['url']));
321 } else {
322 $link['real_url'] .= $link['url'];
323 }
324 } else {
325 $link['real_url'] = $link['url'];
326 }
327 310
328 $link['sticky'] = isset($link['sticky']) ? $link['sticky'] : false; 311 $link['sticky'] = isset($link['sticky']) ? $link['sticky'] : false;
329 312
330 // To be able to load links before running the update, and prepare the update 313 // To be able to load links before running the update, and prepare the update
331 if (! isset($link['created'])) { 314 if (!isset($link['created'])) {
332 $link['id'] = $link['linkdate']; 315 $link['id'] = $link['linkdate'];
333 $link['created'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['linkdate']); 316 $link['created'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['linkdate']);
334 if (! empty($link['updated'])) { 317 if (!empty($link['updated'])) {
335 $link['updated'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['updated']); 318 $link['updated'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['updated']);
336 } 319 }
337 $link['shorturl'] = smallHash($link['linkdate']); 320 $link['shorturl'] = smallHash($link['linkdate']);
@@ -417,12 +400,12 @@ You use the community supported version of the original Shaarli project, by Seba
417 /** 400 /**
418 * Filter links according to search parameters. 401 * Filter links according to search parameters.
419 * 402 *
420 * @param array $filterRequest Search request content. Supported keys: 403 * @param array $filterRequest Search request content. Supported keys:
421 * - searchtags: list of tags 404 * - searchtags: list of tags
422 * - searchterm: term search 405 * - searchterm: term search
423 * @param bool $casesensitive Optional: Perform case sensitive filter 406 * @param bool $casesensitive Optional: Perform case sensitive filter
424 * @param string $visibility return only all/private/public links 407 * @param string $visibility return only all/private/public links
425 * @param string $untaggedonly return only untagged links 408 * @param bool $untaggedonly return only untagged links
426 * 409 *
427 * @return array filtered links, all links if no suitable filter was provided. 410 * @return array filtered links, all links if no suitable filter was provided.
428 */ 411 */
@@ -432,6 +415,7 @@ You use the community supported version of the original Shaarli project, by Seba
432 $visibility = 'all', 415 $visibility = 'all',
433 $untaggedonly = false 416 $untaggedonly = false
434 ) { 417 ) {
418
435 // Filter link database according to parameters. 419 // Filter link database according to parameters.
436 $searchtags = isset($filterRequest['searchtags']) ? escape($filterRequest['searchtags']) : ''; 420 $searchtags = isset($filterRequest['searchtags']) ? escape($filterRequest['searchtags']) : '';
437 $searchterm = isset($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : ''; 421 $searchterm = isset($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : '';
@@ -447,8 +431,8 @@ You use the community supported version of the original Shaarli project, by Seba
447 /** 431 /**
448 * Returns the list tags appearing in the links with the given tags 432 * Returns the list tags appearing in the links with the given tags
449 * 433 *
450 * @param array $filteringTags tags selecting the links to consider 434 * @param array $filteringTags tags selecting the links to consider
451 * @param string $visibility process only all/private/public links 435 * @param string $visibility process only all/private/public links
452 * 436 *
453 * @return array tag => linksCount 437 * @return array tag => linksCount
454 */ 438 */
diff --git a/application/LinkFilter.php b/application/bookmark/LinkFilter.php
index 8f147974..9b966307 100644
--- a/application/LinkFilter.php
+++ b/application/bookmark/LinkFilter.php
@@ -1,5 +1,10 @@
1<?php 1<?php
2 2
3namespace Shaarli\Bookmark;
4
5use Exception;
6use Shaarli\Bookmark\Exception\LinkNotFoundException;
7
3/** 8/**
4 * Class LinkFilter. 9 * Class LinkFilter.
5 * 10 *
@@ -10,22 +15,22 @@ class LinkFilter
10 /** 15 /**
11 * @var string permalinks. 16 * @var string permalinks.
12 */ 17 */
13 public static $FILTER_HASH = 'permalink'; 18 public static $FILTER_HASH = 'permalink';
14 19
15 /** 20 /**
16 * @var string text search. 21 * @var string text search.
17 */ 22 */
18 public static $FILTER_TEXT = 'fulltext'; 23 public static $FILTER_TEXT = 'fulltext';
19 24
20 /** 25 /**
21 * @var string tag filter. 26 * @var string tag filter.
22 */ 27 */
23 public static $FILTER_TAG = 'tags'; 28 public static $FILTER_TAG = 'tags';
24 29
25 /** 30 /**
26 * @var string filter by day. 31 * @var string filter by day.
27 */ 32 */
28 public static $FILTER_DAY = 'FILTER_DAY'; 33 public static $FILTER_DAY = 'FILTER_DAY';
29 34
30 /** 35 /**
31 * @var string Allowed characters for hashtags (regex syntax). 36 * @var string Allowed characters for hashtags (regex syntax).
@@ -58,7 +63,7 @@ class LinkFilter
58 */ 63 */
59 public function filter($type, $request, $casesensitive = false, $visibility = 'all', $untaggedonly = false) 64 public function filter($type, $request, $casesensitive = false, $visibility = 'all', $untaggedonly = false)
60 { 65 {
61 if (! in_array($visibility, ['all', 'public', 'private'])) { 66 if (!in_array($visibility, ['all', 'public', 'private'])) {
62 $visibility = 'all'; 67 $visibility = 'all';
63 } 68 }
64 69
@@ -117,7 +122,7 @@ class LinkFilter
117 foreach ($this->links as $key => $value) { 122 foreach ($this->links as $key => $value) {
118 if ($value['private'] && $visibility === 'private') { 123 if ($value['private'] && $visibility === 'private') {
119 $out[$key] = $value; 124 $out[$key] = $value;
120 } elseif (! $value['private'] && $visibility === 'public') { 125 } elseif (!$value['private'] && $visibility === 'public') {
121 $out[$key] = $value; 126 $out[$key] = $value;
122 } 127 }
123 } 128 }
@@ -132,7 +137,7 @@ class LinkFilter
132 * 137 *
133 * @return array $filtered array containing permalink data. 138 * @return array $filtered array containing permalink data.
134 * 139 *
135 * @throws LinkNotFoundException if the smallhash doesn't match any link. 140 * @throws \Shaarli\Bookmark\Exception\LinkNotFoundException if the smallhash doesn't match any link.
136 */ 141 */
137 private function filterSmallHash($smallHash) 142 private function filterSmallHash($smallHash)
138 { 143 {
@@ -169,7 +174,7 @@ class LinkFilter
169 * - see https://github.com/shaarli/Shaarli/issues/75 for examples 174 * - see https://github.com/shaarli/Shaarli/issues/75 for examples
170 * 175 *
171 * @param string $searchterms search query. 176 * @param string $searchterms search query.
172 * @param string $visibility Optional: return only all/private/public links. 177 * @param string $visibility Optional: return only all/private/public links.
173 * 178 *
174 * @return array search results. 179 * @return array search results.
175 */ 180 */
@@ -207,7 +212,7 @@ class LinkFilter
207 foreach ($this->links as $id => $link) { 212 foreach ($this->links as $id => $link) {
208 // ignore non private links when 'privatonly' is on. 213 // ignore non private links when 'privatonly' is on.
209 if ($visibility !== 'all') { 214 if ($visibility !== 'all') {
210 if (! $link['private'] && $visibility === 'private') { 215 if (!$link['private'] && $visibility === 'private') {
211 continue; 216 continue;
212 } elseif ($link['private'] && $visibility === 'public') { 217 } elseif ($link['private'] && $visibility === 'public') {
213 continue; 218 continue;
@@ -250,7 +255,9 @@ class LinkFilter
250 255
251 /** 256 /**
252 * generate a regex fragment out of a tag 257 * generate a regex fragment out of a tag
258 *
253 * @param string $tag to to generate regexs from. may start with '-' to negate, contain '*' as wildcard 259 * @param string $tag to to generate regexs from. may start with '-' to negate, contain '*' as wildcard
260 *
254 * @return string generated regex fragment 261 * @return string generated regex fragment
255 */ 262 */
256 private static function tag2regex($tag) 263 private static function tag2regex($tag)
@@ -334,7 +341,7 @@ class LinkFilter
334 // check level of visibility 341 // check level of visibility
335 // ignore non private links when 'privateonly' is on. 342 // ignore non private links when 'privateonly' is on.
336 if ($visibility !== 'all') { 343 if ($visibility !== 'all') {
337 if (! $link['private'] && $visibility === 'private') { 344 if (!$link['private'] && $visibility === 'private') {
338 continue; 345 continue;
339 } elseif ($link['private'] && $visibility === 'public') { 346 } elseif ($link['private'] && $visibility === 'public') {
340 continue; 347 continue;
@@ -377,7 +384,7 @@ class LinkFilter
377 $filtered = []; 384 $filtered = [];
378 foreach ($this->links as $key => $link) { 385 foreach ($this->links as $key => $link) {
379 if ($visibility !== 'all') { 386 if ($visibility !== 'all') {
380 if (! $link['private'] && $visibility === 'private') { 387 if (!$link['private'] && $visibility === 'private') {
381 continue; 388 continue;
382 } elseif ($link['private'] && $visibility === 'public') { 389 } elseif ($link['private'] && $visibility === 'public') {
383 continue; 390 continue;
@@ -406,7 +413,7 @@ class LinkFilter
406 */ 413 */
407 public function filterDay($day) 414 public function filterDay($day)
408 { 415 {
409 if (! checkDateFormat('Ymd', $day)) { 416 if (!checkDateFormat('Ymd', $day)) {
410 throw new Exception('Invalid date format'); 417 throw new Exception('Invalid date format');
411 } 418 }
412 419
@@ -440,14 +447,3 @@ class LinkFilter
440 return preg_split('/\s+/', $tagsOut, -1, PREG_SPLIT_NO_EMPTY); 447 return preg_split('/\s+/', $tagsOut, -1, PREG_SPLIT_NO_EMPTY);
441 } 448 }
442} 449}
443
444class LinkNotFoundException extends Exception
445{
446 /**
447 * LinkNotFoundException constructor.
448 */
449 public function __construct()
450 {
451 $this->message = t('The link you are trying to reach does not exist or has been deleted.');
452 }
453}
diff --git a/application/LinkUtils.php b/application/bookmark/LinkUtils.php
index d56e019f..77eb2d95 100644
--- a/application/LinkUtils.php
+++ b/application/bookmark/LinkUtils.php
@@ -1,17 +1,31 @@
1<?php 1<?php
2 2
3use Shaarli\Bookmark\LinkDB;
4
3/** 5/**
4 * Get cURL callback function for CURLOPT_WRITEFUNCTION 6 * Get cURL callback function for CURLOPT_WRITEFUNCTION
5 * 7 *
6 * @param string $charset to extract from the downloaded page (reference) 8 * @param string $charset to extract from the downloaded page (reference)
7 * @param string $title to extract from the downloaded page (reference) 9 * @param string $title to extract from the downloaded page (reference)
8 * @param string $curlGetInfo Optionnaly overrides curl_getinfo function 10 * @param string $description to extract from the downloaded page (reference)
11 * @param string $keywords to extract from the downloaded page (reference)
12 * @param bool $retrieveDescription Automatically tries to retrieve description and keywords from HTML content
13 * @param string $curlGetInfo Optionally overrides curl_getinfo function
9 * 14 *
10 * @return Closure 15 * @return Closure
11 */ 16 */
12function get_curl_download_callback(&$charset, &$title, $curlGetInfo = 'curl_getinfo') 17function get_curl_download_callback(
13{ 18 &$charset,
19 &$title,
20 &$description,
21 &$keywords,
22 $retrieveDescription,
23 $curlGetInfo = 'curl_getinfo'
24) {
14 $isRedirected = false; 25 $isRedirected = false;
26 $currentChunk = 0;
27 $foundChunk = null;
28
15 /** 29 /**
16 * cURL callback function for CURLOPT_WRITEFUNCTION (called during the download). 30 * cURL callback function for CURLOPT_WRITEFUNCTION (called during the download).
17 * 31 *
@@ -23,7 +37,18 @@ function get_curl_download_callback(&$charset, &$title, $curlGetInfo = 'curl_get
23 * 37 *
24 * @return int|bool length of $data or false if we need to stop the download 38 * @return int|bool length of $data or false if we need to stop the download
25 */ 39 */
26 return function (&$ch, $data) use ($curlGetInfo, &$charset, &$title, &$isRedirected) { 40 return function (&$ch, $data) use (
41 $retrieveDescription,
42 $curlGetInfo,
43 &$charset,
44 &$title,
45 &$description,
46 &$keywords,
47 &$isRedirected,
48 &$currentChunk,
49 &$foundChunk
50 ) {
51 $currentChunk++;
27 $responseCode = $curlGetInfo($ch, CURLINFO_RESPONSE_CODE); 52 $responseCode = $curlGetInfo($ch, CURLINFO_RESPONSE_CODE);
28 if (!empty($responseCode) && in_array($responseCode, [301, 302])) { 53 if (!empty($responseCode) && in_array($responseCode, [301, 302])) {
29 $isRedirected = true; 54 $isRedirected = true;
@@ -48,9 +73,34 @@ function get_curl_download_callback(&$charset, &$title, $curlGetInfo = 'curl_get
48 } 73 }
49 if (empty($title)) { 74 if (empty($title)) {
50 $title = html_extract_title($data); 75 $title = html_extract_title($data);
76 $foundChunk = ! empty($title) ? $currentChunk : $foundChunk;
77 }
78 if ($retrieveDescription && empty($description)) {
79 $description = html_extract_tag('description', $data);
80 $foundChunk = ! empty($description) ? $currentChunk : $foundChunk;
51 } 81 }
82 if ($retrieveDescription && empty($keywords)) {
83 $keywords = html_extract_tag('keywords', $data);
84 if (! empty($keywords)) {
85 $foundChunk = $currentChunk;
86 // Keywords use the format tag1, tag2 multiple words, tag
87 // So we format them to match Shaarli's separator and glue multiple words with '-'
88 $keywords = implode(' ', array_map(function($keyword) {
89 return implode('-', preg_split('/\s+/', trim($keyword)));
90 }, explode(',', $keywords)));
91 }
92 }
93
52 // We got everything we want, stop the download. 94 // We got everything we want, stop the download.
53 if (!empty($responseCode) && !empty($contentType) && !empty($charset) && !empty($title)) { 95 // If we already found either the title, description or keywords,
96 // it's highly unlikely that we'll found the other metas further than
97 // in the same chunk of data or the next one. So we also stop the download after that.
98 if ((!empty($responseCode) && !empty($contentType) && !empty($charset)) && $foundChunk !== null
99 && (! $retrieveDescription
100 || $foundChunk < $currentChunk
101 || (!empty($title) && !empty($description) && !empty($keywords))
102 )
103 ) {
54 return false; 104 return false;
55 } 105 }
56 106
@@ -109,6 +159,35 @@ function html_extract_charset($html)
109} 159}
110 160
111/** 161/**
162 * Extract meta tag from HTML content in either:
163 * - OpenGraph: <meta property="og:[tag]" ...>
164 * - Meta tag: <meta name="[tag]" ...>
165 *
166 * @param string $tag Name of the tag to retrieve.
167 * @param string $html HTML content where to look for charset.
168 *
169 * @return bool|string Charset string if found, false otherwise.
170 */
171function html_extract_tag($tag, $html)
172{
173 $propertiesKey = ['property', 'name', 'itemprop'];
174 $properties = implode('|', $propertiesKey);
175 // Try to retrieve OpenGraph image.
176 $ogRegex = '#<meta[^>]+(?:'. $properties .')=["\']?(?:og:)?'. $tag .'["\'\s][^>]*content=["\']?(.*?)["\'/>]#';
177 // If the attributes are not in the order property => content (e.g. Github)
178 // New regex to keep this readable... more or less.
179 $ogRegexReverse = '#<meta[^>]+content=["\']([^"\']+)[^>]+(?:'. $properties .')=["\']?(?:og)?:'. $tag .'["\'\s/>]#';
180
181 if (preg_match($ogRegex, $html, $matches) > 0
182 || preg_match($ogRegexReverse, $html, $matches) > 0
183 ) {
184 return $matches[1];
185 }
186
187 return false;
188}
189
190/**
112 * Count private links in given linklist. 191 * Count private links in given linklist.
113 * 192 *
114 * @param array|Countable $links Linklist. 193 * @param array|Countable $links Linklist.
@@ -131,29 +210,15 @@ function count_private($links)
131 * In a string, converts URLs to clickable links. 210 * In a string, converts URLs to clickable links.
132 * 211 *
133 * @param string $text input string. 212 * @param string $text input string.
134 * @param string $redirector if a redirector is set, use it to gerenate links.
135 * @param bool $urlEncode Use `urlencode()` on the URL after the redirector or not.
136 * 213 *
137 * @return string returns $text with all links converted to HTML links. 214 * @return string returns $text with all links converted to HTML links.
138 * 215 *
139 * @see Function inspired from http://www.php.net/manual/en/function.preg-replace.php#85722 216 * @see Function inspired from http://www.php.net/manual/en/function.preg-replace.php#85722
140 */ 217 */
141function text2clickable($text, $redirector = '', $urlEncode = true) 218function text2clickable($text)
142{ 219{
143 $regex = '!(((?:https?|ftp|file)://|apt:|magnet:)\S+[a-z0-9\(\)]/?)!si'; 220 $regex = '!(((?:https?|ftp|file)://|apt:|magnet:)\S+[a-z0-9\(\)]/?)!si';
144 221 return preg_replace($regex, '<a href="$1">$1</a>', $text);
145 if (empty($redirector)) {
146 return preg_replace($regex, '<a href="$1">$1</a>', $text);
147 }
148 // Redirector is set, urlencode the final URL.
149 return preg_replace_callback(
150 $regex,
151 function ($matches) use ($redirector, $urlEncode) {
152 $url = $urlEncode ? urlencode($matches[1]) : $matches[1];
153 return '<a href="' . $redirector . $url .'">'. $matches[1] .'</a>';
154 },
155 $text
156 );
157} 222}
158 223
159/** 224/**
@@ -195,15 +260,13 @@ function space2nbsp($text)
195 * Format Shaarli's description 260 * Format Shaarli's description
196 * 261 *
197 * @param string $description shaare's description. 262 * @param string $description shaare's description.
198 * @param string $redirector if a redirector is set, use it to gerenate links.
199 * @param bool $urlEncode Use `urlencode()` on the URL after the redirector or not.
200 * @param string $indexUrl URL to Shaarli's index. 263 * @param string $indexUrl URL to Shaarli's index.
201 264
202 * @return string formatted description. 265 * @return string formatted description.
203 */ 266 */
204function format_description($description, $redirector = '', $urlEncode = true, $indexUrl = '') 267function format_description($description, $indexUrl = '')
205{ 268{
206 return nl2br(space2nbsp(hashtag_autolink(text2clickable($description, $redirector, $urlEncode), $indexUrl))); 269 return nl2br(space2nbsp(hashtag_autolink(text2clickable($description), $indexUrl)));
207} 270}
208 271
209/** 272/**
@@ -218,3 +281,16 @@ function link_small_hash($date, $id)
218{ 281{
219 return smallHash($date->format(LinkDB::LINK_DATE_FORMAT) . $id); 282 return smallHash($date->format(LinkDB::LINK_DATE_FORMAT) . $id);
220} 283}
284
285/**
286 * Returns whether or not the link is an internal note.
287 * Its URL starts by `?` because it's actually a permalink.
288 *
289 * @param string $linkUrl
290 *
291 * @return bool true if internal note, false otherwise.
292 */
293function is_note($linkUrl)
294{
295 return isset($linkUrl[0]) && $linkUrl[0] === '?';
296}
diff --git a/application/bookmark/exception/LinkNotFoundException.php b/application/bookmark/exception/LinkNotFoundException.php
new file mode 100644
index 00000000..f9414428
--- /dev/null
+++ b/application/bookmark/exception/LinkNotFoundException.php
@@ -0,0 +1,15 @@
1<?php
2namespace Shaarli\Bookmark\Exception;
3
4use Exception;
5
6class LinkNotFoundException extends Exception
7{
8 /**
9 * LinkNotFoundException constructor.
10 */
11 public function __construct()
12 {
13 $this->message = t('The link you are trying to reach does not exist or has been deleted.');
14 }
15}
diff --git a/application/config/ConfigJson.php b/application/config/ConfigJson.php
index 8c8d5610..4509357c 100644
--- a/application/config/ConfigJson.php
+++ b/application/config/ConfigJson.php
@@ -47,7 +47,7 @@ class ConfigJson implements ConfigIO
47 $print = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0; 47 $print = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0;
48 $data = self::getPhpHeaders() . json_encode($conf, $print) . self::getPhpSuffix(); 48 $data = self::getPhpHeaders() . json_encode($conf, $print) . self::getPhpSuffix();
49 if (!file_put_contents($filepath, $data)) { 49 if (!file_put_contents($filepath, $data)) {
50 throw new \IOException( 50 throw new \Shaarli\Exceptions\IOException(
51 $filepath, 51 $filepath,
52 t('Shaarli could not create the config file. '. 52 t('Shaarli could not create the config file. '.
53 'Please make sure Shaarli has the right to write in the folder is it installed in.') 53 'Please make sure Shaarli has the right to write in the folder is it installed in.')
diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php
index 32aaea48..c95e6800 100644
--- a/application/config/ConfigManager.php
+++ b/application/config/ConfigManager.php
@@ -207,7 +207,7 @@ class ConfigManager
207 * 207 *
208 * @throws MissingFieldConfigException: a mandatory field has not been provided in $conf. 208 * @throws MissingFieldConfigException: a mandatory field has not been provided in $conf.
209 * @throws UnauthorizedConfigException: user is not authorize to change configuration. 209 * @throws UnauthorizedConfigException: user is not authorize to change configuration.
210 * @throws \IOException: an error occurred while writing the new config file. 210 * @throws \Shaarli\Exceptions\IOException: an error occurred while writing the new config file.
211 */ 211 */
212 public function write($isLoggedIn) 212 public function write($isLoggedIn)
213 { 213 {
@@ -221,7 +221,6 @@ class ConfigManager
221 'general.title', 221 'general.title',
222 'general.header_link', 222 'general.header_link',
223 'privacy.default_private_links', 223 'privacy.default_private_links',
224 'redirector.url',
225 ); 224 );
226 225
227 // Only logged in user can alter config. 226 // Only logged in user can alter config.
@@ -366,6 +365,7 @@ class ConfigManager
366 $this->setEmpty('general.links_per_page', 20); 365 $this->setEmpty('general.links_per_page', 20);
367 $this->setEmpty('general.enabled_plugins', self::$DEFAULT_PLUGINS); 366 $this->setEmpty('general.enabled_plugins', self::$DEFAULT_PLUGINS);
368 $this->setEmpty('general.default_note_title', 'Note: '); 367 $this->setEmpty('general.default_note_title', 'Note: ');
368 $this->setEmpty('general.retrieve_description', false);
369 369
370 $this->setEmpty('updates.check_updates', false); 370 $this->setEmpty('updates.check_updates', false);
371 $this->setEmpty('updates.check_updates_branch', 'stable'); 371 $this->setEmpty('updates.check_updates_branch', 'stable');
@@ -381,9 +381,6 @@ class ConfigManager
381 // default state of the 'remember me' checkbox of the login form 381 // default state of the 'remember me' checkbox of the login form
382 $this->setEmpty('privacy.remember_user_default', true); 382 $this->setEmpty('privacy.remember_user_default', true);
383 383
384 $this->setEmpty('redirector.url', '');
385 $this->setEmpty('redirector.encode_url', true);
386
387 $this->setEmpty('thumbnails.width', '125'); 384 $this->setEmpty('thumbnails.width', '125');
388 $this->setEmpty('thumbnails.height', '90'); 385 $this->setEmpty('thumbnails.height', '90');
389 386
diff --git a/application/config/ConfigPhp.php b/application/config/ConfigPhp.php
index 9625fe1a..cad34594 100644
--- a/application/config/ConfigPhp.php
+++ b/application/config/ConfigPhp.php
@@ -27,7 +27,7 @@ class ConfigPhp implements ConfigIO
27 /** 27 /**
28 * Map legacy config keys with the new ones. 28 * Map legacy config keys with the new ones.
29 * If ConfigPhp is used, getting <newkey> will actually look for <legacykey>. 29 * If ConfigPhp is used, getting <newkey> will actually look for <legacykey>.
30 * The Updater will use this array to transform keys when switching to JSON. 30 * The updater will use this array to transform keys when switching to JSON.
31 * 31 *
32 * @var array current key => legacy key. 32 * @var array current key => legacy key.
33 */ 33 */
@@ -124,7 +124,7 @@ class ConfigPhp implements ConfigIO
124 if (!file_put_contents($filepath, $configStr) 124 if (!file_put_contents($filepath, $configStr)
125 || strcmp(file_get_contents($filepath), $configStr) != 0 125 || strcmp(file_get_contents($filepath), $configStr) != 0
126 ) { 126 ) {
127 throw new \IOException( 127 throw new \Shaarli\Exceptions\IOException(
128 $filepath, 128 $filepath,
129 t('Shaarli could not create the config file. '. 129 t('Shaarli could not create the config file. '.
130 'Please make sure Shaarli has the right to write in the folder is it installed in.') 130 'Please make sure Shaarli has the right to write in the folder is it installed in.')
diff --git a/application/exceptions/IOException.php b/application/exceptions/IOException.php
index 18e46b77..2aa25e5c 100644
--- a/application/exceptions/IOException.php
+++ b/application/exceptions/IOException.php
@@ -1,4 +1,7 @@
1<?php 1<?php
2namespace Shaarli\Exceptions;
3
4use Exception;
2 5
3/** 6/**
4 * Exception class thrown when a filesystem access failure happens 7 * Exception class thrown when a filesystem access failure happens
@@ -17,6 +20,6 @@ class IOException extends Exception
17 { 20 {
18 $this->path = $path; 21 $this->path = $path;
19 $this->message = empty($message) ? t('Error accessing') : $message; 22 $this->message = empty($message) ? t('Error accessing') : $message;
20 $this->message .= ' "' . $this->path .'"'; 23 $this->message .= ' "' . $this->path . '"';
21 } 24 }
22} 25}
diff --git a/application/Cache.php b/application/feed/Cache.php
index e5d43e61..e5d43e61 100644
--- a/application/Cache.php
+++ b/application/feed/Cache.php
diff --git a/application/CachedPage.php b/application/feed/CachedPage.php
index e11cc52d..d809bdd9 100644
--- a/application/CachedPage.php
+++ b/application/feed/CachedPage.php
@@ -1,4 +1,7 @@
1<?php 1<?php
2
3namespace Shaarli\Feed;
4
2/** 5/**
3 * Simple cache system, mainly for the RSS/ATOM feeds 6 * Simple cache system, mainly for the RSS/ATOM feeds
4 */ 7 */
@@ -24,7 +27,7 @@ class CachedPage
24 { 27 {
25 // TODO: check write access to the cache directory 28 // TODO: check write access to the cache directory
26 $this->cacheDir = $cacheDir; 29 $this->cacheDir = $cacheDir;
27 $this->filename = $this->cacheDir.'/'.sha1($url).'.cache'; 30 $this->filename = $this->cacheDir . '/' . sha1($url) . '.cache';
28 $this->shouldBeCached = $shouldBeCached; 31 $this->shouldBeCached = $shouldBeCached;
29 } 32 }
30 33
diff --git a/application/FeedBuilder.php b/application/feed/FeedBuilder.php
index 73fafcbe..7c859474 100644
--- a/application/FeedBuilder.php
+++ b/application/feed/FeedBuilder.php
@@ -1,4 +1,7 @@
1<?php 1<?php
2namespace Shaarli\Feed;
3
4use DateTime;
2 5
3/** 6/**
4 * FeedBuilder class. 7 * FeedBuilder class.
@@ -28,7 +31,7 @@ class FeedBuilder
28 public static $DEFAULT_NB_LINKS = 50; 31 public static $DEFAULT_NB_LINKS = 50;
29 32
30 /** 33 /**
31 * @var LinkDB instance. 34 * @var \Shaarli\Bookmark\LinkDB instance.
32 */ 35 */
33 protected $linkDB; 36 protected $linkDB;
34 37
@@ -38,12 +41,12 @@ class FeedBuilder
38 protected $feedType; 41 protected $feedType;
39 42
40 /** 43 /**
41 * @var array $_SERVER. 44 * @var array $_SERVER
42 */ 45 */
43 protected $serverInfo; 46 protected $serverInfo;
44 47
45 /** 48 /**
46 * @var array $_GET. 49 * @var array $_GET
47 */ 50 */
48 protected $userInput; 51 protected $userInput;
49 52
@@ -75,11 +78,12 @@ class FeedBuilder
75 /** 78 /**
76 * Feed constructor. 79 * Feed constructor.
77 * 80 *
78 * @param LinkDB $linkDB LinkDB instance. 81 * @param \Shaarli\Bookmark\LinkDB $linkDB LinkDB instance.
79 * @param string $feedType Type of feed. 82 * @param string $feedType Type of feed.
80 * @param array $serverInfo $_SERVER. 83 * @param array $serverInfo $_SERVER.
81 * @param array $userInput $_GET. 84 * @param array $userInput $_GET.
82 * @param boolean $isLoggedIn True if the user is currently logged in, false otherwise. 85 * @param boolean $isLoggedIn True if the user is currently logged in,
86 * false otherwise.
83 */ 87 */
84 public function __construct($linkDB, $feedType, $serverInfo, $userInput, $isLoggedIn) 88 public function __construct($linkDB, $feedType, $serverInfo, $userInput, $isLoggedIn)
85 { 89 {
@@ -124,7 +128,7 @@ class FeedBuilder
124 $data['show_dates'] = !$this->hideDates || $this->isLoggedIn; 128 $data['show_dates'] = !$this->hideDates || $this->isLoggedIn;
125 // Remove leading slash from REQUEST_URI. 129 // Remove leading slash from REQUEST_URI.
126 $data['self_link'] = escape(server_url($this->serverInfo)) 130 $data['self_link'] = escape(server_url($this->serverInfo))
127 . escape($this->serverInfo['REQUEST_URI']); 131 . escape($this->serverInfo['REQUEST_URI']);
128 $data['index_url'] = $pageaddr; 132 $data['index_url'] = $pageaddr;
129 $data['usepermalinks'] = $this->usePermalinks === true; 133 $data['usepermalinks'] = $this->usePermalinks === true;
130 $data['links'] = $linkDisplayed; 134 $data['links'] = $linkDisplayed;
@@ -142,18 +146,18 @@ class FeedBuilder
142 */ 146 */
143 protected function buildItem($link, $pageaddr) 147 protected function buildItem($link, $pageaddr)
144 { 148 {
145 $link['guid'] = $pageaddr .'?'. $link['shorturl']; 149 $link['guid'] = $pageaddr . '?' . $link['shorturl'];
146 // Check for both signs of a note: starting with ? and 7 chars long. 150 // Prepend the root URL for notes
147 if ($link['url'][0] === '?' && strlen($link['url']) === 7) { 151 if (is_note($link['url'])) {
148 $link['url'] = $pageaddr . $link['url']; 152 $link['url'] = $pageaddr . $link['url'];
149 } 153 }
150 if ($this->usePermalinks === true) { 154 if ($this->usePermalinks === true) {
151 $permalink = '<a href="'. $link['url'] .'" title="'. t('Direct link') .'">'. t('Direct link') .'</a>'; 155 $permalink = '<a href="' . $link['url'] . '" title="' . t('Direct link') . '">' . t('Direct link') . '</a>';
152 } else { 156 } else {
153 $permalink = '<a href="'. $link['guid'] .'" title="'. t('Permalink') .'">'. t('Permalink') .'</a>'; 157 $permalink = '<a href="' . $link['guid'] . '" title="' . t('Permalink') . '">' . t('Permalink') . '</a>';
154 } 158 }
155 $link['description'] = format_description($link['description'], '', false, $pageaddr); 159 $link['description'] = format_description($link['description'], $pageaddr);
156 $link['description'] .= PHP_EOL .'<br>&#8212; '. $permalink; 160 $link['description'] .= PHP_EOL . '<br>&#8212; ' . $permalink;
157 161
158 $pubDate = $link['created']; 162 $pubDate = $link['created'];
159 $link['pub_iso_date'] = $this->getIsoDate($pubDate); 163 $link['pub_iso_date'] = $this->getIsoDate($pubDate);
@@ -164,7 +168,6 @@ class FeedBuilder
164 $link['up_iso_date'] = $this->getIsoDate($upDate, DateTime::ATOM); 168 $link['up_iso_date'] = $this->getIsoDate($upDate, DateTime::ATOM);
165 } else { 169 } else {
166 $link['up_iso_date'] = $this->getIsoDate($pubDate, DateTime::ATOM); 170 $link['up_iso_date'] = $this->getIsoDate($pubDate, DateTime::ATOM);
167 ;
168 } 171 }
169 172
170 // Save the more recent item. 173 // Save the more recent item.
@@ -223,11 +226,11 @@ class FeedBuilder
223 public function getTypeLanguage() 226 public function getTypeLanguage()
224 { 227 {
225 // Use the locale do define the language, if available. 228 // Use the locale do define the language, if available.
226 if (! empty($this->locale) && preg_match('/^\w{2}[_\-]\w{2}/', $this->locale)) { 229 if (!empty($this->locale) && preg_match('/^\w{2}[_\-]\w{2}/', $this->locale)) {
227 $length = ($this->feedType == self::$FEED_RSS) ? 5 : 2; 230 $length = ($this->feedType === self::$FEED_RSS) ? 5 : 2;
228 return str_replace('_', '-', substr($this->locale, 0, $length)); 231 return str_replace('_', '-', substr($this->locale, 0, $length));
229 } 232 }
230 return ($this->feedType == self::$FEED_RSS) ? 'en-en' : 'en'; 233 return ($this->feedType === self::$FEED_RSS) ? 'en-en' : 'en';
231 } 234 }
232 235
233 /** 236 /**
@@ -287,7 +290,7 @@ class FeedBuilder
287 } 290 }
288 291
289 $intNb = intval($this->userInput['nb']); 292 $intNb = intval($this->userInput['nb']);
290 if (! is_int($intNb) || $intNb == 0) { 293 if (!is_int($intNb) || $intNb == 0) {
291 return self::$DEFAULT_NB_LINKS; 294 return self::$DEFAULT_NB_LINKS;
292 } 295 }
293 296
diff --git a/application/Base64Url.php b/application/http/Base64Url.php
index 54d0fcd5..33fa7c1f 100644
--- a/application/Base64Url.php
+++ b/application/http/Base64Url.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace Shaarli; 3namespace Shaarli\Http;
4 4
5/** 5/**
6 * URL-safe Base64 operations 6 * URL-safe Base64 operations
diff --git a/application/HttpUtils.php b/application/http/HttpUtils.php
index 9c438160..2ea9195d 100644
--- a/application/HttpUtils.php
+++ b/application/http/HttpUtils.php
@@ -1,4 +1,7 @@
1<?php 1<?php
2
3use Shaarli\Http\Url;
4
2/** 5/**
3 * GET an HTTP URL to retrieve its content 6 * GET an HTTP URL to retrieve its content
4 * Uses the cURL library or a fallback method 7 * Uses the cURL library or a fallback method
@@ -38,7 +41,7 @@ function get_http_response($url, $timeout = 30, $maxBytes = 4194304, $curlWriteF
38 $cleanUrl = $urlObj->idnToAscii(); 41 $cleanUrl = $urlObj->idnToAscii();
39 42
40 if (!filter_var($cleanUrl, FILTER_VALIDATE_URL) || !$urlObj->isHttp()) { 43 if (!filter_var($cleanUrl, FILTER_VALIDATE_URL) || !$urlObj->isHttp()) {
41 return array(array(0 => 'Invalid HTTP Url'), false); 44 return array(array(0 => 'Invalid HTTP UrlUtils'), false);
42 } 45 }
43 46
44 $userAgent = 47 $userAgent =
diff --git a/application/Url.php b/application/http/Url.php
index 3b7f19c2..90444a2f 100644
--- a/application/Url.php
+++ b/application/http/Url.php
@@ -1,91 +1,6 @@
1<?php 1<?php
2/**
3 * Converts an array-represented URL to a string
4 *
5 * Source: http://php.net/manual/en/function.parse-url.php#106731
6 *
7 * @see http://php.net/manual/en/function.parse-url.php
8 *
9 * @param array $parsedUrl an array-represented URL
10 *
11 * @return string the string representation of the URL
12 */
13function unparse_url($parsedUrl)
14{
15 $scheme = isset($parsedUrl['scheme']) ? $parsedUrl['scheme'].'://' : '';
16 $host = isset($parsedUrl['host']) ? $parsedUrl['host'] : '';
17 $port = isset($parsedUrl['port']) ? ':'.$parsedUrl['port'] : '';
18 $user = isset($parsedUrl['user']) ? $parsedUrl['user'] : '';
19 $pass = isset($parsedUrl['pass']) ? ':'.$parsedUrl['pass'] : '';
20 $pass = ($user || $pass) ? "$pass@" : '';
21 $path = isset($parsedUrl['path']) ? $parsedUrl['path'] : '';
22 $query = isset($parsedUrl['query']) ? '?'.$parsedUrl['query'] : '';
23 $fragment = isset($parsedUrl['fragment']) ? '#'.$parsedUrl['fragment'] : '';
24 2
25 return "$scheme$user$pass$host$port$path$query$fragment"; 3namespace Shaarli\Http;
26}
27
28/**
29 * Removes undesired query parameters and fragments
30 *
31 * @param string url Url to be cleaned
32 *
33 * @return string the string representation of this URL after cleanup
34 */
35function cleanup_url($url)
36{
37 $obj_url = new Url($url);
38 return $obj_url->cleanup();
39}
40
41/**
42 * Get URL scheme.
43 *
44 * @param string url Url for which the scheme is requested
45 *
46 * @return mixed the URL scheme or false if none is provided.
47 */
48function get_url_scheme($url)
49{
50 $obj_url = new Url($url);
51 return $obj_url->getScheme();
52}
53
54/**
55 * Adds a trailing slash at the end of URL if necessary.
56 *
57 * @param string $url URL to check/edit.
58 *
59 * @return string $url URL with a end trailing slash.
60 */
61function add_trailing_slash($url)
62{
63 return $url . (!endsWith($url, '/') ? '/' : '');
64}
65
66/**
67 * Replace not whitelisted protocols by 'http://' from given URL.
68 *
69 * @param string $url URL to clean
70 * @param array $protocols List of allowed protocols (aside from http(s)).
71 *
72 * @return string URL with allowed protocol
73 */
74function whitelist_protocols($url, $protocols)
75{
76 if (startsWith($url, '?') || startsWith($url, '/')) {
77 return $url;
78 }
79 $protocols = array_merge(['http', 'https'], $protocols);
80 $protocol = preg_match('#^(\w+):/?/?#', $url, $match);
81 // Protocol not allowed: we remove it and replace it with http
82 if ($protocol === 1 && ! in_array($match[1], $protocols)) {
83 $url = str_replace($match[0], 'http://', $url);
84 } elseif ($protocol !== 1) {
85 $url = 'http://' . $url;
86 }
87 return $url;
88}
89 4
90/** 5/**
91 * URL representation and cleanup utilities 6 * URL representation and cleanup utilities
@@ -182,7 +97,7 @@ class Url
182 } 97 }
183 return $input; 98 return $input;
184 } 99 }
185 100
186 /** 101 /**
187 * Returns a string representation of this URL 102 * Returns a string representation of this URL
188 */ 103 */
@@ -196,7 +111,7 @@ class Url
196 */ 111 */
197 protected function cleanupQuery() 112 protected function cleanupQuery()
198 { 113 {
199 if (! isset($this->parts['query'])) { 114 if (!isset($this->parts['query'])) {
200 return; 115 return;
201 } 116 }
202 117
@@ -224,7 +139,7 @@ class Url
224 */ 139 */
225 protected function cleanupFragment() 140 protected function cleanupFragment()
226 { 141 {
227 if (! isset($this->parts['fragment'])) { 142 if (!isset($this->parts['fragment'])) {
228 return; 143 return;
229 } 144 }
230 145
@@ -257,7 +172,7 @@ class Url
257 public function idnToAscii() 172 public function idnToAscii()
258 { 173 {
259 $out = $this->cleanup(); 174 $out = $this->cleanup();
260 if (! function_exists('idn_to_ascii') || ! isset($this->parts['host'])) { 175 if (!function_exists('idn_to_ascii') || !isset($this->parts['host'])) {
261 return $out; 176 return $out;
262 } 177 }
263 $asciiHost = idn_to_ascii($this->parts['host'], 0, INTL_IDNA_VARIANT_UTS46); 178 $asciiHost = idn_to_ascii($this->parts['host'], 0, INTL_IDNA_VARIANT_UTS46);
@@ -291,7 +206,7 @@ class Url
291 } 206 }
292 207
293 /** 208 /**
294 * Test if the Url is an HTTP one. 209 * Test if the UrlUtils is an HTTP one.
295 * 210 *
296 * @return true is HTTP, false otherwise. 211 * @return true is HTTP, false otherwise.
297 */ 212 */
diff --git a/application/http/UrlUtils.php b/application/http/UrlUtils.php
new file mode 100644
index 00000000..4bc84b82
--- /dev/null
+++ b/application/http/UrlUtils.php
@@ -0,0 +1,88 @@
1<?php
2/**
3 * Converts an array-represented URL to a string
4 *
5 * Source: http://php.net/manual/en/function.parse-url.php#106731
6 *
7 * @see http://php.net/manual/en/function.parse-url.php
8 *
9 * @param array $parsedUrl an array-represented URL
10 *
11 * @return string the string representation of the URL
12 */
13function unparse_url($parsedUrl)
14{
15 $scheme = isset($parsedUrl['scheme']) ? $parsedUrl['scheme'].'://' : '';
16 $host = isset($parsedUrl['host']) ? $parsedUrl['host'] : '';
17 $port = isset($parsedUrl['port']) ? ':'.$parsedUrl['port'] : '';
18 $user = isset($parsedUrl['user']) ? $parsedUrl['user'] : '';
19 $pass = isset($parsedUrl['pass']) ? ':'.$parsedUrl['pass'] : '';
20 $pass = ($user || $pass) ? "$pass@" : '';
21 $path = isset($parsedUrl['path']) ? $parsedUrl['path'] : '';
22 $query = isset($parsedUrl['query']) ? '?'.$parsedUrl['query'] : '';
23 $fragment = isset($parsedUrl['fragment']) ? '#'.$parsedUrl['fragment'] : '';
24
25 return "$scheme$user$pass$host$port$path$query$fragment";
26}
27
28/**
29 * Removes undesired query parameters and fragments
30 *
31 * @param string url UrlUtils to be cleaned
32 *
33 * @return string the string representation of this URL after cleanup
34 */
35function cleanup_url($url)
36{
37 $obj_url = new \Shaarli\Http\Url($url);
38 return $obj_url->cleanup();
39}
40
41/**
42 * Get URL scheme.
43 *
44 * @param string url UrlUtils for which the scheme is requested
45 *
46 * @return mixed the URL scheme or false if none is provided.
47 */
48function get_url_scheme($url)
49{
50 $obj_url = new \Shaarli\Http\Url($url);
51 return $obj_url->getScheme();
52}
53
54/**
55 * Adds a trailing slash at the end of URL if necessary.
56 *
57 * @param string $url URL to check/edit.
58 *
59 * @return string $url URL with a end trailing slash.
60 */
61function add_trailing_slash($url)
62{
63 return $url . (!endsWith($url, '/') ? '/' : '');
64}
65
66/**
67 * Replace not whitelisted protocols by 'http://' from given URL.
68 *
69 * @param string $url URL to clean
70 * @param array $protocols List of allowed protocols (aside from http(s)).
71 *
72 * @return string URL with allowed protocol
73 */
74function whitelist_protocols($url, $protocols)
75{
76 if (startsWith($url, '?') || startsWith($url, '/')) {
77 return $url;
78 }
79 $protocols = array_merge(['http', 'https'], $protocols);
80 $protocol = preg_match('#^(\w+):/?/?#', $url, $match);
81 // Protocol not allowed: we remove it and replace it with http
82 if ($protocol === 1 && ! in_array($match[1], $protocols)) {
83 $url = str_replace($match[0], 'http://', $url);
84 } elseif ($protocol !== 1) {
85 $url = 'http://' . $url;
86 }
87 return $url;
88}
diff --git a/application/NetscapeBookmarkUtils.php b/application/netscape/NetscapeBookmarkUtils.php
index 84dd2b20..28665941 100644
--- a/application/NetscapeBookmarkUtils.php
+++ b/application/netscape/NetscapeBookmarkUtils.php
@@ -1,9 +1,16 @@
1<?php 1<?php
2 2
3namespace Shaarli\Netscape;
4
5use DateTime;
6use DateTimeZone;
7use Exception;
8use Katzgrau\KLogger\Logger;
3use Psr\Log\LogLevel; 9use Psr\Log\LogLevel;
10use Shaarli\Bookmark\LinkDB;
4use Shaarli\Config\ConfigManager; 11use Shaarli\Config\ConfigManager;
12use Shaarli\History;
5use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser; 13use Shaarli\NetscapeBookmarkParser\NetscapeBookmarkParser;
6use Katzgrau\KLogger\Logger;
7 14
8/** 15/**
9 * Utilities to import and export bookmarks using the Netscape format 16 * Utilities to import and export bookmarks using the Netscape format
@@ -31,8 +38,8 @@ class NetscapeBookmarkUtils
31 public static function filterAndFormat($linkDb, $selection, $prependNoteUrl, $indexUrl) 38 public static function filterAndFormat($linkDb, $selection, $prependNoteUrl, $indexUrl)
32 { 39 {
33 // see tpl/export.html for possible values 40 // see tpl/export.html for possible values
34 if (! in_array($selection, array('all', 'public', 'private'))) { 41 if (!in_array($selection, array('all', 'public', 'private'))) {
35 throw new Exception(t('Invalid export selection:') .' "'.$selection.'"'); 42 throw new Exception(t('Invalid export selection:') . ' "' . $selection . '"');
36 } 43 }
37 44
38 $bookmarkLinks = array(); 45 $bookmarkLinks = array();
@@ -47,7 +54,7 @@ class NetscapeBookmarkUtils
47 $link['timestamp'] = $date->getTimestamp(); 54 $link['timestamp'] = $date->getTimestamp();
48 $link['taglist'] = str_replace(' ', ',', $link['tags']); 55 $link['taglist'] = str_replace(' ', ',', $link['tags']);
49 56
50 if (startsWith($link['url'], '?') && $prependNoteUrl) { 57 if (is_note($link['url']) && $prependNoteUrl) {
51 $link['url'] = $indexUrl . $link['url']; 58 $link['url'] = $indexUrl . $link['url'];
52 } 59 }
53 60
@@ -84,7 +91,7 @@ class NetscapeBookmarkUtils
84 $status .= vsprintf( 91 $status .= vsprintf(
85 t( 92 t(
86 'was successfully processed in %d seconds: ' 93 'was successfully processed in %d seconds: '
87 .'%d links imported, %d links overwritten, %d links skipped.' 94 . '%d links imported, %d links overwritten, %d links skipped.'
88 ), 95 ),
89 [$duration, $importCount, $overwriteCount, $skipCount] 96 [$duration, $importCount, $overwriteCount, $skipCount]
90 ); 97 );
@@ -95,11 +102,11 @@ class NetscapeBookmarkUtils
95 /** 102 /**
96 * Imports Web bookmarks from an uploaded Netscape bookmark dump 103 * Imports Web bookmarks from an uploaded Netscape bookmark dump
97 * 104 *
98 * @param array $post Server $_POST parameters 105 * @param array $post Server $_POST parameters
99 * @param array $files Server $_FILES parameters 106 * @param array $files Server $_FILES parameters
100 * @param LinkDB $linkDb Loaded LinkDB instance 107 * @param LinkDB $linkDb Loaded LinkDB instance
101 * @param ConfigManager $conf instance 108 * @param ConfigManager $conf instance
102 * @param History $history History instance 109 * @param History $history History instance
103 * 110 *
104 * @return string Summary of the bookmark import status 111 * @return string Summary of the bookmark import status
105 */ 112 */
@@ -115,7 +122,7 @@ class NetscapeBookmarkUtils
115 } 122 }
116 123
117 // Overwrite existing links? 124 // Overwrite existing links?
118 $overwrite = ! empty($post['overwrite']); 125 $overwrite = !empty($post['overwrite']);
119 126
120 // Add tags to all imported links? 127 // Add tags to all imported links?
121 if (empty($post['default_tags'])) { 128 if (empty($post['default_tags'])) {
@@ -138,7 +145,7 @@ class NetscapeBookmarkUtils
138 ); 145 );
139 $logger = new Logger( 146 $logger = new Logger(
140 $conf->get('resource.data_dir'), 147 $conf->get('resource.data_dir'),
141 ! $conf->get('dev.debug') ? LogLevel::INFO : LogLevel::DEBUG, 148 !$conf->get('dev.debug') ? LogLevel::INFO : LogLevel::DEBUG,
142 [ 149 [
143 'prefix' => 'import.', 150 'prefix' => 'import.',
144 'extension' => 'log', 151 'extension' => 'log',
@@ -193,7 +200,7 @@ class NetscapeBookmarkUtils
193 } 200 }
194 201
195 // Add a new link - @ used for UNIX timestamps 202 // Add a new link - @ used for UNIX timestamps
196 $newLinkDate = new DateTime('@'.strval($bkm['time'])); 203 $newLinkDate = new DateTime('@' . strval($bkm['time']));
197 $newLinkDate->setTimezone(new DateTimeZone(date_default_timezone_get())); 204 $newLinkDate->setTimezone(new DateTimeZone(date_default_timezone_get()));
198 $newLink['created'] = $newLinkDate; 205 $newLink['created'] = $newLinkDate;
199 $newLink['id'] = $linkDb->getNextId(); 206 $newLink['id'] = $linkDb->getNextId();
diff --git a/application/PluginManager.php b/application/plugin/PluginManager.php
index 1ed4db4b..f7b24a8e 100644
--- a/application/PluginManager.php
+++ b/application/plugin/PluginManager.php
@@ -1,4 +1,8 @@
1<?php 1<?php
2namespace Shaarli\Plugin;
3
4use Shaarli\Config\ConfigManager;
5use Shaarli\Plugin\Exception\PluginFileNotFoundException;
2 6
3/** 7/**
4 * Class PluginManager 8 * Class PluginManager
@@ -9,12 +13,14 @@ class PluginManager
9{ 13{
10 /** 14 /**
11 * List of authorized plugins from configuration file. 15 * List of authorized plugins from configuration file.
16 *
12 * @var array $authorizedPlugins 17 * @var array $authorizedPlugins
13 */ 18 */
14 private $authorizedPlugins; 19 private $authorizedPlugins;
15 20
16 /** 21 /**
17 * List of loaded plugins. 22 * List of loaded plugins.
23 *
18 * @var array $loadedPlugins 24 * @var array $loadedPlugins
19 */ 25 */
20 private $loadedPlugins = array(); 26 private $loadedPlugins = array();
@@ -31,12 +37,14 @@ class PluginManager
31 37
32 /** 38 /**
33 * Plugins subdirectory. 39 * Plugins subdirectory.
40 *
34 * @var string $PLUGINS_PATH 41 * @var string $PLUGINS_PATH
35 */ 42 */
36 public static $PLUGINS_PATH = 'plugins'; 43 public static $PLUGINS_PATH = 'plugins';
37 44
38 /** 45 /**
39 * Plugins meta files extension. 46 * Plugins meta files extension.
47 *
40 * @var string $META_EXT 48 * @var string $META_EXT
41 */ 49 */
42 public static $META_EXT = 'meta'; 50 public static $META_EXT = 'meta';
@@ -84,9 +92,9 @@ class PluginManager
84 /** 92 /**
85 * Execute all plugins registered hook. 93 * Execute all plugins registered hook.
86 * 94 *
87 * @param string $hook name of the hook to trigger. 95 * @param string $hook name of the hook to trigger.
88 * @param array $data list of data to manipulate passed by reference. 96 * @param array $data list of data to manipulate passed by reference.
89 * @param array $params additional parameters such as page target. 97 * @param array $params additional parameters such as page target.
90 * 98 *
91 * @return void 99 * @return void
92 */ 100 */
@@ -118,7 +126,7 @@ class PluginManager
118 * @param string $pluginName plugin's name. 126 * @param string $pluginName plugin's name.
119 * 127 *
120 * @return void 128 * @return void
121 * @throws PluginFileNotFoundException - plugin files not found. 129 * @throws \Shaarli\Plugin\Exception\PluginFileNotFoundException - plugin files not found.
122 */ 130 */
123 private function loadPlugin($dir, $pluginName) 131 private function loadPlugin($dir, $pluginName)
124 { 132 {
@@ -204,8 +212,8 @@ class PluginManager
204 212
205 $metaData[$plugin]['parameters'][$param]['value'] = ''; 213 $metaData[$plugin]['parameters'][$param]['value'] = '';
206 // Optional parameter description in parameter.PARAM_NAME= 214 // Optional parameter description in parameter.PARAM_NAME=
207 if (isset($metaData[$plugin]['parameter.'. $param])) { 215 if (isset($metaData[$plugin]['parameter.' . $param])) {
208 $metaData[$plugin]['parameters'][$param]['desc'] = t($metaData[$plugin]['parameter.'. $param]); 216 $metaData[$plugin]['parameters'][$param]['desc'] = t($metaData[$plugin]['parameter.' . $param]);
209 } 217 }
210 } 218 }
211 } 219 }
@@ -223,22 +231,3 @@ class PluginManager
223 return $this->errors; 231 return $this->errors;
224 } 232 }
225} 233}
226
227/**
228 * Class PluginFileNotFoundException
229 *
230 * Raise when plugin files can't be found.
231 */
232class PluginFileNotFoundException extends Exception
233{
234 /**
235 * Construct exception with plugin name.
236 * Generate message.
237 *
238 * @param string $pluginName name of the plugin not found
239 */
240 public function __construct($pluginName)
241 {
242 $this->message = sprintf(t('Plugin "%s" files not found.'), $pluginName);
243 }
244}
diff --git a/application/plugin/exception/PluginFileNotFoundException.php b/application/plugin/exception/PluginFileNotFoundException.php
new file mode 100644
index 00000000..e5386f02
--- /dev/null
+++ b/application/plugin/exception/PluginFileNotFoundException.php
@@ -0,0 +1,23 @@
1<?php
2namespace Shaarli\Plugin\Exception;
3
4use Exception;
5
6/**
7 * Class PluginFileNotFoundException
8 *
9 * Raise when plugin files can't be found.
10 */
11class PluginFileNotFoundException extends Exception
12{
13 /**
14 * Construct exception with plugin name.
15 * Generate message.
16 *
17 * @param string $pluginName name of the plugin not found
18 */
19 public function __construct($pluginName)
20 {
21 $this->message = sprintf(t('Plugin "%s" files not found.'), $pluginName);
22 }
23}
diff --git a/application/PageBuilder.php b/application/render/PageBuilder.php
index 2ca95832..3f86fc26 100644
--- a/application/PageBuilder.php
+++ b/application/render/PageBuilder.php
@@ -1,5 +1,11 @@
1<?php 1<?php
2 2
3namespace Shaarli\Render;
4
5use Exception;
6use RainTPL;
7use Shaarli\ApplicationUtils;
8use Shaarli\Bookmark\LinkDB;
3use Shaarli\Config\ConfigManager; 9use Shaarli\Config\ConfigManager;
4use Shaarli\Thumbnailer; 10use Shaarli\Thumbnailer;
5 11
@@ -37,7 +43,9 @@ class PageBuilder
37 */ 43 */
38 protected $token; 44 protected $token;
39 45
40 /** @var bool $isLoggedIn Whether the user is logged in **/ 46 /**
47 * @var bool $isLoggedIn Whether the user is logged in
48 */
41 protected $isLoggedIn = false; 49 protected $isLoggedIn = false;
42 50
43 /** 51 /**
@@ -101,7 +109,7 @@ class PageBuilder
101 ApplicationUtils::getVersionHash(SHAARLI_VERSION, $this->conf->get('credentials.salt')) 109 ApplicationUtils::getVersionHash(SHAARLI_VERSION, $this->conf->get('credentials.salt'))
102 ); 110 );
103 $this->tpl->assign('index_url', index_url($_SERVER)); 111 $this->tpl->assign('index_url', index_url($_SERVER));
104 $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : ''; 112 $visibility = !empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
105 $this->tpl->assign('visibility', $visibility); 113 $this->tpl->assign('visibility', $visibility);
106 $this->tpl->assign('untaggedonly', !empty($_SESSION['untaggedonly'])); 114 $this->tpl->assign('untaggedonly', !empty($_SESSION['untaggedonly']));
107 $this->tpl->assign('pagetitle', $this->conf->get('general.title', 'Shaarli')); 115 $this->tpl->assign('pagetitle', $this->conf->get('general.title', 'Shaarli'));
@@ -115,6 +123,8 @@ class PageBuilder
115 $this->tpl->assign('hide_timestamps', $this->conf->get('privacy.hide_timestamps', false)); 123 $this->tpl->assign('hide_timestamps', $this->conf->get('privacy.hide_timestamps', false));
116 $this->tpl->assign('token', $this->token); 124 $this->tpl->assign('token', $this->token);
117 125
126 $this->tpl->assign('language', $this->conf->get('translation.language'));
127
118 if ($this->linkDB !== null) { 128 if ($this->linkDB !== null) {
119 $this->tpl->assign('tags', $this->linkDB->linksCountPerTag()); 129 $this->tpl->assign('tags', $this->linkDB->linksCountPerTag());
120 } 130 }
@@ -126,7 +136,7 @@ class PageBuilder
126 $this->tpl->assign('thumbnails_width', $this->conf->get('thumbnails.width')); 136 $this->tpl->assign('thumbnails_width', $this->conf->get('thumbnails.width'));
127 $this->tpl->assign('thumbnails_height', $this->conf->get('thumbnails.height')); 137 $this->tpl->assign('thumbnails_height', $this->conf->get('thumbnails.height'));
128 138
129 if (! empty($_SESSION['warnings'])) { 139 if (!empty($_SESSION['warnings'])) {
130 $this->tpl->assign('global_warnings', $_SESSION['warnings']); 140 $this->tpl->assign('global_warnings', $_SESSION['warnings']);
131 unset($_SESSION['warnings']); 141 unset($_SESSION['warnings']);
132 } 142 }
@@ -189,16 +199,16 @@ class PageBuilder
189 199
190 /** 200 /**
191 * Render a 404 page (uses the template : tpl/404.tpl) 201 * Render a 404 page (uses the template : tpl/404.tpl)
192 * usage : $PAGE->render404('The link was deleted') 202 * usage: $PAGE->render404('The link was deleted')
193 * 203 *
194 * @param string $message A messate to display what is not found 204 * @param string $message A message to display what is not found
195 */ 205 */
196 public function render404($message = '') 206 public function render404($message = '')
197 { 207 {
198 if (empty($message)) { 208 if (empty($message)) {
199 $message = t('The page you are trying to reach does not exist or has been deleted.'); 209 $message = t('The page you are trying to reach does not exist or has been deleted.');
200 } 210 }
201 header($_SERVER['SERVER_PROTOCOL'] .' '. t('404 Not Found')); 211 header($_SERVER['SERVER_PROTOCOL'] . ' ' . t('404 Not Found'));
202 $this->tpl->assign('error_message', $message); 212 $this->tpl->assign('error_message', $message);
203 $this->renderPage('404'); 213 $this->renderPage('404');
204 } 214 }
diff --git a/application/ThemeUtils.php b/application/render/ThemeUtils.php
index 16f2f6a2..86096c64 100644
--- a/application/ThemeUtils.php
+++ b/application/render/ThemeUtils.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace Shaarli; 3namespace Shaarli\Render;
4 4
5/** 5/**
6 * Class ThemeUtils 6 * Class ThemeUtils
diff --git a/application/security/BanManager.php b/application/security/BanManager.php
new file mode 100644
index 00000000..68190c54
--- /dev/null
+++ b/application/security/BanManager.php
@@ -0,0 +1,213 @@
1<?php
2
3
4namespace Shaarli\Security;
5
6use Shaarli\FileUtils;
7
8/**
9 * Class BanManager
10 *
11 * Failed login attempts will store the associated IP address.
12 * After N failed attempts, the IP will be prevented from log in for duration D.
13 * Both N and D can be set in the configuration file.
14 *
15 * @package Shaarli\Security
16 */
17class BanManager
18{
19 /** @var array List of allowed proxies IP */
20 protected $trustedProxies;
21
22 /** @var int Number of allowed failed attempt before the ban */
23 protected $nbAttempts;
24
25 /** @var int Ban duration in seconds */
26 protected $banDuration;
27
28 /** @var string Path to the file containing IP bans and failures */
29 protected $banFile;
30
31 /** @var string Path to the log file, used to log bans */
32 protected $logFile;
33
34 /** @var array List of IP with their associated number of failed attempts */
35 protected $failures = [];
36
37 /** @var array List of banned IP with their associated unban timestamp */
38 protected $bans = [];
39
40 /**
41 * BanManager constructor.
42 *
43 * @param array $trustedProxies List of allowed proxies IP
44 * @param int $nbAttempts Number of allowed failed attempt before the ban
45 * @param int $banDuration Ban duration in seconds
46 * @param string $banFile Path to the file containing IP bans and failures
47 * @param string $logFile Path to the log file, used to log bans
48 */
49 public function __construct($trustedProxies, $nbAttempts, $banDuration, $banFile, $logFile) {
50 $this->trustedProxies = $trustedProxies;
51 $this->nbAttempts = $nbAttempts;
52 $this->banDuration = $banDuration;
53 $this->banFile = $banFile;
54 $this->logFile = $logFile;
55 $this->readBanFile();
56 }
57
58 /**
59 * Handle a failed login and ban the IP after too many failed attempts
60 *
61 * @param array $server The $_SERVER array
62 */
63 public function handleFailedAttempt($server)
64 {
65 $ip = $this->getIp($server);
66 // the IP is behind a trusted forward proxy, but is not forwarded
67 // in the HTTP headers, so we do nothing
68 if (empty($ip)) {
69 return;
70 }
71
72 // increment the fail count for this IP
73 if (isset($this->failures[$ip])) {
74 $this->failures[$ip]++;
75 } else {
76 $this->failures[$ip] = 1;
77 }
78
79 if ($this->failures[$ip] >= $this->nbAttempts) {
80 $this->bans[$ip] = time() + $this->banDuration;
81 logm(
82 $this->logFile,
83 $server['REMOTE_ADDR'],
84 'IP address banned from login: '. $ip
85 );
86 }
87 $this->writeBanFile();
88 }
89
90 /**
91 * Remove failed attempts for the provided client.
92 *
93 * @param array $server $_SERVER
94 */
95 public function clearFailures($server)
96 {
97 $ip = $this->getIp($server);
98 // the IP is behind a trusted forward proxy, but is not forwarded
99 // in the HTTP headers, so we do nothing
100 if (empty($ip)) {
101 return;
102 }
103
104 if (isset($this->failures[$ip])) {
105 unset($this->failures[$ip]);
106 }
107 $this->writeBanFile();
108 }
109
110 /**
111 * Check whether the client IP is banned or not.
112 *
113 * @param array $server $_SERVER
114 *
115 * @return bool True if the IP is banned, false otherwise
116 */
117 public function isBanned($server)
118 {
119 $ip = $this->getIp($server);
120 // the IP is behind a trusted forward proxy, but is not forwarded
121 // in the HTTP headers, so we allow the authentication attempt.
122 if (empty($ip)) {
123 return false;
124 }
125
126 // the user is not banned
127 if (! isset($this->bans[$ip])) {
128 return false;
129 }
130
131 // the user is still banned
132 if ($this->bans[$ip] > time()) {
133 return true;
134 }
135
136 // the ban has expired, the user can attempt to log in again
137 if (isset($this->failures[$ip])) {
138 unset($this->failures[$ip]);
139 }
140 unset($this->bans[$ip]);
141 logm($this->logFile, $server['REMOTE_ADDR'], 'Ban lifted for: '. $ip);
142
143 $this->writeBanFile();
144 return false;
145 }
146
147 /**
148 * Retrieve the IP from $_SERVER.
149 * If the actual IP is behind an allowed reverse proxy,
150 * we try to extract the forwarded IP from HTTP headers.
151 *
152 * @param array $server $_SERVER
153 *
154 * @return string|bool The IP or false if none could be extracted
155 */
156 protected function getIp($server)
157 {
158 $ip = $server['REMOTE_ADDR'];
159 if (! in_array($ip, $this->trustedProxies)) {
160 return $ip;
161 }
162 return getIpAddressFromProxy($server, $this->trustedProxies);
163 }
164
165 /**
166 * Read a file containing banned IPs
167 */
168 protected function readBanFile()
169 {
170 $data = FileUtils::readFlatDB($this->banFile);
171 if (isset($data['failures']) && is_array($data['failures'])) {
172 $this->failures = $data['failures'];
173 }
174
175 if (isset($data['bans']) && is_array($data['bans'])) {
176 $this->bans = $data['bans'];
177 }
178 }
179
180 /**
181 * Write the banned IPs to a file
182 */
183 protected function writeBanFile()
184 {
185 return FileUtils::writeFlatDB(
186 $this->banFile,
187 [
188 'failures' => $this->failures,
189 'bans' => $this->bans,
190 ]
191 );
192 }
193
194 /**
195 * Get the Failures (for UT purpose).
196 *
197 * @return array
198 */
199 public function getFailures()
200 {
201 return $this->failures;
202 }
203
204 /**
205 * Get the Bans (for UT purpose).
206 *
207 * @return array
208 */
209 public function getBans()
210 {
211 return $this->bans;
212 }
213}
diff --git a/application/security/LoginManager.php b/application/security/LoginManager.php
index 0f315483..0b0ce0b1 100644
--- a/application/security/LoginManager.php
+++ b/application/security/LoginManager.php
@@ -20,8 +20,8 @@ class LoginManager
20 /** @var SessionManager Session Manager instance **/ 20 /** @var SessionManager Session Manager instance **/
21 protected $sessionManager = null; 21 protected $sessionManager = null;
22 22
23 /** @var string Path to the file containing IP bans */ 23 /** @var BanManager Ban Manager instance **/
24 protected $banFile = ''; 24 protected $banManager;
25 25
26 /** @var bool Whether the user is logged in **/ 26 /** @var bool Whether the user is logged in **/
27 protected $isLoggedIn = false; 27 protected $isLoggedIn = false;
@@ -35,17 +35,21 @@ class LoginManager
35 /** 35 /**
36 * Constructor 36 * Constructor
37 * 37 *
38 * @param array $globals The $GLOBALS array (reference)
39 * @param ConfigManager $configManager Configuration Manager instance 38 * @param ConfigManager $configManager Configuration Manager instance
40 * @param SessionManager $sessionManager SessionManager instance 39 * @param SessionManager $sessionManager SessionManager instance
41 */ 40 */
42 public function __construct(& $globals, $configManager, $sessionManager) 41 public function __construct($configManager, $sessionManager)
43 { 42 {
44 $this->globals = &$globals;
45 $this->configManager = $configManager; 43 $this->configManager = $configManager;
46 $this->sessionManager = $sessionManager; 44 $this->sessionManager = $sessionManager;
47 $this->banFile = $this->configManager->get('resource.ban_file', 'data/ipbans.php'); 45 $this->banManager = new BanManager(
48 $this->readBanFile(); 46 $this->configManager->get('security.trusted_proxies', []),
47 $this->configManager->get('security.ban_after'),
48 $this->configManager->get('security.ban_duration'),
49 $this->configManager->get('resource.ban_file', 'data/ipbans.php'),
50 $this->configManager->get('resource.log')
51 );
52
49 if ($this->configManager->get('security.open_shaarli') === true) { 53 if ($this->configManager->get('security.open_shaarli') === true) {
50 $this->openShaarli = true; 54 $this->openShaarli = true;
51 } 55 }
@@ -58,6 +62,9 @@ class LoginManager
58 */ 62 */
59 public function generateStaySignedInToken($clientIpAddress) 63 public function generateStaySignedInToken($clientIpAddress)
60 { 64 {
65 if ($this->configManager->get('security.session_protection_disabled') === true) {
66 $clientIpAddress = '';
67 }
61 $this->staySignedInToken = sha1( 68 $this->staySignedInToken = sha1(
62 $this->configManager->get('credentials.hash') 69 $this->configManager->get('credentials.hash')
63 . $clientIpAddress 70 . $clientIpAddress
@@ -155,65 +162,13 @@ class LoginManager
155 } 162 }
156 163
157 /** 164 /**
158 * Read a file containing banned IPs
159 */
160 protected function readBanFile()
161 {
162 if (! file_exists($this->banFile)) {
163 return;
164 }
165 include $this->banFile;
166 }
167
168 /**
169 * Write the banned IPs to a file
170 */
171 protected function writeBanFile()
172 {
173 if (! array_key_exists('IPBANS', $this->globals)) {
174 return;
175 }
176 file_put_contents(
177 $this->banFile,
178 "<?php\n\$GLOBALS['IPBANS']=" . var_export($this->globals['IPBANS'], true) . ";\n?>"
179 );
180 }
181
182 /**
183 * Handle a failed login and ban the IP after too many failed attempts 165 * Handle a failed login and ban the IP after too many failed attempts
184 * 166 *
185 * @param array $server The $_SERVER array 167 * @param array $server The $_SERVER array
186 */ 168 */
187 public function handleFailedLogin($server) 169 public function handleFailedLogin($server)
188 { 170 {
189 $ip = $server['REMOTE_ADDR']; 171 $this->banManager->handleFailedAttempt($server);
190 $trusted = $this->configManager->get('security.trusted_proxies', []);
191
192 if (in_array($ip, $trusted)) {
193 $ip = getIpAddressFromProxy($server, $trusted);
194 if (! $ip) {
195 // the IP is behind a trusted forward proxy, but is not forwarded
196 // in the HTTP headers, so we do nothing
197 return;
198 }
199 }
200
201 // increment the fail count for this IP
202 if (isset($this->globals['IPBANS']['FAILURES'][$ip])) {
203 $this->globals['IPBANS']['FAILURES'][$ip]++;
204 } else {
205 $this->globals['IPBANS']['FAILURES'][$ip] = 1;
206 }
207
208 if ($this->globals['IPBANS']['FAILURES'][$ip] >= $this->configManager->get('security.ban_after')) {
209 $this->globals['IPBANS']['BANS'][$ip] = time() + $this->configManager->get('security.ban_duration', 1800);
210 logm(
211 $this->configManager->get('resource.log'),
212 $server['REMOTE_ADDR'],
213 'IP address banned from login'
214 );
215 }
216 $this->writeBanFile();
217 } 172 }
218 173
219 /** 174 /**
@@ -223,13 +178,7 @@ class LoginManager
223 */ 178 */
224 public function handleSuccessfulLogin($server) 179 public function handleSuccessfulLogin($server)
225 { 180 {
226 $ip = $server['REMOTE_ADDR']; 181 $this->banManager->clearFailures($server);
227 // FIXME unban when behind a trusted proxy?
228
229 unset($this->globals['IPBANS']['FAILURES'][$ip]);
230 unset($this->globals['IPBANS']['BANS'][$ip]);
231
232 $this->writeBanFile();
233 } 182 }
234 183
235 /** 184 /**
@@ -241,24 +190,6 @@ class LoginManager
241 */ 190 */
242 public function canLogin($server) 191 public function canLogin($server)
243 { 192 {
244 $ip = $server['REMOTE_ADDR']; 193 return ! $this->banManager->isBanned($server);
245
246 if (! isset($this->globals['IPBANS']['BANS'][$ip])) {
247 // the user is not banned
248 return true;
249 }
250
251 if ($this->globals['IPBANS']['BANS'][$ip] > time()) {
252 // the user is still banned
253 return false;
254 }
255
256 // the ban has expired, the user can attempt to log in again
257 logm($this->configManager->get('resource.log'), $server['REMOTE_ADDR'], 'Ban lifted.');
258 unset($this->globals['IPBANS']['FAILURES'][$ip]);
259 unset($this->globals['IPBANS']['BANS'][$ip]);
260
261 $this->writeBanFile();
262 return true;
263 } 194 }
264} 195}
diff --git a/application/Updater.php b/application/updater/Updater.php
index 6b94c5e3..beb9ea9b 100644
--- a/application/Updater.php
+++ b/application/updater/Updater.php
@@ -1,11 +1,24 @@
1<?php 1<?php
2
3namespace Shaarli\Updater;
4
5use Exception;
6use RainTPL;
7use ReflectionClass;
8use ReflectionException;
9use ReflectionMethod;
10use Shaarli\ApplicationUtils;
11use Shaarli\Bookmark\LinkDB;
12use Shaarli\Bookmark\LinkFilter;
2use Shaarli\Config\ConfigJson; 13use Shaarli\Config\ConfigJson;
3use Shaarli\Config\ConfigPhp;
4use Shaarli\Config\ConfigManager; 14use Shaarli\Config\ConfigManager;
15use Shaarli\Config\ConfigPhp;
16use Shaarli\Exceptions\IOException;
5use Shaarli\Thumbnailer; 17use Shaarli\Thumbnailer;
18use Shaarli\Updater\Exception\UpdaterException;
6 19
7/** 20/**
8 * Class Updater. 21 * Class updater.
9 * Used to update stuff when a new Shaarli's version is reached. 22 * Used to update stuff when a new Shaarli's version is reached.
10 * Update methods are ran only once, and the stored in a JSON file. 23 * Update methods are ran only once, and the stored in a JSON file.
11 */ 24 */
@@ -83,12 +96,12 @@ class Updater
83 } 96 }
84 97
85 if ($this->methods === null) { 98 if ($this->methods === null) {
86 throw new UpdaterException(t('Couldn\'t retrieve Updater class methods.')); 99 throw new UpdaterException(t('Couldn\'t retrieve updater class methods.'));
87 } 100 }
88 101
89 foreach ($this->methods as $method) { 102 foreach ($this->methods as $method) {
90 // Not an update method or already done, pass. 103 // Not an update method or already done, pass.
91 if (! startsWith($method->getName(), 'updateMethod') 104 if (!startsWith($method->getName(), 'updateMethod')
92 || in_array($method->getName(), $this->doneUpdates) 105 || in_array($method->getName(), $this->doneUpdates)
93 ) { 106 ) {
94 continue; 107 continue;
@@ -139,7 +152,7 @@ class Updater
139 } 152 }
140 } 153 }
141 $this->conf->write($this->isLoggedIn); 154 $this->conf->write($this->isLoggedIn);
142 unlink($this->conf->get('resource.data_dir').'/options.php'); 155 unlink($this->conf->get('resource.data_dir') . '/options.php');
143 } 156 }
144 157
145 return true; 158 return true;
@@ -174,10 +187,10 @@ class Updater
174 $subConfig = array('config', 'plugins'); 187 $subConfig = array('config', 'plugins');
175 foreach ($subConfig as $sub) { 188 foreach ($subConfig as $sub) {
176 foreach ($oldConfig[$sub] as $key => $value) { 189 foreach ($oldConfig[$sub] as $key => $value) {
177 if (isset($legacyMap[$sub .'.'. $key])) { 190 if (isset($legacyMap[$sub . '.' . $key])) {
178 $configKey = $legacyMap[$sub .'.'. $key]; 191 $configKey = $legacyMap[$sub . '.' . $key];
179 } else { 192 } else {
180 $configKey = $sub .'.'. $key; 193 $configKey = $sub . '.' . $key;
181 } 194 }
182 $this->conf->set($configKey, $value); 195 $this->conf->set($configKey, $value);
183 } 196 }
@@ -205,7 +218,6 @@ class Updater
205 try { 218 try {
206 $this->conf->set('general.title', escape($this->conf->get('general.title'))); 219 $this->conf->set('general.title', escape($this->conf->get('general.title')));
207 $this->conf->set('general.header_link', escape($this->conf->get('general.header_link'))); 220 $this->conf->set('general.header_link', escape($this->conf->get('general.header_link')));
208 $this->conf->set('redirector.url', escape($this->conf->get('redirector.url')));
209 $this->conf->write($this->isLoggedIn); 221 $this->conf->write($this->isLoggedIn);
210 } catch (Exception $e) { 222 } catch (Exception $e) {
211 error_log($e->getMessage()); 223 error_log($e->getMessage());
@@ -233,7 +245,7 @@ class Updater
233 return true; 245 return true;
234 } 246 }
235 247
236 $save = $this->conf->get('resource.data_dir') .'/datastore.'. date('YmdHis') .'.php'; 248 $save = $this->conf->get('resource.data_dir') . '/datastore.' . date('YmdHis') . '.php';
237 copy($this->conf->get('resource.datastore'), $save); 249 copy($this->conf->get('resource.datastore'), $save);
238 250
239 $links = array(); 251 $links = array();
@@ -307,7 +319,7 @@ class Updater
307 // We run the update only if this folder still contains the template files. 319 // We run the update only if this folder still contains the template files.
308 $tplDir = $this->conf->get('resource.raintpl_tpl'); 320 $tplDir = $this->conf->get('resource.raintpl_tpl');
309 $tplFile = $tplDir . '/linklist.html'; 321 $tplFile = $tplDir . '/linklist.html';
310 if (! file_exists($tplFile)) { 322 if (!file_exists($tplFile)) {
311 return true; 323 return true;
312 } 324 }
313 325
@@ -331,7 +343,7 @@ class Updater
331 */ 343 */
332 public function updateMethodMoveUserCss() 344 public function updateMethodMoveUserCss()
333 { 345 {
334 if (! is_file('inc/user.css')) { 346 if (!is_file('inc/user.css')) {
335 return true; 347 return true;
336 } 348 }
337 349
@@ -367,11 +379,11 @@ class Updater
367 */ 379 */
368 public function updateMethodPiwikUrl() 380 public function updateMethodPiwikUrl()
369 { 381 {
370 if (! $this->conf->exists('plugins.PIWIK_URL') || startsWith($this->conf->get('plugins.PIWIK_URL'), 'http')) { 382 if (!$this->conf->exists('plugins.PIWIK_URL') || startsWith($this->conf->get('plugins.PIWIK_URL'), 'http')) {
371 return true; 383 return true;
372 } 384 }
373 385
374 $this->conf->set('plugins.PIWIK_URL', 'http://'. $this->conf->get('plugins.PIWIK_URL')); 386 $this->conf->set('plugins.PIWIK_URL', 'http://' . $this->conf->get('plugins.PIWIK_URL'));
375 $this->conf->write($this->isLoggedIn); 387 $this->conf->write($this->isLoggedIn);
376 388
377 return true; 389 return true;
@@ -481,11 +493,11 @@ class Updater
481 return true; 493 return true;
482 } 494 }
483 495
484 if (! $this->conf->exists('general.download_max_size')) { 496 if (!$this->conf->exists('general.download_max_size')) {
485 $this->conf->set('general.download_max_size', 1024*1024*4); 497 $this->conf->set('general.download_max_size', 1024 * 1024 * 4);
486 } 498 }
487 499
488 if (! $this->conf->exists('general.download_timeout')) { 500 if (!$this->conf->exists('general.download_timeout')) {
489 $this->conf->set('general.download_timeout', 30); 501 $this->conf->set('general.download_timeout', 30);
490 } 502 }
491 503
@@ -537,97 +549,14 @@ class Updater
537 549
538 return true; 550 return true;
539 } 551 }
540}
541
542/**
543 * Class UpdaterException.
544 */
545class UpdaterException extends Exception
546{
547 /**
548 * @var string Method where the error occurred.
549 */
550 protected $method;
551 552
552 /** 553 /**
553 * @var Exception The parent exception. 554 * Remove redirector settings.
554 */ 555 */
555 protected $previous; 556 public function updateMethodRemoveRedirector()
556
557 /**
558 * Constructor.
559 *
560 * @param string $message Force the error message if set.
561 * @param string $method Method where the error occurred.
562 * @param Exception|bool $previous Parent exception.
563 */
564 public function __construct($message = '', $method = '', $previous = false)
565 { 557 {
566 $this->method = $method; 558 $this->conf->remove('redirector');
567 $this->previous = $previous; 559 $this->conf->write(true);
568 $this->message = $this->buildMessage($message); 560 return true;
569 }
570
571 /**
572 * Build the exception error message.
573 *
574 * @param string $message Optional given error message.
575 *
576 * @return string The built error message.
577 */
578 private function buildMessage($message)
579 {
580 $out = '';
581 if (! empty($message)) {
582 $out .= $message . PHP_EOL;
583 }
584
585 if (! empty($this->method)) {
586 $out .= t('An error occurred while running the update ') . $this->method . PHP_EOL;
587 }
588
589 if (! empty($this->previous)) {
590 $out .= ' '. $this->previous->getMessage();
591 }
592
593 return $out;
594 }
595}
596
597/**
598 * Read the updates file, and return already done updates.
599 *
600 * @param string $updatesFilepath Updates file path.
601 *
602 * @return array Already done update methods.
603 */
604function read_updates_file($updatesFilepath)
605{
606 if (! empty($updatesFilepath) && is_file($updatesFilepath)) {
607 $content = file_get_contents($updatesFilepath);
608 if (! empty($content)) {
609 return explode(';', $content);
610 }
611 }
612 return array();
613}
614
615/**
616 * Write updates file.
617 *
618 * @param string $updatesFilepath Updates file path.
619 * @param array $updates Updates array to write.
620 *
621 * @throws Exception Couldn't write version number.
622 */
623function write_updates_file($updatesFilepath, $updates)
624{
625 if (empty($updatesFilepath)) {
626 throw new Exception(t('Updates file path is not set, can\'t write updates.'));
627 }
628
629 $res = file_put_contents($updatesFilepath, implode(';', $updates));
630 if ($res === false) {
631 throw new Exception(t('Unable to write updates in '. $updatesFilepath . '.'));
632 } 561 }
633} 562}
diff --git a/application/updater/UpdaterUtils.php b/application/updater/UpdaterUtils.php
new file mode 100644
index 00000000..34d4f422
--- /dev/null
+++ b/application/updater/UpdaterUtils.php
@@ -0,0 +1,39 @@
1<?php
2
3/**
4 * Read the updates file, and return already done updates.
5 *
6 * @param string $updatesFilepath Updates file path.
7 *
8 * @return array Already done update methods.
9 */
10function read_updates_file($updatesFilepath)
11{
12 if (! empty($updatesFilepath) && is_file($updatesFilepath)) {
13 $content = file_get_contents($updatesFilepath);
14 if (! empty($content)) {
15 return explode(';', $content);
16 }
17 }
18 return array();
19}
20
21/**
22 * Write updates file.
23 *
24 * @param string $updatesFilepath Updates file path.
25 * @param array $updates Updates array to write.
26 *
27 * @throws Exception Couldn't write version number.
28 */
29function write_updates_file($updatesFilepath, $updates)
30{
31 if (empty($updatesFilepath)) {
32 throw new Exception(t('Updates file path is not set, can\'t write updates.'));
33 }
34
35 $res = file_put_contents($updatesFilepath, implode(';', $updates));
36 if ($res === false) {
37 throw new Exception(t('Unable to write updates in '. $updatesFilepath . '.'));
38 }
39}
diff --git a/application/updater/exception/UpdaterException.php b/application/updater/exception/UpdaterException.php
new file mode 100644
index 00000000..20aceccf
--- /dev/null
+++ b/application/updater/exception/UpdaterException.php
@@ -0,0 +1,60 @@
1<?php
2
3namespace Shaarli\Updater\Exception;
4
5use Exception;
6
7/**
8 * Class UpdaterException.
9 */
10class UpdaterException extends Exception
11{
12 /**
13 * @var string Method where the error occurred.
14 */
15 protected $method;
16
17 /**
18 * @var Exception The parent exception.
19 */
20 protected $previous;
21
22 /**
23 * Constructor.
24 *
25 * @param string $message Force the error message if set.
26 * @param string $method Method where the error occurred.
27 * @param Exception|bool $previous Parent exception.
28 */
29 public function __construct($message = '', $method = '', $previous = false)
30 {
31 $this->method = $method;
32 $this->previous = $previous;
33 $this->message = $this->buildMessage($message);
34 }
35
36 /**
37 * Build the exception error message.
38 *
39 * @param string $message Optional given error message.
40 *
41 * @return string The built error message.
42 */
43 private function buildMessage($message)
44 {
45 $out = '';
46 if (!empty($message)) {
47 $out .= $message . PHP_EOL;
48 }
49
50 if (!empty($this->method)) {
51 $out .= t('An error occurred while running the update ') . $this->method . PHP_EOL;
52 }
53
54 if (!empty($this->previous)) {
55 $out .= ' ' . $this->previous->getMessage();
56 }
57
58 return $out;
59 }
60}
diff --git a/assets/default/img/icon.png b/assets/default/img/icon.png
deleted file mode 100644
index 474edec3..00000000
--- a/assets/default/img/icon.png
+++ /dev/null
Binary files differ
diff --git a/assets/default/js/base.js b/assets/default/js/base.js
index 99e03370..d5c29c69 100644
--- a/assets/default/js/base.js
+++ b/assets/default/js/base.js
@@ -466,6 +466,28 @@ function init(description) {
466 }); 466 });
467 } 467 }
468 468
469 const changeVisibilityButtons = document.querySelectorAll('.actions-change-visibility');
470 if (changeVisibilityButtons != null && token != null) {
471 [...changeVisibilityButtons].forEach((button) => {
472 button.addEventListener('click', (event) => {
473 event.preventDefault();
474 const visibility = event.target.getAttribute('data-visibility');
475
476 const links = [];
477 const linkCheckedCheckboxes = document.querySelectorAll('.link-checkbox:checked');
478 [...linkCheckedCheckboxes].forEach((checkbox) => {
479 links.push({
480 id: checkbox.value,
481 title: document.querySelector(`.linklist-item[data-id="${checkbox.value}"] .linklist-link`).innerHTML,
482 });
483 });
484
485 const ids = links.map(item => item.id);
486 window.location = `?change_visibility&token=${token.value}&newVisibility=${visibility}&ids=${ids.join('+')}`;
487 });
488 });
489 }
490
469 /** 491 /**
470 * Select all button 492 * Select all button
471 */ 493 */
diff --git a/assets/default/scss/shaarli.scss b/assets/default/scss/shaarli.scss
index 760d8d6a..61e382b6 100644
--- a/assets/default/scss/shaarli.scss
+++ b/assets/default/scss/shaarli.scss
@@ -1,6 +1,6 @@
1$fa-font-path: '~font-awesome/fonts'; 1$fa-font-path: '~fork-awesome/fonts';
2 2
3@import '~font-awesome/scss/font-awesome'; 3@import '~fork-awesome/scss/fork-awesome';
4@import '~purecss/build/pure.css'; 4@import '~purecss/build/pure.css';
5@import '~purecss/build/grids-responsive.css'; 5@import '~purecss/build/grids-responsive.css';
6@import '~pure-extras/css/pure-extras.css'; 6@import '~pure-extras/css/pure-extras.css';
@@ -13,7 +13,7 @@ $dark-grey: #252525;
13$light-grey: #797979; 13$light-grey: #797979;
14$main-green: #1b926c; 14$main-green: #1b926c;
15$light-green: #b0ddce; 15$light-green: #b0ddce;
16$dark-green: #2a4c41; 16$dark-green: #186446;
17$red: #ac2925; 17$red: #ac2925;
18$orange: #f89406; 18$orange: #f89406;
19$blue: #0b5ea6; 19$blue: #0b5ea6;
@@ -25,9 +25,15 @@ $warning-text: #97600d;
25$form-input-border: #d8d8d8; 25$form-input-border: #d8d8d8;
26$form-input-background: #eee; 26$form-input-background: #eee;
27 27
28:root {
29 --main-color: #{$main-green};
30 --background-color: #{$background-color};
31 --dark-main-color: #{$dark-green};
32}
33
28// General 34// General
29body { 35body {
30 background: $background-color; 36 background: var(--background-color);
31} 37}
32 38
33.strong { 39.strong {
@@ -143,7 +149,7 @@ body,
143} 149}
144 150
145.pure-alert-success { 151.pure-alert-success {
146 background-color: $main-green; 152 background-color: var(--main-color);
147} 153}
148 154
149.pure-alert-warning { 155.pure-alert-warning {
@@ -169,7 +175,7 @@ body,
169 top: 0; 175 top: 0;
170 transition: max-height .5s; 176 transition: max-height .5s;
171 z-index: 999; 177 z-index: 999;
172 background: $main-green; 178 background: var(--main-color);
173 width: 100%; 179 width: 100%;
174 // Hack to transition with auto height: http://stackoverflow.com/a/8331169/1484919 180 // Hack to transition with auto height: http://stackoverflow.com/a/8331169/1484919
175 max-height: 45px; 181 max-height: 45px;
@@ -322,7 +328,7 @@ body,
322 button { 328 button {
323 border: 0; 329 border: 0;
324 border-radius: 2px; 330 border-radius: 2px;
325 background-color: $main-green; 331 background-color: var(--main-color);
326 padding: 4px 8px 6px; 332 padding: 4px 8px 6px;
327 color: $almost-white; 333 color: $almost-white;
328 } 334 }
@@ -358,7 +364,7 @@ body,
358.search-tagcloud { 364.search-tagcloud {
359 button { 365 button {
360 &:hover { 366 &:hover {
361 color: $background-color; 367 color: var(--background-color);
362 } 368 }
363 } 369 }
364} 370}
@@ -389,7 +395,7 @@ body,
389 position: fixed; 395 position: fixed;
390 visibility: hidden; 396 visibility: hidden;
391 z-index: 999; 397 z-index: 999;
392 background: $main-green; 398 background: var(--main-color);
393 padding: 5px 0; 399 padding: 5px 0;
394 width: 100%; 400 width: 100%;
395 height: 30px; 401 height: 30px;
@@ -411,7 +417,7 @@ body,
411 margin: 0 0 5px; 417 margin: 0 0 5px;
412 border: 1px solid $almost-white; 418 border: 1px solid $almost-white;
413 border-radius: 2px; 419 border-radius: 2px;
414 background: $main-green; 420 background: var(--main-color);
415 padding: 4px 0; 421 padding: 4px 0;
416 width: 100px; 422 width: 100px;
417 height: 28px; 423 height: 28px;
@@ -419,7 +425,7 @@ body,
419 425
420 &:hover { 426 &:hover {
421 background: $almost-white; 427 background: $almost-white;
422 color: $main-green; 428 color: var(--main-color);
423 } 429 }
424 } 430 }
425 431
@@ -544,7 +550,10 @@ body,
544 color: $dark-grey; 550 color: $dark-grey;
545 font-size: .9em; 551 font-size: .9em;
546 552
553
547 a { 554 a {
555 display: inline-block;
556 margin: 3px 0;
548 padding: 5px 8px; 557 padding: 5px 8px;
549 text-decoration: none; 558 text-decoration: none;
550 } 559 }
@@ -555,7 +564,7 @@ body,
555 } 564 }
556 565
557 .filter-on { 566 .filter-on {
558 background: $main-green; 567 background: var(--main-color);
559 color: $light-green; 568 color: $light-green;
560 } 569 }
561 570
@@ -694,7 +703,7 @@ body,
694 703
695 &:visited { 704 &:visited {
696 .linklist-link { 705 .linklist-link {
697 color: $dark-green; 706 color: var(--dark-main-color);
698 } 707 }
699 } 708 }
700 709
@@ -705,7 +714,7 @@ body,
705 } 714 }
706 715
707 .linklist-link { 716 .linklist-link {
708 color: $main-green; 717 color: var(--main-color);
709 font-size: 1.1em; 718 font-size: 1.1em;
710 719
711 &:hover { 720 &:hover {
@@ -713,11 +722,19 @@ body,
713 } 722 }
714 } 723 }
715 724
725 .label {
726 font-family: Arial, sans-serif;
727 font-size: .65em;
728 }
729
716 .label-private { 730 .label-private {
717 border: solid 1px $orange; 731 border: solid 1px $orange;
718 color: $orange; 732 color: $orange;
719 font-family: Arial, sans-serif; 733 }
720 font-size: .65em; 734
735 .label-sticky {
736 border: solid 1px $blue;
737 color: $blue;
721 } 738 }
722} 739}
723 740
@@ -772,14 +789,14 @@ body,
772 789
773 a { 790 a {
774 text-decoration: none; 791 text-decoration: none;
775 color: $main-green; 792 color: var(--main-color);
776 793
777 &:hover { 794 &:hover {
778 color: $dark-grey; 795 color: $dark-grey;
779 } 796 }
780 797
781 &:visited { 798 &:visited {
782 color: $dark-green; 799 color: var(--dark-main-color);
783 } 800 }
784 } 801 }
785} 802}
@@ -877,7 +894,7 @@ body,
877 &::before { 894 &::before {
878 display: block; 895 display: block;
879 margin: 10px auto; 896 margin: 10px auto;
880 background: linear-gradient(to right, $background-color, $dark-grey, $background-color); 897 background: linear-gradient(to right, var(--background-color), $dark-grey, var(--background-color));
881 width: 80%; 898 width: 80%;
882 height: 1px; 899 height: 1px;
883 content: ''; 900 content: '';
@@ -906,7 +923,7 @@ body,
906 margin: 15px 5px; 923 margin: 15px 5px;
907 border: 0; 924 border: 0;
908 box-shadow: 1px 1px 1px $form-input-border, -1px -1px 6px $form-input-border, -1px 1px 2px $form-input-border, 1px -1px 2px $form-input-border; 925 box-shadow: 1px 1px 1px $form-input-border, -1px -1px 6px $form-input-border, -1px 1px 2px $form-input-border, 1px -1px 2px $form-input-border;
909 background: $main-green; 926 background: var(--main-color);
910 min-width: 150px; 927 min-width: 150px;
911 height: 35px; 928 height: 35px;
912 vertical-align: center; 929 vertical-align: center;
@@ -930,7 +947,7 @@ body,
930 padding: 10px 0; 947 padding: 10px 0;
931 width: 100%; 948 width: 100%;
932 text-align: center; 949 text-align: center;
933 color: $main-green; 950 color: var(--main-color);
934 } 951 }
935 952
936 .window-subtitle { 953 .window-subtitle {
@@ -939,7 +956,7 @@ body,
939 956
940 a { 957 a {
941 text-decoration: none; 958 text-decoration: none;
942 color: $main-green; 959 color: var(--main-color);
943 font-weight: bold; 960 font-weight: bold;
944 961
945 &.button { 962 &.button {
@@ -1061,7 +1078,6 @@ body,
1061 .page-form { 1078 .page-form {
1062 .submit-buttons { 1079 .submit-buttons {
1063 .button { 1080 .button {
1064 display: block;
1065 margin: auto; 1081 margin: auto;
1066 } 1082 }
1067 } 1083 }
@@ -1267,7 +1283,7 @@ form {
1267 1283
1268 .pure-button { 1284 .pure-button {
1269 &:hover { 1285 &:hover {
1270 background-color: $main-green; 1286 background-color: var(--main-color);
1271 background-image: none; 1287 background-image: none;
1272 color: $almost-white; 1288 color: $almost-white;
1273 } 1289 }
@@ -1351,7 +1367,7 @@ form {
1351 } 1367 }
1352 1368
1353 .validate-rename-tag { 1369 .validate-rename-tag {
1354 color: $main-green; 1370 color: var(--main-color);
1355 } 1371 }
1356} 1372}
1357 1373
@@ -1447,7 +1463,7 @@ form {
1447 &::after { 1463 &::after {
1448 display: block; 1464 display: block;
1449 margin: 10px auto; 1465 margin: 10px auto;
1450 background: linear-gradient(to right, $background-color, $dark-grey, $background-color); 1466 background: linear-gradient(to right, var(--background-color), $dark-grey, var(--background-color));
1451 width: 90%; 1467 width: 90%;
1452 height: 1px; 1468 height: 1px;
1453 content: ''; 1469 content: '';
@@ -1497,14 +1513,14 @@ form {
1497.daily-entry-description { 1513.daily-entry-description {
1498 a { 1514 a {
1499 text-decoration: none; 1515 text-decoration: none;
1500 color: $main-green; 1516 color: var(--main-color);
1501 1517
1502 &:hover { 1518 &:hover {
1503 text-shadow: 1px 1px $background-linklist-info; 1519 text-shadow: 1px 1px $background-linklist-info;
1504 } 1520 }
1505 1521
1506 &:visited { 1522 &:visited {
1507 color: $dark-green; 1523 color: var(--dark-main-color);
1508 } 1524 }
1509 } 1525 }
1510} 1526}
@@ -1561,12 +1577,12 @@ form {
1561} 1577}
1562 1578
1563.pure-button-shaarli { 1579.pure-button-shaarli {
1564 background-color: $main-green; 1580 background-color: var(--main-color);
1565} 1581}
1566 1582
1567.progressbar { 1583.progressbar {
1568 border-radius: 6px; 1584 border-radius: 6px;
1569 background-color: $main-green; 1585 background-color: var(--main-color);
1570 padding: 1px; 1586 padding: 1px;
1571 1587
1572 > div { 1588 > div {
@@ -1575,8 +1591,8 @@ form {
1575 -45deg, 1591 -45deg,
1576 $almost-white, 1592 $almost-white,
1577 $almost-white 6px, 1593 $almost-white 6px,
1578 $background-color 6px, 1594 var(--background-color) 6px,
1579 $background-color 12px 1595 var(--background-color) 12px
1580 ); 1596 );
1581 width: 0%; 1597 width: 0%;
1582 height: 10px; 1598 height: 10px;
@@ -1600,3 +1616,17 @@ form {
1600 white-space: nowrap; 1616 white-space: nowrap;
1601 } 1617 }
1602} 1618}
1619
1620// Print rules
1621@media print {
1622 .shaarli-menu {
1623 position: absolute;
1624 }
1625
1626 .search-linklist,
1627 .link-count-block,
1628 .linklist-item-infos-controls-group,
1629 .mobile-buttons {
1630 display: none;
1631 }
1632}
diff --git a/composer.json b/composer.json
index dccf83b6..c23b8252 100644
--- a/composer.json
+++ b/composer.json
@@ -16,6 +16,8 @@
16 }, 16 },
17 "require": { 17 "require": {
18 "php": ">=5.6", 18 "php": ">=5.6",
19 "ext-json": "*",
20 "ext-zlib": "*",
19 "shaarli/netscape-bookmark-parser": "^2.1", 21 "shaarli/netscape-bookmark-parser": "^2.1",
20 "erusev/parsedown": "^1.6", 22 "erusev/parsedown": "^1.6",
21 "slim/slim": "^3.0", 23 "slim/slim": "^3.0",
@@ -24,19 +26,39 @@
24 "gettext/gettext": "^4.4" 26 "gettext/gettext": "^4.4"
25 }, 27 },
26 "require-dev": { 28 "require-dev": {
29 "roave/security-advisories": "dev-master",
27 "phpunit/phpcov": "*", 30 "phpunit/phpcov": "*",
28 "phpunit/phpunit": "^5.0", 31 "phpunit/phpunit": "^5.0",
29 "squizlabs/php_codesniffer": "2.*" 32 "squizlabs/php_codesniffer": "2.*"
30 }, 33 },
34 "suggest": {
35 "ext-curl": "Allows fetching web pages and thumbnails in a more robust way",
36 "ext-gd": "Required for thumbnail generation",
37 "ext-gettext": "Enables faster translation system in gettext mode",
38 "ext-intl": "Provides localized text sorting",
39 "ext-mbstring": "Provides multibyte (Unicode) string support"
40 },
31 "autoload": { 41 "autoload": {
32 "psr-4": { 42 "psr-4": {
33 "Shaarli\\": "application", 43 "Shaarli\\": "application",
34 "Shaarli\\Api\\": "application/api/", 44 "Shaarli\\Api\\": "application/api/",
35 "Shaarli\\Api\\Controllers\\": "application/api/controllers", 45 "Shaarli\\Api\\Controllers\\": "application/api/controllers",
36 "Shaarli\\Api\\Exceptions\\": "application/api/exceptions", 46 "Shaarli\\Api\\Exceptions\\": "application/api/exceptions",
47 "Shaarli\\Bookmark\\": "application/bookmark",
48 "Shaarli\\Bookmark\\Exception\\": "application/bookmark/exception",
37 "Shaarli\\Config\\": "application/config/", 49 "Shaarli\\Config\\": "application/config/",
38 "Shaarli\\Config\\Exception\\": "application/config/exception", 50 "Shaarli\\Config\\Exception\\": "application/config/exception",
39 "Shaarli\\Security\\": "application/security" 51 "Shaarli\\Exceptions\\": "application/exceptions",
52 "Shaarli\\Feed\\": "application/feed",
53 "Shaarli\\Http\\": "application/http",
54 "Shaarli\\Netscape\\": "application/netscape",
55 "Shaarli\\Plugin\\": "application/plugin",
56 "Shaarli\\Plugin\\Exception\\": "application/plugin/exception",
57 "Shaarli\\Plugin\\Wallabag\\": "plugins/wallabag",
58 "Shaarli\\Render\\": "application/render",
59 "Shaarli\\Security\\": "application/security",
60 "Shaarli\\Updater\\": "application/updater",
61 "Shaarli\\Updater\\Exception\\": "application/updater/exception"
40 } 62 }
41 } 63 }
42} 64}
diff --git a/composer.lock b/composer.lock
index c43dad6f..5cbcbc4a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
7 "content-hash": "3876b34296fedb365517b785af8384de", 7 "content-hash": "432005c9db3e890f42fde27036d2a70f",
8 "packages": [ 8 "packages": [
9 { 9 {
10 "name": "arthurhoaro/web-thumbnailer", 10 "name": "arthurhoaro/web-thumbnailer",
@@ -133,16 +133,16 @@
133 }, 133 },
134 { 134 {
135 "name": "gettext/gettext", 135 "name": "gettext/gettext",
136 "version": "v4.6.1", 136 "version": "v4.6.2",
137 "source": { 137 "source": {
138 "type": "git", 138 "type": "git",
139 "url": "https://github.com/oscarotero/Gettext.git", 139 "url": "https://github.com/oscarotero/Gettext.git",
140 "reference": "854ff5f5aaf92d2af7080ba8fc15718b27b5c89a" 140 "reference": "93176b272d61fb58a9767be71c50d19149cb1e48"
141 }, 141 },
142 "dist": { 142 "dist": {
143 "type": "zip", 143 "type": "zip",
144 "url": "https://api.github.com/repos/oscarotero/Gettext/zipball/854ff5f5aaf92d2af7080ba8fc15718b27b5c89a", 144 "url": "https://api.github.com/repos/oscarotero/Gettext/zipball/93176b272d61fb58a9767be71c50d19149cb1e48",
145 "reference": "854ff5f5aaf92d2af7080ba8fc15718b27b5c89a", 145 "reference": "93176b272d61fb58a9767be71c50d19149cb1e48",
146 "shasum": "" 146 "shasum": ""
147 }, 147 },
148 "require": { 148 "require": {
@@ -191,20 +191,20 @@
191 "po", 191 "po",
192 "translation" 192 "translation"
193 ], 193 ],
194 "time": "2018-08-27T15:40:19+00:00" 194 "time": "2019-01-12T18:40:56+00:00"
195 }, 195 },
196 { 196 {
197 "name": "gettext/languages", 197 "name": "gettext/languages",
198 "version": "2.4.0", 198 "version": "2.5.0",
199 "source": { 199 "source": {
200 "type": "git", 200 "type": "git",
201 "url": "https://github.com/mlocati/cldr-to-gettext-plural-rules.git", 201 "url": "https://github.com/mlocati/cldr-to-gettext-plural-rules.git",
202 "reference": "1b74377bd0c4cd87e8d72b948f5d8867e23505a5" 202 "reference": "78db2d17933f0765a102f368a6663f057162ddbd"
203 }, 203 },
204 "dist": { 204 "dist": {
205 "type": "zip", 205 "type": "zip",
206 "url": "https://api.github.com/repos/mlocati/cldr-to-gettext-plural-rules/zipball/1b74377bd0c4cd87e8d72b948f5d8867e23505a5", 206 "url": "https://api.github.com/repos/mlocati/cldr-to-gettext-plural-rules/zipball/78db2d17933f0765a102f368a6663f057162ddbd",
207 "reference": "1b74377bd0c4cd87e8d72b948f5d8867e23505a5", 207 "reference": "78db2d17933f0765a102f368a6663f057162ddbd",
208 "shasum": "" 208 "shasum": ""
209 }, 209 },
210 "require": { 210 "require": {
@@ -252,7 +252,7 @@
252 "translations", 252 "translations",
253 "unicode" 253 "unicode"
254 ], 254 ],
255 "time": "2018-06-21T15:58:36+00:00" 255 "time": "2018-11-13T22:06:07+00:00"
256 }, 256 },
257 { 257 {
258 "name": "katzgrau/klogger", 258 "name": "katzgrau/klogger",
@@ -542,16 +542,16 @@
542 }, 542 },
543 { 543 {
544 "name": "psr/log", 544 "name": "psr/log",
545 "version": "1.0.2", 545 "version": "1.1.0",
546 "source": { 546 "source": {
547 "type": "git", 547 "type": "git",
548 "url": "https://github.com/php-fig/log.git", 548 "url": "https://github.com/php-fig/log.git",
549 "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 549 "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
550 }, 550 },
551 "dist": { 551 "dist": {
552 "type": "zip", 552 "type": "zip",
553 "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 553 "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
554 "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 554 "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
555 "shasum": "" 555 "shasum": ""
556 }, 556 },
557 "require": { 557 "require": {
@@ -585,7 +585,7 @@
585 "psr", 585 "psr",
586 "psr-3" 586 "psr-3"
587 ], 587 ],
588 "time": "2016-10-10T12:19:37+00:00" 588 "time": "2018-11-20T15:27:04+00:00"
589 }, 589 },
590 { 590 {
591 "name": "pubsubhubbub/publisher", 591 "name": "pubsubhubbub/publisher",
@@ -689,16 +689,16 @@
689 }, 689 },
690 { 690 {
691 "name": "slim/slim", 691 "name": "slim/slim",
692 "version": "3.11.0", 692 "version": "3.12.0",
693 "source": { 693 "source": {
694 "type": "git", 694 "type": "git",
695 "url": "https://github.com/slimphp/Slim.git", 695 "url": "https://github.com/slimphp/Slim.git",
696 "reference": "d378e70431e78ee92ee32ddde61ecc72edf5dc0a" 696 "reference": "f4947cc900b6e51cbfda58b9f1247bca2f76f9f0"
697 }, 697 },
698 "dist": { 698 "dist": {
699 "type": "zip", 699 "type": "zip",
700 "url": "https://api.github.com/repos/slimphp/Slim/zipball/d378e70431e78ee92ee32ddde61ecc72edf5dc0a", 700 "url": "https://api.github.com/repos/slimphp/Slim/zipball/f4947cc900b6e51cbfda58b9f1247bca2f76f9f0",
701 "reference": "d378e70431e78ee92ee32ddde61ecc72edf5dc0a", 701 "reference": "f4947cc900b6e51cbfda58b9f1247bca2f76f9f0",
702 "shasum": "" 702 "shasum": ""
703 }, 703 },
704 "require": { 704 "require": {
@@ -756,7 +756,7 @@
756 "micro", 756 "micro",
757 "router" 757 "router"
758 ], 758 ],
759 "time": "2018-09-16T10:54:21+00:00" 759 "time": "2019-01-15T13:21:25+00:00"
760 } 760 }
761 ], 761 ],
762 "packages-dev": [ 762 "packages-dev": [
@@ -1470,6 +1470,210 @@
1470 "time": "2017-06-30T09:13:00+00:00" 1470 "time": "2017-06-30T09:13:00+00:00"
1471 }, 1471 },
1472 { 1472 {
1473 "name": "roave/security-advisories",
1474 "version": "dev-master",
1475 "source": {
1476 "type": "git",
1477 "url": "https://github.com/Roave/SecurityAdvisories.git",
1478 "reference": "d155baccb43ba2542941fbcba258b85ce7786419"
1479 },
1480 "dist": {
1481 "type": "zip",
1482 "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d155baccb43ba2542941fbcba258b85ce7786419",
1483 "reference": "d155baccb43ba2542941fbcba258b85ce7786419",
1484 "shasum": ""
1485 },
1486 "conflict": {
1487 "3f/pygmentize": "<1.2",
1488 "adodb/adodb-php": "<5.20.12",
1489 "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
1490 "amphp/artax": "<1.0.6|>=2,<2.0.6",
1491 "amphp/http": "<1.0.1",
1492 "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
1493 "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
1494 "aws/aws-sdk-php": ">=3,<3.2.1",
1495 "brightlocal/phpwhois": "<=4.2.5",
1496 "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
1497 "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",
1498 "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
1499 "cartalyst/sentry": "<=2.1.6",
1500 "codeigniter/framework": "<=3.0.6",
1501 "composer/composer": "<=1.0.0-alpha11",
1502 "contao-components/mediaelement": ">=2.14.2,<2.21.1",
1503 "contao/core": ">=2,<3.5.35",
1504 "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8",
1505 "contao/listing-bundle": ">=4,<4.4.8",
1506 "contao/newsletter-bundle": ">=4,<4.1",
1507 "david-garcia/phpwhois": "<=4.3.1",
1508 "doctrine/annotations": ">=1,<1.2.7",
1509 "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
1510 "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
1511 "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
1512 "doctrine/doctrine-bundle": "<1.5.2",
1513 "doctrine/doctrine-module": "<=0.7.1",
1514 "doctrine/mongodb-odm": ">=1,<1.0.2",
1515 "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
1516 "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
1517 "dompdf/dompdf": ">=0.6,<0.6.2",
1518 "drupal/core": ">=7,<7.60|>=8,<8.5.8|>=8.6,<8.6.2",
1519 "drupal/drupal": ">=7,<7.60|>=8,<8.5.8|>=8.6,<8.6.2",
1520 "erusev/parsedown": "<1.7",
1521 "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",
1522 "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",
1523 "ezsystems/repository-forms": ">=2.3,<2.3.2.1",
1524 "ezyang/htmlpurifier": "<4.1.1",
1525 "firebase/php-jwt": "<2",
1526 "fooman/tcpdf": "<6.2.22",
1527 "fossar/tcpdf-parser": "<6.2.22",
1528 "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
1529 "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
1530 "fuel/core": "<1.8.1",
1531 "gree/jose": "<=2.2",
1532 "gregwar/rst": "<1.0.3",
1533 "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1",
1534 "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",
1535 "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",
1536 "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29",
1537 "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",
1538 "ivankristianto/phpwhois": "<=4.3",
1539 "james-heinrich/getid3": "<1.9.9",
1540 "joomla/session": "<1.3.1",
1541 "jsmitty12/phpwhois": "<5.1",
1542 "kazist/phpwhois": "<=4.2.6",
1543 "kreait/firebase-php": ">=3.2,<3.8.1",
1544 "la-haute-societe/tcpdf": "<6.2.22",
1545 "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",
1546 "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
1547 "league/commonmark": ">=0.15.6,<0.18.1",
1548 "magento/magento1ce": "<1.9.4",
1549 "magento/magento1ee": ">=1.9,<1.14.4",
1550 "magento/product-community-edition": ">=2,<2.2.7",
1551 "monolog/monolog": ">=1.8,<1.12",
1552 "namshi/jose": "<2.2",
1553 "onelogin/php-saml": "<2.10.4",
1554 "openid/php-openid": "<2.3",
1555 "oro/crm": ">=1.7,<1.7.4",
1556 "oro/platform": ">=1.7,<1.7.4",
1557 "padraic/humbug_get_contents": "<1.1.2",
1558 "pagarme/pagarme-php": ">=0,<3",
1559 "paragonie/random_compat": "<2",
1560 "paypal/merchant-sdk-php": "<3.12",
1561 "pear/archive_tar": "<1.4.4",
1562 "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6",
1563 "phpoffice/phpexcel": "<=1.8.1",
1564 "phpoffice/phpspreadsheet": "<=1.5",
1565 "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
1566 "phpwhois/phpwhois": "<=4.2.5",
1567 "phpxmlrpc/extras": "<0.6.1",
1568 "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7",
1569 "propel/propel1": ">=1,<=1.7.1",
1570 "pusher/pusher-php-server": "<2.2.1",
1571 "robrichards/xmlseclibs": ">=1,<3.0.2",
1572 "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
1573 "sensiolabs/connect": "<4.2.3",
1574 "serluck/phpwhois": "<=4.2.6",
1575 "shopware/shopware": "<5.3.7",
1576 "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11",
1577 "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
1578 "silverstripe/framework": ">=3,<3.3",
1579 "silverstripe/userforms": "<3",
1580 "simple-updates/phpwhois": "<=1",
1581 "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
1582 "simplesamlphp/simplesamlphp": "<1.16.3",
1583 "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
1584 "slim/slim": "<2.6",
1585 "smarty/smarty": "<3.1.33",
1586 "socalnick/scn-social-auth": "<1.15.2",
1587 "spoonity/tcpdf": "<6.2.22",
1588 "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
1589 "stormpath/sdk": ">=0,<9.9.99",
1590 "swiftmailer/swiftmailer": ">=4,<5.4.5",
1591 "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
1592 "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
1593 "symfony/dependency-injection": ">=2,<2.0.17",
1594 "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",
1595 "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2",
1596 "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",
1597 "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8",
1598 "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
1599 "symfony/polyfill": ">=1,<1.10",
1600 "symfony/polyfill-php55": ">=1,<1.10",
1601 "symfony/routing": ">=2,<2.0.19",
1602 "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",
1603 "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",
1604 "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",
1605 "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",
1606 "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
1607 "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",
1608 "symfony/serializer": ">=2,<2.0.11",
1609 "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",
1610 "symfony/translation": ">=2,<2.0.17",
1611 "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
1612 "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
1613 "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
1614 "tecnickcom/tcpdf": "<6.2.22",
1615 "thelia/backoffice-default-template": ">=2.1,<2.1.2",
1616 "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2",
1617 "theonedemon/phpwhois": "<=4.2.5",
1618 "titon/framework": ">=0,<9.9.99",
1619 "truckersmp/phpwhois": "<=4.3.1",
1620 "twig/twig": "<1.20",
1621 "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.21|>=9,<9.5.2",
1622 "typo3/cms-core": ">=8,<8.7.21|>=9,<9.5.2",
1623 "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",
1624 "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
1625 "ua-parser/uap-php": "<3.8",
1626 "wallabag/tcpdf": "<6.2.22",
1627 "willdurand/js-translation-bundle": "<2.1.1",
1628 "yiisoft/yii": ">=1.1.14,<1.1.15",
1629 "yiisoft/yii2": "<2.0.15",
1630 "yiisoft/yii2-bootstrap": "<2.0.4",
1631 "yiisoft/yii2-dev": "<2.0.15",
1632 "yiisoft/yii2-elasticsearch": "<2.0.5",
1633 "yiisoft/yii2-gii": "<2.0.4",
1634 "yiisoft/yii2-jui": "<2.0.4",
1635 "yiisoft/yii2-redis": "<2.0.8",
1636 "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
1637 "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
1638 "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
1639 "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
1640 "zendframework/zend-diactoros": ">=1,<1.8.4",
1641 "zendframework/zend-feed": ">=1,<2.10.3",
1642 "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
1643 "zendframework/zend-http": ">=1,<2.8.1",
1644 "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
1645 "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
1646 "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
1647 "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
1648 "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
1649 "zendframework/zend-validator": ">=2.3,<2.3.6",
1650 "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
1651 "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
1652 "zendframework/zendframework": "<2.5.1",
1653 "zendframework/zendframework1": "<1.12.20",
1654 "zendframework/zendopenid": ">=2,<2.0.2",
1655 "zendframework/zendxml": ">=1,<1.0.1",
1656 "zetacomponents/mail": "<1.8.2",
1657 "zf-commons/zfc-user": "<1.2.2",
1658 "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
1659 "zfr/zfr-oauth2-server-module": "<0.1.2"
1660 },
1661 "type": "metapackage",
1662 "notification-url": "https://packagist.org/downloads/",
1663 "license": [
1664 "MIT"
1665 ],
1666 "authors": [
1667 {
1668 "name": "Marco Pivetta",
1669 "email": "ocramius@gmail.com",
1670 "role": "maintainer"
1671 }
1672 ],
1673 "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
1674 "time": "2019-01-15T19:39:37+00:00"
1675 },
1676 {
1473 "name": "sebastian/code-unit-reverse-lookup", 1677 "name": "sebastian/code-unit-reverse-lookup",
1474 "version": "1.0.1", 1678 "version": "1.0.1",
1475 "source": { 1679 "source": {
@@ -2023,16 +2227,16 @@
2023 }, 2227 },
2024 { 2228 {
2025 "name": "squizlabs/php_codesniffer", 2229 "name": "squizlabs/php_codesniffer",
2026 "version": "2.9.1", 2230 "version": "2.9.2",
2027 "source": { 2231 "source": {
2028 "type": "git", 2232 "type": "git",
2029 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2233 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
2030 "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62" 2234 "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
2031 }, 2235 },
2032 "dist": { 2236 "dist": {
2033 "type": "zip", 2237 "type": "zip",
2034 "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62", 2238 "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
2035 "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62", 2239 "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
2036 "shasum": "" 2240 "shasum": ""
2037 }, 2241 },
2038 "require": { 2242 "require": {
@@ -2097,20 +2301,20 @@
2097 "phpcs", 2301 "phpcs",
2098 "standards" 2302 "standards"
2099 ], 2303 ],
2100 "time": "2017-05-22T02:43:20+00:00" 2304 "time": "2018-11-07T22:31:41+00:00"
2101 }, 2305 },
2102 { 2306 {
2103 "name": "symfony/console", 2307 "name": "symfony/console",
2104 "version": "v3.4.17", 2308 "version": "v3.4.21",
2105 "source": { 2309 "source": {
2106 "type": "git", 2310 "type": "git",
2107 "url": "https://github.com/symfony/console.git", 2311 "url": "https://github.com/symfony/console.git",
2108 "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b" 2312 "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a"
2109 }, 2313 },
2110 "dist": { 2314 "dist": {
2111 "type": "zip", 2315 "type": "zip",
2112 "url": "https://api.github.com/repos/symfony/console/zipball/3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", 2316 "url": "https://api.github.com/repos/symfony/console/zipball/a700b874d3692bc8342199adfb6d3b99f62cc61a",
2113 "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", 2317 "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a",
2114 "shasum": "" 2318 "shasum": ""
2115 }, 2319 },
2116 "require": { 2320 "require": {
@@ -2166,20 +2370,20 @@
2166 ], 2370 ],
2167 "description": "Symfony Console Component", 2371 "description": "Symfony Console Component",
2168 "homepage": "https://symfony.com", 2372 "homepage": "https://symfony.com",
2169 "time": "2018-10-02T16:33:53+00:00" 2373 "time": "2019-01-04T04:42:43+00:00"
2170 }, 2374 },
2171 { 2375 {
2172 "name": "symfony/debug", 2376 "name": "symfony/debug",
2173 "version": "v3.4.17", 2377 "version": "v3.4.21",
2174 "source": { 2378 "source": {
2175 "type": "git", 2379 "type": "git",
2176 "url": "https://github.com/symfony/debug.git", 2380 "url": "https://github.com/symfony/debug.git",
2177 "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6" 2381 "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186"
2178 }, 2382 },
2179 "dist": { 2383 "dist": {
2180 "type": "zip", 2384 "type": "zip",
2181 "url": "https://api.github.com/repos/symfony/debug/zipball/0a612e9dfbd2ccce03eb174365f31ecdca930ff6", 2385 "url": "https://api.github.com/repos/symfony/debug/zipball/26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
2182 "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6", 2386 "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
2183 "shasum": "" 2387 "shasum": ""
2184 }, 2388 },
2185 "require": { 2389 "require": {
@@ -2222,20 +2426,20 @@
2222 ], 2426 ],
2223 "description": "Symfony Debug Component", 2427 "description": "Symfony Debug Component",
2224 "homepage": "https://symfony.com", 2428 "homepage": "https://symfony.com",
2225 "time": "2018-10-02T16:33:53+00:00" 2429 "time": "2019-01-01T13:45:19+00:00"
2226 }, 2430 },
2227 { 2431 {
2228 "name": "symfony/finder", 2432 "name": "symfony/finder",
2229 "version": "v3.4.17", 2433 "version": "v3.4.21",
2230 "source": { 2434 "source": {
2231 "type": "git", 2435 "type": "git",
2232 "url": "https://github.com/symfony/finder.git", 2436 "url": "https://github.com/symfony/finder.git",
2233 "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d" 2437 "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e"
2234 }, 2438 },
2235 "dist": { 2439 "dist": {
2236 "type": "zip", 2440 "type": "zip",
2237 "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d", 2441 "url": "https://api.github.com/repos/symfony/finder/zipball/3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
2238 "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d", 2442 "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
2239 "shasum": "" 2443 "shasum": ""
2240 }, 2444 },
2241 "require": { 2445 "require": {
@@ -2271,11 +2475,11 @@
2271 ], 2475 ],
2272 "description": "Symfony Finder Component", 2476 "description": "Symfony Finder Component",
2273 "homepage": "https://symfony.com", 2477 "homepage": "https://symfony.com",
2274 "time": "2018-10-03T08:46:40+00:00" 2478 "time": "2019-01-01T13:45:19+00:00"
2275 }, 2479 },
2276 { 2480 {
2277 "name": "symfony/polyfill-ctype", 2481 "name": "symfony/polyfill-ctype",
2278 "version": "v1.9.0", 2482 "version": "v1.10.0",
2279 "source": { 2483 "source": {
2280 "type": "git", 2484 "type": "git",
2281 "url": "https://github.com/symfony/polyfill-ctype.git", 2485 "url": "https://github.com/symfony/polyfill-ctype.git",
@@ -2333,16 +2537,16 @@
2333 }, 2537 },
2334 { 2538 {
2335 "name": "symfony/polyfill-mbstring", 2539 "name": "symfony/polyfill-mbstring",
2336 "version": "v1.9.0", 2540 "version": "v1.10.0",
2337 "source": { 2541 "source": {
2338 "type": "git", 2542 "type": "git",
2339 "url": "https://github.com/symfony/polyfill-mbstring.git", 2543 "url": "https://github.com/symfony/polyfill-mbstring.git",
2340 "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" 2544 "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
2341 }, 2545 },
2342 "dist": { 2546 "dist": {
2343 "type": "zip", 2547 "type": "zip",
2344 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", 2548 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
2345 "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", 2549 "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
2346 "shasum": "" 2550 "shasum": ""
2347 }, 2551 },
2348 "require": { 2552 "require": {
@@ -2388,20 +2592,20 @@
2388 "portable", 2592 "portable",
2389 "shim" 2593 "shim"
2390 ], 2594 ],
2391 "time": "2018-08-06T14:22:27+00:00" 2595 "time": "2018-09-21T13:07:52+00:00"
2392 }, 2596 },
2393 { 2597 {
2394 "name": "symfony/yaml", 2598 "name": "symfony/yaml",
2395 "version": "v3.4.17", 2599 "version": "v3.4.21",
2396 "source": { 2600 "source": {
2397 "type": "git", 2601 "type": "git",
2398 "url": "https://github.com/symfony/yaml.git", 2602 "url": "https://github.com/symfony/yaml.git",
2399 "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f" 2603 "reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea"
2400 }, 2604 },
2401 "dist": { 2605 "dist": {
2402 "type": "zip", 2606 "type": "zip",
2403 "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f", 2607 "url": "https://api.github.com/repos/symfony/yaml/zipball/554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
2404 "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f", 2608 "reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
2405 "shasum": "" 2609 "shasum": ""
2406 }, 2610 },
2407 "require": { 2611 "require": {
@@ -2447,7 +2651,7 @@
2447 ], 2651 ],
2448 "description": "Symfony Yaml Component", 2652 "description": "Symfony Yaml Component",
2449 "homepage": "https://symfony.com", 2653 "homepage": "https://symfony.com",
2450 "time": "2018-10-02T16:33:53+00:00" 2654 "time": "2019-01-01T13:45:19+00:00"
2451 }, 2655 },
2452 { 2656 {
2453 "name": "theseer/fdomdocument", 2657 "name": "theseer/fdomdocument",
@@ -2491,20 +2695,21 @@
2491 }, 2695 },
2492 { 2696 {
2493 "name": "webmozart/assert", 2697 "name": "webmozart/assert",
2494 "version": "1.3.0", 2698 "version": "1.4.0",
2495 "source": { 2699 "source": {
2496 "type": "git", 2700 "type": "git",
2497 "url": "https://github.com/webmozart/assert.git", 2701 "url": "https://github.com/webmozart/assert.git",
2498 "reference": "0df1908962e7a3071564e857d86874dad1ef204a" 2702 "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
2499 }, 2703 },
2500 "dist": { 2704 "dist": {
2501 "type": "zip", 2705 "type": "zip",
2502 "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", 2706 "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
2503 "reference": "0df1908962e7a3071564e857d86874dad1ef204a", 2707 "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
2504 "shasum": "" 2708 "shasum": ""
2505 }, 2709 },
2506 "require": { 2710 "require": {
2507 "php": "^5.3.3 || ^7.0" 2711 "php": "^5.3.3 || ^7.0",
2712 "symfony/polyfill-ctype": "^1.8"
2508 }, 2713 },
2509 "require-dev": { 2714 "require-dev": {
2510 "phpunit/phpunit": "^4.6", 2715 "phpunit/phpunit": "^4.6",
@@ -2537,18 +2742,21 @@
2537 "check", 2742 "check",
2538 "validate" 2743 "validate"
2539 ], 2744 ],
2540 "time": "2018-01-29T19:49:41+00:00" 2745 "time": "2018-12-25T11:19:39+00:00"
2541 } 2746 }
2542 ], 2747 ],
2543 "aliases": [], 2748 "aliases": [],
2544 "minimum-stability": "stable", 2749 "minimum-stability": "stable",
2545 "stability-flags": { 2750 "stability-flags": {
2546 "pubsubhubbub/publisher": 20 2751 "pubsubhubbub/publisher": 20,
2752 "roave/security-advisories": 20
2547 }, 2753 },
2548 "prefer-stable": false, 2754 "prefer-stable": false,
2549 "prefer-lowest": false, 2755 "prefer-lowest": false,
2550 "platform": { 2756 "platform": {
2551 "php": ">=5.6" 2757 "php": ">=5.6",
2758 "ext-json": "*",
2759 "ext-zlib": "*"
2552 }, 2760 },
2553 "platform-dev": [], 2761 "platform-dev": [],
2554 "platform-overrides": { 2762 "platform-overrides": {
diff --git a/doc/md/Community-&-Related-software.md b/doc/md/Community-&-Related-software.md
index 67fdd70f..c66d1c70 100644
--- a/doc/md/Community-&-Related-software.md
+++ b/doc/md/Community-&-Related-software.md
@@ -22,7 +22,8 @@ See [REST API](REST-API) for a list of official and community clients.
22- [shaarli2twitter](https://github.com/ArthurHoaro/shaarli2twitter) by [@ArthurHoaro](https://github.com/ArthurHoaro) - Automatically tweet your shared links from Shaarli 22- [shaarli2twitter](https://github.com/ArthurHoaro/shaarli2twitter) by [@ArthurHoaro](https://github.com/ArthurHoaro) - Automatically tweet your shared links from Shaarli
23- [shaarli2mastodon](https://github.com/kalvn/shaarli2mastodon) by [@kalvn](https://github.com/kalvn) - This Shaarli plugin allows you to automatically publish links you post on your Mastodon timeline. 23- [shaarli2mastodon](https://github.com/kalvn/shaarli2mastodon) by [@kalvn](https://github.com/kalvn) - This Shaarli plugin allows you to automatically publish links you post on your Mastodon timeline.
24- [shaarli-descriptor](https://github.com/immanuelfodor/shaarli-descriptor) by [@immanuelfodor](https://github.com/immanuelfodor) - Customize the default height/number of rows of the Description field when editing a link. 24- [shaarli-descriptor](https://github.com/immanuelfodor/shaarli-descriptor) by [@immanuelfodor](https://github.com/immanuelfodor) - Customize the default height/number of rows of the Description field when editing a link.
25 25- [urlextern](https://github.com/trailjeep/shaarli-urlextern) by [@trailjeep](https://github.com/trailjeep) - Shaarli plugin to open external links in a new tab/window.
26- [favicons](https://github.com/trailjeep/shaarli-favicons) by [@trailjeep](https://github.com/trailjeep) - Shaarli plugin to add favicon/filetype icons to links.
26 27
27### Third-party themes 28### Third-party themes
28See [Theming](Theming) for a list of community-contributed themes, and an installation guide. 29See [Theming](Theming) for a list of community-contributed themes, and an installation guide.
diff --git a/doc/md/Download-and-Installation.md b/doc/md/Download-and-Installation.md
index 14649e06..8c9e8a32 100644
--- a/doc/md/Download-and-Installation.md
+++ b/doc/md/Download-and-Installation.md
@@ -24,11 +24,11 @@ Using one of the following methods:
24 24
25In most cases, you should download the latest Shaarli release from the [releases](https://github.com/shaarli/Shaarli/releases) page. Download our **shaarli-full** archive to include dependencies. 25In most cases, you should download the latest Shaarli release from the [releases](https://github.com/shaarli/Shaarli/releases) page. Download our **shaarli-full** archive to include dependencies.
26 26
27The current latest released version is `v0.9.7` 27The current latest released version is `v0.10.4`
28 28
29```bash 29```bash
30$ wget https://github.com/shaarli/Shaarli/releases/download/v0.9.7/shaarli-v0.9.7-full.zip 30$ wget https://github.com/shaarli/Shaarli/releases/download/v0.10.4/shaarli-v0.10.4-full.zip
31$ unzip shaarli-v0.9.7-full.zip 31$ unzip shaarli-v0.10.4-full.zip
32$ mv Shaarli /path/to/shaarli/ 32$ mv Shaarli /path/to/shaarli/
33``` 33```
34 34
diff --git a/doc/md/Plugin-System.md b/doc/md/Plugin-System.md
index cbec04c0..9b0d3a7d 100644
--- a/doc/md/Plugin-System.md
+++ b/doc/md/Plugin-System.md
@@ -137,6 +137,7 @@ If it's still not working, please [open an issue](https://github.com/shaarli/Sha
137| [render_feed](#render_feed) | Allow to do add tags in RSS and ATOM feeds. | 137| [render_feed](#render_feed) | Allow to do add tags in RSS and ATOM feeds. |
138| [save_link](#save_link) | Allow to alter the link being saved in the datastore. | 138| [save_link](#save_link) | Allow to alter the link being saved in the datastore. |
139| [delete_link](#delete_link) | Allow to do an action before a link is deleted from the datastore. | 139| [delete_link](#delete_link) | Allow to do an action before a link is deleted from the datastore. |
140| [save_plugin_parameters](#save_plugin_parameters) | Allow to manipulate plugin parameters before they're saved. |
140 141
141 142
142 143
@@ -471,6 +472,22 @@ Allow to execute any action before the link is actually removed from the datasto
471- created 472- created
472- updated 473- updated
473 474
475
476#### save_plugin_parameters
477
478Triggered when the plugin parameters are saved from the plugin administration page.
479
480Plugins can perform an action every times their settings are updated.
481For example it is used to update the CSS file of the `default_colors` plugins.
482
483##### Data
484
485`$data` input contains the `$_POST` array.
486
487So if the plugin has a parameter called `MYPLUGIN_PARAMETER`,
488the array will contain an entry with `MYPLUGIN_PARAMETER` as a key.
489
490
474## Guide for template designer 491## Guide for template designer
475 492
476### Plugin administration 493### Plugin administration
diff --git a/doc/md/Plugins.md b/doc/md/Plugins.md
index 954442e2..3e261815 100644
--- a/doc/md/Plugins.md
+++ b/doc/md/Plugins.md
@@ -63,8 +63,12 @@ Usage of each plugin is documented in it's README file:
63 63
64 * `addlink-toolbar`: Adds the addlink input on the linklist page 64 * `addlink-toolbar`: Adds the addlink input on the linklist page
65 * `archiveorg`: For each link, add an Archive.org icon 65 * `archiveorg`: For each link, add an Archive.org icon
66 * `default_colors`: Override default theme colors.
67 * `isso`: Let visitor comment your shaares on permalinks with Isso.
66 * [`markdown`](https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md): Render shaare description with Markdown syntax. 68 * [`markdown`](https://github.com/shaarli/Shaarli/blob/master/plugins/markdown/README.md): Render shaare description with Markdown syntax.
69 * `piwik`: A plugin that adds Piwik tracking code to Shaarli pages.
67 * [`playvideos`](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md): Add a button in the toolbar allowing to watch all videos. 70 * [`playvideos`](https://github.com/shaarli/Shaarli/blob/master/plugins/playvideos/README.md): Add a button in the toolbar allowing to watch all videos.
71 * `pubsubhubbub`: Enable PubSubHubbub feed publishing
68 * `qrcode`: For each link, add a QRCode icon. 72 * `qrcode`: For each link, add a QRCode icon.
69 * [`wallabag`](https://github.com/shaarli/Shaarli/blob/master/plugins/wallabag/README.md): For each link, add a Wallabag icon to save it in your instance. 73 * [`wallabag`](https://github.com/shaarli/Shaarli/blob/master/plugins/wallabag/README.md): For each link, add a Wallabag icon to save it in your instance.
70 74
diff --git a/doc/md/Server-configuration.md b/doc/md/Server-configuration.md
index 78083a46..88eed8e6 100644
--- a/doc/md/Server-configuration.md
+++ b/doc/md/Server-configuration.md
@@ -17,7 +17,7 @@ Version | Status | Shaarli compatibility
17:---:|:---:|:---: 17:---:|:---:|:---:
187.2 | Supported | Yes 187.2 | Supported | Yes
197.1 | Supported | Yes 197.1 | Supported | Yes
207.0 | Supported | Yes 207.0 | EOL: 2018-12-03 | Yes (up to Shaarli 0.10.x)
215.6 | EOL: 2018-12-31 | Yes (up to Shaarli 0.10.x) 215.6 | EOL: 2018-12-31 | Yes (up to Shaarli 0.10.x)
225.5 | EOL: 2016-07-10 | Yes 225.5 | EOL: 2016-07-10 | Yes
235.4 | EOL: 2015-09-14 | Yes (up to Shaarli 0.8.x) 235.4 | EOL: 2015-09-14 | Yes (up to Shaarli 0.8.x)
@@ -404,6 +404,8 @@ If Shaarli is served behind a proxy (i.e. there is a proxy server between client
404- `X-Forwarded-Host` 404- `X-Forwarded-Host`
405- `X-Forwarded-For` 405- `X-Forwarded-For`
406 406
407In you [Shaarli configuration](Shaarli-configuration) `data/config.json.php`, add the public IP of your proxy under `security.trusted_proxies`.
408
407See also [proxy-related](https://github.com/shaarli/Shaarli/issues?utf8=%E2%9C%93&q=label%3Aproxy+) issues. 409See also [proxy-related](https://github.com/shaarli/Shaarli/issues?utf8=%E2%9C%93&q=label%3Aproxy+) issues.
408 410
409## Robots and crawlers 411## Robots and crawlers
diff --git a/doc/md/Shaarli-configuration.md b/doc/md/Shaarli-configuration.md
index 920c7e27..664e36dd 100644
--- a/doc/md/Shaarli-configuration.md
+++ b/doc/md/Shaarli-configuration.md
@@ -4,7 +4,7 @@
4 4
5Once your Shaarli instance is installed, the file `data/config.json.php` is generated: 5Once your Shaarli instance is installed, the file `data/config.json.php` is generated:
6* it contains all settings in JSON format, and can be edited to customize values 6* it contains all settings in JSON format, and can be edited to customize values
7* it defines which [plugins](Plugin-System) are enabled[](.html) 7* it defines which [plugins](Plugin-System) are enabled
8* its values override those defined in `index.php` 8* its values override those defined in `index.php`
9* it is wrap in a PHP comment to prevent anyone accessing it, regardless of server configuration 9* it is wrap in a PHP comment to prevent anyone accessing it, regardless of server configuration
10 10
@@ -32,13 +32,13 @@ On a Linux distribution:
32- to give it access to Shaarli, either: 32- to give it access to Shaarli, either:
33 - unzip Shaarli in the default web server location (usually `/var/www/`) and set the web server user as the owner 33 - unzip Shaarli in the default web server location (usually `/var/www/`) and set the web server user as the owner
34 - put users in the same group as the web server, and set the appropriate access rights 34 - put users in the same group as the web server, and set the appropriate access rights
35- if you have a domain / subdomain to serve Shaarli, [configure the server](Server-configuration) accordingly[](.html) 35- if you have a domain / subdomain to serve Shaarli, [configure the server](Server-configuration) accordingly
36 36
37## Configuration 37## Configuration
38 38
39In `data/config.json.php`. 39In `data/config.json.php`.
40 40
41See also [Plugin System](Plugin-System.html). 41See also [Plugin System](Plugin-System).
42 42
43### Credentials 43### Credentials
44 44
@@ -56,6 +56,8 @@ _These settings should not be edited_
56- **timezone**: See [the list of supported timezones](http://php.net/manual/en/timezones.php). 56- **timezone**: See [the list of supported timezones](http://php.net/manual/en/timezones.php).
57- **enabled_plugins**: List of enabled plugins. 57- **enabled_plugins**: List of enabled plugins.
58- **default_note_title**: Default title of a new note. 58- **default_note_title**: Default title of a new note.
59- **retrieve_description** (boolean): If set to true, for every new links Shaarli will try
60to retrieve the description and keywords from the HTML meta tags.
59 61
60### Security 62### Security
61 63
@@ -120,11 +122,6 @@ Must be an associative array: `translation domain => translation path`.
120- **enable_thumbnails**: Enable or disable thumbnail display. 122- **enable_thumbnails**: Enable or disable thumbnail display.
121- **enable_localcache**: Enable or disable local cache. 123- **enable_localcache**: Enable or disable local cache.
122 124
123### Redirector
124
125- **url**: Redirector URL, such as `anonym.to`.
126- **encode_url**: Enable this if the redirector needs encoded URL to work properly.
127
128## Configuration file example 125## Configuration file example
129 126
130```json 127```json
@@ -185,8 +182,6 @@ Must be an associative array: `translation domain => translation path`.
185 "hide_public_links": false, 182 "hide_public_links": false,
186 "hide_timestamps": false, 183 "hide_timestamps": false,
187 "open_shaarli": false, 184 "open_shaarli": false,
188 "redirector": "http://anonym.to/?",
189 "redirector_encode_url": false
190 }, 185 },
191 "general": { 186 "general": {
192 "header_link": "?", 187 "header_link": "?",
@@ -218,10 +213,6 @@ Must be an associative array: `translation domain => translation path`.
218 "enable_thumbnails": true, 213 "enable_thumbnails": true,
219 "enable_localcache": true 214 "enable_localcache": true
220 }, 215 },
221 "redirector": {
222 "url": "http://anonym.to/?",
223 "encode_url": false
224 },
225 "plugins": { 216 "plugins": {
226 "WALLABAG_URL": "http://demo.wallabag.org", 217 "WALLABAG_URL": "http://demo.wallabag.org",
227 "WALLABAG_VERSION": "1" 218 "WALLABAG_VERSION": "1"
diff --git a/inc/languages/fr/LC_MESSAGES/shaarli.po b/inc/languages/fr/LC_MESSAGES/shaarli.po
index 102c80da..026d0101 100644
--- a/inc/languages/fr/LC_MESSAGES/shaarli.po
+++ b/inc/languages/fr/LC_MESSAGES/shaarli.po
@@ -1,15 +1,15 @@
1msgid "" 1msgid ""
2msgstr "" 2msgstr ""
3"Project-Id-Version: Shaarli\n" 3"Project-Id-Version: Shaarli\n"
4"POT-Creation-Date: 2018-10-06 13:08+0200\n" 4"POT-Creation-Date: 2019-07-13 10:45+0200\n"
5"PO-Revision-Date: 2018-10-06 13:08+0200\n" 5"PO-Revision-Date: 2019-07-13 10:49+0200\n"
6"Last-Translator: \n" 6"Last-Translator: \n"
7"Language-Team: Shaarli\n" 7"Language-Team: Shaarli\n"
8"Language: fr_FR\n" 8"Language: fr_FR\n"
9"MIME-Version: 1.0\n" 9"MIME-Version: 1.0\n"
10"Content-Type: text/plain; charset=UTF-8\n" 10"Content-Type: text/plain; charset=UTF-8\n"
11"Content-Transfer-Encoding: 8bit\n" 11"Content-Transfer-Encoding: 8bit\n"
12"X-Generator: Poedit 2.1.1\n" 12"X-Generator: Poedit 2.2.1\n"
13"X-Poedit-Basepath: ../../../..\n" 13"X-Poedit-Basepath: ../../../..\n"
14"Plural-Forms: nplurals=2; plural=(n > 1);\n" 14"Plural-Forms: nplurals=2; plural=(n > 1);\n"
15"X-Poedit-SourceCharset: UTF-8\n" 15"X-Poedit-SourceCharset: UTF-8\n"
@@ -18,7 +18,7 @@ msgstr ""
18"X-Poedit-SearchPathExcluded-0: node_modules\n" 18"X-Poedit-SearchPathExcluded-0: node_modules\n"
19"X-Poedit-SearchPathExcluded-1: vendor\n" 19"X-Poedit-SearchPathExcluded-1: vendor\n"
20 20
21#: application/ApplicationUtils.php:153 21#: application/ApplicationUtils.php:159
22#, php-format 22#, php-format
23msgid "" 23msgid ""
24"Your PHP version is obsolete! Shaarli requires at least PHP %s, and thus " 24"Your PHP version is obsolete! Shaarli requires at least PHP %s, and thus "
@@ -29,87 +29,109 @@ msgstr ""
29"peut donc pas fonctionner. Votre version de PHP a des failles de sécurités " 29"peut donc pas fonctionner. Votre version de PHP a des failles de sécurités "
30"connues et devrait être mise à jour au plus tôt." 30"connues et devrait être mise à jour au plus tôt."
31 31
32#: application/ApplicationUtils.php:183 application/ApplicationUtils.php:195 32#: application/ApplicationUtils.php:189 application/ApplicationUtils.php:201
33msgid "directory is not readable" 33msgid "directory is not readable"
34msgstr "le répertoire n'est pas accessible en lecture" 34msgstr "le répertoire n'est pas accessible en lecture"
35 35
36#: application/ApplicationUtils.php:198 36#: application/ApplicationUtils.php:204
37msgid "directory is not writable" 37msgid "directory is not writable"
38msgstr "le répertoire n'est pas accessible en écriture" 38msgstr "le répertoire n'est pas accessible en écriture"
39 39
40#: application/ApplicationUtils.php:216 40#: application/ApplicationUtils.php:222
41msgid "file is not readable" 41msgid "file is not readable"
42msgstr "le fichier n'est pas accessible en lecture" 42msgstr "le fichier n'est pas accessible en lecture"
43 43
44#: application/ApplicationUtils.php:219 44#: application/ApplicationUtils.php:225
45msgid "file is not writable" 45msgid "file is not writable"
46msgstr "le fichier n'est pas accessible en écriture" 46msgstr "le fichier n'est pas accessible en écriture"
47 47
48#: application/Cache.php:16 48#: application/History.php:178
49#, php-format
50msgid "Cannot purge %s: no directory"
51msgstr "Impossible de purger %s : le répertoire n'existe pas"
52
53#: application/FeedBuilder.php:151
54msgid "Direct link"
55msgstr "Liens directs"
56
57#: application/FeedBuilder.php:153
58#: tmp/daily.b91ef64efc3688266305ea9b42e5017e.rtpl.php:88
59#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:177
60msgid "Permalink"
61msgstr "Permalien"
62
63#: application/History.php:174
64msgid "History file isn't readable or writable" 49msgid "History file isn't readable or writable"
65msgstr "Le fichier d'historique n'est pas accessible en lecture ou en écriture" 50msgstr "Le fichier d'historique n'est pas accessible en lecture ou en écriture"
66 51
67#: application/History.php:185 52#: application/History.php:189
68msgid "Could not parse history file" 53msgid "Could not parse history file"
69msgstr "Format incorrect pour le fichier d'historique" 54msgstr "Format incorrect pour le fichier d'historique"
70 55
71#: application/Languages.php:177 56#: application/Languages.php:181
72msgid "Automatic" 57msgid "Automatic"
73msgstr "Automatique" 58msgstr "Automatique"
74 59
75#: application/Languages.php:178 60#: application/Languages.php:182
76msgid "English" 61msgid "English"
77msgstr "Anglais" 62msgstr "Anglais"
78 63
79#: application/Languages.php:179 64#: application/Languages.php:183
80msgid "French" 65msgid "French"
81msgstr "Français" 66msgstr "Français"
82 67
83#: application/Languages.php:180 68#: application/Languages.php:184
84msgid "German" 69msgid "German"
85msgstr "Allemand" 70msgstr "Allemand"
86 71
87#: application/LinkDB.php:136 72#: application/Thumbnailer.php:62
73msgid ""
74"php-gd extension must be loaded to use thumbnails. Thumbnails are now "
75"disabled. Please reload the page."
76msgstr ""
77"l'extension php-gd doit être chargée pour utiliser les miniatures. Les "
78"miniatures sont désormais désactivées. Rechargez la page."
79
80#: application/Utils.php:379 tests/UtilsTest.php:343
81msgid "Setting not set"
82msgstr "Paramètre non défini"
83
84#: application/Utils.php:386 tests/UtilsTest.php:341 tests/UtilsTest.php:342
85msgid "Unlimited"
86msgstr "Illimité"
87
88#: application/Utils.php:389 tests/UtilsTest.php:338 tests/UtilsTest.php:339
89#: tests/UtilsTest.php:353
90msgid "B"
91msgstr "o"
92
93#: application/Utils.php:389 tests/UtilsTest.php:332 tests/UtilsTest.php:333
94#: tests/UtilsTest.php:340
95msgid "kiB"
96msgstr "ko"
97
98#: application/Utils.php:389 tests/UtilsTest.php:334 tests/UtilsTest.php:335
99#: tests/UtilsTest.php:351 tests/UtilsTest.php:352
100msgid "MiB"
101msgstr "Mo"
102
103#: application/Utils.php:389 tests/UtilsTest.php:336 tests/UtilsTest.php:337
104msgid "GiB"
105msgstr "Go"
106
107#: application/bookmark/LinkDB.php:128
88msgid "You are not authorized to add a link." 108msgid "You are not authorized to add a link."
89msgstr "Vous n'êtes pas autorisé à ajouter un lien." 109msgstr "Vous n'êtes pas autorisé à ajouter un lien."
90 110
91#: application/LinkDB.php:139 111#: application/bookmark/LinkDB.php:131
92msgid "Internal Error: A link should always have an id and URL." 112msgid "Internal Error: A link should always have an id and URL."
93msgstr "Erreur interne : un lien devrait toujours avoir un ID et une URL." 113msgstr "Erreur interne : un lien devrait toujours avoir un ID et une URL."
94 114
95#: application/LinkDB.php:142 115#: application/bookmark/LinkDB.php:134
96msgid "You must specify an integer as a key." 116msgid "You must specify an integer as a key."
97msgstr "Vous devez utiliser un entier comme clé." 117msgstr "Vous devez utiliser un entier comme clé."
98 118
99#: application/LinkDB.php:145 119#: application/bookmark/LinkDB.php:137
100msgid "Array offset and link ID must be equal." 120msgid "Array offset and link ID must be equal."
101msgstr "La clé du tableau et l'ID du lien doivent être identiques." 121msgstr "La clé du tableau et l'ID du lien doivent être identiques."
102 122
103#: application/LinkDB.php:251 123#: application/bookmark/LinkDB.php:243
104#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:14 124#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15
105#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 125#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:49
126#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15
127#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:49
106msgid "" 128msgid ""
107"The personal, minimalist, super-fast, database free, bookmarking service" 129"The personal, minimalist, super-fast, database free, bookmarking service"
108msgstr "" 130msgstr ""
109"Le gestionnaire de marque-pages personnel, minimaliste, et sans base de " 131"Le gestionnaire de marque-pages personnel, minimaliste, et sans base de "
110"données" 132"données"
111 133
112#: application/LinkDB.php:253 134#: application/bookmark/LinkDB.php:246
113msgid "" 135msgid ""
114"Welcome to Shaarli! This is your first public bookmark. To edit or delete " 136"Welcome to Shaarli! This is your first public bookmark. To edit or delete "
115"me, you must first login.\n" 137"me, you must first login.\n"
@@ -129,34 +151,80 @@ msgstr ""
129"Vous utilisez la version supportée par la communauté du projet original " 151"Vous utilisez la version supportée par la communauté du projet original "
130"Shaarli de Sébastien Sauvage." 152"Shaarli de Sébastien Sauvage."
131 153
132#: application/LinkDB.php:267 154#: application/bookmark/LinkDB.php:263
133msgid "My secret stuff... - Pastebin.com" 155msgid "My secret stuff... - Pastebin.com"
134msgstr "Mes trucs secrets... - Pastebin.com" 156msgstr "Mes trucs secrets... - Pastebin.com"
135 157
136#: application/LinkDB.php:269 158#: application/bookmark/LinkDB.php:265
137msgid "Shhhh! I'm a private link only YOU can see. You can delete me too." 159msgid "Shhhh! I'm a private link only YOU can see. You can delete me too."
138msgstr "" 160msgstr ""
139"Pssst ! Je suis un lien privé que VOUS êtes le seul à voir. Vous pouvez me " 161"Pssst ! Je suis un lien privé que VOUS êtes le seul à voir. Vous pouvez me "
140"supprimer aussi." 162"supprimer aussi."
141 163
142#: application/LinkFilter.php:452 164#: application/bookmark/exception/LinkNotFoundException.php:13
143msgid "The link you are trying to reach does not exist or has been deleted." 165msgid "The link you are trying to reach does not exist or has been deleted."
144msgstr "Le lien que vous essayez de consulter n'existe pas ou a été supprimé." 166msgstr "Le lien que vous essayez de consulter n'existe pas ou a été supprimé."
145 167
146#: application/NetscapeBookmarkUtils.php:35 168#: application/config/ConfigJson.php:52 application/config/ConfigPhp.php:129
169msgid ""
170"Shaarli could not create the config file. Please make sure Shaarli has the "
171"right to write in the folder is it installed in."
172msgstr ""
173"Shaarli n'a pas pu créer le fichier de configuration. Merci de vérifier que "
174"Shaarli a les droits d'écriture dans le dossier dans lequel il est installé."
175
176#: application/config/ConfigManager.php:135
177#: application/config/ConfigManager.php:162
178msgid "Invalid setting key parameter. String expected, got: "
179msgstr "Clé de paramétrage invalide. Chaîne de caractères obtenue, attendu : "
180
181#: application/config/exception/MissingFieldConfigException.php:21
182#, php-format
183msgid "Configuration value is required for %s"
184msgstr "Le paramètre %s est obligatoire"
185
186#: application/config/exception/PluginConfigOrderException.php:15
187msgid "An error occurred while trying to save plugins loading order."
188msgstr ""
189"Une erreur s'est produite lors de la sauvegarde de l'ordre des extensions."
190
191#: application/config/exception/UnauthorizedConfigException.php:16
192msgid "You are not authorized to alter config."
193msgstr "Vous n'êtes pas autorisé à modifier la configuration."
194
195#: application/exceptions/IOException.php:22
196msgid "Error accessing"
197msgstr "Une erreur s'est produite en accédant à"
198
199#: application/feed/Cache.php:16
200#, php-format
201msgid "Cannot purge %s: no directory"
202msgstr "Impossible de purger %s : le répertoire n'existe pas"
203
204#: application/feed/FeedBuilder.php:155
205msgid "Direct link"
206msgstr "Liens directs"
207
208#: application/feed/FeedBuilder.php:157
209#: tmp/daily.b91ef64efc3688266305ea9b42e5017e.rtpl.php:96
210#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:177
211msgid "Permalink"
212msgstr "Permalien"
213
214#: application/netscape/NetscapeBookmarkUtils.php:42
147msgid "Invalid export selection:" 215msgid "Invalid export selection:"
148msgstr "Sélection d'export invalide :" 216msgstr "Sélection d'export invalide :"
149 217
150#: application/NetscapeBookmarkUtils.php:81 218#: application/netscape/NetscapeBookmarkUtils.php:87
151#, php-format 219#, php-format
152msgid "File %s (%d bytes) " 220msgid "File %s (%d bytes) "
153msgstr "Le fichier %s (%d octets) " 221msgstr "Le fichier %s (%d octets) "
154 222
155#: application/NetscapeBookmarkUtils.php:83 223#: application/netscape/NetscapeBookmarkUtils.php:89
156msgid "has an unknown file format. Nothing was imported." 224msgid "has an unknown file format. Nothing was imported."
157msgstr "a un format inconnu. Rien n'a été importé." 225msgstr "a un format inconnu. Rien n'a été importé."
158 226
159#: application/NetscapeBookmarkUtils.php:86 227#: application/netscape/NetscapeBookmarkUtils.php:93
160#, php-format 228#, php-format
161msgid "" 229msgid ""
162"was successfully processed in %d seconds: %d links imported, %d links " 230"was successfully processed in %d seconds: %d links imported, %d links "
@@ -165,32 +233,26 @@ msgstr ""
165"a été importé avec succès en %d secondes : %d liens importés, %d liens " 233"a été importé avec succès en %d secondes : %d liens importés, %d liens "
166"écrasés, %d liens ignorés." 234"écrasés, %d liens ignorés."
167 235
168#: application/PageBuilder.php:200 236#: application/plugin/exception/PluginFileNotFoundException.php:21
237#, php-format
238msgid "Plugin \"%s\" files not found."
239msgstr "Les fichiers de l'extension \"%s\" sont introuvables."
240
241#: application/render/PageBuilder.php:209
169msgid "The page you are trying to reach does not exist or has been deleted." 242msgid "The page you are trying to reach does not exist or has been deleted."
170msgstr "La page que vous essayez de consulter n'existe pas ou a été supprimée." 243msgstr "La page que vous essayez de consulter n'existe pas ou a été supprimée."
171 244
172#: application/PageBuilder.php:202 245#: application/render/PageBuilder.php:211
173msgid "404 Not Found" 246msgid "404 Not Found"
174msgstr "404 Introuvable" 247msgstr "404 Introuvable"
175 248
176#: application/PluginManager.php:243 249#: application/updater/Updater.php:99
177#, php-format 250#, fuzzy
178msgid "Plugin \"%s\" files not found." 251#| msgid "Couldn't retrieve Updater class methods."
179msgstr "Les fichiers de l'extension \"%s\" sont introuvables." 252msgid "Couldn't retrieve updater class methods."
180
181#: application/Thumbnailer.php:61
182msgid ""
183"php-gd extension must be loaded to use thumbnails. Thumbnails are now "
184"disabled. Please reload the page."
185msgstr ""
186"l'extension php-gd doit être chargée pour utiliser les miniatures. Les "
187"miniatures sont désormais désactivées. Rechargez la page."
188
189#: application/Updater.php:86
190msgid "Couldn't retrieve Updater class methods."
191msgstr "Impossible de récupérer les méthodes de la classe Updater." 253msgstr "Impossible de récupérer les méthodes de la classe Updater."
192 254
193#: application/Updater.php:514 index.php:1022 255#: application/updater/Updater.php:526 index.php:1034
194msgid "" 256msgid ""
195"You have enabled or changed thumbnails mode. <a href=\"?do=thumbs_update" 257"You have enabled or changed thumbnails mode. <a href=\"?do=thumbs_update"
196"\">Please synchronize them</a>." 258"\">Please synchronize them</a>."
@@ -198,110 +260,65 @@ msgstr ""
198"Vous avez activé ou changé le mode de miniatures. <a href=\"?do=thumbs_update" 260"Vous avez activé ou changé le mode de miniatures. <a href=\"?do=thumbs_update"
199"\">Merci de les synchroniser</a>." 261"\">Merci de les synchroniser</a>."
200 262
201#: application/Updater.php:586 263#: application/updater/UpdaterUtils.php:32
202msgid "An error occurred while running the update "
203msgstr "Une erreur s'est produite lors de l'exécution de la mise à jour "
204
205#: application/Updater.php:626
206msgid "Updates file path is not set, can't write updates." 264msgid "Updates file path is not set, can't write updates."
207msgstr "" 265msgstr ""
208"Le chemin vers le fichier de mise à jour n'est pas défini, impossible " 266"Le chemin vers le fichier de mise à jour n'est pas défini, impossible "
209"d'écrire les mises à jour." 267"d'écrire les mises à jour."
210 268
211#: application/Updater.php:631 269#: application/updater/UpdaterUtils.php:37
212msgid "Unable to write updates in " 270msgid "Unable to write updates in "
213msgstr "Impossible d'écrire les mises à jour dans " 271msgstr "Impossible d'écrire les mises à jour dans "
214 272
215#: application/Utils.php:376 tests/UtilsTest.php:340 273#: application/updater/exception/UpdaterException.php:51
216msgid "Setting not set" 274msgid "An error occurred while running the update "
217msgstr "Paramètre non défini" 275msgstr "Une erreur s'est produite lors de l'exécution de la mise à jour "
218
219#: application/Utils.php:383 tests/UtilsTest.php:338 tests/UtilsTest.php:339
220msgid "Unlimited"
221msgstr "Illimité"
222
223#: application/Utils.php:386 tests/UtilsTest.php:335 tests/UtilsTest.php:336
224#: tests/UtilsTest.php:350
225msgid "B"
226msgstr "o"
227
228#: application/Utils.php:386 tests/UtilsTest.php:329 tests/UtilsTest.php:330
229#: tests/UtilsTest.php:337
230msgid "kiB"
231msgstr "ko"
232
233#: application/Utils.php:386 tests/UtilsTest.php:331 tests/UtilsTest.php:332
234#: tests/UtilsTest.php:348 tests/UtilsTest.php:349
235msgid "MiB"
236msgstr "Mo"
237
238#: application/Utils.php:386 tests/UtilsTest.php:333 tests/UtilsTest.php:334
239msgid "GiB"
240msgstr "Go"
241
242#: application/config/ConfigJson.php:52 application/config/ConfigPhp.php:121
243msgid ""
244"Shaarli could not create the config file. Please make sure Shaarli has the "
245"right to write in the folder is it installed in."
246msgstr ""
247"Shaarli n'a pas pu créer le fichier de configuration. Merci de vérifier que "
248"Shaarli a les droits d'écriture dans le dossier dans lequel il est installé."
249
250#: application/config/ConfigManager.php:135
251#: application/config/ConfigManager.php:162
252msgid "Invalid setting key parameter. String expected, got: "
253msgstr "Clé de paramétrage invalide. Chaîne de caractères obtenue, attendu : "
254
255#: application/config/exception/MissingFieldConfigException.php:21
256#, php-format
257msgid "Configuration value is required for %s"
258msgstr "Le paramètre %s est obligatoire"
259
260#: application/config/exception/PluginConfigOrderException.php:15
261msgid "An error occurred while trying to save plugins loading order."
262msgstr ""
263"Une erreur s'est produite lors de la sauvegarde de l'ordre des extensions."
264
265#: application/config/exception/UnauthorizedConfigException.php:16
266msgid "You are not authorized to alter config."
267msgstr "Vous n'êtes pas autorisé à modifier la configuration."
268
269#: application/exceptions/IOException.php:19
270msgid "Error accessing"
271msgstr "Une erreur s'est produite en accédant à"
272 276
273#: index.php:143 277#: index.php:145
274msgid "Shared links on " 278msgid "Shared links on "
275msgstr "Liens partagés sur " 279msgstr "Liens partagés sur "
276 280
277#: index.php:165 281#: index.php:167
278msgid "Insufficient permissions:" 282msgid "Insufficient permissions:"
279msgstr "Permissions insuffisantes :" 283msgstr "Permissions insuffisantes :"
280 284
281#: index.php:201 285#: index.php:203
282msgid "I said: NO. You are banned for the moment. Go away." 286msgid "I said: NO. You are banned for the moment. Go away."
283msgstr "NON. Vous êtes banni pour le moment. Revenez plus tard." 287msgstr "NON. Vous êtes banni pour le moment. Revenez plus tard."
284 288
285#: index.php:273 289#: index.php:275
286msgid "Wrong login/password." 290msgid "Wrong login/password."
287msgstr "Nom d'utilisateur ou mot de passe incorrect(s)." 291msgstr "Nom d'utilisateur ou mot de passe incorrect(s)."
288 292
289#: index.php:482 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:46 293#: index.php:398 index.php:404
294msgid "Today"
295msgstr "Aujourd'hui"
296
297#: index.php:400
298msgid "Yesterday"
299msgstr "Hier"
300
301#: index.php:484 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46
302#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:46
290msgid "Daily" 303msgid "Daily"
291msgstr "Quotidien" 304msgstr "Quotidien"
292 305
293#: index.php:588 tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 306#: index.php:593 tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28
294#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44 307#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44
308#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:75
309#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:99
295#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:75 310#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:75
296#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:99 311#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:99
297msgid "Login" 312msgid "Login"
298msgstr "Connexion" 313msgstr "Connexion"
299 314
300#: index.php:605 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:41 315#: index.php:608 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41
316#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:41
301msgid "Picture wall" 317msgid "Picture wall"
302msgstr "Mur d'images" 318msgstr "Mur d'images"
303 319
304#: index.php:682 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:36 320#: index.php:683 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
321#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:36
305#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 322#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19
306msgid "Tag cloud" 323msgid "Tag cloud"
307msgstr "Nuage de tags" 324msgstr "Nuage de tags"
@@ -310,88 +327,93 @@ msgstr "Nuage de tags"
310msgid "Tag list" 327msgid "Tag list"
311msgstr "Liste des tags" 328msgstr "Liste des tags"
312 329
313#: index.php:940 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:31 330#: index.php:944 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:31
331#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:31
314msgid "Tools" 332msgid "Tools"
315msgstr "Outils" 333msgstr "Outils"
316 334
317#: index.php:949 335#: index.php:952
318msgid "You are not supposed to change a password on an Open Shaarli." 336msgid "You are not supposed to change a password on an Open Shaarli."
319msgstr "" 337msgstr ""
320"Vous n'êtes pas censé modifier le mot de passe d'un Shaarli en mode ouvert." 338"Vous n'êtes pas censé modifier le mot de passe d'un Shaarli en mode ouvert."
321 339
322#: index.php:954 index.php:996 index.php:1084 index.php:1116 index.php:1221 340#: index.php:957 index.php:1007 index.php:1094 index.php:1124 index.php:1234
341#: index.php:1281
323msgid "Wrong token." 342msgid "Wrong token."
324msgstr "Jeton invalide." 343msgstr "Jeton invalide."
325 344
326#: index.php:959 345#: index.php:966
327msgid "The old password is not correct." 346msgid "The old password is not correct."
328msgstr "L'ancien mot de passe est incorrect." 347msgstr "L'ancien mot de passe est incorrect."
329 348
330#: index.php:979 349#: index.php:993
331msgid "Your password has been changed" 350msgid "Your password has been changed"
332msgstr "Votre mot de passe a été modifié" 351msgstr "Votre mot de passe a été modifié"
333 352
334#: index.php:984 tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 353#: index.php:997
354#: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13
355#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29
335msgid "Change password" 356msgid "Change password"
336msgstr "Modifier le mot de passe" 357msgstr "Modifier le mot de passe"
337 358
338#: index.php:1042 359#: index.php:1054
339msgid "Configuration was saved." 360msgid "Configuration was saved."
340msgstr "La configuration a été sauvegardée." 361msgstr "La configuration a été sauvegardée."
341 362
342#: index.php:1067 tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24 363#: index.php:1078 tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24
343msgid "Configure" 364msgid "Configure"
344msgstr "Configurer" 365msgstr "Configurer"
345 366
346#: index.php:1078 tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 367#: index.php:1088 tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13
347#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 368#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
348msgid "Manage tags" 369msgid "Manage tags"
349msgstr "Gérer les tags" 370msgstr "Gérer les tags"
350 371
351#: index.php:1097 372#: index.php:1107
352#, php-format 373#, php-format
353msgid "The tag was removed from %d link." 374msgid "The tag was removed from %d link."
354msgid_plural "The tag was removed from %d links." 375msgid_plural "The tag was removed from %d links."
355msgstr[0] "Le tag a été supprimé de %d lien." 376msgstr[0] "Le tag a été supprimé de %d lien."
356msgstr[1] "Le tag a été supprimé de %d liens." 377msgstr[1] "Le tag a été supprimé de %d liens."
357 378
358#: index.php:1098 379#: index.php:1108
359#, php-format 380#, php-format
360msgid "The tag was renamed in %d link." 381msgid "The tag was renamed in %d link."
361msgid_plural "The tag was renamed in %d links." 382msgid_plural "The tag was renamed in %d links."
362msgstr[0] "Le tag a été renommé dans %d lien." 383msgstr[0] "Le tag a été renommé dans %d lien."
363msgstr[1] "Le tag a été renommé dans %d liens." 384msgstr[1] "Le tag a été renommé dans %d liens."
364 385
365#: index.php:1106 tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 386#: index.php:1115 tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13
366msgid "Shaare a new link" 387msgid "Shaare a new link"
367msgstr "Partager un nouveau lien" 388msgstr "Partager un nouveau lien"
368 389
369#: index.php:1281 tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:169 390#: index.php:1344 tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:169
370msgid "Edit" 391msgid "Edit"
371msgstr "Modifier" 392msgstr "Modifier"
372 393
373#: index.php:1281 index.php:1351 394#: index.php:1344 index.php:1416
395#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26
374#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:26 396#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:26
375msgid "Shaare" 397msgid "Shaare"
376msgstr "Shaare" 398msgstr "Shaare"
377 399
378#: index.php:1320 400#: index.php:1385
379msgid "Note: " 401msgid "Note: "
380msgstr "Note : " 402msgstr "Note : "
381 403
382#: index.php:1359 404#: index.php:1424
383msgid "Invalid link ID provided" 405msgid "Invalid link ID provided"
384msgstr "" 406msgstr "ID du lien non valide"
385 407
386#: index.php:1379 408#: index.php:1444 tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:65
387msgid "Export" 409msgid "Export"
388msgstr "Exporter" 410msgstr "Exporter"
389 411
390#: index.php:1441 412#: index.php:1506 tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:83
391msgid "Import" 413msgid "Import"
392msgstr "Importer" 414msgstr "Importer"
393 415
394#: index.php:1451 416#: index.php:1516
395#, php-format 417#, php-format
396msgid "" 418msgid ""
397"The file you are trying to upload is probably bigger than what this " 419"The file you are trying to upload is probably bigger than what this "
@@ -401,20 +423,20 @@ msgstr ""
401"le serveur web peut accepter (%s). Merci de l'envoyer en parties plus " 423"le serveur web peut accepter (%s). Merci de l'envoyer en parties plus "
402"légères." 424"légères."
403 425
404#: index.php:1490 tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26 426#: index.php:1561 tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26
405#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22 427#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22
406msgid "Plugin administration" 428msgid "Plugin administration"
407msgstr "Administration des plugins" 429msgstr "Administration des plugins"
408 430
409#: index.php:1542 tmp/thumbnails.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 431#: index.php:1616 tmp/thumbnails.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14
410msgid "Thumbnails update" 432msgid "Thumbnails update"
411msgstr "Mise à jour des miniatures" 433msgstr "Mise à jour des miniatures"
412 434
413#: index.php:1714 435#: index.php:1782
414msgid "Search: " 436msgid "Search: "
415msgstr "Recherche : " 437msgstr "Recherche : "
416 438
417#: index.php:1754 439#: index.php:1825
418#, php-format 440#, php-format
419msgid "" 441msgid ""
420"<pre>Sessions do not seem to work correctly on your server.<br>Make sure the " 442"<pre>Sessions do not seem to work correctly on your server.<br>Make sure the "
@@ -433,32 +455,58 @@ msgstr ""
433"des cookies. Nous vous recommandons d'accéder à votre serveur depuis son " 455"des cookies. Nous vous recommandons d'accéder à votre serveur depuis son "
434"adresse IP ou un <em>Fully Qualified Domain Name</em>.<br>" 456"adresse IP ou un <em>Fully Qualified Domain Name</em>.<br>"
435 457
436#: index.php:1764 458#: index.php:1835
437msgid "Click to try again." 459msgid "Click to try again."
438msgstr "Cliquer ici pour réessayer." 460msgstr "Cliquer ici pour réessayer."
439 461
440#: plugins/addlink_toolbar/addlink_toolbar.php:29 462#: plugins/addlink_toolbar/addlink_toolbar.php:31
441msgid "URI" 463msgid "URI"
442msgstr "URI" 464msgstr "URI"
443 465
444#: plugins/addlink_toolbar/addlink_toolbar.php:33 466#: plugins/addlink_toolbar/addlink_toolbar.php:35
445#: tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 467#: tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:20
446msgid "Add link" 468msgid "Add link"
447msgstr "Shaare" 469msgstr "Shaare"
448 470
449#: plugins/addlink_toolbar/addlink_toolbar.php:50 471#: plugins/addlink_toolbar/addlink_toolbar.php:52
450msgid "Adds the addlink input on the linklist page." 472msgid "Adds the addlink input on the linklist page."
451msgstr "Ajoute le formulaire d'ajout de liens sur la page principale." 473msgstr "Ajoute le formulaire d'ajout de liens sur la page principale."
452 474
453#: plugins/archiveorg/archiveorg.php:23 475#: plugins/archiveorg/archiveorg.php:25
454msgid "View on archive.org" 476msgid "View on archive.org"
455msgstr "Voir sur archive.org" 477msgstr "Voir sur archive.org"
456 478
457#: plugins/archiveorg/archiveorg.php:36 479#: plugins/archiveorg/archiveorg.php:38
458msgid "For each link, add an Archive.org icon." 480msgid "For each link, add an Archive.org icon."
459msgstr "Pour chaque lien, ajoute une icône pour Archive.org." 481msgstr "Pour chaque lien, ajoute une icône pour Archive.org."
460 482
461#: plugins/demo_plugin/demo_plugin.php:465 483#: plugins/default_colors/default_colors.php:33
484msgid ""
485"Default colors plugin error: This plugin is active and no custom color is "
486"configured."
487msgstr ""
488"Erreur du plugin default colors : ce plugin est actif et aucune couleur "
489"n'est configurée."
490
491#: plugins/default_colors/default_colors.php:107
492msgid "Override default theme colors. Use any CSS valid color."
493msgstr ""
494"Remplacer les couleurs du thème par défaut. Utiliser n'importe quelle "
495"couleur CSS valide."
496
497#: plugins/default_colors/default_colors.php:108
498msgid "Main color (navbar green)"
499msgstr "Couleur principale (vert de la barre de navigation)"
500
501#: plugins/default_colors/default_colors.php:109
502msgid "Background color (light grey)"
503msgstr "Couleur de fond (gris léger)"
504
505#: plugins/default_colors/default_colors.php:110
506msgid "Dark main color (e.g. visited links)"
507msgstr "Couleur principale sombre (ex : les liens visités)"
508
509#: plugins/demo_plugin/demo_plugin.php:482
462msgid "" 510msgid ""
463"A demo plugin covering all use cases for template designers and plugin " 511"A demo plugin covering all use cases for template designers and plugin "
464"developers." 512"developers."
@@ -466,7 +514,15 @@ msgstr ""
466"Une extension de démonstration couvrant tous les cas d'utilisation pour les " 514"Une extension de démonstration couvrant tous les cas d'utilisation pour les "
467"designers de thèmes et les développeurs d'extensions." 515"designers de thèmes et les développeurs d'extensions."
468 516
469#: plugins/isso/isso.php:20 517#: plugins/demo_plugin/demo_plugin.php:483
518msgid "This is a parameter dedicated to the demo plugin. It'll be suffixed."
519msgstr "Ceci est un paramètre dédié au plugin de démo. Il sera suffixé."
520
521#: plugins/demo_plugin/demo_plugin.php:484
522msgid "Other demo parameter"
523msgstr "Un autre paramètre de démo"
524
525#: plugins/isso/isso.php:22
470msgid "" 526msgid ""
471"Isso plugin error: Please define the \"ISSO_SERVER\" setting in the plugin " 527"Isso plugin error: Please define the \"ISSO_SERVER\" setting in the plugin "
472"administration page." 528"administration page."
@@ -474,29 +530,29 @@ msgstr ""
474"Erreur de l'extension Isso : Merci de définir le paramètre « ISSO_SERVER » " 530"Erreur de l'extension Isso : Merci de définir le paramètre « ISSO_SERVER » "
475"dans la page d'administration des extensions." 531"dans la page d'administration des extensions."
476 532
477#: plugins/isso/isso.php:90 533#: plugins/isso/isso.php:92
478msgid "Let visitor comment your shaares on permalinks with Isso." 534msgid "Let visitor comment your shaares on permalinks with Isso."
479msgstr "" 535msgstr ""
480"Permettre aux visiteurs de commenter vos shaares sur les permaliens avec " 536"Permettre aux visiteurs de commenter vos shaares sur les permaliens avec "
481"Isso." 537"Isso."
482 538
483#: plugins/isso/isso.php:91 539#: plugins/isso/isso.php:93
484msgid "Isso server URL (without 'http://')" 540msgid "Isso server URL (without 'http://')"
485msgstr "URL du serveur Isso (sans 'http://')" 541msgstr "URL du serveur Isso (sans 'http://')"
486 542
487#: plugins/markdown/markdown.php:161 543#: plugins/markdown/markdown.php:163
488msgid "Description will be rendered with" 544msgid "Description will be rendered with"
489msgstr "La description sera générée avec" 545msgstr "La description sera générée avec"
490 546
491#: plugins/markdown/markdown.php:162 547#: plugins/markdown/markdown.php:164
492msgid "Markdown syntax documentation" 548msgid "Markdown syntax documentation"
493msgstr "Documentation sur la syntaxe Markdown" 549msgstr "Documentation sur la syntaxe Markdown"
494 550
495#: plugins/markdown/markdown.php:163 551#: plugins/markdown/markdown.php:165
496msgid "Markdown syntax" 552msgid "Markdown syntax"
497msgstr "la syntaxe Markdown" 553msgstr "la syntaxe Markdown"
498 554
499#: plugins/markdown/markdown.php:347 555#: plugins/markdown/markdown.php:361
500msgid "" 556msgid ""
501"Render shaare description with Markdown syntax.<br><strong>Warning</" 557"Render shaare description with Markdown syntax.<br><strong>Warning</"
502"strong>:\n" 558"strong>:\n"
@@ -514,7 +570,7 @@ msgstr ""
514"Voir le <a href=\"https://github.com/shaarli/Shaarli/tree/master/plugins/" 570"Voir le <a href=\"https://github.com/shaarli/Shaarli/tree/master/plugins/"
515"markdown#html-rendering\">README</a>." 571"markdown#html-rendering\">README</a>."
516 572
517#: plugins/piwik/piwik.php:21 573#: plugins/piwik/piwik.php:23
518msgid "" 574msgid ""
519"Piwik plugin error: Please define PIWIK_URL and PIWIK_SITEID in the plugin " 575"Piwik plugin error: Please define PIWIK_URL and PIWIK_SITEID in the plugin "
520"administration page." 576"administration page."
@@ -522,27 +578,27 @@ msgstr ""
522"Erreur de l'extension Piwik : Merci de définir les paramètres PIWIK_URL et " 578"Erreur de l'extension Piwik : Merci de définir les paramètres PIWIK_URL et "
523"PIWIK_SITEID dans la page d'administration des extensions." 579"PIWIK_SITEID dans la page d'administration des extensions."
524 580
525#: plugins/piwik/piwik.php:70 581#: plugins/piwik/piwik.php:72
526msgid "A plugin that adds Piwik tracking code to Shaarli pages." 582msgid "A plugin that adds Piwik tracking code to Shaarli pages."
527msgstr "Ajoute le code de traçage de Piwik sur les pages de Shaarli." 583msgstr "Ajoute le code de traçage de Piwik sur les pages de Shaarli."
528 584
529#: plugins/piwik/piwik.php:71 585#: plugins/piwik/piwik.php:73
530msgid "Piwik URL" 586msgid "Piwik URL"
531msgstr "URL de Piwik" 587msgstr "URL de Piwik"
532 588
533#: plugins/piwik/piwik.php:72 589#: plugins/piwik/piwik.php:74
534msgid "Piwik site ID" 590msgid "Piwik site ID"
535msgstr "Site ID de Piwik" 591msgstr "Site ID de Piwik"
536 592
537#: plugins/playvideos/playvideos.php:22 593#: plugins/playvideos/playvideos.php:25
538msgid "Video player" 594msgid "Video player"
539msgstr "Lecteur vidéo" 595msgstr "Lecteur vidéo"
540 596
541#: plugins/playvideos/playvideos.php:25 597#: plugins/playvideos/playvideos.php:28
542msgid "Play Videos" 598msgid "Play Videos"
543msgstr "Jouer les vidéos" 599msgstr "Jouer les vidéos"
544 600
545#: plugins/playvideos/playvideos.php:56 601#: plugins/playvideos/playvideos.php:59
546msgid "Add a button in the toolbar allowing to watch all videos." 602msgid "Add a button in the toolbar allowing to watch all videos."
547msgstr "" 603msgstr ""
548"Ajoute un bouton dans la barre de menu pour regarder toutes les vidéos." 604"Ajoute un bouton dans la barre de menu pour regarder toutes les vidéos."
@@ -551,26 +607,26 @@ msgstr ""
551msgid "plugins/playvideos/jquery-1.11.2.min.js" 607msgid "plugins/playvideos/jquery-1.11.2.min.js"
552msgstr "" 608msgstr ""
553 609
554#: plugins/pubsubhubbub/pubsubhubbub.php:69 610#: plugins/pubsubhubbub/pubsubhubbub.php:72
555#, php-format 611#, php-format
556msgid "Could not publish to PubSubHubbub: %s" 612msgid "Could not publish to PubSubHubbub: %s"
557msgstr "Impossible de publier vers PubSubHubbub : %s" 613msgstr "Impossible de publier vers PubSubHubbub : %s"
558 614
559#: plugins/pubsubhubbub/pubsubhubbub.php:95 615#: plugins/pubsubhubbub/pubsubhubbub.php:99
560#, php-format 616#, php-format
561msgid "Could not post to %s" 617msgid "Could not post to %s"
562msgstr "Impossible de publier vers %s" 618msgstr "Impossible de publier vers %s"
563 619
564#: plugins/pubsubhubbub/pubsubhubbub.php:99 620#: plugins/pubsubhubbub/pubsubhubbub.php:103
565#, php-format 621#, php-format
566msgid "Bad response from the hub %s" 622msgid "Bad response from the hub %s"
567msgstr "Mauvaise réponse du hub %s" 623msgstr "Mauvaise réponse du hub %s"
568 624
569#: plugins/pubsubhubbub/pubsubhubbub.php:110 625#: plugins/pubsubhubbub/pubsubhubbub.php:114
570msgid "Enable PubSubHubbub feed publishing." 626msgid "Enable PubSubHubbub feed publishing."
571msgstr "Active la publication de flux vers PubSubHubbub." 627msgstr "Active la publication de flux vers PubSubHubbub."
572 628
573#: plugins/qrcode/qrcode.php:69 plugins/wallabag/wallabag.php:68 629#: plugins/qrcode/qrcode.php:72 plugins/wallabag/wallabag.php:68
574msgid "For each link, add a QRCode icon." 630msgid "For each link, add a QRCode icon."
575msgstr "Pour chaque lien, ajouter une icône de QRCode." 631msgstr "Pour chaque lien, ajouter une icône de QRCode."
576 632
@@ -595,19 +651,37 @@ msgid "Wallabag API version (1 or 2)"
595msgstr "Version de l'API Wallabag (1 ou 2)" 651msgstr "Version de l'API Wallabag (1 ou 2)"
596 652
597#: tests/LanguagesTest.php:214 tests/LanguagesTest.php:227 653#: tests/LanguagesTest.php:214 tests/LanguagesTest.php:227
598#: tests/languages/fr/LanguagesFrTest.php:160 654#: tests/languages/fr/LanguagesFrTest.php:159
599#: tests/languages/fr/LanguagesFrTest.php:173 655#: tests/languages/fr/LanguagesFrTest.php:172
656#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:85
600#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:85 657#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:85
601msgid "Search" 658msgid "Search"
602msgid_plural "Search" 659msgid_plural "Search"
603msgstr[0] "Rechercher" 660msgstr[0] "Rechercher"
604msgstr[1] "Rechercher" 661msgstr[1] "Rechercher"
605 662
663#: tmp/404.b91ef64efc3688266305ea9b42e5017e.rtpl.php:12
664msgid "Sorry, nothing to see here."
665msgstr "Désolé, il y a rien à voir ici."
666
606#: tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 667#: tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16
607msgid "URL or leave empty to post a note" 668msgid "URL or leave empty to post a note"
608msgstr "URL ou laisser vide pour créer une note" 669msgstr "URL ou laisser vide pour créer une note"
609 670
671#: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16
672msgid "Current password"
673msgstr "Mot de passe actuel"
674
675#: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19
676msgid "New password"
677msgstr "Nouveau mot de passe"
678
679#: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:23
680msgid "Change"
681msgstr "Changer"
682
610#: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 683#: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16
684#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:77
611msgid "Tag" 685msgid "Tag"
612msgstr "Tag" 686msgstr "Tag"
613 687
@@ -626,6 +700,8 @@ msgstr "Renommer"
626#: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:35 700#: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:35
627#: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:77 701#: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:77
628#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:171 702#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:171
703#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:145
704#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:145
629msgid "Delete" 705msgid "Delete"
630msgstr "Supprimer" 706msgstr "Supprimer"
631 707
@@ -638,32 +714,31 @@ msgid "tag list"
638msgstr "liste des tags" 714msgstr "liste des tags"
639 715
640#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:143 716#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:143
641#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:296 717#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:312
718#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:31
642msgid "All" 719msgid "All"
643msgstr "Tous" 720msgstr "Tous"
644 721
645#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:147 722#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:147
646#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:300 723#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:316
647msgid "Only common media hosts" 724msgid "Only common media hosts"
648msgstr "Seulement les hébergeurs de média connus" 725msgstr "Seulement les hébergeurs de média connus"
649 726
650#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:151 727#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:151
651#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:304 728#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:320
652msgid "None" 729msgid "None"
653msgstr "Aucune" 730msgstr "Aucune"
654 731
655#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:158 732#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:158
656#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:281 733#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:297
657msgid "You need to enable the extension <code>php-gd</code> to use thumbnails." 734msgid "You need to enable the extension <code>php-gd</code> to use thumbnails."
658msgstr "" 735msgstr ""
659"Vous devez activer l'extension <code>php-gd</code> pour utiliser les " 736"Vous devez activer l'extension <code>php-gd</code> pour utiliser les "
660"miniatures." 737"miniatures."
661 738
662#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:162 739#: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:162
663#, fuzzy
664#| msgid "Enable thumbnails"
665msgid "Synchonize thumbnails" 740msgid "Synchonize thumbnails"
666msgstr "Activer les miniatures" 741msgstr "Synchroniser les miniatures"
667 742
668#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 743#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29
669msgid "title" 744msgid "title"
@@ -682,18 +757,22 @@ msgid "Theme"
682msgstr "Thème" 757msgstr "Thème"
683 758
684#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:87 759#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:87
760#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:78
685msgid "Language" 761msgid "Language"
686msgstr "Langue" 762msgstr "Langue"
687 763
688#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:116 764#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:116
765#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:102
689msgid "Timezone" 766msgid "Timezone"
690msgstr "Fuseau horaire" 767msgstr "Fuseau horaire"
691 768
692#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117 769#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117
770#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:103
693msgid "Continent" 771msgid "Continent"
694msgstr "Continent" 772msgstr "Continent"
695 773
696#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117 774#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117
775#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:103
697msgid "City" 776msgid "City"
698msgstr "Ville" 777msgstr "Ville"
699 778
@@ -734,37 +813,51 @@ msgid "Do not show any links if the user is not logged in"
734msgstr "N'afficher aucun lien sans être connecté" 813msgstr "N'afficher aucun lien sans être connecté"
735 814
736#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:231 815#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:231
816#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:150
737msgid "Check updates" 817msgid "Check updates"
738msgstr "Vérifier les mises à jour" 818msgstr "Vérifier les mises à jour"
739 819
740#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:232 820#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:232
821#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:152
741msgid "Notify me when a new release is ready" 822msgid "Notify me when a new release is ready"
742msgstr "Me notifier lorsqu'une nouvelle version est disponible" 823msgstr "Me notifier lorsqu'une nouvelle version est disponible"
743 824
744#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:247 825#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:247
826msgid "Automatically retrieve description for new bookmarks"
827msgstr "Récupérer automatiquement la description"
828
829#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:248
830msgid "Shaarli will try to retrieve the description from meta HTML headers"
831msgstr ""
832"Shaarli essaiera de récupérer la description depuis les balises HTML meta "
833"dans les entêtes"
834
835#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:263
836#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:169
745msgid "Enable REST API" 837msgid "Enable REST API"
746msgstr "Activer l'API REST" 838msgstr "Activer l'API REST"
747 839
748#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:248 840#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:264
841#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:170
749msgid "Allow third party software to use Shaarli such as mobile application" 842msgid "Allow third party software to use Shaarli such as mobile application"
750msgstr "" 843msgstr ""
751"Permet aux applications tierces d'utiliser Shaarli, par exemple les " 844"Permet aux applications tierces d'utiliser Shaarli, par exemple les "
752"applications mobiles" 845"applications mobiles"
753 846
754#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:263 847#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:279
755msgid "API secret" 848msgid "API secret"
756msgstr "Clé d'API secrète" 849msgstr "Clé d'API secrète"
757 850
758#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:277 851#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:293
759msgid "Enable thumbnails" 852msgid "Enable thumbnails"
760msgstr "Activer les miniatures" 853msgstr "Activer les miniatures"
761 854
762#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:285 855#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:301
763#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:56 856#: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:56
764msgid "Synchronize thumbnails" 857msgid "Synchronize thumbnails"
765msgstr "Synchroniser les miniatures" 858msgstr "Synchroniser les miniatures"
766 859
767#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:312 860#: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:328
768#: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72 861#: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72
769#: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 862#: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139
770#: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:199 863#: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:199
@@ -824,6 +917,7 @@ msgid "Tags"
824msgstr "Tags" 917msgstr "Tags"
825 918
826#: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:57 919#: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:57
920#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
827#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:167 921#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:167
828msgid "Private" 922msgid "Private"
829msgstr "Privé" 923msgstr "Privé"
@@ -832,6 +926,99 @@ msgstr "Privé"
832msgid "Apply Changes" 926msgid "Apply Changes"
833msgstr "Appliquer les changements" 927msgstr "Appliquer les changements"
834 928
929#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16
930msgid "Export Database"
931msgstr "Exporter les données"
932
933#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24
934msgid "Selection"
935msgstr "Choisir"
936
937#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41
938msgid "Public"
939msgstr "Publics"
940
941#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:52
942msgid "Prepend note permalinks with this Shaarli instance's URL"
943msgstr "Préfixer les liens de note avec l'URL de l'instance de Shaarli"
944
945#: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:53
946msgid "Useful to import bookmarks in a web browser"
947msgstr "Utile pour importer les marques-pages dans un navigateur"
948
949#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16
950msgid "Import Database"
951msgstr "Importer des données"
952
953#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:23
954msgid "Maximum size allowed:"
955msgstr "Taille maximum autorisée :"
956
957#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29
958msgid "Visibility"
959msgstr "Visibilité"
960
961#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
962msgid "Use values from the imported file, default to public"
963msgstr ""
964"Utiliser les valeurs présentes dans le fichier d'import, public par défaut"
965
966#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41
967msgid "Import all bookmarks as private"
968msgstr "Importer tous les liens comme privés"
969
970#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46
971msgid "Import all bookmarks as public"
972msgstr "Importer tous les liens comme publics"
973
974#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:57
975msgid "Overwrite existing bookmarks"
976msgstr "Remplacer les liens existants"
977
978#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:58
979msgid "Duplicates based on URL"
980msgstr "Les doublons s'appuient sur les URL"
981
982#: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72
983msgid "Add default tags"
984msgstr "Ajouter des tags par défaut"
985
986#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22
987msgid "Install Shaarli"
988msgstr "Installation de Shaarli"
989
990#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:25
991msgid "It looks like it's the first time you run Shaarli. Please configure it."
992msgstr ""
993"Il semblerait que ça soit la première fois que vous lancez Shaarli. Merci de "
994"le configurer."
995
996#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:33
997#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30
998#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:165
999#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:165
1000msgid "Username"
1001msgstr "Nom d'utilisateur"
1002
1003#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48
1004#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:34
1005#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:166
1006#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:166
1007msgid "Password"
1008msgstr "Mot de passe"
1009
1010#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:63
1011msgid "Shaarli title"
1012msgstr "Titre du Shaarli"
1013
1014#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:69
1015msgid "My links"
1016msgstr "Mes liens"
1017
1018#: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:182
1019msgid "Install"
1020msgstr "Installer"
1021
835#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 1022#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14
836#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:79 1023#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:79
837msgid "shaare" 1024msgid "shaare"
@@ -847,11 +1034,13 @@ msgstr[0] "lien privé"
847msgstr[1] "liens privés" 1034msgstr[1] "liens privés"
848 1035
849#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30 1036#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30
1037#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:121
850#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:121 1038#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:121
851msgid "Search text" 1039msgid "Search text"
852msgstr "Recherche texte" 1040msgstr "Recherche texte"
853 1041
854#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:37 1042#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:37
1043#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:128
855#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:128 1044#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:128
856#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 1045#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36
857#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:64 1046#: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:64
@@ -892,7 +1081,8 @@ msgid "without any tag"
892msgstr "sans tag" 1081msgstr "sans tag"
893 1082
894#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:173 1083#: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:173
895#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:42 1084#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:43
1085#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43
896msgid "Fold" 1086msgid "Fold"
897msgstr "Replier" 1087msgstr "Replier"
898 1088
@@ -916,29 +1106,42 @@ msgstr "Changer statut épinglé"
916msgid "Sticky" 1106msgid "Sticky"
917msgstr "Épinglé" 1107msgstr "Épinglé"
918 1108
1109#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:7
919#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:7 1110#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:7
920msgid "Filters" 1111msgid "Filters"
921msgstr "Filtres" 1112msgstr "Filtres"
922 1113
1114#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:12
923#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:12 1115#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:12
924msgid "Only display private links" 1116msgid "Only display private links"
925msgstr "Afficher uniquement les liens privés" 1117msgstr "Afficher uniquement les liens privés"
926 1118
1119#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15
927#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:15 1120#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:15
928msgid "Only display public links" 1121msgid "Only display public links"
929msgstr "Afficher uniquement les liens publics" 1122msgstr "Afficher uniquement les liens publics"
930 1123
1124#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:20
931#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:20 1125#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:20
932msgid "Filter untagged links" 1126msgid "Filter untagged links"
933msgstr "Filtrer par liens privés" 1127msgstr "Filtrer par liens privés"
934 1128
1129#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24
935#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:24 1130#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:24
936#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:76 1131msgid "Select all"
937#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43 1132msgstr "Tout sélectionner"
1133
1134#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:27
1135#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:79
1136#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:27
1137#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:79
1138#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44
1139#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:44
938msgid "Fold all" 1140msgid "Fold all"
939msgstr "Replier tout" 1141msgstr "Replier tout"
940 1142
941#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:69 1143#: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72
1144#: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:72
942msgid "Links per page" 1145msgid "Links per page"
943msgstr "Liens par page" 1146msgstr "Liens par page"
944 1147
@@ -949,57 +1152,70 @@ msgstr ""
949"Vous avez été banni après trop d'échecs d'authentification. Merci de " 1152"Vous avez été banni après trop d'échecs d'authentification. Merci de "
950"réessayer plus tard." 1153"réessayer plus tard."
951 1154
952#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30
953#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:151
954msgid "Username"
955msgstr "Nom d'utilisateur"
956
957#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:34
958#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:152
959msgid "Password"
960msgstr "Mot de passe"
961
962#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 1155#: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41
963#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:155 1156#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:169
1157#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:169
964msgid "Remember me" 1158msgid "Remember me"
965msgstr "Rester connecté" 1159msgstr "Rester connecté"
966 1160
967#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:14 1161#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15
968#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 1162#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:49
1163#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15
1164#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:49
969msgid "by the Shaarli community" 1165msgid "by the Shaarli community"
970msgstr "par la communauté Shaarli" 1166msgstr "par la communauté Shaarli"
971 1167
972#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 1168#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16
1169#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:16
973msgid "Documentation" 1170msgid "Documentation"
974msgstr "Documentation" 1171msgstr "Documentation"
975 1172
976#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:44 1173#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:45
1174#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:45
977msgid "Expand" 1175msgid "Expand"
978msgstr "Déplier" 1176msgstr "Déplier"
979 1177
980#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:45 1178#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46
1179#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:46
981msgid "Expand all" 1180msgid "Expand all"
982msgstr "Déplier tout" 1181msgstr "Déplier tout"
983 1182
984#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:46 1183#: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:47
1184#: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:47
985msgid "Are you sure you want to delete this link?" 1185msgid "Are you sure you want to delete this link?"
986msgstr "Êtes-vous sûr de vouloir supprimer ce lien ?" 1186msgstr "Êtes-vous sûr de vouloir supprimer ce lien ?"
987 1187
1188#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:65
1189#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:90
988#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:65 1190#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:65
989#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:90 1191#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:90
990msgid "RSS Feed" 1192msgid "RSS Feed"
991msgstr "Flux RSS" 1193msgstr "Flux RSS"
992 1194
1195#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:70
1196#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:106
993#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:70 1197#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:70
994#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:106 1198#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:106
995msgid "Logout" 1199msgid "Logout"
996msgstr "Déconnexion" 1200msgstr "Déconnexion"
997 1201
998#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:173 1202#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:150
1203#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:150
1204msgid "Set public"
1205msgstr "Rendre public"
1206
1207#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:155
1208#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:155
1209msgid "Set private"
1210msgstr "Rendre privé"
1211
1212#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:187
1213#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:187
999msgid "is available" 1214msgid "is available"
1000msgstr "est disponible" 1215msgstr "est disponible"
1001 1216
1002#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:180 1217#: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:194
1218#: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:194
1003msgid "Error" 1219msgid "Error"
1004msgstr "Erreur" 1220msgstr "Erreur"
1005 1221
@@ -1098,18 +1314,22 @@ msgstr "tags"
1098msgid "List all links with those tags" 1314msgid "List all links with those tags"
1099msgstr "Lister tous les liens avec ces tags" 1315msgstr "Lister tous les liens avec ces tags"
1100 1316
1317#: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:3
1101#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:3 1318#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:3
1102msgid "Sort by:" 1319msgid "Sort by:"
1103msgstr "Trier par :" 1320msgstr "Trier par :"
1104 1321
1322#: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:5
1105#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:5 1323#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:5
1106msgid "Cloud" 1324msgid "Cloud"
1107msgstr "Nuage" 1325msgstr "Nuage"
1108 1326
1327#: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:6
1109#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:6 1328#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:6
1110msgid "Most used" 1329msgid "Most used"
1111msgstr "Plus utilisés" 1330msgstr "Plus utilisés"
1112 1331
1332#: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:7
1113#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:7 1333#: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:7
1114msgid "Alphabetical" 1334msgid "Alphabetical"
1115msgstr "Alphabétique" 1335msgstr "Alphabétique"
@@ -1237,79 +1457,6 @@ msgstr ""
1237"Glisser ce lien dans votre barre de favoris ou cliquer droit dessus et « " 1457"Glisser ce lien dans votre barre de favoris ou cliquer droit dessus et « "
1238"Ajouter aux favoris »" 1458"Ajouter aux favoris »"
1239 1459
1240#~ msgid "Sorry, nothing to see here."
1241#~ msgstr "Désolé, il y a rien à voir ici."
1242
1243#~ msgid "Current password"
1244#~ msgstr "Mot de passe actuel"
1245
1246#~ msgid "New password"
1247#~ msgstr "Nouveau mot de passe"
1248
1249#~ msgid "Change"
1250#~ msgstr "Changer"
1251
1252#~ msgid "Export Database"
1253#~ msgstr "Exporter les données"
1254
1255#~ msgid "Selection"
1256#~ msgstr "Choisir"
1257
1258#~ msgid "Public"
1259#~ msgstr "Publics"
1260
1261#~ msgid "Prepend note permalinks with this Shaarli instance's URL"
1262#~ msgstr "Préfixer les liens de note avec l'URL de l'instance de Shaarli"
1263
1264#~ msgid "Useful to import bookmarks in a web browser"
1265#~ msgstr "Utile pour importer les marques-pages dans un navigateur"
1266
1267#~ msgid "Import Database"
1268#~ msgstr "Importer des données"
1269
1270#~ msgid "Maximum size allowed:"
1271#~ msgstr "Taille maximum autorisée :"
1272
1273#~ msgid "Visibility"
1274#~ msgstr "Visibilité"
1275
1276#~ msgid "Use values from the imported file, default to public"
1277#~ msgstr ""
1278#~ "Utiliser les valeurs présentes dans le fichier d'import, public par défaut"
1279
1280#~ msgid "Import all bookmarks as private"
1281#~ msgstr "Importer tous les liens comme privés"
1282
1283#~ msgid "Import all bookmarks as public"
1284#~ msgstr "Importer tous les liens comme publics"
1285
1286#~ msgid "Overwrite existing bookmarks"
1287#~ msgstr "Remplacer les liens existants"
1288
1289#~ msgid "Duplicates based on URL"
1290#~ msgstr "Les doublons s'appuient sur les URL"
1291
1292#~ msgid "Add default tags"
1293#~ msgstr "Ajouter des tags par défaut"
1294
1295#~ msgid "Install Shaarli"
1296#~ msgstr "Installation de Shaarli"
1297
1298#~ msgid ""
1299#~ "It looks like it's the first time you run Shaarli. Please configure it."
1300#~ msgstr ""
1301#~ "Il semblerait que ça soit la première fois que vous lancez Shaarli. Merci "
1302#~ "de le configurer."
1303
1304#~ msgid "Shaarli title"
1305#~ msgstr "Titre du Shaarli"
1306
1307#~ msgid "My links"
1308#~ msgstr "Mes liens"
1309
1310#~ msgid "Install"
1311#~ msgstr "Installer"
1312
1313#~ msgid "" 1460#~ msgid ""
1314#~ "You need to browse your Shaarli over <strong>HTTPS</strong> to use this " 1461#~ "You need to browse your Shaarli over <strong>HTTPS</strong> to use this "
1315#~ "functionality." 1462#~ "functionality."
diff --git a/index.php b/index.php
index 4deed197..1f979d3b 100644
--- a/index.php
+++ b/index.php
@@ -56,31 +56,33 @@ require_once 'inc/rain.tpl.class.php';
56require_once __DIR__ . '/vendor/autoload.php'; 56require_once __DIR__ . '/vendor/autoload.php';
57 57
58// Shaarli library 58// Shaarli library
59require_once 'application/ApplicationUtils.php'; 59require_once 'application/bookmark/LinkUtils.php';
60require_once 'application/Cache.php';
61require_once 'application/CachedPage.php';
62require_once 'application/config/ConfigPlugin.php'; 60require_once 'application/config/ConfigPlugin.php';
63require_once 'application/FeedBuilder.php'; 61require_once 'application/feed/Cache.php';
62require_once 'application/http/HttpUtils.php';
63require_once 'application/http/UrlUtils.php';
64require_once 'application/updater/UpdaterUtils.php';
64require_once 'application/FileUtils.php'; 65require_once 'application/FileUtils.php';
65require_once 'application/History.php';
66require_once 'application/HttpUtils.php';
67require_once 'application/LinkDB.php';
68require_once 'application/LinkFilter.php';
69require_once 'application/LinkUtils.php';
70require_once 'application/NetscapeBookmarkUtils.php';
71require_once 'application/PageBuilder.php';
72require_once 'application/TimeZone.php'; 66require_once 'application/TimeZone.php';
73require_once 'application/Url.php';
74require_once 'application/Utils.php'; 67require_once 'application/Utils.php';
75require_once 'application/PluginManager.php'; 68
76require_once 'application/Router.php'; 69use \Shaarli\ApplicationUtils;
77require_once 'application/Updater.php'; 70use \Shaarli\Bookmark\Exception\LinkNotFoundException;
71use \Shaarli\Bookmark\LinkDB;
78use \Shaarli\Config\ConfigManager; 72use \Shaarli\Config\ConfigManager;
73use \Shaarli\Feed\CachedPage;
74use \Shaarli\Feed\FeedBuilder;
75use \Shaarli\History;
79use \Shaarli\Languages; 76use \Shaarli\Languages;
77use \Shaarli\Netscape\NetscapeBookmarkUtils;
78use \Shaarli\Plugin\PluginManager;
79use \Shaarli\Render\PageBuilder;
80use \Shaarli\Render\ThemeUtils;
81use \Shaarli\Router;
80use \Shaarli\Security\LoginManager; 82use \Shaarli\Security\LoginManager;
81use \Shaarli\Security\SessionManager; 83use \Shaarli\Security\SessionManager;
82use \Shaarli\ThemeUtils;
83use \Shaarli\Thumbnailer; 84use \Shaarli\Thumbnailer;
85use \Shaarli\Updater\Updater;
84 86
85// Ensure the PHP version is supported 87// Ensure the PHP version is supported
86try { 88try {
@@ -123,7 +125,7 @@ if (isset($_COOKIE['shaarli']) && !SessionManager::checkId($_COOKIE['shaarli']))
123 125
124$conf = new ConfigManager(); 126$conf = new ConfigManager();
125$sessionManager = new SessionManager($_SESSION, $conf); 127$sessionManager = new SessionManager($_SESSION, $conf);
126$loginManager = new LoginManager($GLOBALS, $conf, $sessionManager); 128$loginManager = new LoginManager($conf, $sessionManager);
127$loginManager->generateStaySignedInToken($_SERVER['REMOTE_ADDR']); 129$loginManager->generateStaySignedInToken($_SERVER['REMOTE_ADDR']);
128$clientIpId = client_ip_id($_SERVER); 130$clientIpId = client_ip_id($_SERVER);
129 131
@@ -310,9 +312,7 @@ function showDailyRSS($conf, $loginManager)
310 $LINKSDB = new LinkDB( 312 $LINKSDB = new LinkDB(
311 $conf->get('resource.datastore'), 313 $conf->get('resource.datastore'),
312 $loginManager->isLoggedIn(), 314 $loginManager->isLoggedIn(),
313 $conf->get('privacy.hide_public_links'), 315 $conf->get('privacy.hide_public_links')
314 $conf->get('redirector.url'),
315 $conf->get('redirector.encode_url')
316 ); 316 );
317 317
318 /* Some Shaarlies may have very few links, so we need to look 318 /* Some Shaarlies may have very few links, so we need to look
@@ -354,13 +354,9 @@ function showDailyRSS($conf, $loginManager)
354 354
355 // We pre-format some fields for proper output. 355 // We pre-format some fields for proper output.
356 foreach ($links as &$link) { 356 foreach ($links as &$link) {
357 $link['formatedDescription'] = format_description( 357 $link['formatedDescription'] = format_description($link['description']);
358 $link['description'],
359 $conf->get('redirector.url'),
360 $conf->get('redirector.encode_url')
361 );
362 $link['timestamp'] = $link['created']->getTimestamp(); 358 $link['timestamp'] = $link['created']->getTimestamp();
363 if (startsWith($link['url'], '?')) { 359 if (is_note($link['url'])) {
364 $link['url'] = index_url($_SERVER) . $link['url']; // make permalink URL absolute 360 $link['url'] = index_url($_SERVER) . $link['url']; // make permalink URL absolute
365 } 361 }
366 } 362 }
@@ -396,9 +392,16 @@ function showDailyRSS($conf, $loginManager)
396 */ 392 */
397function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager, $loginManager) 393function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager, $loginManager)
398{ 394{
399 $day = date('Ymd', strtotime('-1 day')); // Yesterday, in format YYYYMMDD.
400 if (isset($_GET['day'])) { 395 if (isset($_GET['day'])) {
401 $day = $_GET['day']; 396 $day = $_GET['day'];
397 if ($day === date('Ymd', strtotime('now'))) {
398 $pageBuilder->assign('dayDesc', t('Today'));
399 } elseif ($day === date('Ymd', strtotime('-1 days'))) {
400 $pageBuilder->assign('dayDesc', t('Yesterday'));
401 }
402 } else {
403 $day = date('Ymd', strtotime('now')); // Today, in format YYYYMMDD.
404 $pageBuilder->assign('dayDesc', t('Today'));
402 } 405 }
403 406
404 $days = $LINKSDB->days(); 407 $days = $LINKSDB->days();
@@ -431,11 +434,7 @@ function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager, $loginManager)
431 $taglist = explode(' ', $link['tags']); 434 $taglist = explode(' ', $link['tags']);
432 uasort($taglist, 'strcasecmp'); 435 uasort($taglist, 'strcasecmp');
433 $linksToDisplay[$key]['taglist']=$taglist; 436 $linksToDisplay[$key]['taglist']=$taglist;
434 $linksToDisplay[$key]['formatedDescription'] = format_description( 437 $linksToDisplay[$key]['formatedDescription'] = format_description($link['description']);
435 $link['description'],
436 $conf->get('redirector.url'),
437 $conf->get('redirector.encode_url')
438 );
439 $linksToDisplay[$key]['timestamp'] = $link['created']->getTimestamp(); 438 $linksToDisplay[$key]['timestamp'] = $link['created']->getTimestamp();
440 } 439 }
441 440
@@ -1016,6 +1015,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1016 $conf->set('general.timezone', $tz); 1015 $conf->set('general.timezone', $tz);
1017 $conf->set('general.title', escape($_POST['title'])); 1016 $conf->set('general.title', escape($_POST['title']));
1018 $conf->set('general.header_link', escape($_POST['titleLink'])); 1017 $conf->set('general.header_link', escape($_POST['titleLink']));
1018 $conf->set('general.retrieve_description', !empty($_POST['retrieveDescription']));
1019 $conf->set('resource.theme', escape($_POST['theme'])); 1019 $conf->set('resource.theme', escape($_POST['theme']));
1020 $conf->set('security.session_protection_disabled', !empty($_POST['disablesessionprotection'])); 1020 $conf->set('security.session_protection_disabled', !empty($_POST['disablesessionprotection']));
1021 $conf->set('privacy.default_private_links', !empty($_POST['privateLinkByDefault'])); 1021 $conf->set('privacy.default_private_links', !empty($_POST['privateLinkByDefault']));
@@ -1064,6 +1064,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1064 ); 1064 );
1065 $PAGE->assign('continents', $continents); 1065 $PAGE->assign('continents', $continents);
1066 $PAGE->assign('cities', $cities); 1066 $PAGE->assign('cities', $cities);
1067 $PAGE->assign('retrieve_description', $conf->get('general.retrieve_description'));
1067 $PAGE->assign('private_links_default', $conf->get('privacy.default_private_links', false)); 1068 $PAGE->assign('private_links_default', $conf->get('privacy.default_private_links', false));
1068 $PAGE->assign('session_protection_disabled', $conf->get('security.session_protection_disabled', false)); 1069 $PAGE->assign('session_protection_disabled', $conf->get('security.session_protection_disabled', false));
1069 $PAGE->assign('enable_rss_permalinks', $conf->get('feed.rss_permalinks', false)); 1070 $PAGE->assign('enable_rss_permalinks', $conf->get('feed.rss_permalinks', false));
@@ -1072,7 +1073,6 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1072 $PAGE->assign('api_enabled', $conf->get('api.enabled', true)); 1073 $PAGE->assign('api_enabled', $conf->get('api.enabled', true));
1073 $PAGE->assign('api_secret', $conf->get('api.secret')); 1074 $PAGE->assign('api_secret', $conf->get('api.secret'));
1074 $PAGE->assign('languages', Languages::getAvailableLanguages()); 1075 $PAGE->assign('languages', Languages::getAvailableLanguages());
1075 $PAGE->assign('language', $conf->get('translation.language'));
1076 $PAGE->assign('gd_enabled', extension_loaded('gd')); 1076 $PAGE->assign('gd_enabled', extension_loaded('gd'));
1077 $PAGE->assign('thumbnails_mode', $conf->get('thumbnails.mode', Thumbnailer::MODE_NONE)); 1077 $PAGE->assign('thumbnails_mode', $conf->get('thumbnails.mode', Thumbnailer::MODE_NONE));
1078 $PAGE->assign('pagetitle', t('Configure') .' - '. $conf->get('general.title', 'Shaarli')); 1078 $PAGE->assign('pagetitle', t('Configure') .' - '. $conf->get('general.title', 'Shaarli'));
@@ -1126,22 +1126,24 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1126 1126
1127 // lf_id should only be present if the link exists. 1127 // lf_id should only be present if the link exists.
1128 $id = isset($_POST['lf_id']) ? intval(escape($_POST['lf_id'])) : $LINKSDB->getNextId(); 1128 $id = isset($_POST['lf_id']) ? intval(escape($_POST['lf_id'])) : $LINKSDB->getNextId();
1129 $link['id'] = $id;
1129 // Linkdate is kept here to: 1130 // Linkdate is kept here to:
1130 // - use the same permalink for notes as they're displayed when creating them 1131 // - use the same permalink for notes as they're displayed when creating them
1131 // - let users hack creation date of their posts 1132 // - let users hack creation date of their posts
1132 // See: https://shaarli.readthedocs.io/en/master/guides/various-hacks/#changing-the-timestamp-for-a-shaare 1133 // See: https://shaarli.readthedocs.io/en/master/guides/various-hacks/#changing-the-timestamp-for-a-shaare
1133 $linkdate = escape($_POST['lf_linkdate']); 1134 $linkdate = escape($_POST['lf_linkdate']);
1135 $link['created'] = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $linkdate);
1134 if (isset($LINKSDB[$id])) { 1136 if (isset($LINKSDB[$id])) {
1135 // Edit 1137 // Edit
1136 $created = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $linkdate); 1138 $link['updated'] = new DateTime();
1137 $updated = new DateTime(); 1139 $link['shorturl'] = $LINKSDB[$id]['shorturl'];
1138 $shortUrl = $LINKSDB[$id]['shorturl']; 1140 $link['sticky'] = isset($LINKSDB[$id]['sticky']) ? $LINKSDB[$id]['sticky'] : false;
1139 $new = false; 1141 $new = false;
1140 } else { 1142 } else {
1141 // New link 1143 // New link
1142 $created = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $linkdate); 1144 $link['updated'] = null;
1143 $updated = null; 1145 $link['shorturl'] = link_small_hash($link['created'], $id);
1144 $shortUrl = link_small_hash($created, $id); 1146 $link['sticky'] = false;
1145 $new = true; 1147 $new = true;
1146 } 1148 }
1147 1149
@@ -1157,24 +1159,22 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1157 } 1159 }
1158 $url = whitelist_protocols(trim($_POST['lf_url']), $conf->get('security.allowed_protocols')); 1160 $url = whitelist_protocols(trim($_POST['lf_url']), $conf->get('security.allowed_protocols'));
1159 1161
1160 $link = array( 1162 $link = array_merge($link, [
1161 'id' => $id,
1162 'title' => trim($_POST['lf_title']), 1163 'title' => trim($_POST['lf_title']),
1163 'url' => $url, 1164 'url' => $url,
1164 'description' => $_POST['lf_description'], 1165 'description' => $_POST['lf_description'],
1165 'private' => (isset($_POST['lf_private']) ? 1 : 0), 1166 'private' => (isset($_POST['lf_private']) ? 1 : 0),
1166 'created' => $created,
1167 'updated' => $updated,
1168 'tags' => str_replace(',', ' ', $tags), 1167 'tags' => str_replace(',', ' ', $tags),
1169 'shorturl' => $shortUrl, 1168 ]);
1170 );
1171 1169
1172 // If title is empty, use the URL as title. 1170 // If title is empty, use the URL as title.
1173 if ($link['title'] == '') { 1171 if ($link['title'] == '') {
1174 $link['title'] = $link['url']; 1172 $link['title'] = $link['url'];
1175 } 1173 }
1176 1174
1177 if ($conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE) { 1175 if ($conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE
1176 && ! is_note($link['url'])
1177 ) {
1178 $thumbnailer = new Thumbnailer($conf); 1178 $thumbnailer = new Thumbnailer($conf);
1179 $link['thumbnail'] = $thumbnailer->get($url); 1179 $link['thumbnail'] = $thumbnailer->get($url);
1180 } 1180 }
@@ -1273,6 +1273,51 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1273 exit; 1273 exit;
1274 } 1274 }
1275 1275
1276 // -------- User clicked either "Set public" or "Set private" bulk operation
1277 if ($targetPage == Router::$PAGE_CHANGE_VISIBILITY) {
1278 if (! $sessionManager->checkToken($_GET['token'])) {
1279 die(t('Wrong token.'));
1280 }
1281
1282 $ids = trim($_GET['ids']);
1283 if (strpos($ids, ' ') !== false) {
1284 // multiple, space-separated ids provided
1285 $ids = array_values(array_filter(preg_split('/\s+/', escape($ids))));
1286 } else {
1287 // only a single id provided
1288 $ids = [$ids];
1289 }
1290
1291 // assert at least one id is given
1292 if (!count($ids)) {
1293 die('no id provided');
1294 }
1295 // assert that the visibility is valid
1296 if (!isset($_GET['newVisibility']) || !in_array($_GET['newVisibility'], ['public', 'private'])) {
1297 die('invalid visibility');
1298 } else {
1299 $private = $_GET['newVisibility'] === 'private';
1300 }
1301 foreach ($ids as $id) {
1302 $id = (int) escape($id);
1303 $link = $LINKSDB[$id];
1304 $link['private'] = $private;
1305 $pluginManager->executeHooks('save_link', $link);
1306 $LINKSDB[$id] = $link;
1307 }
1308 $LINKSDB->save($conf->get('resource.page_cache')); // save to disk
1309
1310 $location = '?';
1311 if (isset($_SERVER['HTTP_REFERER'])) {
1312 $location = generateLocation(
1313 $_SERVER['HTTP_REFERER'],
1314 $_SERVER['HTTP_HOST']
1315 );
1316 }
1317 header('Location: ' . $location); // After deleting the link, redirect to appropriate location
1318 exit;
1319 }
1320
1276 // -------- User clicked the "EDIT" button on a link: Display link edit form. 1321 // -------- User clicked the "EDIT" button on a link: Display link edit form.
1277 if (isset($_GET['edit_link'])) { 1322 if (isset($_GET['edit_link'])) {
1278 $id = (int) escape($_GET['edit_link']); 1323 $id = (int) escape($_GET['edit_link']);
@@ -1319,13 +1364,14 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1319 // If this is an HTTP(S) link, we try go get the page to extract 1364 // If this is an HTTP(S) link, we try go get the page to extract
1320 // the title (otherwise we will to straight to the edit form.) 1365 // the title (otherwise we will to straight to the edit form.)
1321 if (empty($title) && strpos(get_url_scheme($url), 'http') !== false) { 1366 if (empty($title) && strpos(get_url_scheme($url), 'http') !== false) {
1367 $retrieveDescription = $conf->get('general.retrieve_description');
1322 // Short timeout to keep the application responsive 1368 // Short timeout to keep the application responsive
1323 // The callback will fill $charset and $title with data from the downloaded page. 1369 // The callback will fill $charset and $title with data from the downloaded page.
1324 get_http_response( 1370 get_http_response(
1325 $url, 1371 $url,
1326 $conf->get('general.download_timeout', 30), 1372 $conf->get('general.download_timeout', 30),
1327 $conf->get('general.download_max_size', 4194304), 1373 $conf->get('general.download_max_size', 4194304),
1328 get_curl_download_callback($charset, $title) 1374 get_curl_download_callback($charset, $title, $description, $tags, $retrieveDescription)
1329 ); 1375 );
1330 if (! empty($title) && strtolower($charset) != 'utf-8') { 1376 if (! empty($title) && strtolower($charset) != 'utf-8') {
1331 $title = mb_convert_encoding($title, 'utf-8', $charset); 1377 $title = mb_convert_encoding($title, 'utf-8', $charset);
@@ -1519,6 +1565,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1519 if ($targetPage == Router::$PAGE_SAVE_PLUGINSADMIN) { 1565 if ($targetPage == Router::$PAGE_SAVE_PLUGINSADMIN) {
1520 try { 1566 try {
1521 if (isset($_POST['parameters_form'])) { 1567 if (isset($_POST['parameters_form'])) {
1568 $pluginManager->executeHooks('save_plugin_parameters', $_POST);
1522 unset($_POST['parameters_form']); 1569 unset($_POST['parameters_form']);
1523 foreach ($_POST as $param => $value) { 1570 foreach ($_POST as $param => $value) {
1524 $conf->set('plugins.'. $param, escape($value)); 1571 $conf->set('plugins.'. $param, escape($value));
@@ -1558,7 +1605,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager,
1558 $ids = []; 1605 $ids = [];
1559 foreach ($LINKSDB as $link) { 1606 foreach ($LINKSDB as $link) {
1560 // A note or not HTTP(S) 1607 // A note or not HTTP(S)
1561 if ($link['url'][0] === '?' || ! startsWith(strtolower($link['url']), 'http')) { 1608 if (is_note($link['url']) || ! startsWith(strtolower($link['url']), 'http')) {
1562 continue; 1609 continue;
1563 } 1610 }
1564 $ids[] = $link['id']; 1611 $ids[] = $link['id'];
@@ -1662,11 +1709,7 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager)
1662 $linkDisp = array(); 1709 $linkDisp = array();
1663 while ($i<$end && $i<count($keys)) { 1710 while ($i<$end && $i<count($keys)) {
1664 $link = $linksToDisplay[$keys[$i]]; 1711 $link = $linksToDisplay[$keys[$i]];
1665 $link['description'] = format_description( 1712 $link['description'] = format_description($link['description']);
1666 $link['description'],
1667 $conf->get('redirector.url'),
1668 $conf->get('redirector.encode_url')
1669 );
1670 $classLi = ($i % 2) != 0 ? '' : 'publicLinkHightLight'; 1713 $classLi = ($i % 2) != 0 ? '' : 'publicLinkHightLight';
1671 $link['class'] = $link['private'] == 0 ? $classLi : 'private'; 1714 $link['class'] = $link['private'] == 0 ? $classLi : 'private';
1672 $link['timestamp'] = $link['created']->getTimestamp(); 1715 $link['timestamp'] = $link['created']->getTimestamp();
@@ -1727,7 +1770,6 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager)
1727 'search_term' => $searchterm, 1770 'search_term' => $searchterm,
1728 'search_tags' => $searchtags, 1771 'search_tags' => $searchtags,
1729 'visibility' => ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '', 1772 'visibility' => ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '',
1730 'redirector' => $conf->get('redirector.url'), // Optional redirector URL.
1731 'links' => $linkDisp, 1773 'links' => $linkDisp,
1732 ); 1774 );
1733 1775
@@ -1877,9 +1919,7 @@ try {
1877$linkDb = new LinkDB( 1919$linkDb = new LinkDB(
1878 $conf->get('resource.datastore'), 1920 $conf->get('resource.datastore'),
1879 $loginManager->isLoggedIn(), 1921 $loginManager->isLoggedIn(),
1880 $conf->get('privacy.hide_public_links'), 1922 $conf->get('privacy.hide_public_links')
1881 $conf->get('redirector.url'),
1882 $conf->get('redirector.encode_url')
1883); 1923);
1884 1924
1885$container = new \Slim\Container(); 1925$container = new \Slim\Container();
@@ -1902,7 +1942,7 @@ $app->group('/api/v1', function () {
1902 $this->put('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:putTag')->setName('putTag'); 1942 $this->put('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:putTag')->setName('putTag');
1903 $this->delete('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:deleteTag')->setName('deleteTag'); 1943 $this->delete('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:deleteTag')->setName('deleteTag');
1904 1944
1905 $this->get('/history', '\Shaarli\Api\Controllers\History:getHistory')->setName('getHistory'); 1945 $this->get('/history', '\Shaarli\Api\Controllers\HistoryController:getHistory')->setName('getHistory');
1906})->add('\Shaarli\Api\ApiMiddleware'); 1946})->add('\Shaarli\Api\ApiMiddleware');
1907 1947
1908$response = $app->run(true); 1948$response = $app->run(true);
diff --git a/package.json b/package.json
index 3dd1e0fc..f3d9b51e 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
6 "dependencies": { 6 "dependencies": {
7 "awesomplete": "^1.1.2", 7 "awesomplete": "^1.1.2",
8 "blazy": "^1.8.2", 8 "blazy": "^1.8.2",
9 "font-awesome": "^4.7.0", 9 "fork-awesome": "^1.1.7",
10 "pure-extras": "^1.0.0", 10 "pure-extras": "^1.0.0",
11 "purecss": "^1.0.0" 11 "purecss": "^1.0.0"
12 }, 12 },
@@ -21,7 +21,7 @@
21 "eslint-plugin-import": "^2.8.0", 21 "eslint-plugin-import": "^2.8.0",
22 "extract-text-webpack-plugin": "^3.0.2", 22 "extract-text-webpack-plugin": "^3.0.2",
23 "file-loader": "^1.1.6", 23 "file-loader": "^1.1.6",
24 "node-sass": "^4.7.2", 24 "node-sass": "^4.12.0",
25 "sass-lint": "^1.12.1", 25 "sass-lint": "^1.12.1",
26 "sass-loader": "^6.0.6", 26 "sass-loader": "^6.0.6",
27 "style-loader": "^0.19.1", 27 "style-loader": "^0.19.1",
diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml
new file mode 100644
index 00000000..3878550e
--- /dev/null
+++ b/phpdoc.dist.xml
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="UTF-8" ?>
2<phpdoc>
3 <title><![CDATA[Shaarli API Reference]]></title>
4 <parser>
5 <encoding>utf8</encoding>
6 <markers>
7 <item>FIXME</item>
8 <item>TODO</item>
9 <item>WIP</item>
10 </markers>
11 <target>doc/phpdoc</target>
12 </parser>
13 <transformer>
14 <target>doc/phpdoc</target>
15 </transformer>
16 <files>
17 <file>index.php</file>
18 <directory>application</directory>
19 <directory>plugins</directory>
20 </files>
21</phpdoc>
diff --git a/plugins/addlink_toolbar/addlink_toolbar.php b/plugins/addlink_toolbar/addlink_toolbar.php
index 8c05a231..8bf4ed46 100644
--- a/plugins/addlink_toolbar/addlink_toolbar.php
+++ b/plugins/addlink_toolbar/addlink_toolbar.php
@@ -5,6 +5,8 @@
5 * Adds the addlink input on the linklist page. 5 * Adds the addlink input on the linklist page.
6 */ 6 */
7 7
8use Shaarli\Router;
9
8/** 10/**
9 * When linklist is displayed, add play videos to header's toolbar. 11 * When linklist is displayed, add play videos to header's toolbar.
10 * 12 *
diff --git a/plugins/archiveorg/archiveorg.php b/plugins/archiveorg/archiveorg.php
index 5dcea5a6..0ee1c73c 100644
--- a/plugins/archiveorg/archiveorg.php
+++ b/plugins/archiveorg/archiveorg.php
@@ -5,6 +5,8 @@
5 * Add an icon in the link list for archive.org. 5 * Add an icon in the link list for archive.org.
6 */ 6 */
7 7
8use Shaarli\Plugin\PluginManager;
9
8/** 10/**
9 * Add archive.org icon to link_plugin when rendering linklist. 11 * Add archive.org icon to link_plugin when rendering linklist.
10 * 12 *
diff --git a/plugins/default_colors/default_colors.css.template b/plugins/default_colors/default_colors.css.template
new file mode 100644
index 00000000..87e22a08
--- /dev/null
+++ b/plugins/default_colors/default_colors.css.template
@@ -0,0 +1,3 @@
1:root {
2%s
3}
diff --git a/plugins/default_colors/default_colors.meta b/plugins/default_colors/default_colors.meta
new file mode 100644
index 00000000..108962c6
--- /dev/null
+++ b/plugins/default_colors/default_colors.meta
@@ -0,0 +1,5 @@
1description="Override default theme colors. Use any CSS valid color."
2parameters="DEFAULT_COLORS_MAIN;DEFAULT_COLORS_BACKGROUND;DEFAULT_COLORS_DARK_MAIN"
3parameter.DEFAULT_COLORS_MAIN="Main color (navbar green)"
4parameter.DEFAULT_COLORS_BACKGROUND="Background color (light grey)"
5parameter.DEFAULT_COLORS_DARK_MAIN="Dark main color (e.g. visited links)"
diff --git a/plugins/default_colors/default_colors.php b/plugins/default_colors/default_colors.php
new file mode 100644
index 00000000..1928cc9f
--- /dev/null
+++ b/plugins/default_colors/default_colors.php
@@ -0,0 +1,111 @@
1<?php
2
3/**
4 * Plugin default_colors.
5 *
6 * Allow users to easily overrides colors of the default theme.
7 */
8
9use Shaarli\Config\ConfigManager;
10use Shaarli\Plugin\PluginManager;
11
12const DEFAULT_COLORS_PLACEHOLDERS = [
13 'DEFAULT_COLORS_MAIN',
14 'DEFAULT_COLORS_BACKGROUND',
15 'DEFAULT_COLORS_DARK_MAIN',
16];
17
18/**
19 * Display an error if the plugin is active a no color is configured.
20 *
21 * @param $conf ConfigManager instance
22 *
23 * @return array|null The errors array or null of there is none.
24 */
25function default_colors_init($conf)
26{
27 $params = '';
28 foreach (DEFAULT_COLORS_PLACEHOLDERS as $placeholder) {
29 $params .= trim($conf->get('plugins.'. $placeholder, ''));
30 }
31
32 if (empty($params)) {
33 $error = t('Default colors plugin error: '.
34 'This plugin is active and no custom color is configured.');
35 return array($error);
36 }
37}
38
39/**
40 * When plugin parameters are saved, we regenerate the custom CSS file with provided settings.
41 *
42 * @param array $data $_POST array
43 *
44 * @return array Updated $_POST array
45 */
46function hook_default_colors_save_plugin_parameters($data)
47{
48 $file = PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css';
49 $template = file_get_contents(PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css.template');
50 $content = '';
51 foreach (DEFAULT_COLORS_PLACEHOLDERS as $rule) {
52 $content .= ! empty($data[$rule])
53 ? default_colors_format_css_rule($data, $rule) .';'. PHP_EOL
54 : '';
55 }
56
57 if (! empty($content)) {
58 file_put_contents($file, sprintf($template, $content));
59 }
60
61 return $data;
62}
63
64/**
65 * When linklist is displayed, include default_colors CSS file.
66 *
67 * @param array $data - header data.
68 *
69 * @return mixed - header data with default_colors CSS file added.
70 */
71function hook_default_colors_render_includes($data)
72{
73 $file = PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css';
74 if (file_exists($file )) {
75 $data['css_files'][] = $file ;
76 }
77
78 return $data;
79}
80
81/**
82 * Create a valid CSS rule from parameters settings and plugin parameter.
83 *
84 * @param array $data $_POST array
85 * @param string $parameter Plugin parameter name
86 *
87 * @return string CSS rules for the provided parameter and its matching value.
88 */
89function default_colors_format_css_rule($data, $parameter)
90{
91 if (empty($data[$parameter])) {
92 return '';
93 }
94
95 $key = str_replace('DEFAULT_COLORS_', '', $parameter);
96 $key = str_replace('_', '-', strtolower($key)) .'-color';
97 return ' --'. $key .': '. $data[$parameter];
98}
99
100
101/**
102 * This function is never called, but contains translation calls for GNU gettext extraction.
103 */
104function default_colors_translation()
105{
106 // meta
107 t('Override default theme colors. Use any CSS valid color.');
108 t('Main color (navbar green)');
109 t('Background color (light grey)');
110 t('Dark main color (e.g. visited links)');
111}
diff --git a/plugins/demo_plugin/demo_plugin.meta b/plugins/demo_plugin/demo_plugin.meta
index b063ecb7..cd616441 100644
--- a/plugins/demo_plugin/demo_plugin.meta
+++ b/plugins/demo_plugin/demo_plugin.meta
@@ -1 +1,4 @@
1description="A demo plugin covering all use cases for template designers and plugin developers." 1description="A demo plugin covering all use cases for template designers and plugin developers."
2parameters="DEMO_PLUGIN_PARAMETER;DEMO_PLUGIN_OTHER_PARAMETER"
3parameter.DEMO_PLUGIN_PARAMETER="This is a parameter dedicated to the demo plugin. It'll be suffixed."
4parameter.DEMO_PLUGIN_OTHER_PARAMETER="Other demo parameter"
diff --git a/plugins/demo_plugin/demo_plugin.php b/plugins/demo_plugin/demo_plugin.php
index ca520d15..71ba7495 100644
--- a/plugins/demo_plugin/demo_plugin.php
+++ b/plugins/demo_plugin/demo_plugin.php
@@ -15,6 +15,8 @@
15 */ 15 */
16 16
17use Shaarli\Config\ConfigManager; 17use Shaarli\Config\ConfigManager;
18use Shaarli\Plugin\PluginManager;
19use Shaarli\Router;
18 20
19/** 21/**
20 * In the footer hook, there is a working example of a translation extension for Shaarli. 22 * In the footer hook, there is a working example of a translation extension for Shaarli.
@@ -455,10 +457,29 @@ function hook_demo_plugin_render_feed($data)
455} 457}
456 458
457/** 459/**
460 * When plugin parameters are saved.
461 *
462 * @param array $data $_POST array
463 *
464 * @return array Updated $_POST array
465 */
466function hook_demo_plugin_save_plugin_parameters($data)
467{
468 // Here we edit the provided value, but we can use this to generate config files, etc.
469 if (! empty($data['DEMO_PLUGIN_PARAMETER']) && ! endsWith($data['DEMO_PLUGIN_PARAMETER'], '_SUFFIX')) {
470 $data['DEMO_PLUGIN_PARAMETER'] .= '_SUFFIX';
471 }
472
473 return $data;
474}
475
476/**
458 * This function is never called, but contains translation calls for GNU gettext extraction. 477 * This function is never called, but contains translation calls for GNU gettext extraction.
459 */ 478 */
460function demo_dummy_translation() 479function demo_dummy_translation()
461{ 480{
462 // meta 481 // meta
463 t('A demo plugin covering all use cases for template designers and plugin developers.'); 482 t('A demo plugin covering all use cases for template designers and plugin developers.');
483 t('This is a parameter dedicated to the demo plugin. It\'ll be suffixed.');
484 t('Other demo parameter');
464} 485}
diff --git a/plugins/isso/isso.php b/plugins/isso/isso.php
index 378c11af..dab75dd5 100644
--- a/plugins/isso/isso.php
+++ b/plugins/isso/isso.php
@@ -5,6 +5,8 @@
5 */ 5 */
6 6
7use Shaarli\Config\ConfigManager; 7use Shaarli\Config\ConfigManager;
8use Shaarli\Plugin\PluginManager;
9use Shaarli\Router;
8 10
9/** 11/**
10 * Display an error everywhere if the plugin is enabled without configuration. 12 * Display an error everywhere if the plugin is enabled without configuration.
diff --git a/plugins/markdown/markdown.php b/plugins/markdown/markdown.php
index 8823af91..628970d6 100644
--- a/plugins/markdown/markdown.php
+++ b/plugins/markdown/markdown.php
@@ -7,6 +7,8 @@
7 */ 7 */
8 8
9use Shaarli\Config\ConfigManager; 9use Shaarli\Config\ConfigManager;
10use Shaarli\Plugin\PluginManager;
11use Shaarli\Router;
10 12
11/* 13/*
12 * If this tag is used on a shaare, the description won't be processed by Parsedown. 14 * If this tag is used on a shaare, the description won't be processed by Parsedown.
diff --git a/plugins/piwik/piwik.php b/plugins/piwik/piwik.php
index ca00c2be..17b1aecc 100644
--- a/plugins/piwik/piwik.php
+++ b/plugins/piwik/piwik.php
@@ -4,6 +4,8 @@
4 * Adds tracking code on each page. 4 * Adds tracking code on each page.
5 */ 5 */
6 6
7use Shaarli\Plugin\PluginManager;
8
7/** 9/**
8 * Initialization function. 10 * Initialization function.
9 * It will be called when the plugin is loaded. 11 * It will be called when the plugin is loaded.
diff --git a/plugins/playvideos/playvideos.php b/plugins/playvideos/playvideos.php
index c6d6b0cc..0341ed59 100644
--- a/plugins/playvideos/playvideos.php
+++ b/plugins/playvideos/playvideos.php
@@ -6,6 +6,9 @@
6 * Note: this plugin adds jQuery. 6 * Note: this plugin adds jQuery.
7 */ 7 */
8 8
9use Shaarli\Plugin\PluginManager;
10use Shaarli\Router;
11
9/** 12/**
10 * When linklist is displayed, add play videos to header's toolbar. 13 * When linklist is displayed, add play videos to header's toolbar.
11 * 14 *
diff --git a/plugins/pubsubhubbub/pubsubhubbub.php b/plugins/pubsubhubbub/pubsubhubbub.php
index 9f0342a3..2878c050 100644
--- a/plugins/pubsubhubbub/pubsubhubbub.php
+++ b/plugins/pubsubhubbub/pubsubhubbub.php
@@ -11,6 +11,9 @@
11 11
12use pubsubhubbub\publisher\Publisher; 12use pubsubhubbub\publisher\Publisher;
13use Shaarli\Config\ConfigManager; 13use Shaarli\Config\ConfigManager;
14use Shaarli\Feed\FeedBuilder;
15use Shaarli\Plugin\PluginManager;
16use Shaarli\Router;
14 17
15/** 18/**
16 * Plugin init function - set the hub to the default appspot one. 19 * Plugin init function - set the hub to the default appspot one.
diff --git a/plugins/qrcode/qrcode.html b/plugins/qrcode/qrcode.html
index dc214ed1..a21f7932 100644
--- a/plugins/qrcode/qrcode.html
+++ b/plugins/qrcode/qrcode.html
@@ -1,5 +1,5 @@
1<div class="linkqrcode"> 1<div class="linkqrcode">
2 <a href="http://qrfree.kaywa.com/?l=1&amp;s=8&amp;d=%s" onclick="showQrCode(this); return false;" class="qrcode" data-permalink="%s"> 2 <a href="#" onclick="showQrCode(this); return false;" class="qrcode" data-permalink="%s">
3 <img src="%s/qrcode/qrcode.png" class="linklist-plugin-icon" title="QR-Code" alt="QRCode"> 3 <img src="%s/qrcode/qrcode.png" class="linklist-plugin-icon" title="QR-Code" alt="QRCode">
4 </a> 4 </a>
5</div> 5</div>
diff --git a/plugins/qrcode/qrcode.php b/plugins/qrcode/qrcode.php
index 4b59caa0..c1d237d5 100644
--- a/plugins/qrcode/qrcode.php
+++ b/plugins/qrcode/qrcode.php
@@ -5,6 +5,9 @@
5 * Display a QRCode icon in link list. 5 * Display a QRCode icon in link list.
6 */ 6 */
7 7
8use Shaarli\Plugin\PluginManager;
9use Shaarli\Router;
10
8/** 11/**
9 * Add qrcode icon to link_plugin when rendering linklist. 12 * Add qrcode icon to link_plugin when rendering linklist.
10 * 13 *
@@ -19,7 +22,6 @@ function hook_qrcode_render_linklist($data)
19 foreach ($data['links'] as &$value) { 22 foreach ($data['links'] as &$value) {
20 $qrcode = sprintf( 23 $qrcode = sprintf(
21 $qrcode_html, 24 $qrcode_html,
22 urlencode($value['url']),
23 $value['url'], 25 $value['url'],
24 PluginManager::$PLUGINS_PATH 26 PluginManager::$PLUGINS_PATH
25 ); 27 );
diff --git a/plugins/wallabag/WallabagInstance.php b/plugins/wallabag/WallabagInstance.php
index eb8ab618..f4a0a92b 100644
--- a/plugins/wallabag/WallabagInstance.php
+++ b/plugins/wallabag/WallabagInstance.php
@@ -1,4 +1,5 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Wallabag;
2 3
3/** 4/**
4 * Class WallabagInstance. 5 * Class WallabagInstance.
diff --git a/plugins/wallabag/wallabag.php b/plugins/wallabag/wallabag.php
index a6476c71..bc35df08 100644
--- a/plugins/wallabag/wallabag.php
+++ b/plugins/wallabag/wallabag.php
@@ -1,11 +1,11 @@
1<?php 1<?php
2
3/** 2/**
4 * Plugin Wallabag. 3 * Wallabag plugin
5 */ 4 */
6 5
7require_once 'WallabagInstance.php';
8use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
7use Shaarli\Plugin\PluginManager;
8use Shaarli\Plugin\Wallabag\WallabagInstance;
9 9
10/** 10/**
11 * Init function, return an error if the server is not set. 11 * Init function, return an error if the server is not set.
diff --git a/shaarli_version.php b/shaarli_version.php
index 7db5053d..c8334a2f 100644
--- a/shaarli_version.php
+++ b/shaarli_version.php
@@ -1 +1 @@
<?php /* 0.10.4 */ ?> <?php /* 0.11.0 */ ?>
diff --git a/tests/ApplicationUtilsTest.php b/tests/ApplicationUtilsTest.php
index fe5f84ce..82f8804d 100644
--- a/tests/ApplicationUtilsTest.php
+++ b/tests/ApplicationUtilsTest.php
@@ -1,33 +1,14 @@
1<?php 1<?php
2use Shaarli\Config\ConfigManager; 2namespace Shaarli;
3
4/**
5 * ApplicationUtils' tests
6 */
7 3
8require_once 'application/ApplicationUtils.php'; 4use Shaarli\Config\ConfigManager;
9
10/**
11 * Fake ApplicationUtils class to avoid HTTP requests
12 */
13class FakeApplicationUtils extends ApplicationUtils
14{
15 public static $VERSION_CODE = '';
16
17 /**
18 * Toggle HTTP requests, allow overriding the version code
19 */
20 public static function getVersion($url, $timeout = 0)
21 {
22 return self::$VERSION_CODE;
23 }
24}
25 5
6require_once 'tests/utils/FakeApplicationUtils.php';
26 7
27/** 8/**
28 * Unitary tests for Shaarli utilities 9 * Unitary tests for Shaarli utilities
29 */ 10 */
30class ApplicationUtilsTest extends PHPUnit_Framework_TestCase 11class ApplicationUtilsTest extends \PHPUnit\Framework\TestCase
31{ 12{
32 protected static $testUpdateFile = 'sandbox/update.txt'; 13 protected static $testUpdateFile = 'sandbox/update.txt';
33 protected static $testVersion = '0.5.0'; 14 protected static $testVersion = '0.5.0';
diff --git a/tests/FileUtilsTest.php b/tests/FileUtilsTest.php
index d764e495..57719175 100644
--- a/tests/FileUtilsTest.php
+++ b/tests/FileUtilsTest.php
@@ -1,13 +1,15 @@
1<?php 1<?php
2 2
3require_once 'application/FileUtils.php'; 3namespace Shaarli;
4
5use Exception;
4 6
5/** 7/**
6 * Class FileUtilsTest 8 * Class FileUtilsTest
7 * 9 *
8 * Test file utility class. 10 * Test file utility class.
9 */ 11 */
10class FileUtilsTest extends PHPUnit_Framework_TestCase 12class FileUtilsTest extends \PHPUnit\Framework\TestCase
11{ 13{
12 /** 14 /**
13 * @var string Test file path. 15 * @var string Test file path.
@@ -48,7 +50,7 @@ class FileUtilsTest extends PHPUnit_Framework_TestCase
48 /** 50 /**
49 * File not writable: raise an exception. 51 * File not writable: raise an exception.
50 * 52 *
51 * @expectedException IOException 53 * @expectedException Shaarli\Exceptions\IOException
52 * @expectedExceptionMessage Error accessing "sandbox/flat.db" 54 * @expectedExceptionMessage Error accessing "sandbox/flat.db"
53 */ 55 */
54 public function testWriteWithoutPermission() 56 public function testWriteWithoutPermission()
@@ -61,7 +63,7 @@ class FileUtilsTest extends PHPUnit_Framework_TestCase
61 /** 63 /**
62 * Folder non existent: raise an exception. 64 * Folder non existent: raise an exception.
63 * 65 *
64 * @expectedException IOException 66 * @expectedException Shaarli\Exceptions\IOException
65 * @expectedExceptionMessage Error accessing "nopefolder" 67 * @expectedExceptionMessage Error accessing "nopefolder"
66 */ 68 */
67 public function testWriteFolderDoesNotExist() 69 public function testWriteFolderDoesNotExist()
@@ -72,7 +74,7 @@ class FileUtilsTest extends PHPUnit_Framework_TestCase
72 /** 74 /**
73 * Folder non writable: raise an exception. 75 * Folder non writable: raise an exception.
74 * 76 *
75 * @expectedException IOException 77 * @expectedException Shaarli\Exceptions\IOException
76 * @expectedExceptionMessage Error accessing "sandbox" 78 * @expectedExceptionMessage Error accessing "sandbox"
77 */ 79 */
78 public function testWriteFolderPermission() 80 public function testWriteFolderPermission()
diff --git a/tests/HistoryTest.php b/tests/HistoryTest.php
index d3bef5a3..8303e53a 100644
--- a/tests/HistoryTest.php
+++ b/tests/HistoryTest.php
@@ -1,9 +1,11 @@
1<?php 1<?php
2 2
3require_once 'application/History.php'; 3namespace Shaarli;
4 4
5use DateTime;
6use Exception;
5 7
6class HistoryTest extends PHPUnit_Framework_TestCase 8class HistoryTest extends \PHPUnit\Framework\TestCase
7{ 9{
8 /** 10 /**
9 * @var string History file path 11 * @var string History file path
diff --git a/tests/LanguagesTest.php b/tests/LanguagesTest.php
index 4951e09a..de83f291 100644
--- a/tests/LanguagesTest.php
+++ b/tests/LanguagesTest.php
@@ -7,7 +7,7 @@ use Shaarli\Config\ConfigManager;
7/** 7/**
8 * Class LanguagesTest. 8 * Class LanguagesTest.
9 */ 9 */
10class LanguagesTest extends \PHPUnit_Framework_TestCase 10class LanguagesTest extends \PHPUnit\Framework\TestCase
11{ 11{
12 /** 12 /**
13 * @var string Config file path (without extension). 13 * @var string Config file path (without extension).
diff --git a/tests/PluginManagerTest.php b/tests/PluginManagerTest.php
index 01de959c..71761ac1 100644
--- a/tests/PluginManagerTest.php
+++ b/tests/PluginManagerTest.php
@@ -1,16 +1,12 @@
1<?php 1<?php
2use Shaarli\Config\ConfigManager; 2namespace Shaarli\Plugin;
3 3
4/** 4use Shaarli\Config\ConfigManager;
5 * Plugin Manager tests
6 */
7
8require_once 'application/PluginManager.php';
9 5
10/** 6/**
11 * Unit tests for Plugins 7 * Unit tests for Plugins
12 */ 8 */
13class PluginManagerTest extends PHPUnit_Framework_TestCase 9class PluginManagerTest extends \PHPUnit\Framework\TestCase
14{ 10{
15 /** 11 /**
16 * Path to tests plugin. 12 * Path to tests plugin.
diff --git a/tests/RouterTest.php b/tests/RouterTest.php
index abf1bd5f..0cd49bb8 100644
--- a/tests/RouterTest.php
+++ b/tests/RouterTest.php
@@ -1,15 +1,10 @@
1<?php 1<?php
2 2namespace Shaarli;
3/**
4 * Router tests
5 */
6
7require_once 'application/Router.php';
8 3
9/** 4/**
10 * Unit tests for Router 5 * Unit tests for Router
11 */ 6 */
12class RouterTest extends PHPUnit_Framework_TestCase 7class RouterTest extends \PHPUnit\Framework\TestCase
13{ 8{
14 /** 9 /**
15 * Test findPage: login page output. 10 * Test findPage: login page output.
diff --git a/tests/TimeZoneTest.php b/tests/TimeZoneTest.php
index 127fdc19..02bf060f 100644
--- a/tests/TimeZoneTest.php
+++ b/tests/TimeZoneTest.php
@@ -8,7 +8,7 @@ require_once 'application/TimeZone.php';
8/** 8/**
9 * Unitary tests for timezone utilities 9 * Unitary tests for timezone utilities
10 */ 10 */
11class TimeZoneTest extends PHPUnit_Framework_TestCase 11class TimeZoneTest extends PHPUnit\Framework\TestCase
12{ 12{
13 /** 13 /**
14 * @var array of timezones 14 * @var array of timezones
diff --git a/tests/UtilsTest.php b/tests/UtilsTest.php
index d0abd996..8225d95a 100644
--- a/tests/UtilsTest.php
+++ b/tests/UtilsTest.php
@@ -10,7 +10,7 @@ require_once 'application/Languages.php';
10/** 10/**
11 * Unitary tests for Shaarli utilities 11 * Unitary tests for Shaarli utilities
12 */ 12 */
13class UtilsTest extends PHPUnit_Framework_TestCase 13class UtilsTest extends PHPUnit\Framework\TestCase
14{ 14{
15 // Log file 15 // Log file
16 protected static $testLogFile = 'tests.log'; 16 protected static $testLogFile = 'tests.log';
diff --git a/tests/api/ApiMiddlewareTest.php b/tests/api/ApiMiddlewareTest.php
index 23a56b1c..0b9b03f2 100644
--- a/tests/api/ApiMiddlewareTest.php
+++ b/tests/api/ApiMiddlewareTest.php
@@ -2,7 +2,6 @@
2namespace Shaarli\Api; 2namespace Shaarli\Api;
3 3
4use Shaarli\Config\ConfigManager; 4use Shaarli\Config\ConfigManager;
5
6use Slim\Container; 5use Slim\Container;
7use Slim\Http\Environment; 6use Slim\Http\Environment;
8use Slim\Http\Request; 7use Slim\Http\Request;
@@ -18,7 +17,7 @@ use Slim\Http\Response;
18 * 17 *
19 * @package Api 18 * @package Api
20 */ 19 */
21class ApiMiddlewareTest extends \PHPUnit_Framework_TestCase 20class ApiMiddlewareTest extends \PHPUnit\Framework\TestCase
22{ 21{
23 /** 22 /**
24 * @var string datastore to test write operations 23 * @var string datastore to test write operations
diff --git a/tests/api/ApiUtilsTest.php b/tests/api/ApiUtilsTest.php
index df4e189a..ea0ae500 100644
--- a/tests/api/ApiUtilsTest.php
+++ b/tests/api/ApiUtilsTest.php
@@ -2,12 +2,12 @@
2 2
3namespace Shaarli\Api; 3namespace Shaarli\Api;
4 4
5use Shaarli\Base64Url; 5use Shaarli\Http\Base64Url;
6 6
7/** 7/**
8 * Class ApiUtilsTest 8 * Class ApiUtilsTest
9 */ 9 */
10class ApiUtilsTest extends \PHPUnit_Framework_TestCase 10class ApiUtilsTest extends \PHPUnit\Framework\TestCase
11{ 11{
12 /** 12 /**
13 * Force the timezone for ISO datetimes. 13 * Force the timezone for ISO datetimes.
diff --git a/tests/api/controllers/history/HistoryTest.php b/tests/api/controllers/history/HistoryTest.php
index ff34e16d..e287f239 100644
--- a/tests/api/controllers/history/HistoryTest.php
+++ b/tests/api/controllers/history/HistoryTest.php
@@ -1,9 +1,9 @@
1<?php 1<?php
2 2
3
4namespace Shaarli\Api\Controllers; 3namespace Shaarli\Api\Controllers;
5 4
6use Shaarli\Config\ConfigManager; 5use Shaarli\Config\ConfigManager;
6use Shaarli\History;
7use Slim\Container; 7use Slim\Container;
8use Slim\Http\Environment; 8use Slim\Http\Environment;
9use Slim\Http\Request; 9use Slim\Http\Request;
@@ -11,7 +11,7 @@ use Slim\Http\Response;
11 11
12require_once 'tests/utils/ReferenceHistory.php'; 12require_once 'tests/utils/ReferenceHistory.php';
13 13
14class HistoryTest extends \PHPUnit_Framework_TestCase 14class HistoryTest extends \PHPUnit\Framework\TestCase
15{ 15{
16 /** 16 /**
17 * @var string datastore to test write operations 17 * @var string datastore to test write operations
@@ -34,7 +34,7 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
34 protected $container; 34 protected $container;
35 35
36 /** 36 /**
37 * @var History controller instance. 37 * @var HistoryController controller instance.
38 */ 38 */
39 protected $controller; 39 protected $controller;
40 40
@@ -49,9 +49,9 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
49 $this->container = new Container(); 49 $this->container = new Container();
50 $this->container['conf'] = $this->conf; 50 $this->container['conf'] = $this->conf;
51 $this->container['db'] = true; 51 $this->container['db'] = true;
52 $this->container['history'] = new \History(self::$testHistory); 52 $this->container['history'] = new History(self::$testHistory);
53 53
54 $this->controller = new History($this->container); 54 $this->controller = new HistoryController($this->container);
55 } 55 }
56 56
57 /** 57 /**
@@ -78,35 +78,35 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
78 78
79 $this->assertEquals($this->refHistory->count(), count($data)); 79 $this->assertEquals($this->refHistory->count(), count($data));
80 80
81 $this->assertEquals(\History::DELETED, $data[0]['event']); 81 $this->assertEquals(History::DELETED, $data[0]['event']);
82 $this->assertEquals( 82 $this->assertEquals(
83 \DateTime::createFromFormat('Ymd_His', '20170303_121216')->format(\DateTime::ATOM), 83 \DateTime::createFromFormat('Ymd_His', '20170303_121216')->format(\DateTime::ATOM),
84 $data[0]['datetime'] 84 $data[0]['datetime']
85 ); 85 );
86 $this->assertEquals(124, $data[0]['id']); 86 $this->assertEquals(124, $data[0]['id']);
87 87
88 $this->assertEquals(\History::SETTINGS, $data[1]['event']); 88 $this->assertEquals(History::SETTINGS, $data[1]['event']);
89 $this->assertEquals( 89 $this->assertEquals(
90 \DateTime::createFromFormat('Ymd_His', '20170302_121215')->format(\DateTime::ATOM), 90 \DateTime::createFromFormat('Ymd_His', '20170302_121215')->format(\DateTime::ATOM),
91 $data[1]['datetime'] 91 $data[1]['datetime']
92 ); 92 );
93 $this->assertNull($data[1]['id']); 93 $this->assertNull($data[1]['id']);
94 94
95 $this->assertEquals(\History::UPDATED, $data[2]['event']); 95 $this->assertEquals(History::UPDATED, $data[2]['event']);
96 $this->assertEquals( 96 $this->assertEquals(
97 \DateTime::createFromFormat('Ymd_His', '20170301_121214')->format(\DateTime::ATOM), 97 \DateTime::createFromFormat('Ymd_His', '20170301_121214')->format(\DateTime::ATOM),
98 $data[2]['datetime'] 98 $data[2]['datetime']
99 ); 99 );
100 $this->assertEquals(123, $data[2]['id']); 100 $this->assertEquals(123, $data[2]['id']);
101 101
102 $this->assertEquals(\History::CREATED, $data[3]['event']); 102 $this->assertEquals(History::CREATED, $data[3]['event']);
103 $this->assertEquals( 103 $this->assertEquals(
104 \DateTime::createFromFormat('Ymd_His', '20170201_121214')->format(\DateTime::ATOM), 104 \DateTime::createFromFormat('Ymd_His', '20170201_121214')->format(\DateTime::ATOM),
105 $data[3]['datetime'] 105 $data[3]['datetime']
106 ); 106 );
107 $this->assertEquals(124, $data[3]['id']); 107 $this->assertEquals(124, $data[3]['id']);
108 108
109 $this->assertEquals(\History::CREATED, $data[4]['event']); 109 $this->assertEquals(History::CREATED, $data[4]['event']);
110 $this->assertEquals( 110 $this->assertEquals(
111 \DateTime::createFromFormat('Ymd_His', '20170101_121212')->format(\DateTime::ATOM), 111 \DateTime::createFromFormat('Ymd_His', '20170101_121212')->format(\DateTime::ATOM),
112 $data[4]['datetime'] 112 $data[4]['datetime']
@@ -131,7 +131,7 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
131 131
132 $this->assertEquals(1, count($data)); 132 $this->assertEquals(1, count($data));
133 133
134 $this->assertEquals(\History::DELETED, $data[0]['event']); 134 $this->assertEquals(History::DELETED, $data[0]['event']);
135 $this->assertEquals( 135 $this->assertEquals(
136 \DateTime::createFromFormat('Ymd_His', '20170303_121216')->format(\DateTime::ATOM), 136 \DateTime::createFromFormat('Ymd_His', '20170303_121216')->format(\DateTime::ATOM),
137 $data[0]['datetime'] 137 $data[0]['datetime']
@@ -156,7 +156,7 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
156 156
157 $this->assertEquals(1, count($data)); 157 $this->assertEquals(1, count($data));
158 158
159 $this->assertEquals(\History::CREATED, $data[0]['event']); 159 $this->assertEquals(History::CREATED, $data[0]['event']);
160 $this->assertEquals( 160 $this->assertEquals(
161 \DateTime::createFromFormat('Ymd_His', '20170101_121212')->format(\DateTime::ATOM), 161 \DateTime::createFromFormat('Ymd_His', '20170101_121212')->format(\DateTime::ATOM),
162 $data[0]['datetime'] 162 $data[0]['datetime']
@@ -181,7 +181,7 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
181 181
182 $this->assertEquals(1, count($data)); 182 $this->assertEquals(1, count($data));
183 183
184 $this->assertEquals(\History::DELETED, $data[0]['event']); 184 $this->assertEquals(History::DELETED, $data[0]['event']);
185 $this->assertEquals( 185 $this->assertEquals(
186 \DateTime::createFromFormat('Ymd_His', '20170303_121216')->format(\DateTime::ATOM), 186 \DateTime::createFromFormat('Ymd_His', '20170303_121216')->format(\DateTime::ATOM),
187 $data[0]['datetime'] 187 $data[0]['datetime']
@@ -206,7 +206,7 @@ class HistoryTest extends \PHPUnit_Framework_TestCase
206 206
207 $this->assertEquals(1, count($data)); 207 $this->assertEquals(1, count($data));
208 208
209 $this->assertEquals(\History::SETTINGS, $data[0]['event']); 209 $this->assertEquals(History::SETTINGS, $data[0]['event']);
210 $this->assertEquals( 210 $this->assertEquals(
211 \DateTime::createFromFormat('Ymd_His', '20170302_121215')->format(\DateTime::ATOM), 211 \DateTime::createFromFormat('Ymd_His', '20170302_121215')->format(\DateTime::ATOM),
212 $data[0]['datetime'] 212 $data[0]['datetime']
diff --git a/tests/api/controllers/info/InfoTest.php b/tests/api/controllers/info/InfoTest.php
index e437082a..e70d371b 100644
--- a/tests/api/controllers/info/InfoTest.php
+++ b/tests/api/controllers/info/InfoTest.php
@@ -2,7 +2,6 @@
2namespace Shaarli\Api\Controllers; 2namespace Shaarli\Api\Controllers;
3 3
4use Shaarli\Config\ConfigManager; 4use Shaarli\Config\ConfigManager;
5
6use Slim\Container; 5use Slim\Container;
7use Slim\Http\Environment; 6use Slim\Http\Environment;
8use Slim\Http\Request; 7use Slim\Http\Request;
@@ -15,7 +14,7 @@ use Slim\Http\Response;
15 * 14 *
16 * @package Api\Controllers 15 * @package Api\Controllers
17 */ 16 */
18class InfoTest extends \PHPUnit_Framework_TestCase 17class InfoTest extends \PHPUnit\Framework\TestCase
19{ 18{
20 /** 19 /**
21 * @var string datastore to test write operations 20 * @var string datastore to test write operations
@@ -53,7 +52,7 @@ class InfoTest extends \PHPUnit_Framework_TestCase
53 52
54 $this->container = new Container(); 53 $this->container = new Container();
55 $this->container['conf'] = $this->conf; 54 $this->container['conf'] = $this->conf;
56 $this->container['db'] = new \LinkDB(self::$testDatastore, true, false); 55 $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
57 $this->container['history'] = null; 56 $this->container['history'] = null;
58 57
59 $this->controller = new Info($this->container); 58 $this->controller = new Info($this->container);
diff --git a/tests/api/controllers/links/DeleteLinkTest.php b/tests/api/controllers/links/DeleteLinkTest.php
index 7d797137..90193e28 100644
--- a/tests/api/controllers/links/DeleteLinkTest.php
+++ b/tests/api/controllers/links/DeleteLinkTest.php
@@ -3,13 +3,15 @@
3 3
4namespace Shaarli\Api\Controllers; 4namespace Shaarli\Api\Controllers;
5 5
6use Shaarli\Bookmark\LinkDB;
6use Shaarli\Config\ConfigManager; 7use Shaarli\Config\ConfigManager;
8use Shaarli\History;
7use Slim\Container; 9use Slim\Container;
8use Slim\Http\Environment; 10use Slim\Http\Environment;
9use Slim\Http\Request; 11use Slim\Http\Request;
10use Slim\Http\Response; 12use Slim\Http\Response;
11 13
12class DeleteLinkTest extends \PHPUnit_Framework_TestCase 14class DeleteLinkTest extends \PHPUnit\Framework\TestCase
13{ 15{
14 /** 16 /**
15 * @var string datastore to test write operations 17 * @var string datastore to test write operations
@@ -32,12 +34,12 @@ class DeleteLinkTest extends \PHPUnit_Framework_TestCase
32 protected $refDB = null; 34 protected $refDB = null;
33 35
34 /** 36 /**
35 * @var \LinkDB instance. 37 * @var LinkDB instance.
36 */ 38 */
37 protected $linkDB; 39 protected $linkDB;
38 40
39 /** 41 /**
40 * @var \History instance. 42 * @var HistoryController instance.
41 */ 43 */
42 protected $history; 44 protected $history;
43 45
@@ -59,10 +61,10 @@ class DeleteLinkTest extends \PHPUnit_Framework_TestCase
59 $this->conf = new ConfigManager('tests/utils/config/configJson'); 61 $this->conf = new ConfigManager('tests/utils/config/configJson');
60 $this->refDB = new \ReferenceLinkDB(); 62 $this->refDB = new \ReferenceLinkDB();
61 $this->refDB->write(self::$testDatastore); 63 $this->refDB->write(self::$testDatastore);
62 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 64 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
63 $refHistory = new \ReferenceHistory(); 65 $refHistory = new \ReferenceHistory();
64 $refHistory->write(self::$testHistory); 66 $refHistory->write(self::$testHistory);
65 $this->history = new \History(self::$testHistory); 67 $this->history = new History(self::$testHistory);
66 $this->container = new Container(); 68 $this->container = new Container();
67 $this->container['conf'] = $this->conf; 69 $this->container['conf'] = $this->conf;
68 $this->container['db'] = $this->linkDB; 70 $this->container['db'] = $this->linkDB;
@@ -96,11 +98,11 @@ class DeleteLinkTest extends \PHPUnit_Framework_TestCase
96 $this->assertEquals(204, $response->getStatusCode()); 98 $this->assertEquals(204, $response->getStatusCode());
97 $this->assertEmpty((string) $response->getBody()); 99 $this->assertEmpty((string) $response->getBody());
98 100
99 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 101 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
100 $this->assertFalse(isset($this->linkDB[$id])); 102 $this->assertFalse(isset($this->linkDB[$id]));
101 103
102 $historyEntry = $this->history->getHistory()[0]; 104 $historyEntry = $this->history->getHistory()[0];
103 $this->assertEquals(\History::DELETED, $historyEntry['event']); 105 $this->assertEquals(History::DELETED, $historyEntry['event']);
104 $this->assertTrue( 106 $this->assertTrue(
105 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 107 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
106 ); 108 );
@@ -110,7 +112,7 @@ class DeleteLinkTest extends \PHPUnit_Framework_TestCase
110 /** 112 /**
111 * Test DELETE link endpoint: reach not existing ID. 113 * Test DELETE link endpoint: reach not existing ID.
112 * 114 *
113 * @expectedException Shaarli\Api\Exceptions\ApiLinkNotFoundException 115 * @expectedException \Shaarli\Api\Exceptions\ApiLinkNotFoundException
114 */ 116 */
115 public function testDeleteLink404() 117 public function testDeleteLink404()
116 { 118 {
diff --git a/tests/api/controllers/links/GetLinkIdTest.php b/tests/api/controllers/links/GetLinkIdTest.php
index 57528d5a..cb9b7f6a 100644
--- a/tests/api/controllers/links/GetLinkIdTest.php
+++ b/tests/api/controllers/links/GetLinkIdTest.php
@@ -3,7 +3,6 @@
3namespace Shaarli\Api\Controllers; 3namespace Shaarli\Api\Controllers;
4 4
5use Shaarli\Config\ConfigManager; 5use Shaarli\Config\ConfigManager;
6
7use Slim\Container; 6use Slim\Container;
8use Slim\Http\Environment; 7use Slim\Http\Environment;
9use Slim\Http\Request; 8use Slim\Http\Request;
@@ -18,7 +17,7 @@ use Slim\Http\Response;
18 * 17 *
19 * @package Shaarli\Api\Controllers 18 * @package Shaarli\Api\Controllers
20 */ 19 */
21class GetLinkIdTest extends \PHPUnit_Framework_TestCase 20class GetLinkIdTest extends \PHPUnit\Framework\TestCase
22{ 21{
23 /** 22 /**
24 * @var string datastore to test write operations 23 * @var string datastore to test write operations
@@ -61,7 +60,7 @@ class GetLinkIdTest extends \PHPUnit_Framework_TestCase
61 60
62 $this->container = new Container(); 61 $this->container = new Container();
63 $this->container['conf'] = $this->conf; 62 $this->container['conf'] = $this->conf;
64 $this->container['db'] = new \LinkDB(self::$testDatastore, true, false); 63 $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
65 $this->container['history'] = null; 64 $this->container['history'] = null;
66 65
67 $this->controller = new Links($this->container); 66 $this->controller = new Links($this->container);
@@ -108,7 +107,7 @@ class GetLinkIdTest extends \PHPUnit_Framework_TestCase
108 $this->assertEquals('sTuff', $data['tags'][0]); 107 $this->assertEquals('sTuff', $data['tags'][0]);
109 $this->assertEquals(false, $data['private']); 108 $this->assertEquals(false, $data['private']);
110 $this->assertEquals( 109 $this->assertEquals(
111 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM), 110 \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM),
112 $data['created'] 111 $data['created']
113 ); 112 );
114 $this->assertEmpty($data['updated']); 113 $this->assertEmpty($data['updated']);
diff --git a/tests/api/controllers/links/GetLinksTest.php b/tests/api/controllers/links/GetLinksTest.php
index 64f02774..711a3152 100644
--- a/tests/api/controllers/links/GetLinksTest.php
+++ b/tests/api/controllers/links/GetLinksTest.php
@@ -1,8 +1,8 @@
1<?php 1<?php
2namespace Shaarli\Api\Controllers; 2namespace Shaarli\Api\Controllers;
3 3
4use Shaarli\Bookmark\LinkDB;
4use Shaarli\Config\ConfigManager; 5use Shaarli\Config\ConfigManager;
5
6use Slim\Container; 6use Slim\Container;
7use Slim\Http\Environment; 7use Slim\Http\Environment;
8use Slim\Http\Request; 8use Slim\Http\Request;
@@ -17,7 +17,7 @@ use Slim\Http\Response;
17 * 17 *
18 * @package Shaarli\Api\Controllers 18 * @package Shaarli\Api\Controllers
19 */ 19 */
20class GetLinksTest extends \PHPUnit_Framework_TestCase 20class GetLinksTest extends \PHPUnit\Framework\TestCase
21{ 21{
22 /** 22 /**
23 * @var string datastore to test write operations 23 * @var string datastore to test write operations
@@ -60,7 +60,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase
60 60
61 $this->container = new Container(); 61 $this->container = new Container();
62 $this->container['conf'] = $this->conf; 62 $this->container['conf'] = $this->conf;
63 $this->container['db'] = new \LinkDB(self::$testDatastore, true, false); 63 $this->container['db'] = new LinkDB(self::$testDatastore, true, false);
64 $this->container['history'] = null; 64 $this->container['history'] = null;
65 65
66 $this->controller = new Links($this->container); 66 $this->controller = new Links($this->container);
@@ -114,7 +114,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase
114 $this->assertEquals('sTuff', $first['tags'][0]); 114 $this->assertEquals('sTuff', $first['tags'][0]);
115 $this->assertEquals(false, $first['private']); 115 $this->assertEquals(false, $first['private']);
116 $this->assertEquals( 116 $this->assertEquals(
117 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM), 117 \DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651')->format(\DateTime::ATOM),
118 $first['created'] 118 $first['created']
119 ); 119 );
120 $this->assertEmpty($first['updated']); 120 $this->assertEmpty($first['updated']);
@@ -125,7 +125,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase
125 125
126 // Update date 126 // Update date
127 $this->assertEquals( 127 $this->assertEquals(
128 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20160803_093033')->format(\DateTime::ATOM), 128 \DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20160803_093033')->format(\DateTime::ATOM),
129 $link['updated'] 129 $link['updated']
130 ); 130 );
131 } 131 }
diff --git a/tests/api/controllers/links/PostLinkTest.php b/tests/api/controllers/links/PostLinkTest.php
index 5c2b5623..d683a984 100644
--- a/tests/api/controllers/links/PostLinkTest.php
+++ b/tests/api/controllers/links/PostLinkTest.php
@@ -4,6 +4,7 @@ namespace Shaarli\Api\Controllers;
4 4
5use PHPUnit\Framework\TestCase; 5use PHPUnit\Framework\TestCase;
6use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
7use Shaarli\History;
7use Slim\Container; 8use Slim\Container;
8use Slim\Http\Environment; 9use Slim\Http\Environment;
9use Slim\Http\Request; 10use Slim\Http\Request;
@@ -40,7 +41,7 @@ class PostLinkTest extends TestCase
40 protected $refDB = null; 41 protected $refDB = null;
41 42
42 /** 43 /**
43 * @var \History instance. 44 * @var HistoryController instance.
44 */ 45 */
45 protected $history; 46 protected $history;
46 47
@@ -70,12 +71,12 @@ class PostLinkTest extends TestCase
70 71
71 $refHistory = new \ReferenceHistory(); 72 $refHistory = new \ReferenceHistory();
72 $refHistory->write(self::$testHistory); 73 $refHistory->write(self::$testHistory);
73 $this->history = new \History(self::$testHistory); 74 $this->history = new History(self::$testHistory);
74 75
75 $this->container = new Container(); 76 $this->container = new Container();
76 $this->container['conf'] = $this->conf; 77 $this->container['conf'] = $this->conf;
77 $this->container['db'] = new \LinkDB(self::$testDatastore, true, false); 78 $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
78 $this->container['history'] = new \History(self::$testHistory); 79 $this->container['history'] = new History(self::$testHistory);
79 80
80 $this->controller = new Links($this->container); 81 $this->controller = new Links($this->container);
81 82
@@ -121,7 +122,7 @@ class PostLinkTest extends TestCase
121 $data = json_decode((string) $response->getBody(), true); 122 $data = json_decode((string) $response->getBody(), true);
122 $this->assertEquals(self::NB_FIELDS_LINK, count($data)); 123 $this->assertEquals(self::NB_FIELDS_LINK, count($data));
123 $this->assertEquals(43, $data['id']); 124 $this->assertEquals(43, $data['id']);
124 $this->assertRegExp('/[\w-_]{6}/', $data['shorturl']); 125 $this->assertRegExp('/[\w_-]{6}/', $data['shorturl']);
125 $this->assertEquals('http://domain.tld/?' . $data['shorturl'], $data['url']); 126 $this->assertEquals('http://domain.tld/?' . $data['shorturl'], $data['url']);
126 $this->assertEquals('?' . $data['shorturl'], $data['title']); 127 $this->assertEquals('?' . $data['shorturl'], $data['title']);
127 $this->assertEquals('', $data['description']); 128 $this->assertEquals('', $data['description']);
@@ -133,7 +134,7 @@ class PostLinkTest extends TestCase
133 $this->assertEquals('', $data['updated']); 134 $this->assertEquals('', $data['updated']);
134 135
135 $historyEntry = $this->history->getHistory()[0]; 136 $historyEntry = $this->history->getHistory()[0];
136 $this->assertEquals(\History::CREATED, $historyEntry['event']); 137 $this->assertEquals(History::CREATED, $historyEntry['event']);
137 $this->assertTrue( 138 $this->assertTrue(
138 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 139 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
139 ); 140 );
@@ -166,7 +167,7 @@ class PostLinkTest extends TestCase
166 $data = json_decode((string) $response->getBody(), true); 167 $data = json_decode((string) $response->getBody(), true);
167 $this->assertEquals(self::NB_FIELDS_LINK, count($data)); 168 $this->assertEquals(self::NB_FIELDS_LINK, count($data));
168 $this->assertEquals(43, $data['id']); 169 $this->assertEquals(43, $data['id']);
169 $this->assertRegExp('/[\w-_]{6}/', $data['shorturl']); 170 $this->assertRegExp('/[\w_-]{6}/', $data['shorturl']);
170 $this->assertEquals('http://' . $link['url'], $data['url']); 171 $this->assertEquals('http://' . $link['url'], $data['url']);
171 $this->assertEquals($link['title'], $data['title']); 172 $this->assertEquals($link['title'], $data['title']);
172 $this->assertEquals($link['description'], $data['description']); 173 $this->assertEquals($link['description'], $data['description']);
@@ -210,11 +211,11 @@ class PostLinkTest extends TestCase
210 $this->assertEquals(['gnu', 'media', 'web', '.hidden', 'hashtag'], $data['tags']); 211 $this->assertEquals(['gnu', 'media', 'web', '.hidden', 'hashtag'], $data['tags']);
211 $this->assertEquals(false, $data['private']); 212 $this->assertEquals(false, $data['private']);
212 $this->assertEquals( 213 $this->assertEquals(
213 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130614_184135'), 214 \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130614_184135'),
214 \DateTime::createFromFormat(\DateTime::ATOM, $data['created']) 215 \DateTime::createFromFormat(\DateTime::ATOM, $data['created'])
215 ); 216 );
216 $this->assertEquals( 217 $this->assertEquals(
217 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130615_184230'), 218 \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130615_184230'),
218 \DateTime::createFromFormat(\DateTime::ATOM, $data['updated']) 219 \DateTime::createFromFormat(\DateTime::ATOM, $data['updated'])
219 ); 220 );
220 } 221 }
diff --git a/tests/api/controllers/links/PutLinkTest.php b/tests/api/controllers/links/PutLinkTest.php
index f276b4c1..cd815b66 100644
--- a/tests/api/controllers/links/PutLinkTest.php
+++ b/tests/api/controllers/links/PutLinkTest.php
@@ -4,12 +4,13 @@
4namespace Shaarli\Api\Controllers; 4namespace Shaarli\Api\Controllers;
5 5
6use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
7use Shaarli\History;
7use Slim\Container; 8use Slim\Container;
8use Slim\Http\Environment; 9use Slim\Http\Environment;
9use Slim\Http\Request; 10use Slim\Http\Request;
10use Slim\Http\Response; 11use Slim\Http\Response;
11 12
12class PutLinkTest extends \PHPUnit_Framework_TestCase 13class PutLinkTest extends \PHPUnit\Framework\TestCase
13{ 14{
14 /** 15 /**
15 * @var string datastore to test write operations 16 * @var string datastore to test write operations
@@ -32,7 +33,7 @@ class PutLinkTest extends \PHPUnit_Framework_TestCase
32 protected $refDB = null; 33 protected $refDB = null;
33 34
34 /** 35 /**
35 * @var \History instance. 36 * @var HistoryController instance.
36 */ 37 */
37 protected $history; 38 protected $history;
38 39
@@ -62,12 +63,12 @@ class PutLinkTest extends \PHPUnit_Framework_TestCase
62 63
63 $refHistory = new \ReferenceHistory(); 64 $refHistory = new \ReferenceHistory();
64 $refHistory->write(self::$testHistory); 65 $refHistory->write(self::$testHistory);
65 $this->history = new \History(self::$testHistory); 66 $this->history = new History(self::$testHistory);
66 67
67 $this->container = new Container(); 68 $this->container = new Container();
68 $this->container['conf'] = $this->conf; 69 $this->container['conf'] = $this->conf;
69 $this->container['db'] = new \LinkDB(self::$testDatastore, true, false); 70 $this->container['db'] = new \Shaarli\Bookmark\LinkDB(self::$testDatastore, true, false);
70 $this->container['history'] = new \History(self::$testHistory); 71 $this->container['history'] = new History(self::$testHistory);
71 72
72 $this->controller = new Links($this->container); 73 $this->controller = new Links($this->container);
73 74
@@ -119,7 +120,7 @@ class PutLinkTest extends \PHPUnit_Framework_TestCase
119 ); 120 );
120 121
121 $historyEntry = $this->history->getHistory()[0]; 122 $historyEntry = $this->history->getHistory()[0];
122 $this->assertEquals(\History::UPDATED, $historyEntry['event']); 123 $this->assertEquals(History::UPDATED, $historyEntry['event']);
123 $this->assertTrue( 124 $this->assertTrue(
124 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 125 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
125 ); 126 );
@@ -198,11 +199,11 @@ class PutLinkTest extends \PHPUnit_Framework_TestCase
198 $this->assertEquals(['gnu', 'media', 'web', '.hidden', 'hashtag'], $data['tags']); 199 $this->assertEquals(['gnu', 'media', 'web', '.hidden', 'hashtag'], $data['tags']);
199 $this->assertEquals(false, $data['private']); 200 $this->assertEquals(false, $data['private']);
200 $this->assertEquals( 201 $this->assertEquals(
201 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130614_184135'), 202 \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130614_184135'),
202 \DateTime::createFromFormat(\DateTime::ATOM, $data['created']) 203 \DateTime::createFromFormat(\DateTime::ATOM, $data['created'])
203 ); 204 );
204 $this->assertEquals( 205 $this->assertEquals(
205 \DateTime::createFromFormat(\LinkDB::LINK_DATE_FORMAT, '20130615_184230'), 206 \DateTime::createFromFormat(\Shaarli\Bookmark\LinkDB::LINK_DATE_FORMAT, '20130615_184230'),
206 \DateTime::createFromFormat(\DateTime::ATOM, $data['updated']) 207 \DateTime::createFromFormat(\DateTime::ATOM, $data['updated'])
207 ); 208 );
208 } 209 }
diff --git a/tests/api/controllers/tags/DeleteTagTest.php b/tests/api/controllers/tags/DeleteTagTest.php
index e0787ce2..84e1d56e 100644
--- a/tests/api/controllers/tags/DeleteTagTest.php
+++ b/tests/api/controllers/tags/DeleteTagTest.php
@@ -3,13 +3,15 @@
3 3
4namespace Shaarli\Api\Controllers; 4namespace Shaarli\Api\Controllers;
5 5
6use Shaarli\Bookmark\LinkDB;
6use Shaarli\Config\ConfigManager; 7use Shaarli\Config\ConfigManager;
8use Shaarli\History;
7use Slim\Container; 9use Slim\Container;
8use Slim\Http\Environment; 10use Slim\Http\Environment;
9use Slim\Http\Request; 11use Slim\Http\Request;
10use Slim\Http\Response; 12use Slim\Http\Response;
11 13
12class DeleteTagTest extends \PHPUnit_Framework_TestCase 14class DeleteTagTest extends \PHPUnit\Framework\TestCase
13{ 15{
14 /** 16 /**
15 * @var string datastore to test write operations 17 * @var string datastore to test write operations
@@ -32,12 +34,12 @@ class DeleteTagTest extends \PHPUnit_Framework_TestCase
32 protected $refDB = null; 34 protected $refDB = null;
33 35
34 /** 36 /**
35 * @var \LinkDB instance. 37 * @var LinkDB instance.
36 */ 38 */
37 protected $linkDB; 39 protected $linkDB;
38 40
39 /** 41 /**
40 * @var \History instance. 42 * @var HistoryController instance.
41 */ 43 */
42 protected $history; 44 protected $history;
43 45
@@ -59,10 +61,10 @@ class DeleteTagTest extends \PHPUnit_Framework_TestCase
59 $this->conf = new ConfigManager('tests/utils/config/configJson'); 61 $this->conf = new ConfigManager('tests/utils/config/configJson');
60 $this->refDB = new \ReferenceLinkDB(); 62 $this->refDB = new \ReferenceLinkDB();
61 $this->refDB->write(self::$testDatastore); 63 $this->refDB->write(self::$testDatastore);
62 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 64 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
63 $refHistory = new \ReferenceHistory(); 65 $refHistory = new \ReferenceHistory();
64 $refHistory->write(self::$testHistory); 66 $refHistory->write(self::$testHistory);
65 $this->history = new \History(self::$testHistory); 67 $this->history = new History(self::$testHistory);
66 $this->container = new Container(); 68 $this->container = new Container();
67 $this->container['conf'] = $this->conf; 69 $this->container['conf'] = $this->conf;
68 $this->container['db'] = $this->linkDB; 70 $this->container['db'] = $this->linkDB;
@@ -97,18 +99,18 @@ class DeleteTagTest extends \PHPUnit_Framework_TestCase
97 $this->assertEquals(204, $response->getStatusCode()); 99 $this->assertEquals(204, $response->getStatusCode());
98 $this->assertEmpty((string) $response->getBody()); 100 $this->assertEmpty((string) $response->getBody());
99 101
100 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 102 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
101 $tags = $this->linkDB->linksCountPerTag(); 103 $tags = $this->linkDB->linksCountPerTag();
102 $this->assertFalse(isset($tags[$tagName])); 104 $this->assertFalse(isset($tags[$tagName]));
103 105
104 // 2 links affected 106 // 2 links affected
105 $historyEntry = $this->history->getHistory()[0]; 107 $historyEntry = $this->history->getHistory()[0];
106 $this->assertEquals(\History::UPDATED, $historyEntry['event']); 108 $this->assertEquals(History::UPDATED, $historyEntry['event']);
107 $this->assertTrue( 109 $this->assertTrue(
108 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 110 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
109 ); 111 );
110 $historyEntry = $this->history->getHistory()[1]; 112 $historyEntry = $this->history->getHistory()[1];
111 $this->assertEquals(\History::UPDATED, $historyEntry['event']); 113 $this->assertEquals(History::UPDATED, $historyEntry['event']);
112 $this->assertTrue( 114 $this->assertTrue(
113 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 115 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
114 ); 116 );
@@ -131,13 +133,13 @@ class DeleteTagTest extends \PHPUnit_Framework_TestCase
131 $this->assertEquals(204, $response->getStatusCode()); 133 $this->assertEquals(204, $response->getStatusCode());
132 $this->assertEmpty((string) $response->getBody()); 134 $this->assertEmpty((string) $response->getBody());
133 135
134 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 136 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
135 $tags = $this->linkDB->linksCountPerTag(); 137 $tags = $this->linkDB->linksCountPerTag();
136 $this->assertFalse(isset($tags[$tagName])); 138 $this->assertFalse(isset($tags[$tagName]));
137 $this->assertTrue($tags[strtolower($tagName)] > 0); 139 $this->assertTrue($tags[strtolower($tagName)] > 0);
138 140
139 $historyEntry = $this->history->getHistory()[0]; 141 $historyEntry = $this->history->getHistory()[0];
140 $this->assertEquals(\History::UPDATED, $historyEntry['event']); 142 $this->assertEquals(History::UPDATED, $historyEntry['event']);
141 $this->assertTrue( 143 $this->assertTrue(
142 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 144 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
143 ); 145 );
diff --git a/tests/api/controllers/tags/GetTagNameTest.php b/tests/api/controllers/tags/GetTagNameTest.php
index afac228e..a2525c17 100644
--- a/tests/api/controllers/tags/GetTagNameTest.php
+++ b/tests/api/controllers/tags/GetTagNameTest.php
@@ -2,8 +2,8 @@
2 2
3namespace Shaarli\Api\Controllers; 3namespace Shaarli\Api\Controllers;
4 4
5use Shaarli\Bookmark\LinkDB;
5use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
6
7use Slim\Container; 7use Slim\Container;
8use Slim\Http\Environment; 8use Slim\Http\Environment;
9use Slim\Http\Request; 9use Slim\Http\Request;
@@ -16,7 +16,7 @@ use Slim\Http\Response;
16 * 16 *
17 * @package Shaarli\Api\Controllers 17 * @package Shaarli\Api\Controllers
18 */ 18 */
19class GetTagNameTest extends \PHPUnit_Framework_TestCase 19class GetTagNameTest extends \PHPUnit\Framework\TestCase
20{ 20{
21 /** 21 /**
22 * @var string datastore to test write operations 22 * @var string datastore to test write operations
@@ -59,7 +59,7 @@ class GetTagNameTest extends \PHPUnit_Framework_TestCase
59 59
60 $this->container = new Container(); 60 $this->container = new Container();
61 $this->container['conf'] = $this->conf; 61 $this->container['conf'] = $this->conf;
62 $this->container['db'] = new \LinkDB(self::$testDatastore, true, false); 62 $this->container['db'] = new LinkDB(self::$testDatastore, true, false);
63 $this->container['history'] = null; 63 $this->container['history'] = null;
64 64
65 $this->controller = new Tags($this->container); 65 $this->controller = new Tags($this->container);
diff --git a/tests/api/controllers/tags/GetTagsTest.php b/tests/api/controllers/tags/GetTagsTest.php
index 3fab31b0..98628c98 100644
--- a/tests/api/controllers/tags/GetTagsTest.php
+++ b/tests/api/controllers/tags/GetTagsTest.php
@@ -1,8 +1,8 @@
1<?php 1<?php
2namespace Shaarli\Api\Controllers; 2namespace Shaarli\Api\Controllers;
3 3
4use Shaarli\Bookmark\LinkDB;
4use Shaarli\Config\ConfigManager; 5use Shaarli\Config\ConfigManager;
5
6use Slim\Container; 6use Slim\Container;
7use Slim\Http\Environment; 7use Slim\Http\Environment;
8use Slim\Http\Request; 8use Slim\Http\Request;
@@ -15,7 +15,7 @@ use Slim\Http\Response;
15 * 15 *
16 * @package Shaarli\Api\Controllers 16 * @package Shaarli\Api\Controllers
17 */ 17 */
18class GetTagsTest extends \PHPUnit_Framework_TestCase 18class GetTagsTest extends \PHPUnit\Framework\TestCase
19{ 19{
20 /** 20 /**
21 * @var string datastore to test write operations 21 * @var string datastore to test write operations
@@ -38,7 +38,7 @@ class GetTagsTest extends \PHPUnit_Framework_TestCase
38 protected $container; 38 protected $container;
39 39
40 /** 40 /**
41 * @var \LinkDB instance. 41 * @var LinkDB instance.
42 */ 42 */
43 protected $linkDB; 43 protected $linkDB;
44 44
@@ -63,7 +63,7 @@ class GetTagsTest extends \PHPUnit_Framework_TestCase
63 63
64 $this->container = new Container(); 64 $this->container = new Container();
65 $this->container['conf'] = $this->conf; 65 $this->container['conf'] = $this->conf;
66 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 66 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
67 $this->container['db'] = $this->linkDB; 67 $this->container['db'] = $this->linkDB;
68 $this->container['history'] = null; 68 $this->container['history'] = null;
69 69
diff --git a/tests/api/controllers/tags/PutTagTest.php b/tests/api/controllers/tags/PutTagTest.php
index 38017243..86106fc7 100644
--- a/tests/api/controllers/tags/PutTagTest.php
+++ b/tests/api/controllers/tags/PutTagTest.php
@@ -1,16 +1,17 @@
1<?php 1<?php
2 2
3
4namespace Shaarli\Api\Controllers; 3namespace Shaarli\Api\Controllers;
5 4
6use Shaarli\Api\Exceptions\ApiBadParametersException; 5use Shaarli\Api\Exceptions\ApiBadParametersException;
6use Shaarli\Bookmark\LinkDB;
7use Shaarli\Config\ConfigManager; 7use Shaarli\Config\ConfigManager;
8use Shaarli\History;
8use Slim\Container; 9use Slim\Container;
9use Slim\Http\Environment; 10use Slim\Http\Environment;
10use Slim\Http\Request; 11use Slim\Http\Request;
11use Slim\Http\Response; 12use Slim\Http\Response;
12 13
13class PutTagTest extends \PHPUnit_Framework_TestCase 14class PutTagTest extends \PHPUnit\Framework\TestCase
14{ 15{
15 /** 16 /**
16 * @var string datastore to test write operations 17 * @var string datastore to test write operations
@@ -33,7 +34,7 @@ class PutTagTest extends \PHPUnit_Framework_TestCase
33 protected $refDB = null; 34 protected $refDB = null;
34 35
35 /** 36 /**
36 * @var \History instance. 37 * @var HistoryController instance.
37 */ 38 */
38 protected $history; 39 protected $history;
39 40
@@ -43,7 +44,7 @@ class PutTagTest extends \PHPUnit_Framework_TestCase
43 protected $container; 44 protected $container;
44 45
45 /** 46 /**
46 * @var \LinkDB instance. 47 * @var LinkDB instance.
47 */ 48 */
48 protected $linkDB; 49 protected $linkDB;
49 50
@@ -68,11 +69,11 @@ class PutTagTest extends \PHPUnit_Framework_TestCase
68 69
69 $refHistory = new \ReferenceHistory(); 70 $refHistory = new \ReferenceHistory();
70 $refHistory->write(self::$testHistory); 71 $refHistory->write(self::$testHistory);
71 $this->history = new \History(self::$testHistory); 72 $this->history = new History(self::$testHistory);
72 73
73 $this->container = new Container(); 74 $this->container = new Container();
74 $this->container['conf'] = $this->conf; 75 $this->container['conf'] = $this->conf;
75 $this->linkDB = new \LinkDB(self::$testDatastore, true, false); 76 $this->linkDB = new LinkDB(self::$testDatastore, true, false);
76 $this->container['db'] = $this->linkDB; 77 $this->container['db'] = $this->linkDB;
77 $this->container['history'] = $this->history; 78 $this->container['history'] = $this->history;
78 79
@@ -113,12 +114,12 @@ class PutTagTest extends \PHPUnit_Framework_TestCase
113 $this->assertEquals(2, $tags[$newName]); 114 $this->assertEquals(2, $tags[$newName]);
114 115
115 $historyEntry = $this->history->getHistory()[0]; 116 $historyEntry = $this->history->getHistory()[0];
116 $this->assertEquals(\History::UPDATED, $historyEntry['event']); 117 $this->assertEquals(History::UPDATED, $historyEntry['event']);
117 $this->assertTrue( 118 $this->assertTrue(
118 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 119 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
119 ); 120 );
120 $historyEntry = $this->history->getHistory()[1]; 121 $historyEntry = $this->history->getHistory()[1];
121 $this->assertEquals(\History::UPDATED, $historyEntry['event']); 122 $this->assertEquals(History::UPDATED, $historyEntry['event']);
122 $this->assertTrue( 123 $this->assertTrue(
123 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] 124 (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime']
124 ); 125 );
diff --git a/tests/LinkDBTest.php b/tests/bookmark/LinkDBTest.php
index c763c0cb..2990a6b5 100644
--- a/tests/LinkDBTest.php
+++ b/tests/bookmark/LinkDBTest.php
@@ -3,9 +3,14 @@
3 * Link datastore tests 3 * Link datastore tests
4 */ 4 */
5 5
6require_once 'application/Cache.php'; 6namespace Shaarli\Bookmark;
7require_once 'application/FileUtils.php'; 7
8require_once 'application/LinkDB.php'; 8use DateTime;
9use ReferenceLinkDB;
10use ReflectionClass;
11use Shaarli;
12
13require_once 'application/feed/Cache.php';
9require_once 'application/Utils.php'; 14require_once 'application/Utils.php';
10require_once 'tests/utils/ReferenceLinkDB.php'; 15require_once 'tests/utils/ReferenceLinkDB.php';
11 16
@@ -13,7 +18,7 @@ require_once 'tests/utils/ReferenceLinkDB.php';
13/** 18/**
14 * Unitary tests for LinkDB 19 * Unitary tests for LinkDB
15 */ 20 */
16class LinkDBTest extends PHPUnit_Framework_TestCase 21class LinkDBTest extends \PHPUnit\Framework\TestCase
17{ 22{
18 // datastore to test write operations 23 // datastore to test write operations
19 protected static $testDatastore = 'sandbox/datastore.php'; 24 protected static $testDatastore = 'sandbox/datastore.php';
@@ -73,7 +78,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
73 */ 78 */
74 protected static function getMethod($name) 79 protected static function getMethod($name)
75 { 80 {
76 $class = new ReflectionClass('LinkDB'); 81 $class = new ReflectionClass('Shaarli\Bookmark\LinkDB');
77 $method = $class->getMethod($name); 82 $method = $class->getMethod($name);
78 $method->setAccessible(true); 83 $method->setAccessible(true);
79 return $method; 84 return $method;
@@ -100,7 +105,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
100 /** 105 /**
101 * Attempt to instantiate a LinkDB whereas the datastore is not writable 106 * Attempt to instantiate a LinkDB whereas the datastore is not writable
102 * 107 *
103 * @expectedException IOException 108 * @expectedException Shaarli\Exceptions\IOException
104 * @expectedExceptionMessageRegExp /Error accessing "null"/ 109 * @expectedExceptionMessageRegExp /Error accessing "null"/
105 */ 110 */
106 public function testConstructDatastoreNotWriteable() 111 public function testConstructDatastoreNotWriteable()
@@ -187,12 +192,12 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
187 192
188 $link = array( 193 $link = array(
189 'id' => 42, 194 'id' => 42,
190 'title'=>'an additional link', 195 'title' => 'an additional link',
191 'url'=>'http://dum.my', 196 'url' => 'http://dum.my',
192 'description'=>'One more', 197 'description' => 'One more',
193 'private'=>0, 198 'private' => 0,
194 'created'=> DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150518_190000'), 199 'created' => DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150518_190000'),
195 'tags'=>'unit test' 200 'tags' => 'unit test'
196 ); 201 );
197 $testDB[$link['id']] = $link; 202 $testDB[$link['id']] = $link;
198 $testDB->save('tests'); 203 $testDB->save('tests');
@@ -357,36 +362,6 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
357 } 362 }
358 363
359 /** 364 /**
360 * Test real_url without redirector.
361 */
362 public function testLinkRealUrlWithoutRedirector()
363 {
364 $db = new LinkDB(self::$testDatastore, false, false);
365 foreach ($db as $link) {
366 $this->assertEquals($link['url'], $link['real_url']);
367 }
368 }
369
370 /**
371 * Test real_url with redirector.
372 */
373 public function testLinkRealUrlWithRedirector()
374 {
375 $redirector = 'http://redirector.to?';
376 $db = new LinkDB(self::$testDatastore, false, false, $redirector);
377 foreach ($db as $link) {
378 $this->assertStringStartsWith($redirector, $link['real_url']);
379 $this->assertNotFalse(strpos($link['real_url'], urlencode('://')));
380 }
381
382 $db = new LinkDB(self::$testDatastore, false, false, $redirector, false);
383 foreach ($db as $link) {
384 $this->assertStringStartsWith($redirector, $link['real_url']);
385 $this->assertFalse(strpos($link['real_url'], urlencode('://')));
386 }
387 }
388
389 /**
390 * Test filter with string. 365 * Test filter with string.
391 */ 366 */
392 public function testFilterString() 367 public function testFilterString()
@@ -451,7 +426,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
451 /** 426 /**
452 * Test filterHash() with an invalid smallhash. 427 * Test filterHash() with an invalid smallhash.
453 * 428 *
454 * @expectedException LinkNotFoundException 429 * @expectedException \Shaarli\Bookmark\Exception\LinkNotFoundException
455 */ 430 */
456 public function testFilterHashInValid1() 431 public function testFilterHashInValid1()
457 { 432 {
@@ -462,7 +437,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
462 /** 437 /**
463 * Test filterHash() with an empty smallhash. 438 * Test filterHash() with an empty smallhash.
464 * 439 *
465 * @expectedException LinkNotFoundException 440 * @expectedException \Shaarli\Bookmark\Exception\LinkNotFoundException
466 */ 441 */
467 public function testFilterHashInValid() 442 public function testFilterHashInValid()
468 { 443 {
@@ -511,7 +486,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase
511 public function testRenameTagCaseSensitive() 486 public function testRenameTagCaseSensitive()
512 { 487 {
513 self::$refDB->write(self::$testDatastore); 488 self::$refDB->write(self::$testDatastore);
514 $linkDB = new LinkDB(self::$testDatastore, true, false, ''); 489 $linkDB = new LinkDB(self::$testDatastore, true, false);
515 490
516 $res = $linkDB->renameTag('sTuff', 'Taz'); 491 $res = $linkDB->renameTag('sTuff', 'Taz');
517 $this->assertEquals(1, count($res)); 492 $this->assertEquals(1, count($res));
diff --git a/tests/LinkFilterTest.php b/tests/bookmark/LinkFilterTest.php
index eb54c359..808f8122 100644
--- a/tests/LinkFilterTest.php
+++ b/tests/bookmark/LinkFilterTest.php
@@ -1,11 +1,14 @@
1<?php 1<?php
2 2
3require_once 'application/LinkFilter.php'; 3namespace Shaarli\Bookmark;
4
5use Exception;
6use ReferenceLinkDB;
4 7
5/** 8/**
6 * Class LinkFilterTest. 9 * Class LinkFilterTest.
7 */ 10 */
8class LinkFilterTest extends PHPUnit_Framework_TestCase 11class LinkFilterTest extends \PHPUnit\Framework\TestCase
9{ 12{
10 /** 13 /**
11 * @var string Test datastore path. 14 * @var string Test datastore path.
@@ -27,7 +30,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase
27 protected static $linkDB; 30 protected static $linkDB;
28 31
29 /** 32 /**
30 * Instanciate linkFilter with ReferenceLinkDB data. 33 * Instantiate linkFilter with ReferenceLinkDB data.
31 */ 34 */
32 public static function setUpBeforeClass() 35 public static function setUpBeforeClass()
33 { 36 {
@@ -79,10 +82,14 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase
79 count( 82 count(
80 self::$linkFilter->filter( 83 self::$linkFilter->filter(
81 LinkFilter::$FILTER_TAG, 84 LinkFilter::$FILTER_TAG,
82 /*$request=*/'', 85 /*$request=*/
83 /*$casesensitive=*/false, 86 '',
84 /*$visibility=*/'all', 87 /*$casesensitive=*/
85 /*$untaggedonly=*/true 88 false,
89 /*$visibility=*/
90 'all',
91 /*$untaggedonly=*/
92 true
86 ) 93 )
87 ) 94 )
88 ); 95 );
@@ -227,7 +234,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase
227 /** 234 /**
228 * No link for this hash 235 * No link for this hash
229 * 236 *
230 * @expectedException LinkNotFoundException 237 * @expectedException \Shaarli\Bookmark\Exception\LinkNotFoundException
231 */ 238 */
232 public function testFilterUnknownSmallHash() 239 public function testFilterUnknownSmallHash()
233 { 240 {
diff --git a/tests/LinkUtilsTest.php b/tests/bookmark/LinkUtilsTest.php
index 5407159a..78cb8f2a 100644
--- a/tests/LinkUtilsTest.php
+++ b/tests/bookmark/LinkUtilsTest.php
@@ -1,11 +1,17 @@
1<?php 1<?php
2 2
3require_once 'application/LinkUtils.php'; 3namespace Shaarli\Bookmark;
4
5use PHPUnit\Framework\TestCase;
6use ReferenceLinkDB;
7use Shaarli\Config\ConfigManager;
8
9require_once 'tests/utils/CurlUtils.php';
4 10
5/** 11/**
6* Class LinkUtilsTest. 12 * Class LinkUtilsTest.
7*/ 13 */
8class LinkUtilsTest extends PHPUnit_Framework_TestCase 14class LinkUtilsTest extends TestCase
9{ 15{
10 /** 16 /**
11 * Test html_extract_title() when the title is found. 17 * Test html_extract_title() when the title is found.
@@ -13,9 +19,9 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
13 public function testHtmlExtractExistentTitle() 19 public function testHtmlExtractExistentTitle()
14 { 20 {
15 $title = 'Read me please.'; 21 $title = 'Read me please.';
16 $html = '<html><meta>stuff</meta><title>'. $title .'</title></html>'; 22 $html = '<html><meta>stuff</meta><title>' . $title . '</title></html>';
17 $this->assertEquals($title, html_extract_title($html)); 23 $this->assertEquals($title, html_extract_title($html));
18 $html = '<html><title>'. $title .'</title>blabla<title>another</title></html>'; 24 $html = '<html><title>' . $title . '</title>blabla<title>another</title></html>';
19 $this->assertEquals($title, html_extract_title($html)); 25 $this->assertEquals($title, html_extract_title($html));
20 } 26 }
21 27
@@ -34,7 +40,7 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
34 public function testHeadersExtractExistentCharset() 40 public function testHeadersExtractExistentCharset()
35 { 41 {
36 $charset = 'x-MacCroatian'; 42 $charset = 'x-MacCroatian';
37 $headers = 'text/html; charset='. $charset; 43 $headers = 'text/html; charset=' . $charset;
38 $this->assertEquals(strtolower($charset), header_extract_charset($headers)); 44 $this->assertEquals(strtolower($charset), header_extract_charset($headers));
39 } 45 }
40 46
@@ -56,7 +62,7 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
56 public function testHtmlExtractExistentCharset() 62 public function testHtmlExtractExistentCharset()
57 { 63 {
58 $charset = 'x-MacCroatian'; 64 $charset = 'x-MacCroatian';
59 $html = '<html><meta>stuff2</meta><meta charset="'. $charset .'"/></html>'; 65 $html = '<html><meta>stuff2</meta><meta charset="' . $charset . '"/></html>';
60 $this->assertEquals(strtolower($charset), html_extract_charset($html)); 66 $this->assertEquals(strtolower($charset), html_extract_charset($html));
61 } 67 }
62 68
@@ -72,11 +78,56 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
72 } 78 }
73 79
74 /** 80 /**
81 * Test html_extract_tag() when the tag <meta name= is found.
82 */
83 public function testHtmlExtractExistentNameTag()
84 {
85 $description = 'Bob and Alice share cookies.';
86 $html = '<html><meta>stuff2</meta><meta name="description" content="' . $description . '"/></html>';
87 $this->assertEquals($description, html_extract_tag('description', $html));
88 }
89
90 /**
91 * Test html_extract_tag() when the tag <meta name= is not found.
92 */
93 public function testHtmlExtractNonExistentNameTag()
94 {
95 $html = '<html><meta>stuff2</meta><meta name="image" content="img"/></html>';
96 $this->assertFalse(html_extract_tag('description', $html));
97 }
98
99 /**
100 * Test html_extract_tag() when the tag <meta property="og: is found.
101 */
102 public function testHtmlExtractExistentOgTag()
103 {
104 $description = 'Bob and Alice share cookies.';
105 $html = '<html><meta>stuff2</meta><meta property="og:description" content="' . $description . '"/></html>';
106 $this->assertEquals($description, html_extract_tag('description', $html));
107 }
108
109 /**
110 * Test html_extract_tag() when the tag <meta property="og: is not found.
111 */
112 public function testHtmlExtractNonExistentOgTag()
113 {
114 $html = '<html><meta>stuff2</meta><meta name="image" content="img"/></html>';
115 $this->assertFalse(html_extract_tag('description', $html));
116 }
117
118 /**
75 * Test the download callback with valid value 119 * Test the download callback with valid value
76 */ 120 */
77 public function testCurlDownloadCallbackOk() 121 public function testCurlDownloadCallbackOk()
78 { 122 {
79 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_ok'); 123 $callback = get_curl_download_callback(
124 $charset,
125 $title,
126 $desc,
127 $keywords,
128 false,
129 'ut_curl_getinfo_ok'
130 );
80 $data = [ 131 $data = [
81 'HTTP/1.1 200 OK', 132 'HTTP/1.1 200 OK',
82 'Server: GitHub.com', 133 'Server: GitHub.com',
@@ -84,9 +135,11 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
84 'Content-Type: text/html; charset=utf-8', 135 'Content-Type: text/html; charset=utf-8',
85 'Status: 200 OK', 136 'Status: 200 OK',
86 'end' => 'th=device-width">' 137 'end' => 'th=device-width">'
87 .'<title>Refactoring · GitHub</title>' 138 . '<title>Refactoring · GitHub</title>'
88 .'<link rel="search" type="application/opensea', 139 . '<link rel="search" type="application/opensea',
89 '<title>ignored</title>', 140 '<title>ignored</title>'
141 . '<meta name="description" content="desc" />'
142 . '<meta name="keywords" content="key1,key2" />',
90 ]; 143 ];
91 foreach ($data as $key => $line) { 144 foreach ($data as $key => $line) {
92 $ignore = null; 145 $ignore = null;
@@ -98,6 +151,8 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
98 } 151 }
99 $this->assertEquals('utf-8', $charset); 152 $this->assertEquals('utf-8', $charset);
100 $this->assertEquals('Refactoring · GitHub', $title); 153 $this->assertEquals('Refactoring · GitHub', $title);
154 $this->assertEmpty($desc);
155 $this->assertEmpty($keywords);
101 } 156 }
102 157
103 /** 158 /**
@@ -105,13 +160,22 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
105 */ 160 */
106 public function testCurlDownloadCallbackOkNoCharset() 161 public function testCurlDownloadCallbackOkNoCharset()
107 { 162 {
108 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_no_charset'); 163 $callback = get_curl_download_callback(
164 $charset,
165 $title,
166 $desc,
167 $keywords,
168 false,
169 'ut_curl_getinfo_no_charset'
170 );
109 $data = [ 171 $data = [
110 'HTTP/1.1 200 OK', 172 'HTTP/1.1 200 OK',
111 'end' => 'th=device-width">' 173 'end' => 'th=device-width">'
112 .'<title>Refactoring · GitHub</title>' 174 . '<title>Refactoring · GitHub</title>'
113 .'<link rel="search" type="application/opensea', 175 . '<link rel="search" type="application/opensea',
114 '<title>ignored</title>', 176 '<title>ignored</title>'
177 . '<meta name="description" content="desc" />'
178 . '<meta name="keywords" content="key1,key2" />',
115 ]; 179 ];
116 foreach ($data as $key => $line) { 180 foreach ($data as $key => $line) {
117 $ignore = null; 181 $ignore = null;
@@ -119,6 +183,8 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
119 } 183 }
120 $this->assertEmpty($charset); 184 $this->assertEmpty($charset);
121 $this->assertEquals('Refactoring · GitHub', $title); 185 $this->assertEquals('Refactoring · GitHub', $title);
186 $this->assertEmpty($desc);
187 $this->assertEmpty($keywords);
122 } 188 }
123 189
124 /** 190 /**
@@ -126,14 +192,23 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
126 */ 192 */
127 public function testCurlDownloadCallbackOkHtmlCharset() 193 public function testCurlDownloadCallbackOkHtmlCharset()
128 { 194 {
129 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_no_charset'); 195 $callback = get_curl_download_callback(
196 $charset,
197 $title,
198 $desc,
199 $keywords,
200 false,
201 'ut_curl_getinfo_no_charset'
202 );
130 $data = [ 203 $data = [
131 'HTTP/1.1 200 OK', 204 'HTTP/1.1 200 OK',
132 '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />', 205 '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',
133 'end' => 'th=device-width">' 206 'end' => 'th=device-width">'
134 .'<title>Refactoring · GitHub</title>' 207 . '<title>Refactoring · GitHub</title>'
135 .'<link rel="search" type="application/opensea', 208 . '<link rel="search" type="application/opensea',
136 '<title>ignored</title>', 209 '<title>ignored</title>'
210 . '<meta name="description" content="desc" />'
211 . '<meta name="keywords" content="key1,key2" />',
137 ]; 212 ];
138 foreach ($data as $key => $line) { 213 foreach ($data as $key => $line) {
139 $ignore = null; 214 $ignore = null;
@@ -145,6 +220,8 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
145 } 220 }
146 $this->assertEquals('utf-8', $charset); 221 $this->assertEquals('utf-8', $charset);
147 $this->assertEquals('Refactoring · GitHub', $title); 222 $this->assertEquals('Refactoring · GitHub', $title);
223 $this->assertEmpty($desc);
224 $this->assertEmpty($keywords);
148 } 225 }
149 226
150 /** 227 /**
@@ -152,7 +229,14 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
152 */ 229 */
153 public function testCurlDownloadCallbackOkNoTitle() 230 public function testCurlDownloadCallbackOkNoTitle()
154 { 231 {
155 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_ok'); 232 $callback = get_curl_download_callback(
233 $charset,
234 $title,
235 $desc,
236 $keywords,
237 false,
238 'ut_curl_getinfo_ok'
239 );
156 $data = [ 240 $data = [
157 'HTTP/1.1 200 OK', 241 'HTTP/1.1 200 OK',
158 'end' => 'th=device-width">Refactoring · GitHub<link rel="search" type="application/opensea', 242 'end' => 'th=device-width">Refactoring · GitHub<link rel="search" type="application/opensea',
@@ -164,6 +248,8 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
164 } 248 }
165 $this->assertEquals('utf-8', $charset); 249 $this->assertEquals('utf-8', $charset);
166 $this->assertEmpty($title); 250 $this->assertEmpty($title);
251 $this->assertEmpty($desc);
252 $this->assertEmpty($keywords);
167 } 253 }
168 254
169 /** 255 /**
@@ -171,7 +257,14 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
171 */ 257 */
172 public function testCurlDownloadCallbackInvalidContentType() 258 public function testCurlDownloadCallbackInvalidContentType()
173 { 259 {
174 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_ct_ko'); 260 $callback = get_curl_download_callback(
261 $charset,
262 $title,
263 $desc,
264 $keywords,
265 false,
266 'ut_curl_getinfo_ct_ko'
267 );
175 $ignore = null; 268 $ignore = null;
176 $this->assertFalse($callback($ignore, '')); 269 $this->assertFalse($callback($ignore, ''));
177 $this->assertEmpty($charset); 270 $this->assertEmpty($charset);
@@ -183,7 +276,14 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
183 */ 276 */
184 public function testCurlDownloadCallbackInvalidResponseCode() 277 public function testCurlDownloadCallbackInvalidResponseCode()
185 { 278 {
186 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_rc_ko'); 279 $callback = $callback = get_curl_download_callback(
280 $charset,
281 $title,
282 $desc,
283 $keywords,
284 false,
285 'ut_curl_getinfo_rc_ko'
286 );
187 $ignore = null; 287 $ignore = null;
188 $this->assertFalse($callback($ignore, '')); 288 $this->assertFalse($callback($ignore, ''));
189 $this->assertEmpty($charset); 289 $this->assertEmpty($charset);
@@ -195,7 +295,14 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
195 */ 295 */
196 public function testCurlDownloadCallbackInvalidContentTypeAndResponseCode() 296 public function testCurlDownloadCallbackInvalidContentTypeAndResponseCode()
197 { 297 {
198 $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_rs_ct_ko'); 298 $callback = $callback = get_curl_download_callback(
299 $charset,
300 $title,
301 $desc,
302 $keywords,
303 false,
304 'ut_curl_getinfo_rs_ct_ko'
305 );
199 $ignore = null; 306 $ignore = null;
200 $this->assertFalse($callback($ignore, '')); 307 $this->assertFalse($callback($ignore, ''));
201 $this->assertEmpty($charset); 308 $this->assertEmpty($charset);
@@ -203,6 +310,85 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
203 } 310 }
204 311
205 /** 312 /**
313 * Test the download callback with valid value, and retrieve_description option enabled.
314 */
315 public function testCurlDownloadCallbackOkWithDesc()
316 {
317 $callback = get_curl_download_callback(
318 $charset,
319 $title,
320 $desc,
321 $keywords,
322 true,
323 'ut_curl_getinfo_ok'
324 );
325 $data = [
326 'HTTP/1.1 200 OK',
327 'Server: GitHub.com',
328 'Date: Sat, 28 Oct 2017 12:01:33 GMT',
329 'Content-Type: text/html; charset=utf-8',
330 'Status: 200 OK',
331 'th=device-width">'
332 . '<title>Refactoring · GitHub</title>'
333 . '<link rel="search" type="application/opensea',
334 'end' => '<title>ignored</title>'
335 . '<meta name="description" content="link desc" />'
336 . '<meta name="keywords" content="key1,key2" />',
337 ];
338 foreach ($data as $key => $line) {
339 $ignore = null;
340 $expected = $key !== 'end' ? strlen($line) : false;
341 $this->assertEquals($expected, $callback($ignore, $line));
342 if ($expected === false) {
343 break;
344 }
345 }
346 $this->assertEquals('utf-8', $charset);
347 $this->assertEquals('Refactoring · GitHub', $title);
348 $this->assertEquals('link desc', $desc);
349 $this->assertEquals('key1 key2', $keywords);
350 }
351
352 /**
353 * Test the download callback with valid value, and retrieve_description option enabled,
354 * but no desc or keyword defined in the page.
355 */
356 public function testCurlDownloadCallbackOkWithDescNotFound()
357 {
358 $callback = get_curl_download_callback(
359 $charset,
360 $title,
361 $desc,
362 $keywords,
363 true,
364 'ut_curl_getinfo_ok'
365 );
366 $data = [
367 'HTTP/1.1 200 OK',
368 'Server: GitHub.com',
369 'Date: Sat, 28 Oct 2017 12:01:33 GMT',
370 'Content-Type: text/html; charset=utf-8',
371 'Status: 200 OK',
372 'th=device-width">'
373 . '<title>Refactoring · GitHub</title>'
374 . '<link rel="search" type="application/opensea',
375 'end' => '<title>ignored</title>',
376 ];
377 foreach ($data as $key => $line) {
378 $ignore = null;
379 $expected = $key !== 'end' ? strlen($line) : false;
380 $this->assertEquals($expected, $callback($ignore, $line));
381 if ($expected === false) {
382 break;
383 }
384 }
385 $this->assertEquals('utf-8', $charset);
386 $this->assertEquals('Refactoring · GitHub', $title);
387 $this->assertEmpty($desc);
388 $this->assertEmpty($keywords);
389 }
390
391 /**
206 * Test count_private. 392 * Test count_private.
207 */ 393 */
208 public function testCountPrivateLinks() 394 public function testCountPrivateLinks()
@@ -212,56 +398,27 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
212 } 398 }
213 399
214 /** 400 /**
215 * Test text2clickable without a redirector being set. 401 * Test text2clickable.
216 */ 402 */
217 public function testText2clickableWithoutRedirector() 403 public function testText2clickable()
218 { 404 {
219 $text = 'stuff http://hello.there/is=someone#here otherstuff'; 405 $text = 'stuff http://hello.there/is=someone#here otherstuff';
220 $expectedText = 'stuff <a href="http://hello.there/is=someone#here">' 406 $expectedText = 'stuff <a href="http://hello.there/is=someone#here">'
221 .'http://hello.there/is=someone#here</a> otherstuff'; 407 . 'http://hello.there/is=someone#here</a> otherstuff';
222 $processedText = text2clickable($text, ''); 408 $processedText = text2clickable($text);
223 $this->assertEquals($expectedText, $processedText); 409 $this->assertEquals($expectedText, $processedText);
224 410
225 $text = 'stuff http://hello.there/is=someone#here(please) otherstuff'; 411 $text = 'stuff http://hello.there/is=someone#here(please) otherstuff';
226 $expectedText = 'stuff <a href="http://hello.there/is=someone#here(please)">' 412 $expectedText = 'stuff <a href="http://hello.there/is=someone#here(please)">'
227 .'http://hello.there/is=someone#here(please)</a> otherstuff'; 413 . 'http://hello.there/is=someone#here(please)</a> otherstuff';
228 $processedText = text2clickable($text, ''); 414 $processedText = text2clickable($text);
229 $this->assertEquals($expectedText, $processedText); 415 $this->assertEquals($expectedText, $processedText);
230 416
231 $text = 'stuff http://hello.there/is=someone#here(please)&no otherstuff'; 417 $text = 'stuff http://hello.there/is=someone#here(please)&no otherstuff';
418 $text = 'stuff http://hello.there/is=someone#here(please)&no otherstuff';
232 $expectedText = 'stuff <a href="http://hello.there/is=someone#here(please)&no">' 419 $expectedText = 'stuff <a href="http://hello.there/is=someone#here(please)&no">'
233 .'http://hello.there/is=someone#here(please)&no</a> otherstuff'; 420 . 'http://hello.there/is=someone#here(please)&no</a> otherstuff';
234 $processedText = text2clickable($text, ''); 421 $processedText = text2clickable($text);
235 $this->assertEquals($expectedText, $processedText);
236 }
237
238 /**
239 * Test text2clickable with a redirector set.
240 */
241 public function testText2clickableWithRedirector()
242 {
243 $text = 'stuff http://hello.there/is=someone#here otherstuff';
244 $redirector = 'http://redirector.to';
245 $expectedText = 'stuff <a href="'.
246 $redirector .
247 urlencode('http://hello.there/is=someone#here') .
248 '">http://hello.there/is=someone#here</a> otherstuff';
249 $processedText = text2clickable($text, $redirector);
250 $this->assertEquals($expectedText, $processedText);
251 }
252
253 /**
254 * Test text2clickable a redirector set and without URL encode.
255 */
256 public function testText2clickableWithRedirectorDontEncode()
257 {
258 $text = 'stuff http://hello.there/?is=someone&or=something#here otherstuff';
259 $redirector = 'http://redirector.to';
260 $expectedText = 'stuff <a href="'.
261 $redirector .
262 'http://hello.there/?is=someone&or=something#here' .
263 '">http://hello.there/?is=someone&or=something#here</a> otherstuff';
264 $processedText = text2clickable($text, $redirector, false);
265 $this->assertEquals($expectedText, $processedText); 422 $this->assertEquals($expectedText, $processedText);
266 } 423 }
267 424
@@ -270,8 +427,8 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
270 */ 427 */
271 public function testSpace2nbsp() 428 public function testSpace2nbsp()
272 { 429 {
273 $text = ' Are you thrilled by flags ?'. PHP_EOL .' Really?'; 430 $text = ' Are you thrilled by flags ?' . PHP_EOL . ' Really?';
274 $expectedText = '&nbsp; Are you &nbsp; thrilled &nbsp;by flags &nbsp; ?'. PHP_EOL .'&nbsp;Really?'; 431 $expectedText = '&nbsp; Are you &nbsp; thrilled &nbsp;by flags &nbsp; ?' . PHP_EOL . '&nbsp;Really?';
275 $processedText = space2nbsp($text); 432 $processedText = space2nbsp($text);
276 $this->assertEquals($expectedText, $processedText); 433 $this->assertEquals($expectedText, $processedText);
277 } 434 }
@@ -314,108 +471,36 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase
314 } 471 }
315 472
316 /** 473 /**
474 * Test is_note with note URLs.
475 */
476 public function testIsNote()
477 {
478 $this->assertTrue(is_note('?'));
479 $this->assertTrue(is_note('?abcDEf'));
480 $this->assertTrue(is_note('?_abcDEf#123'));
481 }
482
483 /**
484 * Test is_note with non note URLs.
485 */
486 public function testIsNotNote()
487 {
488 $this->assertFalse(is_note(''));
489 $this->assertFalse(is_note('nope'));
490 $this->assertFalse(is_note('https://github.com/shaarli/Shaarli/?hi'));
491 }
492
493 /**
317 * Util function to build an hashtag link. 494 * Util function to build an hashtag link.
318 * 495 *
319 * @param string $hashtag Hashtag name. 496 * @param string $hashtag Hashtag name.
320 * @param string $index Index URL. 497 * @param string $index Index URL.
321 * 498 *
322 * @return string HTML hashtag link. 499 * @return string HTML hashtag link.
323 */ 500 */
324 private function getHashtagLink($hashtag, $index = '') 501 private function getHashtagLink($hashtag, $index = '')
325 { 502 {
326 $hashtagLink = '<a href="'. $index .'?addtag=$1" title="Hashtag $1">#$1</a>'; 503 $hashtagLink = '<a href="' . $index . '?addtag=$1" title="Hashtag $1">#$1</a>';
327 return str_replace('$1', $hashtag, $hashtagLink); 504 return str_replace('$1', $hashtag, $hashtagLink);
328 } 505 }
329} 506}
330
331// old style mock: PHPUnit doesn't allow function mock
332
333/**
334 * Returns code 200 or html content type.
335 *
336 * @param resource $ch cURL resource
337 * @param int $type cURL info type
338 *
339 * @return int|string 200 or 'text/html'
340 */
341function ut_curl_getinfo_ok($ch, $type)
342{
343 switch ($type) {
344 case CURLINFO_RESPONSE_CODE:
345 return 200;
346 case CURLINFO_CONTENT_TYPE:
347 return 'text/html; charset=utf-8';
348 }
349}
350
351/**
352 * Returns code 200 or html content type without charset.
353 *
354 * @param resource $ch cURL resource
355 * @param int $type cURL info type
356 *
357 * @return int|string 200 or 'text/html'
358 */
359function ut_curl_getinfo_no_charset($ch, $type)
360{
361 switch ($type) {
362 case CURLINFO_RESPONSE_CODE:
363 return 200;
364 case CURLINFO_CONTENT_TYPE:
365 return 'text/html';
366 }
367}
368
369/**
370 * Invalid response code.
371 *
372 * @param resource $ch cURL resource
373 * @param int $type cURL info type
374 *
375 * @return int|string 404 or 'text/html'
376 */
377function ut_curl_getinfo_rc_ko($ch, $type)
378{
379 switch ($type) {
380 case CURLINFO_RESPONSE_CODE:
381 return 404;
382 case CURLINFO_CONTENT_TYPE:
383 return 'text/html; charset=utf-8';
384 }
385}
386
387/**
388 * Invalid content type.
389 *
390 * @param resource $ch cURL resource
391 * @param int $type cURL info type
392 *
393 * @return int|string 200 or 'text/plain'
394 */
395function ut_curl_getinfo_ct_ko($ch, $type)
396{
397 switch ($type) {
398 case CURLINFO_RESPONSE_CODE:
399 return 200;
400 case CURLINFO_CONTENT_TYPE:
401 return 'text/plain';
402 }
403}
404
405/**
406 * Invalid response code and content type.
407 *
408 * @param resource $ch cURL resource
409 * @param int $type cURL info type
410 *
411 * @return int|string 404 or 'text/plain'
412 */
413function ut_curl_getinfo_rs_ct_ko($ch, $type)
414{
415 switch ($type) {
416 case CURLINFO_RESPONSE_CODE:
417 return 404;
418 case CURLINFO_CONTENT_TYPE:
419 return 'text/plain';
420 }
421}
diff --git a/tests/config/ConfigJsonTest.php b/tests/config/ConfigJsonTest.php
index d237bc80..95ad060b 100644
--- a/tests/config/ConfigJsonTest.php
+++ b/tests/config/ConfigJsonTest.php
@@ -4,7 +4,7 @@ namespace Shaarli\Config;
4/** 4/**
5 * Class ConfigJsonTest 5 * Class ConfigJsonTest
6 */ 6 */
7class ConfigJsonTest extends \PHPUnit_Framework_TestCase 7class ConfigJsonTest extends \PHPUnit\Framework\TestCase
8{ 8{
9 /** 9 /**
10 * @var ConfigJson 10 * @var ConfigJson
@@ -111,7 +111,7 @@ class ConfigJsonTest extends \PHPUnit_Framework_TestCase
111 /** 111 /**
112 * Write to invalid path. 112 * Write to invalid path.
113 * 113 *
114 * @expectedException \IOException 114 * @expectedException \Shaarli\Exceptions\IOException
115 */ 115 */
116 public function testWriteInvalidArray() 116 public function testWriteInvalidArray()
117 { 117 {
@@ -122,7 +122,7 @@ class ConfigJsonTest extends \PHPUnit_Framework_TestCase
122 /** 122 /**
123 * Write to invalid path. 123 * Write to invalid path.
124 * 124 *
125 * @expectedException \IOException 125 * @expectedException \Shaarli\Exceptions\IOException
126 */ 126 */
127 public function testWriteInvalidBlank() 127 public function testWriteInvalidBlank()
128 { 128 {
diff --git a/tests/config/ConfigManagerTest.php b/tests/config/ConfigManagerTest.php
index 4a4e94ac..33830bc9 100644
--- a/tests/config/ConfigManagerTest.php
+++ b/tests/config/ConfigManagerTest.php
@@ -7,7 +7,7 @@ namespace Shaarli\Config;
7 * Note: it only test the manager with ConfigJson, 7 * Note: it only test the manager with ConfigJson,
8 * ConfigPhp is only a workaround to handle the transition to JSON type. 8 * ConfigPhp is only a workaround to handle the transition to JSON type.
9 */ 9 */
10class ConfigManagerTest extends \PHPUnit_Framework_TestCase 10class ConfigManagerTest extends \PHPUnit\Framework\TestCase
11{ 11{
12 /** 12 /**
13 * @var ConfigManager 13 * @var ConfigManager
diff --git a/tests/config/ConfigPhpTest.php b/tests/config/ConfigPhpTest.php
index be23eea1..67d878ce 100644
--- a/tests/config/ConfigPhpTest.php
+++ b/tests/config/ConfigPhpTest.php
@@ -4,7 +4,7 @@ namespace Shaarli\Config;
4/** 4/**
5 * Class ConfigPhpTest 5 * Class ConfigPhpTest
6 */ 6 */
7class ConfigPhpTest extends \PHPUnit_Framework_TestCase 7class ConfigPhpTest extends \PHPUnit\Framework\TestCase
8{ 8{
9 /** 9 /**
10 * @var ConfigPhp 10 * @var ConfigPhp
diff --git a/tests/config/ConfigPluginTest.php b/tests/config/ConfigPluginTest.php
index deb02c9e..d7a70e68 100644
--- a/tests/config/ConfigPluginTest.php
+++ b/tests/config/ConfigPluginTest.php
@@ -8,7 +8,7 @@ require_once 'application/config/ConfigPlugin.php';
8/** 8/**
9 * Unitary tests for Shaarli config related functions 9 * Unitary tests for Shaarli config related functions
10 */ 10 */
11class ConfigPluginTest extends \PHPUnit_Framework_TestCase 11class ConfigPluginTest extends \PHPUnit\Framework\TestCase
12{ 12{
13 /** 13 /**
14 * Test save_plugin_config with valid data. 14 * Test save_plugin_config with valid data.
diff --git a/tests/CacheTest.php b/tests/feed/CacheTest.php
index f60fad91..c0a9f26f 100644
--- a/tests/CacheTest.php
+++ b/tests/feed/CacheTest.php
@@ -2,16 +2,17 @@
2/** 2/**
3 * Cache tests 3 * Cache tests
4 */ 4 */
5namespace Shaarli\Feed;
5 6
6// required to access $_SESSION array 7// required to access $_SESSION array
7session_start(); 8session_start();
8 9
9require_once 'application/Cache.php'; 10require_once 'application/feed/Cache.php';
10 11
11/** 12/**
12 * Unitary tests for cached pages 13 * Unitary tests for cached pages
13 */ 14 */
14class CacheTest extends PHPUnit_Framework_TestCase 15class CacheTest extends \PHPUnit\Framework\TestCase
15{ 16{
16 // test cache directory 17 // test cache directory
17 protected static $testCacheDir = 'sandbox/dummycache'; 18 protected static $testCacheDir = 'sandbox/dummycache';
@@ -25,16 +26,16 @@ class CacheTest extends PHPUnit_Framework_TestCase
25 */ 26 */
26 public function setUp() 27 public function setUp()
27 { 28 {
28 if (! is_dir(self::$testCacheDir)) { 29 if (!is_dir(self::$testCacheDir)) {
29 mkdir(self::$testCacheDir); 30 mkdir(self::$testCacheDir);
30 } else { 31 } else {
31 array_map('unlink', glob(self::$testCacheDir.'/*')); 32 array_map('unlink', glob(self::$testCacheDir . '/*'));
32 } 33 }
33 34
34 foreach (self::$pages as $page) { 35 foreach (self::$pages as $page) {
35 file_put_contents(self::$testCacheDir.'/'.$page.'.cache', $page); 36 file_put_contents(self::$testCacheDir . '/' . $page . '.cache', $page);
36 } 37 }
37 file_put_contents(self::$testCacheDir.'/intru.der', 'ShouldNotBeThere'); 38 file_put_contents(self::$testCacheDir . '/intru.der', 'ShouldNotBeThere');
38 } 39 }
39 40
40 /** 41 /**
@@ -42,7 +43,7 @@ class CacheTest extends PHPUnit_Framework_TestCase
42 */ 43 */
43 public function tearDown() 44 public function tearDown()
44 { 45 {
45 array_map('unlink', glob(self::$testCacheDir.'/*')); 46 array_map('unlink', glob(self::$testCacheDir . '/*'));
46 rmdir(self::$testCacheDir); 47 rmdir(self::$testCacheDir);
47 } 48 }
48 49
@@ -53,10 +54,10 @@ class CacheTest extends PHPUnit_Framework_TestCase
53 { 54 {
54 purgeCachedPages(self::$testCacheDir); 55 purgeCachedPages(self::$testCacheDir);
55 foreach (self::$pages as $page) { 56 foreach (self::$pages as $page) {
56 $this->assertFileNotExists(self::$testCacheDir.'/'.$page.'.cache'); 57 $this->assertFileNotExists(self::$testCacheDir . '/' . $page . '.cache');
57 } 58 }
58 59
59 $this->assertFileExists(self::$testCacheDir.'/intru.der'); 60 $this->assertFileExists(self::$testCacheDir . '/intru.der');
60 } 61 }
61 62
62 /** 63 /**
@@ -68,7 +69,7 @@ class CacheTest extends PHPUnit_Framework_TestCase
68 ini_set('error_log', '/dev/null'); 69 ini_set('error_log', '/dev/null');
69 $this->assertEquals( 70 $this->assertEquals(
70 'Cannot purge sandbox/dummycache_missing: no directory', 71 'Cannot purge sandbox/dummycache_missing: no directory',
71 purgeCachedPages(self::$testCacheDir.'_missing') 72 purgeCachedPages(self::$testCacheDir . '_missing')
72 ); 73 );
73 ini_set('error_log', $oldlog); 74 ini_set('error_log', $oldlog);
74 } 75 }
@@ -83,7 +84,7 @@ class CacheTest extends PHPUnit_Framework_TestCase
83 84
84 invalidateCaches(self::$testCacheDir); 85 invalidateCaches(self::$testCacheDir);
85 foreach (self::$pages as $page) { 86 foreach (self::$pages as $page) {
86 $this->assertFileNotExists(self::$testCacheDir.'/'.$page.'.cache'); 87 $this->assertFileNotExists(self::$testCacheDir . '/' . $page . '.cache');
87 } 88 }
88 89
89 $this->assertArrayNotHasKey('tags', $_SESSION); 90 $this->assertArrayNotHasKey('tags', $_SESSION);
diff --git a/tests/CachedPageTest.php b/tests/feed/CachedPageTest.php
index 51565cd6..0bcc1442 100644
--- a/tests/CachedPageTest.php
+++ b/tests/feed/CachedPageTest.php
@@ -2,13 +2,12 @@
2/** 2/**
3 * PageCache tests 3 * PageCache tests
4 */ 4 */
5 5namespace Shaarli\Feed;
6require_once 'application/CachedPage.php';
7 6
8/** 7/**
9 * Unitary tests for cached pages 8 * Unitary tests for cached pages
10 */ 9 */
11class CachedPageTest extends PHPUnit_Framework_TestCase 10class CachedPageTest extends \PHPUnit\Framework\TestCase
12{ 11{
13 // test cache directory 12 // test cache directory
14 protected static $testCacheDir = 'sandbox/pagecache'; 13 protected static $testCacheDir = 'sandbox/pagecache';
@@ -20,10 +19,10 @@ class CachedPageTest extends PHPUnit_Framework_TestCase
20 */ 19 */
21 public static function setUpBeforeClass() 20 public static function setUpBeforeClass()
22 { 21 {
23 if (! is_dir(self::$testCacheDir)) { 22 if (!is_dir(self::$testCacheDir)) {
24 mkdir(self::$testCacheDir); 23 mkdir(self::$testCacheDir);
25 } 24 }
26 self::$filename = self::$testCacheDir.'/'.sha1(self::$url).'.cache'; 25 self::$filename = self::$testCacheDir . '/' . sha1(self::$url) . '.cache';
27 } 26 }
28 27
29 /** 28 /**
diff --git a/tests/FeedBuilderTest.php b/tests/feed/FeedBuilderTest.php
index 4ca58e5a..b496cb4c 100644
--- a/tests/FeedBuilderTest.php
+++ b/tests/feed/FeedBuilderTest.php
@@ -1,14 +1,17 @@
1<?php 1<?php
2 2
3require_once 'application/FeedBuilder.php'; 3namespace Shaarli\Feed;
4require_once 'application/LinkDB.php'; 4
5use DateTime;
6use ReferenceLinkDB;
7use Shaarli\Bookmark\LinkDB;
5 8
6/** 9/**
7 * FeedBuilderTest class. 10 * FeedBuilderTest class.
8 * 11 *
9 * Unit tests for FeedBuilder. 12 * Unit tests for FeedBuilder.
10 */ 13 */
11class FeedBuilderTest extends PHPUnit_Framework_TestCase 14class FeedBuilderTest extends \PHPUnit\Framework\TestCase
12{ 15{
13 /** 16 /**
14 * @var string locale Basque (Spain). 17 * @var string locale Basque (Spain).
@@ -90,7 +93,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase
90 $this->assertEquals('http://host.tld/?WDWyig', $link['url']); 93 $this->assertEquals('http://host.tld/?WDWyig', $link['url']);
91 $this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $link['pub_iso_date']); 94 $this->assertRegExp('/Tue, 10 Mar 2015 11:46:51 \+\d{4}/', $link['pub_iso_date']);
92 $pub = DateTime::createFromFormat(DateTime::RSS, $link['pub_iso_date']); 95 $pub = DateTime::createFromFormat(DateTime::RSS, $link['pub_iso_date']);
93 $up = DateTime::createFromFormat(DateTime::ATOM, $link['up_iso_date']); 96 $up = DateTime::createFromFormat(DateTime::ATOM, $link['up_iso_date']);
94 $this->assertEquals($pub, $up); 97 $this->assertEquals($pub, $up);
95 $this->assertContains('Stallman has a beard', $link['description']); 98 $this->assertContains('Stallman has a beard', $link['description']);
96 $this->assertContains('Permalink', $link['description']); 99 $this->assertContains('Permalink', $link['description']);
diff --git a/tests/HttpUtils/ClientIpIdTest.php b/tests/http/HttpUtils/ClientIpIdTest.php
index c15ac5cc..982e57e0 100644
--- a/tests/HttpUtils/ClientIpIdTest.php
+++ b/tests/http/HttpUtils/ClientIpIdTest.php
@@ -3,12 +3,14 @@
3 * HttpUtils' tests 3 * HttpUtils' tests
4 */ 4 */
5 5
6require_once 'application/HttpUtils.php'; 6namespace Shaarli\Http;
7
8require_once 'application/http/HttpUtils.php';
7 9
8/** 10/**
9 * Unitary tests for client_ip_id() 11 * Unitary tests for client_ip_id()
10 */ 12 */
11class ClientIpIdTest extends PHPUnit_Framework_TestCase 13class ClientIpIdTest extends \PHPUnit\Framework\TestCase
12{ 14{
13 /** 15 /**
14 * Get a remote client ID based on its IP 16 * Get a remote client ID based on its IP
diff --git a/tests/HttpUtils/GetHttpUrlTest.php b/tests/http/HttpUtils/GetHttpUrlTest.php
index ea53de5f..3dc5bc9b 100644
--- a/tests/HttpUtils/GetHttpUrlTest.php
+++ b/tests/http/HttpUtils/GetHttpUrlTest.php
@@ -3,12 +3,14 @@
3 * HttpUtils' tests 3 * HttpUtils' tests
4 */ 4 */
5 5
6require_once 'application/HttpUtils.php'; 6namespace Shaarli\Http;
7
8require_once 'application/http/HttpUtils.php';
7 9
8/** 10/**
9 * Unitary tests for get_http_response() 11 * Unitary tests for get_http_response()
10 */ 12 */
11class GetHttpUrlTest extends PHPUnit_Framework_TestCase 13class GetHttpUrlTest extends \PHPUnit\Framework\TestCase
12{ 14{
13 /** 15 /**
14 * Get an invalid local URL 16 * Get an invalid local URL
@@ -17,12 +19,12 @@ class GetHttpUrlTest extends PHPUnit_Framework_TestCase
17 { 19 {
18 // Local 20 // Local
19 list($headers, $content) = get_http_response('/non/existent', 1); 21 list($headers, $content) = get_http_response('/non/existent', 1);
20 $this->assertEquals('Invalid HTTP Url', $headers[0]); 22 $this->assertEquals('Invalid HTTP UrlUtils', $headers[0]);
21 $this->assertFalse($content); 23 $this->assertFalse($content);
22 24
23 // Non HTTP 25 // Non HTTP
24 list($headers, $content) = get_http_response('ftp://save.tld/mysave', 1); 26 list($headers, $content) = get_http_response('ftp://save.tld/mysave', 1);
25 $this->assertEquals('Invalid HTTP Url', $headers[0]); 27 $this->assertEquals('Invalid HTTP UrlUtils', $headers[0]);
26 $this->assertFalse($content); 28 $this->assertFalse($content);
27 } 29 }
28 30
diff --git a/tests/HttpUtils/GetIpAdressFromProxyTest.php b/tests/http/HttpUtils/GetIpAdressFromProxyTest.php
index 7af5bd9d..fe3a639e 100644
--- a/tests/HttpUtils/GetIpAdressFromProxyTest.php
+++ b/tests/http/HttpUtils/GetIpAdressFromProxyTest.php
@@ -1,11 +1,13 @@
1<?php 1<?php
2 2
3require_once 'application/HttpUtils.php'; 3namespace Shaarli\Http;
4
5require_once 'application/http/HttpUtils.php';
4 6
5/** 7/**
6 * Unitary tests for getIpAddressFromProxy() 8 * Unitary tests for getIpAddressFromProxy()
7 */ 9 */
8class GetIpAdressFromProxyTest extends PHPUnit_Framework_TestCase 10class GetIpAdressFromProxyTest extends \PHPUnit\Framework\TestCase
9{ 11{
10 12
11 /** 13 /**
diff --git a/tests/HttpUtils/IndexUrlTest.php b/tests/http/HttpUtils/IndexUrlTest.php
index 337dcab0..bcbe59cb 100644
--- a/tests/HttpUtils/IndexUrlTest.php
+++ b/tests/http/HttpUtils/IndexUrlTest.php
@@ -3,12 +3,14 @@
3 * HttpUtils' tests 3 * HttpUtils' tests
4 */ 4 */
5 5
6require_once 'application/HttpUtils.php'; 6namespace Shaarli\Http;
7
8require_once 'application/http/HttpUtils.php';
7 9
8/** 10/**
9 * Unitary tests for index_url() 11 * Unitary tests for index_url()
10 */ 12 */
11class IndexUrlTest extends PHPUnit_Framework_TestCase 13class IndexUrlTest extends \PHPUnit\Framework\TestCase
12{ 14{
13 /** 15 /**
14 * If on the main page, remove "index.php" from the URL resource 16 * If on the main page, remove "index.php" from the URL resource
diff --git a/tests/HttpUtils/IsHttpsTest.php b/tests/http/HttpUtils/IsHttpsTest.php
index 097f2bcf..348956c6 100644
--- a/tests/HttpUtils/IsHttpsTest.php
+++ b/tests/http/HttpUtils/IsHttpsTest.php
@@ -1,12 +1,15 @@
1<?php 1<?php
2 2
3namespace Shaarli\Http;
4
5require_once 'application/http/HttpUtils.php';
3 6
4/** 7/**
5 * Class IsHttpsTest 8 * Class IsHttpsTest
6 * 9 *
7 * Test class for is_https() function. 10 * Test class for is_https() function.
8 */ 11 */
9class IsHttpsTest extends PHPUnit_Framework_TestCase 12class IsHttpsTest extends \PHPUnit\Framework\TestCase
10{ 13{
11 14
12 /** 15 /**
diff --git a/tests/HttpUtils/PageUrlTest.php b/tests/http/HttpUtils/PageUrlTest.php
index 4dbbe9cf..f1991716 100644
--- a/tests/HttpUtils/PageUrlTest.php
+++ b/tests/http/HttpUtils/PageUrlTest.php
@@ -3,12 +3,14 @@
3 * HttpUtils' tests 3 * HttpUtils' tests
4 */ 4 */
5 5
6require_once 'application/HttpUtils.php'; 6namespace Shaarli\Http;
7
8require_once 'application/http/HttpUtils.php';
7 9
8/** 10/**
9 * Unitary tests for page_url() 11 * Unitary tests for page_url()
10 */ 12 */
11class PageUrlTest extends PHPUnit_Framework_TestCase 13class PageUrlTest extends \PHPUnit\Framework\TestCase
12{ 14{
13 /** 15 /**
14 * If on the main page, remove "index.php" from the URL resource 16 * If on the main page, remove "index.php" from the URL resource
diff --git a/tests/HttpUtils/ServerUrlTest.php b/tests/http/HttpUtils/ServerUrlTest.php
index 324b827a..9caf1049 100644
--- a/tests/HttpUtils/ServerUrlTest.php
+++ b/tests/http/HttpUtils/ServerUrlTest.php
@@ -3,12 +3,14 @@
3 * HttpUtils' tests 3 * HttpUtils' tests
4 */ 4 */
5 5
6require_once 'application/HttpUtils.php'; 6namespace Shaarli\Http;
7
8require_once 'application/http/HttpUtils.php';
7 9
8/** 10/**
9 * Unitary tests for server_url() 11 * Unitary tests for server_url()
10 */ 12 */
11class ServerUrlTest extends PHPUnit_Framework_TestCase 13class ServerUrlTest extends \PHPUnit\Framework\TestCase
12{ 14{
13 /** 15 /**
14 * Detect if the server uses SSL 16 * Detect if the server uses SSL
diff --git a/tests/Url/UrlTest.php b/tests/http/UrlTest.php
index db229ce0..ae92f73a 100644
--- a/tests/Url/UrlTest.php
+++ b/tests/http/UrlTest.php
@@ -1,14 +1,14 @@
1<?php 1<?php
2/** 2/**
3 * Url's tests 3 * UrlUtils's tests
4 */ 4 */
5 5
6require_once 'application/Url.php'; 6namespace Shaarli\Http;
7 7
8/** 8/**
9 * Unitary tests for URL utilities 9 * Unitary tests for URL utilities
10 */ 10 */
11class UrlTest extends PHPUnit_Framework_TestCase 11class UrlTest extends \PHPUnit\Framework\TestCase
12{ 12{
13 // base URL for tests 13 // base URL for tests
14 protected static $baseUrl = 'http://domain.tld:3000'; 14 protected static $baseUrl = 'http://domain.tld:3000';
@@ -18,7 +18,7 @@ class UrlTest extends PHPUnit_Framework_TestCase
18 */ 18 */
19 private function assertUrlIsCleaned($query = '', $fragment = '') 19 private function assertUrlIsCleaned($query = '', $fragment = '')
20 { 20 {
21 $url = new Url(self::$baseUrl.$query.$fragment); 21 $url = new Url(self::$baseUrl . $query . $fragment);
22 $url->cleanup(); 22 $url->cleanup();
23 $this->assertEquals(self::$baseUrl, $url->toString()); 23 $this->assertEquals(self::$baseUrl, $url->toString());
24 } 24 }
@@ -38,7 +38,7 @@ class UrlTest extends PHPUnit_Framework_TestCase
38 public function testConstruct() 38 public function testConstruct()
39 { 39 {
40 $ref = 'http://username:password@hostname:9090/path' 40 $ref = 'http://username:password@hostname:9090/path'
41 .'?arg1=value1&arg2=value2#anchor'; 41 . '?arg1=value1&arg2=value2#anchor';
42 $url = new Url($ref); 42 $url = new Url($ref);
43 $this->assertEquals($ref, $url->toString()); 43 $this->assertEquals($ref, $url->toString());
44 } 44 }
@@ -52,7 +52,7 @@ class UrlTest extends PHPUnit_Framework_TestCase
52 $this->assertUrlIsCleaned(); 52 $this->assertUrlIsCleaned();
53 53
54 // URL with no annoying elements 54 // URL with no annoying elements
55 $ref = self::$baseUrl.'?p1=val1&p2=1234#edit'; 55 $ref = self::$baseUrl . '?p1=val1&p2=1234#edit';
56 $url = new Url($ref); 56 $url = new Url($ref);
57 $this->assertEquals($ref, $url->cleanup()); 57 $this->assertEquals($ref, $url->cleanup());
58 } 58 }
@@ -115,26 +115,26 @@ class UrlTest extends PHPUnit_Framework_TestCase
115 // ditch annoying query params and fragment, keep useful params 115 // ditch annoying query params and fragment, keep useful params
116 $url = new Url( 116 $url = new Url(
117 self::$baseUrl 117 self::$baseUrl
118 .'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all' 118 . '?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all'
119 ); 119 );
120 $this->assertEquals(self::$baseUrl.'?my=stuff&is=kept', $url->cleanup()); 120 $this->assertEquals(self::$baseUrl . '?my=stuff&is=kept', $url->cleanup());
121 121
122 122
123 // ditch annoying query params, keep useful params and fragment 123 // ditch annoying query params, keep useful params and fragment
124 $url = new Url( 124 $url = new Url(
125 self::$baseUrl 125 self::$baseUrl
126 .'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again' 126 . '?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again'
127 ); 127 );
128 $this->assertEquals( 128 $this->assertEquals(
129 self::$baseUrl.'?my=stuff&is=kept#again', 129 self::$baseUrl . '?my=stuff&is=kept#again',
130 $url->cleanup() 130 $url->cleanup()
131 ); 131 );
132 132
133 // test firefox reader url 133 // test firefox reader url
134 $url = new Url( 134 $url = new Url(
135 'about://reader?url=' . urlencode(self::$baseUrl .'?my=stuff&is=kept') 135 'about://reader?url=' . urlencode(self::$baseUrl . '?my=stuff&is=kept')
136 ); 136 );
137 $this->assertEquals(self::$baseUrl.'?my=stuff&is=kept', $url->cleanup()); 137 $this->assertEquals(self::$baseUrl . '?my=stuff&is=kept', $url->cleanup());
138 } 138 }
139 139
140 /** 140 /**
diff --git a/tests/Url/CleanupUrlTest.php b/tests/http/UrlUtils/CleanupUrlTest.php
index 24791948..6c4d124b 100644
--- a/tests/Url/CleanupUrlTest.php
+++ b/tests/http/UrlUtils/CleanupUrlTest.php
@@ -3,9 +3,11 @@
3 * Unitary tests for cleanup_url() 3 * Unitary tests for cleanup_url()
4 */ 4 */
5 5
6require_once 'application/Url.php'; 6namespace Shaarli\Http;
7 7
8class CleanupUrlTest extends PHPUnit_Framework_TestCase 8require_once 'application/http/UrlUtils.php';
9
10class CleanupUrlTest extends \PHPUnit\Framework\TestCase
9{ 11{
10 /** 12 /**
11 * @var string reference URL 13 * @var string reference URL
diff --git a/tests/Url/GetUrlSchemeTest.php b/tests/http/UrlUtils/GetUrlSchemeTest.php
index 18b932d6..2b97f7be 100644
--- a/tests/Url/GetUrlSchemeTest.php
+++ b/tests/http/UrlUtils/GetUrlSchemeTest.php
@@ -3,12 +3,14 @@
3 * Unitary tests for get_url_scheme() 3 * Unitary tests for get_url_scheme()
4 */ 4 */
5 5
6require_once 'application/Url.php'; 6namespace Shaarli\Http;
7 7
8class GetUrlSchemeTest extends PHPUnit_Framework_TestCase 8require_once 'application/http/UrlUtils.php';
9
10class GetUrlSchemeTest extends \PHPUnit\Framework\TestCase
9{ 11{
10 /** 12 /**
11 * Get empty scheme string for empty Url 13 * Get empty scheme string for empty UrlUtils
12 */ 14 */
13 public function testGetUrlSchemeEmpty() 15 public function testGetUrlSchemeEmpty()
14 { 16 {
@@ -16,7 +18,7 @@ class GetUrlSchemeTest extends PHPUnit_Framework_TestCase
16 } 18 }
17 19
18 /** 20 /**
19 * Get normal scheme of Url 21 * Get normal scheme of UrlUtils
20 */ 22 */
21 public function testGetUrlScheme() 23 public function testGetUrlScheme()
22 { 24 {
diff --git a/tests/Url/UnparseUrlTest.php b/tests/http/UrlUtils/UnparseUrlTest.php
index e314b484..040d8c54 100644
--- a/tests/Url/UnparseUrlTest.php
+++ b/tests/http/UrlUtils/UnparseUrlTest.php
@@ -1,14 +1,16 @@
1<?php 1<?php
2/** 2/**
3 * Unpares Url's tests 3 * Unpares UrlUtils's tests
4 */ 4 */
5 5
6require_once 'application/Url.php'; 6namespace Shaarli\Http;
7
8require_once 'application/http/UrlUtils.php';
7 9
8/** 10/**
9 * Unitary tests for unparse_url() 11 * Unitary tests for unparse_url()
10 */ 12 */
11class UnparseUrlTest extends PHPUnit_Framework_TestCase 13class UnparseUrlTest extends \PHPUnit\Framework\TestCase
12{ 14{
13 /** 15 /**
14 * Thanks for building nothing 16 * Thanks for building nothing
diff --git a/tests/Url/WhitelistProtocolsTest.php b/tests/http/UrlUtils/WhitelistProtocolsTest.php
index a3156804..69512dbd 100644
--- a/tests/Url/WhitelistProtocolsTest.php
+++ b/tests/http/UrlUtils/WhitelistProtocolsTest.php
@@ -1,15 +1,15 @@
1<?php 1<?php
2 2
3require_once 'application/Url.php'; 3namespace Shaarli\Http;
4 4
5use Shaarli\Config\ConfigManager; 5require_once 'application/http/UrlUtils.php';
6 6
7/** 7/**
8 * Class WhitelistProtocolsTest 8 * Class WhitelistProtocolsTest
9 * 9 *
10 * Test whitelist_protocols() function of Url. 10 * Test whitelist_protocols() function of UrlUtils.
11 */ 11 */
12class WhitelistProtocolsTest extends PHPUnit_Framework_TestCase 12class WhitelistProtocolsTest extends \PHPUnit\Framework\TestCase
13{ 13{
14 /** 14 /**
15 * Test whitelist_protocols() on a note (relative URL). 15 * Test whitelist_protocols() on a note (relative URL).
diff --git a/tests/languages/fr/LanguagesFrTest.php b/tests/languages/fr/LanguagesFrTest.php
index 38347de1..b8b7ca3a 100644
--- a/tests/languages/fr/LanguagesFrTest.php
+++ b/tests/languages/fr/LanguagesFrTest.php
@@ -12,7 +12,7 @@ use Shaarli\Config\ConfigManager;
12 * 12 *
13 * @package Shaarli 13 * @package Shaarli
14 */ 14 */
15class LanguagesFrTest extends \PHPUnit_Framework_TestCase 15class LanguagesFrTest extends \PHPUnit\Framework\TestCase
16{ 16{
17 /** 17 /**
18 * @var string Config file path (without extension). 18 * @var string Config file path (without extension).
diff --git a/tests/NetscapeBookmarkUtils/BookmarkExportTest.php b/tests/netscape/BookmarkExportTest.php
index 77fbd5f3..6de9876d 100644
--- a/tests/NetscapeBookmarkUtils/BookmarkExportTest.php
+++ b/tests/netscape/BookmarkExportTest.php
@@ -1,11 +1,14 @@
1<?php 1<?php
2namespace Shaarli\Netscape;
2 3
3require_once 'application/NetscapeBookmarkUtils.php'; 4use Shaarli\Bookmark\LinkDB;
5
6require_once 'tests/utils/ReferenceLinkDB.php';
4 7
5/** 8/**
6 * Netscape bookmark export 9 * Netscape bookmark export
7 */ 10 */
8class BookmarkExportTest extends PHPUnit_Framework_TestCase 11class BookmarkExportTest extends \PHPUnit\Framework\TestCase
9{ 12{
10 /** 13 /**
11 * @var string datastore to test write operations 14 * @var string datastore to test write operations
@@ -13,7 +16,7 @@ class BookmarkExportTest extends PHPUnit_Framework_TestCase
13 protected static $testDatastore = 'sandbox/datastore.php'; 16 protected static $testDatastore = 'sandbox/datastore.php';
14 17
15 /** 18 /**
16 * @var ReferenceLinkDB instance. 19 * @var \ReferenceLinkDB instance.
17 */ 20 */
18 protected static $refDb = null; 21 protected static $refDb = null;
19 22
@@ -27,7 +30,7 @@ class BookmarkExportTest extends PHPUnit_Framework_TestCase
27 */ 30 */
28 public static function setUpBeforeClass() 31 public static function setUpBeforeClass()
29 { 32 {
30 self::$refDb = new ReferenceLinkDB(); 33 self::$refDb = new \ReferenceLinkDB();
31 self::$refDb->write(self::$testDatastore); 34 self::$refDb->write(self::$testDatastore);
32 self::$linkDb = new LinkDB(self::$testDatastore, true, false); 35 self::$linkDb = new LinkDB(self::$testDatastore, true, false);
33 } 36 }
diff --git a/tests/NetscapeBookmarkUtils/BookmarkImportTest.php b/tests/netscape/BookmarkImportTest.php
index f0a958cb..ccafc161 100644
--- a/tests/NetscapeBookmarkUtils/BookmarkImportTest.php
+++ b/tests/netscape/BookmarkImportTest.php
@@ -1,8 +1,10 @@
1<?php 1<?php
2namespace Shaarli\Netscape;
2 3
3require_once 'application/NetscapeBookmarkUtils.php'; 4use DateTime;
4 5use Shaarli\Bookmark\LinkDB;
5use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
7use Shaarli\History;
6 8
7/** 9/**
8 * Utility function to load a file's metadata in a $_FILES-like array 10 * Utility function to load a file's metadata in a $_FILES-like array
@@ -26,7 +28,7 @@ function file2array($filename)
26/** 28/**
27 * Netscape bookmark import 29 * Netscape bookmark import
28 */ 30 */
29class BookmarkImportTest extends PHPUnit_Framework_TestCase 31class BookmarkImportTest extends \PHPUnit\Framework\TestCase
30{ 32{
31 /** 33 /**
32 * @var string datastore to test write operations 34 * @var string datastore to test write operations
diff --git a/tests/NetscapeBookmarkUtils/input/empty.htm b/tests/netscape/input/empty.htm
index e69de29b..e69de29b 100644
--- a/tests/NetscapeBookmarkUtils/input/empty.htm
+++ b/tests/netscape/input/empty.htm
diff --git a/tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm b/tests/netscape/input/internet_explorer_encoding.htm
index 18703cf6..18703cf6 100644
--- a/tests/NetscapeBookmarkUtils/input/internet_explorer_encoding.htm
+++ b/tests/netscape/input/internet_explorer_encoding.htm
diff --git a/tests/NetscapeBookmarkUtils/input/lowercase_doctype.htm b/tests/netscape/input/lowercase_doctype.htm
index 8911ad19..8911ad19 100644
--- a/tests/NetscapeBookmarkUtils/input/lowercase_doctype.htm
+++ b/tests/netscape/input/lowercase_doctype.htm
diff --git a/tests/NetscapeBookmarkUtils/input/netscape_basic.htm b/tests/netscape/input/netscape_basic.htm
index affe0cf8..affe0cf8 100644
--- a/tests/NetscapeBookmarkUtils/input/netscape_basic.htm
+++ b/tests/netscape/input/netscape_basic.htm
diff --git a/tests/NetscapeBookmarkUtils/input/netscape_nested.htm b/tests/netscape/input/netscape_nested.htm
index b486fe18..b486fe18 100644
--- a/tests/NetscapeBookmarkUtils/input/netscape_nested.htm
+++ b/tests/netscape/input/netscape_nested.htm
diff --git a/tests/NetscapeBookmarkUtils/input/no_doctype.htm b/tests/netscape/input/no_doctype.htm
index 766d398b..766d398b 100644
--- a/tests/NetscapeBookmarkUtils/input/no_doctype.htm
+++ b/tests/netscape/input/no_doctype.htm
diff --git a/tests/NetscapeBookmarkUtils/input/same_date.htm b/tests/netscape/input/same_date.htm
index 9d58a582..9d58a582 100644
--- a/tests/NetscapeBookmarkUtils/input/same_date.htm
+++ b/tests/netscape/input/same_date.htm
diff --git a/tests/plugins/PluginAddlinkTest.php b/tests/plugins/PluginAddlinkTest.php
index b6239e7f..d052f8b9 100644
--- a/tests/plugins/PluginAddlinkTest.php
+++ b/tests/plugins/PluginAddlinkTest.php
@@ -1,17 +1,15 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Addlink;
2 3
3/** 4use Shaarli\Plugin\PluginManager;
4 * PluginPlayvideosTest.php 5use Shaarli\Router;
5 */
6 6
7require_once 'plugins/addlink_toolbar/addlink_toolbar.php'; 7require_once 'plugins/addlink_toolbar/addlink_toolbar.php';
8require_once 'application/Router.php';
9 8
10/** 9/**
11 * Class PluginAddlinkTest
12 * Unit test for the Addlink toolbar plugin 10 * Unit test for the Addlink toolbar plugin
13 */ 11 */
14class PluginAddlinkTest extends PHPUnit_Framework_TestCase 12class PluginAddlinkTest extends \PHPUnit\Framework\TestCase
15{ 13{
16 /** 14 /**
17 * Reset plugin path. 15 * Reset plugin path.
diff --git a/tests/plugins/PluginArchiveorgTest.php b/tests/plugins/PluginArchiveorgTest.php
index fecd5f2c..510288bb 100644
--- a/tests/plugins/PluginArchiveorgTest.php
+++ b/tests/plugins/PluginArchiveorgTest.php
@@ -1,16 +1,19 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Archiveorg;
2 3
3/** 4/**
4 * PluginArchiveorgTest.php 5 * PluginArchiveorgTest.php
5 */ 6 */
6 7
8use Shaarli\Plugin\PluginManager;
9
7require_once 'plugins/archiveorg/archiveorg.php'; 10require_once 'plugins/archiveorg/archiveorg.php';
8 11
9/** 12/**
10 * Class PluginArchiveorgTest 13 * Class PluginArchiveorgTest
11 * Unit test for the archiveorg plugin 14 * Unit test for the archiveorg plugin
12 */ 15 */
13class PluginArchiveorgTest extends PHPUnit_Framework_TestCase 16class PluginArchiveorgTest extends \PHPUnit\Framework\TestCase
14{ 17{
15 /** 18 /**
16 * Reset plugin path 19 * Reset plugin path
diff --git a/tests/plugins/PluginDefaultColorsTest.php b/tests/plugins/PluginDefaultColorsTest.php
new file mode 100644
index 00000000..b9951cca
--- /dev/null
+++ b/tests/plugins/PluginDefaultColorsTest.php
@@ -0,0 +1,195 @@
1<?php
2
3namespace Shaarli\Plugin\DefaultColors;
4
5use DateTime;
6use PHPUnit\Framework\TestCase;
7use Shaarli\Bookmark\LinkDB;
8use Shaarli\Config\ConfigManager;
9use Shaarli\Plugin\PluginManager;
10
11require_once 'plugins/default_colors/default_colors.php';
12
13/**
14 * Class PluginDefaultColorsTest
15 *
16 * Test the DefaultColors plugin (allowing to override default template colors).
17 */
18class PluginDefaultColorsTest extends TestCase
19{
20 /**
21 * Reset plugin path
22 */
23 public function setUp()
24 {
25 PluginManager::$PLUGINS_PATH = 'sandbox';
26 mkdir(PluginManager::$PLUGINS_PATH . '/default_colors/');
27 copy(
28 'plugins/default_colors/default_colors.css.template',
29 PluginManager::$PLUGINS_PATH . '/default_colors/default_colors.css.template'
30 );
31 }
32
33 /**
34 * Remove sandbox files and folder
35 */
36 public function tearDown()
37 {
38 if (file_exists('sandbox/default_colors/default_colors.css.template')) {
39 unlink('sandbox/default_colors/default_colors.css.template');
40 }
41
42 if (file_exists('sandbox/default_colors/default_colors.css')) {
43 unlink('sandbox/default_colors/default_colors.css');
44 }
45
46 if (is_dir('sandbox/default_colors')) {
47 rmdir('sandbox/default_colors');
48 }
49 }
50
51 /**
52 * Test DefaultColors init without errors.
53 */
54 public function testDefaultColorsInitNoError()
55 {
56 $conf = new ConfigManager('');
57 $conf->set('plugins.DEFAULT_COLORS_BACKGROUND', 'value');
58 $errors = default_colors_init($conf);
59 $this->assertEmpty($errors);
60 }
61
62 /**
63 * Test DefaultColors init with errors.
64 */
65 public function testDefaultColorsInitError()
66 {
67 $conf = new ConfigManager('');
68 $errors = default_colors_init($conf);
69 $this->assertNotEmpty($errors);
70 }
71
72 /**
73 * Test the save plugin parameters hook with all colors specified.
74 */
75 public function testSavePluginParametersAll()
76 {
77 $post = [
78 'other1' => true,
79 'DEFAULT_COLORS_MAIN' => 'blue',
80 'DEFAULT_COLORS_BACKGROUND' => 'pink',
81 'other2' => ['yep'],
82 'DEFAULT_COLORS_DARK_MAIN' => 'green',
83 ];
84
85 hook_default_colors_save_plugin_parameters($post);
86 $this->assertFileExists($file = 'sandbox/default_colors/default_colors.css');
87 $content = file_get_contents($file);
88 $expected = ':root {
89 --main-color: blue;
90 --background-color: pink;
91 --dark-main-color: green;
92
93}
94';
95 $this->assertEquals($expected, $content);
96 }
97
98 /**
99 * Test the save plugin parameters hook with only one color specified.
100 */
101 public function testSavePluginParametersSingle()
102 {
103 $post = [
104 'other1' => true,
105 'DEFAULT_COLORS_BACKGROUND' => 'pink',
106 'other2' => ['yep'],
107 'DEFAULT_COLORS_DARK_MAIN' => '',
108 ];
109
110 hook_default_colors_save_plugin_parameters($post);
111 $this->assertFileExists($file = 'sandbox/default_colors/default_colors.css');
112 $content = file_get_contents($file);
113 $expected = ':root {
114 --background-color: pink;
115
116}
117';
118 $this->assertEquals($expected, $content);
119 }
120
121 /**
122 * Test the save plugin parameters hook with no color specified.
123 */
124 public function testSavePluginParametersNone()
125 {
126 hook_default_colors_save_plugin_parameters([]);
127 $this->assertFileNotExists($file = 'sandbox/default_colors/default_colors.css');
128 }
129
130 /**
131 * Make sure that the CSS is properly included by the include hook.
132 */
133 public function testIncludeWithFile()
134 {
135 $data = [
136 'css_files' => ['file1'],
137 'js_files' => ['file2'],
138 ];
139 touch($file = 'sandbox/default_colors/default_colors.css');
140 $processedData = hook_default_colors_render_includes($data);
141
142 $this->assertCount(2, $processedData['css_files']);
143 $this->assertEquals($file, $processedData['css_files'][1]);
144 $this->assertCount(1, $processedData['js_files']);
145 }
146
147 /**
148 * Make sure that the CSS is not included by the include hook if the CSS file does not exist.
149 */
150 public function testIncludeWithoutFile()
151 {
152 $data = [
153 'css_files' => ['file1'],
154 'js_files' => ['file2'],
155 ];
156 $processedData = hook_default_colors_render_includes($data);
157
158 $this->assertEquals($data, $processedData);
159 }
160
161 /**
162 * Test helper function which generates CSS rules with valid input.
163 */
164 public function testFormatCssRuleValid()
165 {
166 $data = [
167 'other1' => true,
168 'DEFAULT_COLORS_BLIP_BLOP' => 'shinyColor',
169 'other2' => ['yep'],
170 ];
171 $result = default_colors_format_css_rule($data, 'DEFAULT_COLORS_BLIP_BLOP');
172 $this->assertEquals(' --blip-blop-color: shinyColor', $result);
173
174 $data = ['unknown-parameter' => true];
175 $result = default_colors_format_css_rule($data, 'unknown-parameter');
176 $this->assertEquals(' --unknown-parameter-color: 1', $result);
177 }
178
179 /**
180 * Test helper function which generates CSS rules with invalid input.
181 */
182 public function testFormatCssRuleInvalid()
183 {
184 $result = default_colors_format_css_rule([], 'DEFAULT_COLORS_BLIP_BLOP');
185 $this->assertEmpty($result);
186
187 $data = [
188 'other1' => true,
189 'DEFAULT_COLORS_BLIP_BLOP' => 'shinyColor',
190 'other2' => ['yep'],
191 ];
192 $result = default_colors_format_css_rule($data, '');
193 $this->assertEmpty($result);
194 }
195}
diff --git a/tests/plugins/PluginIssoTest.php b/tests/plugins/PluginIssoTest.php
index 2c9efbcd..bdfab439 100644
--- a/tests/plugins/PluginIssoTest.php
+++ b/tests/plugins/PluginIssoTest.php
@@ -1,5 +1,10 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Isso;
3
4use DateTime;
5use Shaarli\Bookmark\LinkDB;
2use Shaarli\Config\ConfigManager; 6use Shaarli\Config\ConfigManager;
7use Shaarli\Plugin\PluginManager;
3 8
4require_once 'plugins/isso/isso.php'; 9require_once 'plugins/isso/isso.php';
5 10
@@ -8,7 +13,7 @@ require_once 'plugins/isso/isso.php';
8 * 13 *
9 * Test the Isso plugin (comment system). 14 * Test the Isso plugin (comment system).
10 */ 15 */
11class PluginIssoTest extends PHPUnit_Framework_TestCase 16class PluginIssoTest extends \PHPUnit\Framework\TestCase
12{ 17{
13 /** 18 /**
14 * Reset plugin path 19 * Reset plugin path
diff --git a/tests/plugins/PluginMarkdownTest.php b/tests/plugins/PluginMarkdownTest.php
index 44364b05..9ddbc558 100644
--- a/tests/plugins/PluginMarkdownTest.php
+++ b/tests/plugins/PluginMarkdownTest.php
@@ -1,10 +1,14 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Markdown;
3
2use Shaarli\Config\ConfigManager; 4use Shaarli\Config\ConfigManager;
5use Shaarli\Plugin\PluginManager;
3 6
4/** 7/**
5 * PluginMarkdownTest.php 8 * PluginMarkdownTest.php
6 */ 9 */
7 10
11require_once 'application/bookmark/LinkUtils.php';
8require_once 'application/Utils.php'; 12require_once 'application/Utils.php';
9require_once 'plugins/markdown/markdown.php'; 13require_once 'plugins/markdown/markdown.php';
10 14
@@ -12,7 +16,7 @@ require_once 'plugins/markdown/markdown.php';
12 * Class PluginMarkdownTest 16 * Class PluginMarkdownTest
13 * Unit test for the Markdown plugin 17 * Unit test for the Markdown plugin
14 */ 18 */
15class PluginMarkdownTest extends PHPUnit_Framework_TestCase 19class PluginMarkdownTest extends \PHPUnit\Framework\TestCase
16{ 20{
17 /** 21 /**
18 * @var ConfigManager instance. 22 * @var ConfigManager instance.
@@ -103,7 +107,7 @@ class PluginMarkdownTest extends PHPUnit_Framework_TestCase
103 public function testReverseText2clickable() 107 public function testReverseText2clickable()
104 { 108 {
105 $text = 'stuff http://hello.there/is=someone#here otherstuff'; 109 $text = 'stuff http://hello.there/is=someone#here otherstuff';
106 $clickableText = text2clickable($text, ''); 110 $clickableText = text2clickable($text);
107 $reversedText = reverse_text2clickable($clickableText); 111 $reversedText = reverse_text2clickable($clickableText);
108 $this->assertEquals($text, $reversedText); 112 $this->assertEquals($text, $reversedText);
109 } 113 }
diff --git a/tests/plugins/PluginPlayvideosTest.php b/tests/plugins/PluginPlayvideosTest.php
index 29ad047f..51472617 100644
--- a/tests/plugins/PluginPlayvideosTest.php
+++ b/tests/plugins/PluginPlayvideosTest.php
@@ -1,17 +1,20 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Playvideos;
2 3
3/** 4/**
4 * PluginPlayvideosTest.php 5 * PluginPlayvideosTest.php
5 */ 6 */
6 7
8use Shaarli\Plugin\PluginManager;
9use Shaarli\Router;
10
7require_once 'plugins/playvideos/playvideos.php'; 11require_once 'plugins/playvideos/playvideos.php';
8require_once 'application/Router.php';
9 12
10/** 13/**
11 * Class PluginPlayvideosTest 14 * Class PluginPlayvideosTest
12 * Unit test for the PlayVideos plugin 15 * Unit test for the PlayVideos plugin
13 */ 16 */
14class PluginPlayvideosTest extends PHPUnit_Framework_TestCase 17class PluginPlayvideosTest extends \PHPUnit\Framework\TestCase
15{ 18{
16 /** 19 /**
17 * Reset plugin path 20 * Reset plugin path
diff --git a/tests/plugins/PluginPubsubhubbubTest.php b/tests/plugins/PluginPubsubhubbubTest.php
index 69d00936..a7bd8fc9 100644
--- a/tests/plugins/PluginPubsubhubbubTest.php
+++ b/tests/plugins/PluginPubsubhubbubTest.php
@@ -1,14 +1,17 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Pubsubhubbub;
3
2use Shaarli\Config\ConfigManager; 4use Shaarli\Config\ConfigManager;
5use Shaarli\Plugin\PluginManager;
6use Shaarli\Router;
3 7
4require_once 'plugins/pubsubhubbub/pubsubhubbub.php'; 8require_once 'plugins/pubsubhubbub/pubsubhubbub.php';
5require_once 'application/Router.php';
6 9
7/** 10/**
8 * Class PluginPubsubhubbubTest 11 * Class PluginPubsubhubbubTest
9 * Unit test for the pubsubhubbub plugin 12 * Unit test for the pubsubhubbub plugin
10 */ 13 */
11class PluginPubsubhubbubTest extends PHPUnit_Framework_TestCase 14class PluginPubsubhubbubTest extends \PHPUnit\Framework\TestCase
12{ 15{
13 /** 16 /**
14 * @var string Config file path (without extension). 17 * @var string Config file path (without extension).
diff --git a/tests/plugins/PluginQrcodeTest.php b/tests/plugins/PluginQrcodeTest.php
index dd632eee..0c61e14a 100644
--- a/tests/plugins/PluginQrcodeTest.php
+++ b/tests/plugins/PluginQrcodeTest.php
@@ -1,16 +1,20 @@
1<?php 1<?php
2namespace Shaarli\Plugin\Qrcode;
3
2/** 4/**
3 * PluginQrcodeTest.php 5 * PluginQrcodeTest.php
4 */ 6 */
5 7
8use Shaarli\Plugin\PluginManager;
9use Shaarli\Router;
10
6require_once 'plugins/qrcode/qrcode.php'; 11require_once 'plugins/qrcode/qrcode.php';
7require_once 'application/Router.php';
8 12
9/** 13/**
10 * Class PluginQrcodeTest 14 * Class PluginQrcodeTest
11 * Unit test for the QR-Code plugin 15 * Unit test for the QR-Code plugin
12 */ 16 */
13class PluginQrcodeTest extends PHPUnit_Framework_TestCase 17class PluginQrcodeTest extends \PHPUnit\Framework\TestCase
14{ 18{
15 /** 19 /**
16 * Reset plugin path 20 * Reset plugin path
diff --git a/tests/plugins/PluginWallabagTest.php b/tests/plugins/PluginWallabagTest.php
index 76b7887e..79751921 100644
--- a/tests/plugins/PluginWallabagTest.php
+++ b/tests/plugins/PluginWallabagTest.php
@@ -1,9 +1,8 @@
1<?php 1<?php
2use Shaarli\Config\ConfigManager; 2namespace Shaarli\Plugin\Wallabag;
3 3
4/** 4use Shaarli\Config\ConfigManager;
5 * PluginWallabagTest.php.php 5use Shaarli\Plugin\PluginManager;
6 */
7 6
8require_once 'plugins/wallabag/wallabag.php'; 7require_once 'plugins/wallabag/wallabag.php';
9 8
@@ -11,7 +10,7 @@ require_once 'plugins/wallabag/wallabag.php';
11 * Class PluginWallabagTest 10 * Class PluginWallabagTest
12 * Unit test for the Wallabag plugin 11 * Unit test for the Wallabag plugin
13 */ 12 */
14class PluginWallabagTest extends PHPUnit_Framework_TestCase 13class PluginWallabagTest extends \PHPUnit\Framework\TestCase
15{ 14{
16 /** 15 /**
17 * Reset plugin path 16 * Reset plugin path
diff --git a/tests/plugins/WallabagInstanceTest.php b/tests/plugins/WallabagInstanceTest.php
index 2c466871..a3cd9076 100644
--- a/tests/plugins/WallabagInstanceTest.php
+++ b/tests/plugins/WallabagInstanceTest.php
@@ -1,11 +1,10 @@
1<?php 1<?php
2 2namespace Shaarli\Plugin\Wallabag;
3require_once 'plugins/wallabag/WallabagInstance.php';
4 3
5/** 4/**
6 * Class WallabagInstanceTest 5 * Class WallabagInstanceTest
7 */ 6 */
8class WallabagInstanceTest extends PHPUnit_Framework_TestCase 7class WallabagInstanceTest extends \PHPUnit\Framework\TestCase
9{ 8{
10 /** 9 /**
11 * @var string wallabag url. 10 * @var string wallabag url.
diff --git a/tests/ThemeUtilsTest.php b/tests/render/ThemeUtilsTest.php
index e44564be..58e3426b 100644
--- a/tests/ThemeUtilsTest.php
+++ b/tests/render/ThemeUtilsTest.php
@@ -1,13 +1,13 @@
1<?php 1<?php
2 2
3namespace Shaarli; 3namespace Shaarli\Render;
4 4
5/** 5/**
6 * Class ThemeUtilsTest 6 * Class ThemeUtilsTest
7 * 7 *
8 * @package Shaarli 8 * @package Shaarli
9 */ 9 */
10class ThemeUtilsTest extends \PHPUnit_Framework_TestCase 10class ThemeUtilsTest extends \PHPUnit\Framework\TestCase
11{ 11{
12 /** 12 /**
13 * Test getThemes() with existing theme directories. 13 * Test getThemes() with existing theme directories.
diff --git a/tests/security/BanManagerTest.php b/tests/security/BanManagerTest.php
new file mode 100644
index 00000000..bba7c8ad
--- /dev/null
+++ b/tests/security/BanManagerTest.php
@@ -0,0 +1,393 @@
1<?php
2
3
4namespace Shaarli\Security;
5
6use PHPUnit\Framework\TestCase;
7use Shaarli\FileUtils;
8
9/**
10 * Test coverage for BanManager
11 */
12class BanManagerTest extends TestCase
13{
14 /** @var BanManager Ban Manager instance */
15 protected $banManager;
16
17 /** @var string Banned IP filename */
18 protected $banFile = 'sandbox/ipbans.php';
19
20 /** @var string Log filename */
21 protected $logFile = 'sandbox/shaarli.log';
22
23 /** @var string Local client IP address */
24 protected $ipAddr = '127.0.0.1';
25
26 /** @var string Trusted proxy IP address */
27 protected $trustedProxy = '10.1.1.100';
28
29 /** @var array Simulates the $_SERVER array */
30 protected $server = [];
31
32 /**
33 * Prepare or reset test resources
34 */
35 public function setUp()
36 {
37 if (file_exists($this->banFile)) {
38 unlink($this->banFile);
39 }
40
41 $this->banManager = $this->getNewBanManagerInstance();
42 $this->server['REMOTE_ADDR'] = $this->ipAddr;
43 }
44
45 /**
46 * Test constructor with initial file.
47 */
48 public function testInstantiateFromFile()
49 {
50 $time = time() + 10;
51 FileUtils::writeFlatDB(
52 $this->banFile,
53 [
54 'failures' => [
55 $this->ipAddr => 2,
56 $ip = '1.2.3.4' => 1,
57 ],
58 'bans' => [
59 $ip2 = '8.8.8.8' => $time,
60 $ip3 = '1.1.1.1' => $time + 1,
61 ],
62 ]
63 );
64 $this->banManager = $this->getNewBanManagerInstance();
65
66 $this->assertCount(2, $this->banManager->getFailures());
67 $this->assertEquals(2, $this->banManager->getFailures()[$this->ipAddr]);
68 $this->assertEquals(1, $this->banManager->getFailures()[$ip]);
69 $this->assertCount(2, $this->banManager->getBans());
70 $this->assertEquals($time, $this->banManager->getBans()[$ip2]);
71 $this->assertEquals($time + 1, $this->banManager->getBans()[$ip3]);
72 }
73
74 /**
75 * Test constructor with initial file with invalid values
76 */
77 public function testInstantiateFromCrappyFile()
78 {
79 FileUtils::writeFlatDB($this->banFile, 'plop');
80 $this->banManager = $this->getNewBanManagerInstance();
81
82 $this->assertEquals([], $this->banManager->getFailures());
83 $this->assertEquals([], $this->banManager->getBans());
84 }
85
86 /**
87 * Test failed attempt with a direct IP.
88 */
89 public function testHandleFailedAttempt()
90 {
91 $this->assertCount(0, $this->banManager->getFailures());
92
93 $this->banManager->handleFailedAttempt($this->server);
94 $this->assertCount(1, $this->banManager->getFailures());
95 $this->assertEquals(1, $this->banManager->getFailures()[$this->ipAddr]);
96
97 $this->banManager->handleFailedAttempt($this->server);
98 $this->assertCount(1, $this->banManager->getFailures());
99 $this->assertEquals(2, $this->banManager->getFailures()[$this->ipAddr]);
100 }
101
102 /**
103 * Test failed attempt behind a trusted proxy IP (with proper IP forwarding).
104 */
105 public function testHandleFailedAttemptBehingProxy()
106 {
107 $server = [
108 'REMOTE_ADDR' => $this->trustedProxy,
109 'HTTP_X_FORWARDED_FOR' => $this->ipAddr,
110 ];
111 $this->assertCount(0, $this->banManager->getFailures());
112
113 $this->banManager->handleFailedAttempt($server);
114 $this->assertCount(1, $this->banManager->getFailures());
115 $this->assertEquals(1, $this->banManager->getFailures()[$this->ipAddr]);
116
117 $this->banManager->handleFailedAttempt($server);
118 $this->assertCount(1, $this->banManager->getFailures());
119 $this->assertEquals(2, $this->banManager->getFailures()[$this->ipAddr]);
120 }
121
122 /**
123 * Test failed attempt behind a trusted proxy IP but without IP forwarding.
124 */
125 public function testHandleFailedAttemptBehindNotConfiguredProxy()
126 {
127 $server = [
128 'REMOTE_ADDR' => $this->trustedProxy,
129 ];
130 $this->assertCount(0, $this->banManager->getFailures());
131
132 $this->banManager->handleFailedAttempt($server);
133 $this->assertCount(0, $this->banManager->getFailures());
134
135 $this->banManager->handleFailedAttempt($server);
136 $this->assertCount(0, $this->banManager->getFailures());
137 }
138
139 /**
140 * Test failed attempts with multiple direct IP.
141 */
142 public function testHandleFailedAttemptMultipleIp()
143 {
144 $this->assertCount(0, $this->banManager->getFailures());
145 $this->banManager->handleFailedAttempt($this->server);
146 $this->server['REMOTE_ADDR'] = '1.2.3.4';
147 $this->banManager->handleFailedAttempt($this->server);
148 $this->banManager->handleFailedAttempt($this->server);
149 $this->assertCount(2, $this->banManager->getFailures());
150 $this->assertEquals(1, $this->banManager->getFailures()[$this->ipAddr]);
151 $this->assertEquals(2, $this->banManager->getFailures()[$this->server['REMOTE_ADDR']]);
152 }
153
154 /**
155 * Test clear failure for provided IP without any additional data.
156 */
157 public function testClearFailuresEmpty()
158 {
159 $this->assertCount(0, $this->banManager->getFailures());
160 $this->banManager->clearFailures($this->server);
161 $this->assertCount(0, $this->banManager->getFailures());
162 }
163
164 /**
165 * Test clear failure for provided IP with failed attempts.
166 */
167 public function testClearFailuresFromFile()
168 {
169 FileUtils::writeFlatDB(
170 $this->banFile,
171 [
172 'failures' => [
173 $this->ipAddr => 2,
174 $ip = '1.2.3.4' => 1,
175 ]
176 ]
177 );
178 $this->banManager = $this->getNewBanManagerInstance();
179
180 $this->assertCount(2, $this->banManager->getFailures());
181 $this->banManager->clearFailures($this->server);
182 $this->assertCount(1, $this->banManager->getFailures());
183 $this->assertEquals(1, $this->banManager->getFailures()[$ip]);
184 }
185
186 /**
187 * Test clear failure for provided IP with failed attempts, behind a reverse proxy.
188 */
189 public function testClearFailuresFromFileBehindProxy()
190 {
191 $server = [
192 'REMOTE_ADDR' => $this->trustedProxy,
193 'HTTP_X_FORWARDED_FOR' => $this->ipAddr,
194 ];
195
196 FileUtils::writeFlatDB(
197 $this->banFile,
198 [
199 'failures' => [
200 $this->ipAddr => 2,
201 $ip = '1.2.3.4' => 1,
202 ]
203 ]
204 );
205 $this->banManager = $this->getNewBanManagerInstance();
206
207 $this->assertCount(2, $this->banManager->getFailures());
208 $this->banManager->clearFailures($server);
209 $this->assertCount(1, $this->banManager->getFailures());
210 $this->assertEquals(1, $this->banManager->getFailures()[$ip]);
211 }
212
213 /**
214 * Test clear failure for provided IP with failed attempts,
215 * behind a reverse proxy without forwarding.
216 */
217 public function testClearFailuresFromFileBehindNotConfiguredProxy()
218 {
219 $server = [
220 'REMOTE_ADDR' => $this->trustedProxy,
221 ];
222
223 FileUtils::writeFlatDB(
224 $this->banFile,
225 [
226 'failures' => [
227 $this->ipAddr => 2,
228 $ip = '1.2.3.4' => 1,
229 ]
230 ]
231 );
232 $this->banManager = $this->getNewBanManagerInstance();
233
234 $this->assertCount(2, $this->banManager->getFailures());
235 $this->banManager->clearFailures($server);
236 $this->assertCount(2, $this->banManager->getFailures());
237 }
238
239 /**
240 * Test isBanned without any data
241 */
242 public function testIsBannedEmpty()
243 {
244 $this->assertFalse($this->banManager->isBanned($this->server));
245 }
246
247 /**
248 * Test isBanned with banned IP from file data
249 */
250 public function testBannedFromFile()
251 {
252 FileUtils::writeFlatDB(
253 $this->banFile,
254 [
255 'bans' => [
256 $this->ipAddr => time() + 10,
257 ]
258 ]
259 );
260 $this->banManager = $this->getNewBanManagerInstance();
261
262 $this->assertCount(1, $this->banManager->getBans());
263 $this->assertTrue($this->banManager->isBanned($this->server));
264 }
265
266 /**
267 * Test isBanned with banned IP from file data behind a reverse proxy
268 */
269 public function testBannedFromFileBehindProxy()
270 {
271 $server = [
272 'REMOTE_ADDR' => $this->trustedProxy,
273 'HTTP_X_FORWARDED_FOR' => $this->ipAddr,
274 ];
275 FileUtils::writeFlatDB(
276 $this->banFile,
277 [
278 'bans' => [
279 $this->ipAddr => time() + 10,
280 ]
281 ]
282 );
283 $this->banManager = $this->getNewBanManagerInstance();
284
285 $this->assertCount(1, $this->banManager->getBans());
286 $this->assertTrue($this->banManager->isBanned($server));
287 }
288
289 /**
290 * Test isBanned with banned IP from file data behind a reverse proxy,
291 * without IP forwarding
292 */
293 public function testBannedFromFileBehindNotConfiguredProxy()
294 {
295 $server = [
296 'REMOTE_ADDR' => $this->trustedProxy,
297 ];
298 FileUtils::writeFlatDB(
299 $this->banFile,
300 [
301 'bans' => [
302 $this->ipAddr => time() + 10,
303 ]
304 ]
305 );
306 $this->banManager = $this->getNewBanManagerInstance();
307
308 $this->assertCount(1, $this->banManager->getBans());
309 $this->assertFalse($this->banManager->isBanned($server));
310 }
311
312 /**
313 * Test isBanned with an expired ban
314 */
315 public function testLiftBan()
316 {
317 FileUtils::writeFlatDB(
318 $this->banFile,
319 [
320 'bans' => [
321 $this->ipAddr => time() - 10,
322 ]
323 ]
324 );
325 $this->banManager = $this->getNewBanManagerInstance();
326
327 $this->assertCount(1, $this->banManager->getBans());
328 $this->assertFalse($this->banManager->isBanned($this->server));
329 }
330
331 /**
332 * Test isBanned with an expired ban behind a reverse proxy
333 */
334 public function testLiftBanBehindProxy()
335 {
336 $server = [
337 'REMOTE_ADDR' => $this->trustedProxy,
338 'HTTP_X_FORWARDED_FOR' => $this->ipAddr,
339 ];
340
341 FileUtils::writeFlatDB(
342 $this->banFile,
343 [
344 'bans' => [
345 $this->ipAddr => time() - 10,
346 ]
347 ]
348 );
349 $this->banManager = $this->getNewBanManagerInstance();
350
351 $this->assertCount(1, $this->banManager->getBans());
352 $this->assertFalse($this->banManager->isBanned($server));
353 }
354
355 /**
356 * Test isBanned with an expired ban behind a reverse proxy
357 */
358 public function testLiftBanBehindNotConfiguredProxy()
359 {
360 $server = [
361 'REMOTE_ADDR' => $this->trustedProxy,
362 ];
363
364 FileUtils::writeFlatDB(
365 $this->banFile,
366 [
367 'bans' => [
368 $this->ipAddr => time() - 10,
369 ]
370 ]
371 );
372 $this->banManager = $this->getNewBanManagerInstance();
373
374 $this->assertCount(1, $this->banManager->getBans());
375 $this->assertFalse($this->banManager->isBanned($server));
376 }
377
378 /**
379 * Build a new instance of BanManager, which will reread the ban file.
380 *
381 * @return BanManager instance
382 */
383 protected function getNewBanManagerInstance()
384 {
385 return new BanManager(
386 [$this->trustedProxy],
387 3,
388 1800,
389 $this->banFile,
390 $this->logFile
391 );
392 }
393}
diff --git a/tests/security/LoginManagerTest.php b/tests/security/LoginManagerTest.php
index f26cd1eb..eef0f22a 100644
--- a/tests/security/LoginManagerTest.php
+++ b/tests/security/LoginManagerTest.php
@@ -2,7 +2,8 @@
2namespace Shaarli\Security; 2namespace Shaarli\Security;
3 3
4require_once 'tests/utils/FakeConfigManager.php'; 4require_once 'tests/utils/FakeConfigManager.php';
5use \PHPUnit\Framework\TestCase; 5
6use PHPUnit\Framework\TestCase;
6 7
7/** 8/**
8 * Test coverage for LoginManager 9 * Test coverage for LoginManager
@@ -74,54 +75,27 @@ class LoginManagerTest extends TestCase
74 'credentials.salt' => $this->salt, 75 'credentials.salt' => $this->salt,
75 'resource.ban_file' => $this->banFile, 76 'resource.ban_file' => $this->banFile,
76 'resource.log' => $this->logFile, 77 'resource.log' => $this->logFile,
77 'security.ban_after' => 4, 78 'security.ban_after' => 2,
78 'security.ban_duration' => 3600, 79 'security.ban_duration' => 3600,
79 'security.trusted_proxies' => [$this->trustedProxy], 80 'security.trusted_proxies' => [$this->trustedProxy],
80 ]); 81 ]);
81 82
82 $this->cookie = []; 83 $this->cookie = [];
83
84 $this->globals = &$GLOBALS;
85 unset($this->globals['IPBANS']);
86
87 $this->session = []; 84 $this->session = [];
88 85
89 $this->sessionManager = new SessionManager($this->session, $this->configManager); 86 $this->sessionManager = new SessionManager($this->session, $this->configManager);
90 $this->loginManager = new LoginManager($this->globals, $this->configManager, $this->sessionManager); 87 $this->loginManager = new LoginManager($this->configManager, $this->sessionManager);
91 $this->server['REMOTE_ADDR'] = $this->ipAddr; 88 $this->server['REMOTE_ADDR'] = $this->ipAddr;
92 } 89 }
93 90
94 /** 91 /**
95 * Wipe test resources
96 */
97 public function tearDown()
98 {
99 unset($this->globals['IPBANS']);
100 }
101
102 /**
103 * Instantiate a LoginManager and load ban records
104 */
105 public function testReadBanFile()
106 {
107 file_put_contents(
108 $this->banFile,
109 "<?php\n\$GLOBALS['IPBANS']=array('FAILURES' => array('127.0.0.1' => 99));\n?>"
110 );
111 new LoginManager($this->globals, $this->configManager, null);
112 $this->assertEquals(99, $this->globals['IPBANS']['FAILURES']['127.0.0.1']);
113 }
114
115 /**
116 * Record a failed login attempt 92 * Record a failed login attempt
117 */ 93 */
118 public function testHandleFailedLogin() 94 public function testHandleFailedLogin()
119 { 95 {
120 $this->loginManager->handleFailedLogin($this->server); 96 $this->loginManager->handleFailedLogin($this->server);
121 $this->assertEquals(1, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
122
123 $this->loginManager->handleFailedLogin($this->server); 97 $this->loginManager->handleFailedLogin($this->server);
124 $this->assertEquals(2, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]); 98 $this->assertFalse($this->loginManager->canLogin($this->server));
125 } 99 }
126 100
127 /** 101 /**
@@ -134,10 +108,8 @@ class LoginManagerTest extends TestCase
134 'HTTP_X_FORWARDED_FOR' => $this->ipAddr, 108 'HTTP_X_FORWARDED_FOR' => $this->ipAddr,
135 ]; 109 ];
136 $this->loginManager->handleFailedLogin($server); 110 $this->loginManager->handleFailedLogin($server);
137 $this->assertEquals(1, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
138
139 $this->loginManager->handleFailedLogin($server); 111 $this->loginManager->handleFailedLogin($server);
140 $this->assertEquals(2, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]); 112 $this->assertFalse($this->loginManager->canLogin($server));
141 } 113 }
142 114
143 /** 115 /**
@@ -149,39 +121,8 @@ class LoginManagerTest extends TestCase
149 'REMOTE_ADDR' => $this->trustedProxy, 121 'REMOTE_ADDR' => $this->trustedProxy,
150 ]; 122 ];
151 $this->loginManager->handleFailedLogin($server); 123 $this->loginManager->handleFailedLogin($server);
152 $this->assertFalse(isset($this->globals['IPBANS']['FAILURES'][$this->ipAddr]));
153
154 $this->loginManager->handleFailedLogin($server); 124 $this->loginManager->handleFailedLogin($server);
155 $this->assertFalse(isset($this->globals['IPBANS']['FAILURES'][$this->ipAddr])); 125 $this->assertTrue($this->loginManager->canLogin($server));
156 }
157
158 /**
159 * Record a failed login attempt and ban the IP after too many failures
160 */
161 public function testHandleFailedLoginBanIp()
162 {
163 $this->loginManager->handleFailedLogin($this->server);
164 $this->assertEquals(1, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
165 $this->assertTrue($this->loginManager->canLogin($this->server));
166
167 $this->loginManager->handleFailedLogin($this->server);
168 $this->assertEquals(2, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
169 $this->assertTrue($this->loginManager->canLogin($this->server));
170
171 $this->loginManager->handleFailedLogin($this->server);
172 $this->assertEquals(3, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
173 $this->assertTrue($this->loginManager->canLogin($this->server));
174
175 $this->loginManager->handleFailedLogin($this->server);
176 $this->assertEquals(4, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
177 $this->assertFalse($this->loginManager->canLogin($this->server));
178
179 // handleFailedLogin is not supposed to be called at this point:
180 // - no login form should be displayed once an IP has been banned
181 // - yet this could happen when using custom templates / scripts
182 $this->loginManager->handleFailedLogin($this->server);
183 $this->assertEquals(5, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
184 $this->assertFalse($this->loginManager->canLogin($this->server));
185 } 126 }
186 127
187 /** 128 /**
@@ -201,14 +142,11 @@ class LoginManagerTest extends TestCase
201 public function testHandleSuccessfulLoginAfterFailure() 142 public function testHandleSuccessfulLoginAfterFailure()
202 { 143 {
203 $this->loginManager->handleFailedLogin($this->server); 144 $this->loginManager->handleFailedLogin($this->server);
204 $this->loginManager->handleFailedLogin($this->server);
205 $this->assertEquals(2, $this->globals['IPBANS']['FAILURES'][$this->ipAddr]);
206 $this->assertTrue($this->loginManager->canLogin($this->server)); 145 $this->assertTrue($this->loginManager->canLogin($this->server));
207 146
208 $this->loginManager->handleSuccessfulLogin($this->server); 147 $this->loginManager->handleSuccessfulLogin($this->server);
148 $this->loginManager->handleFailedLogin($this->server);
209 $this->assertTrue($this->loginManager->canLogin($this->server)); 149 $this->assertTrue($this->loginManager->canLogin($this->server));
210 $this->assertFalse(isset($this->globals['IPBANS']['FAILURES'][$this->ipAddr]));
211 $this->assertFalse(isset($this->globals['IPBANS']['BANS'][$this->ipAddr]));
212 } 150 }
213 151
214 /** 152 /**
@@ -220,41 +158,28 @@ class LoginManagerTest extends TestCase
220 } 158 }
221 159
222 /** 160 /**
223 * The IP is banned 161 * Generate a token depending on the user credentials and client IP
224 */
225 public function testCanLoginIpBanned()
226 {
227 // ban the IP for an hour
228 $this->globals['IPBANS']['FAILURES'][$this->ipAddr] = 10;
229 $this->globals['IPBANS']['BANS'][$this->ipAddr] = time() + 3600;
230
231 $this->assertFalse($this->loginManager->canLogin($this->server));
232 }
233
234 /**
235 * The IP is banned, and the ban duration is over
236 */ 162 */
237 public function testCanLoginIpBanExpired() 163 public function testGenerateStaySignedInToken()
238 { 164 {
239 // ban the IP for an hour 165 $this->loginManager->generateStaySignedInToken($this->clientIpAddress);
240 $this->globals['IPBANS']['FAILURES'][$this->ipAddr] = 10;
241 $this->globals['IPBANS']['BANS'][$this->ipAddr] = time() + 3600;
242 $this->assertFalse($this->loginManager->canLogin($this->server));
243 166
244 // lift the ban 167 $this->assertEquals(
245 $this->globals['IPBANS']['BANS'][$this->ipAddr] = time() - 3600; 168 sha1($this->passwordHash . $this->clientIpAddress . $this->salt),
246 $this->assertTrue($this->loginManager->canLogin($this->server)); 169 $this->loginManager->getStaySignedInToken()
170 );
247 } 171 }
248 172
249 /** 173 /**
250 * Generate a token depending on the user credentials and client IP 174 * Generate a token depending on the user credentials with session protected disabled
251 */ 175 */
252 public function testGenerateStaySignedInToken() 176 public function testGenerateStaySignedInTokenSessionProtectionDisabled()
253 { 177 {
178 $this->configManager->set('security.session_protection_disabled', true);
254 $this->loginManager->generateStaySignedInToken($this->clientIpAddress); 179 $this->loginManager->generateStaySignedInToken($this->clientIpAddress);
255 180
256 $this->assertEquals( 181 $this->assertEquals(
257 sha1($this->passwordHash . $this->clientIpAddress . $this->salt), 182 sha1($this->passwordHash . $this->salt),
258 $this->loginManager->getStaySignedInToken() 183 $this->loginManager->getStaySignedInToken()
259 ); 184 );
260 } 185 }
@@ -267,7 +192,7 @@ class LoginManagerTest extends TestCase
267 $configManager = new \FakeConfigManager([ 192 $configManager = new \FakeConfigManager([
268 'resource.ban_file' => $this->banFile, 193 'resource.ban_file' => $this->banFile,
269 ]); 194 ]);
270 $loginManager = new LoginManager($this->globals, $configManager, null); 195 $loginManager = new LoginManager($configManager, null);
271 $loginManager->checkLoginState([], ''); 196 $loginManager->checkLoginState([], '');
272 197
273 $this->assertFalse($loginManager->isLoggedIn()); 198 $this->assertFalse($loginManager->isLoggedIn());
diff --git a/tests/security/SessionManagerTest.php b/tests/security/SessionManagerTest.php
index 7961e771..f264505e 100644
--- a/tests/security/SessionManagerTest.php
+++ b/tests/security/SessionManagerTest.php
@@ -5,8 +5,8 @@ require_once 'tests/utils/FakeConfigManager.php';
5require_once 'tests/utils/ReferenceSessionIdHashes.php'; 5require_once 'tests/utils/ReferenceSessionIdHashes.php';
6ReferenceSessionIdHashes::genAllHashes(); 6ReferenceSessionIdHashes::genAllHashes();
7 7
8use \Shaarli\Security\SessionManager; 8use PHPUnit\Framework\TestCase;
9use \PHPUnit\Framework\TestCase; 9use Shaarli\Security\SessionManager;
10 10
11/** 11/**
12 * Test coverage for SessionManager 12 * Test coverage for SessionManager
diff --git a/tests/Updater/DummyUpdater.php b/tests/updater/DummyUpdater.php
index a805ab5e..9e866f1f 100644
--- a/tests/Updater/DummyUpdater.php
+++ b/tests/updater/DummyUpdater.php
@@ -1,10 +1,15 @@
1<?php 1<?php
2namespace Shaarli\Updater;
2 3
3require_once 'application/Updater.php'; 4use Exception;
5use ReflectionClass;
6use ReflectionMethod;
7use Shaarli\Bookmark\LinkDB;
8use Shaarli\Config\ConfigManager;
4 9
5/** 10/**
6 * Class DummyUpdater. 11 * Class DummyUpdater.
7 * Extends Updater to add update method designed for unit tests. 12 * Extends updater to add update method designed for unit tests.
8 */ 13 */
9class DummyUpdater extends Updater 14class DummyUpdater extends Updater
10{ 15{
diff --git a/tests/Updater/UpdaterTest.php b/tests/updater/UpdaterTest.php
index c4a6e7ef..93bc86c1 100644
--- a/tests/Updater/UpdaterTest.php
+++ b/tests/updater/UpdaterTest.php
@@ -1,17 +1,24 @@
1<?php 1<?php
2namespace Shaarli\Updater;
3
4use DateTime;
5use Exception;
6use Shaarli\Bookmark\LinkDB;
2use Shaarli\Config\ConfigJson; 7use Shaarli\Config\ConfigJson;
3use Shaarli\Config\ConfigManager; 8use Shaarli\Config\ConfigManager;
4use Shaarli\Config\ConfigPhp; 9use Shaarli\Config\ConfigPhp;
5use Shaarli\Thumbnailer; 10use Shaarli\Thumbnailer;
6 11
7require_once 'tests/Updater/DummyUpdater.php'; 12require_once 'application/updater/UpdaterUtils.php';
13require_once 'tests/updater/DummyUpdater.php';
14require_once 'tests/utils/ReferenceLinkDB.php';
8require_once 'inc/rain.tpl.class.php'; 15require_once 'inc/rain.tpl.class.php';
9 16
10/** 17/**
11 * Class UpdaterTest. 18 * Class UpdaterTest.
12 * Runs unit tests against the Updater class. 19 * Runs unit tests against the updater class.
13 */ 20 */
14class UpdaterTest extends PHPUnit_Framework_TestCase 21class UpdaterTest extends \PHPUnit\Framework\TestCase
15{ 22{
16 /** 23 /**
17 * @var string Path to test datastore. 24 * @var string Path to test datastore.
@@ -153,7 +160,7 @@ class UpdaterTest extends PHPUnit_Framework_TestCase
153 /** 160 /**
154 * Test Update failed. 161 * Test Update failed.
155 * 162 *
156 * @expectedException UpdaterException 163 * @expectedException \Exception
157 */ 164 */
158 public function testUpdateFailed() 165 public function testUpdateFailed()
159 { 166 {
@@ -179,17 +186,17 @@ class UpdaterTest extends PHPUnit_Framework_TestCase
179 $this->conf->setConfigFile('tests/utils/config/configPhp'); 186 $this->conf->setConfigFile('tests/utils/config/configPhp');
180 $this->conf->reset(); 187 $this->conf->reset();
181 188
182 $optionsFile = 'tests/Updater/options.php'; 189 $optionsFile = 'tests/updater/options.php';
183 $options = '<?php 190 $options = '<?php
184$GLOBALS[\'privateLinkByDefault\'] = true;'; 191$GLOBALS[\'privateLinkByDefault\'] = true;';
185 file_put_contents($optionsFile, $options); 192 file_put_contents($optionsFile, $options);
186 193
187 // tmp config file. 194 // tmp config file.
188 $this->conf->setConfigFile('tests/Updater/config'); 195 $this->conf->setConfigFile('tests/updater/config');
189 196
190 // merge configs 197 // merge configs
191 $updater = new Updater(array(), array(), $this->conf, true); 198 $updater = new Updater(array(), array(), $this->conf, true);
192 // This writes a new config file in tests/Updater/config.php 199 // This writes a new config file in tests/updater/config.php
193 $updater->updateMethodMergeDeprecatedConfigFile(); 200 $updater->updateMethodMergeDeprecatedConfigFile();
194 201
195 // make sure updated field is changed 202 // make sure updated field is changed
@@ -216,7 +223,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
216 */ 223 */
217 public function testRenameDashTags() 224 public function testRenameDashTags()
218 { 225 {
219 $refDB = new ReferenceLinkDB(); 226 $refDB = new \ReferenceLinkDB();
220 $refDB->write(self::$testDatastore); 227 $refDB->write(self::$testDatastore);
221 $linkDB = new LinkDB(self::$testDatastore, true, false); 228 $linkDB = new LinkDB(self::$testDatastore, true, false);
222 229
@@ -280,17 +287,14 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
280 $this->conf = new ConfigManager($sandbox); 287 $this->conf = new ConfigManager($sandbox);
281 $title = '<script>alert("title");</script>'; 288 $title = '<script>alert("title");</script>';
282 $headerLink = '<script>alert("header_link");</script>'; 289 $headerLink = '<script>alert("header_link");</script>';
283 $redirectorUrl = '<script>alert("redirector");</script>';
284 $this->conf->set('general.title', $title); 290 $this->conf->set('general.title', $title);
285 $this->conf->set('general.header_link', $headerLink); 291 $this->conf->set('general.header_link', $headerLink);
286 $this->conf->set('redirector.url', $redirectorUrl);
287 $updater = new Updater(array(), array(), $this->conf, true); 292 $updater = new Updater(array(), array(), $this->conf, true);
288 $done = $updater->updateMethodEscapeUnescapedConfig(); 293 $done = $updater->updateMethodEscapeUnescapedConfig();
289 $this->assertTrue($done); 294 $this->assertTrue($done);
290 $this->conf->reload(); 295 $this->conf->reload();
291 $this->assertEquals(escape($title), $this->conf->get('general.title')); 296 $this->assertEquals(escape($title), $this->conf->get('general.title'));
292 $this->assertEquals(escape($headerLink), $this->conf->get('general.header_link')); 297 $this->assertEquals(escape($headerLink), $this->conf->get('general.header_link'));
293 $this->assertEquals(escape($redirectorUrl), $this->conf->get('redirector.url'));
294 unlink($sandbox . '.json.php'); 298 unlink($sandbox . '.json.php');
295 } 299 }
296 300
@@ -362,7 +366,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
362 'private' => true, 366 'private' => true,
363 ), 367 ),
364 ); 368 );
365 $refDB = new ReferenceLinkDB(); 369 $refDB = new \ReferenceLinkDB();
366 $refDB->setLinks($links); 370 $refDB->setLinks($links);
367 $refDB->write(self::$testDatastore); 371 $refDB->write(self::$testDatastore);
368 $linkDB = new LinkDB(self::$testDatastore, true, false); 372 $linkDB = new LinkDB(self::$testDatastore, true, false);
@@ -426,7 +430,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
426 */ 430 */
427 public function testDatastoreIdsNothingToDo() 431 public function testDatastoreIdsNothingToDo()
428 { 432 {
429 $refDB = new ReferenceLinkDB(); 433 $refDB = new \ReferenceLinkDB();
430 $refDB->write(self::$testDatastore); 434 $refDB->write(self::$testDatastore);
431 $linkDB = new LinkDB(self::$testDatastore, true, false); 435 $linkDB = new LinkDB(self::$testDatastore, true, false);
432 436
@@ -700,7 +704,6 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
700 } 704 }
701 705
702 /** 706 /**
703<<<<<<< HEAD
704 * Test updateMethodWebThumbnailer with thumbnails enabled. 707 * Test updateMethodWebThumbnailer with thumbnails enabled.
705 */ 708 */
706 public function testUpdateMethodWebThumbnailerEnabled() 709 public function testUpdateMethodWebThumbnailerEnabled()
@@ -763,7 +766,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
763 1 => ['id' => 1] + $blank, 766 1 => ['id' => 1] + $blank,
764 2 => ['id' => 2] + $blank, 767 2 => ['id' => 2] + $blank,
765 ]; 768 ];
766 $refDB = new ReferenceLinkDB(); 769 $refDB = new \ReferenceLinkDB();
767 $refDB->setLinks($links); 770 $refDB->setLinks($links);
768 $refDB->write(self::$testDatastore); 771 $refDB->write(self::$testDatastore);
769 $linkDB = new LinkDB(self::$testDatastore, true, false); 772 $linkDB = new LinkDB(self::$testDatastore, true, false);
@@ -794,7 +797,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
794 1 => ['id' => 1, 'sticky' => true] + $blank, 797 1 => ['id' => 1, 'sticky' => true] + $blank,
795 2 => ['id' => 2] + $blank, 798 2 => ['id' => 2] + $blank,
796 ]; 799 ];
797 $refDB = new ReferenceLinkDB(); 800 $refDB = new \ReferenceLinkDB();
798 $refDB->setLinks($links); 801 $refDB->setLinks($links);
799 $refDB->write(self::$testDatastore); 802 $refDB->write(self::$testDatastore);
800 $linkDB = new LinkDB(self::$testDatastore, true, false); 803 $linkDB = new LinkDB(self::$testDatastore, true, false);
@@ -805,4 +808,19 @@ $GLOBALS[\'privateLinkByDefault\'] = true;';
805 $linkDB = new LinkDB(self::$testDatastore, true, false); 808 $linkDB = new LinkDB(self::$testDatastore, true, false);
806 $this->assertTrue($linkDB[1]['sticky']); 809 $this->assertTrue($linkDB[1]['sticky']);
807 } 810 }
811
812 /**
813 * Test updateMethodRemoveRedirector().
814 */
815 public function testUpdateRemoveRedirector()
816 {
817 $sandboxConf = 'sandbox/config';
818 copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
819 $this->conf = new ConfigManager($sandboxConf);
820 $updater = new Updater([], null, $this->conf, true);
821 $this->assertTrue($updater->updateMethodRemoveRedirector());
822 $this->assertFalse($this->conf->exists('redirector'));
823 $this->conf = new ConfigManager($sandboxConf);
824 $this->assertFalse($this->conf->exists('redirector'));
825 }
808} 826}
diff --git a/tests/utils/CurlUtils.php b/tests/utils/CurlUtils.php
new file mode 100644
index 00000000..1cc4907e
--- /dev/null
+++ b/tests/utils/CurlUtils.php
@@ -0,0 +1,94 @@
1<?php
2/**
3 * Old-style mock for cURL, as PHPUnit doesn't allow to mock global functions
4 */
5
6/**
7 * Returns code 200 or html content type.
8 *
9 * @param resource $ch cURL resource
10 * @param int $type cURL info type
11 *
12 * @return int|string 200 or 'text/html'
13 */
14function ut_curl_getinfo_ok($ch, $type)
15{
16 switch ($type) {
17 case CURLINFO_RESPONSE_CODE:
18 return 200;
19 case CURLINFO_CONTENT_TYPE:
20 return 'text/html; charset=utf-8';
21 }
22}
23
24/**
25 * Returns code 200 or html content type without charset.
26 *
27 * @param resource $ch cURL resource
28 * @param int $type cURL info type
29 *
30 * @return int|string 200 or 'text/html'
31 */
32function ut_curl_getinfo_no_charset($ch, $type)
33{
34 switch ($type) {
35 case CURLINFO_RESPONSE_CODE:
36 return 200;
37 case CURLINFO_CONTENT_TYPE:
38 return 'text/html';
39 }
40}
41
42/**
43 * Invalid response code.
44 *
45 * @param resource $ch cURL resource
46 * @param int $type cURL info type
47 *
48 * @return int|string 404 or 'text/html'
49 */
50function ut_curl_getinfo_rc_ko($ch, $type)
51{
52 switch ($type) {
53 case CURLINFO_RESPONSE_CODE:
54 return 404;
55 case CURLINFO_CONTENT_TYPE:
56 return 'text/html; charset=utf-8';
57 }
58}
59
60/**
61 * Invalid content type.
62 *
63 * @param resource $ch cURL resource
64 * @param int $type cURL info type
65 *
66 * @return int|string 200 or 'text/plain'
67 */
68function ut_curl_getinfo_ct_ko($ch, $type)
69{
70 switch ($type) {
71 case CURLINFO_RESPONSE_CODE:
72 return 200;
73 case CURLINFO_CONTENT_TYPE:
74 return 'text/plain';
75 }
76}
77
78/**
79 * Invalid response code and content type.
80 *
81 * @param resource $ch cURL resource
82 * @param int $type cURL info type
83 *
84 * @return int|string 404 or 'text/plain'
85 */
86function ut_curl_getinfo_rs_ct_ko($ch, $type)
87{
88 switch ($type) {
89 case CURLINFO_RESPONSE_CODE:
90 return 404;
91 case CURLINFO_CONTENT_TYPE:
92 return 'text/plain';
93 }
94}
diff --git a/tests/utils/FakeApplicationUtils.php b/tests/utils/FakeApplicationUtils.php
new file mode 100644
index 00000000..de83d598
--- /dev/null
+++ b/tests/utils/FakeApplicationUtils.php
@@ -0,0 +1,19 @@
1<?php
2
3namespace Shaarli;
4
5/**
6 * Fake ApplicationUtils class to avoid HTTP requests
7 */
8class FakeApplicationUtils extends ApplicationUtils
9{
10 public static $VERSION_CODE = '';
11
12 /**
13 * Toggle HTTP requests, allow overriding the version code
14 */
15 public static function getVersion($url, $timeout = 0)
16 {
17 return self::$VERSION_CODE;
18 }
19}
diff --git a/tests/utils/ReferenceHistory.php b/tests/utils/ReferenceHistory.php
index 75cbb326..e411c417 100644
--- a/tests/utils/ReferenceHistory.php
+++ b/tests/utils/ReferenceHistory.php
@@ -1,5 +1,8 @@
1<?php 1<?php
2 2
3use Shaarli\FileUtils;
4use Shaarli\History;
5
3/** 6/**
4 * Populates a reference history 7 * Populates a reference history
5 */ 8 */
diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php
index 59679e38..c12bcb67 100644
--- a/tests/utils/ReferenceLinkDB.php
+++ b/tests/utils/ReferenceLinkDB.php
@@ -1,4 +1,7 @@
1<?php 1<?php
2
3use Shaarli\Bookmark\LinkDB;
4
2/** 5/**
3 * Populates a reference datastore to test LinkDB 6 * Populates a reference datastore to test LinkDB
4 */ 7 */
diff --git a/tests/utils/config/configPhp.php b/tests/utils/config/configPhp.php
index 34b11fcd..7dc81e22 100644
--- a/tests/utils/config/configPhp.php
+++ b/tests/utils/config/configPhp.php
@@ -8,7 +8,7 @@ $GLOBALS['titleLink'] = 'titleLink';
8$GLOBALS['redirector'] = 'lala'; 8$GLOBALS['redirector'] = 'lala';
9$GLOBALS['disablesessionprotection'] = false; 9$GLOBALS['disablesessionprotection'] = false;
10$GLOBALS['privateLinkByDefault'] = false; 10$GLOBALS['privateLinkByDefault'] = false;
11$GLOBALS['config']['DATADIR'] = 'tests/Updater'; 11$GLOBALS['config']['DATADIR'] = 'tests/updater';
12$GLOBALS['config']['PAGECACHE'] = 'sandbox/pagecache'; 12$GLOBALS['config']['PAGECACHE'] = 'sandbox/pagecache';
13$GLOBALS['config']['DATASTORE'] = 'data/datastore.php'; 13$GLOBALS['config']['DATASTORE'] = 'data/datastore.php';
14$GLOBALS['plugins']['WALLABAG_VERSION'] = '1'; 14$GLOBALS['plugins']['WALLABAG_VERSION'] = '1';
diff --git a/tpl/default/404.html b/tpl/default/404.html
index fd337cad..472566a6 100644
--- a/tpl/default/404.html
+++ b/tpl/default/404.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -8,7 +8,7 @@
8 {include="page.header"} 8 {include="page.header"}
9<div class="center" id="page404" class="page404-container"> 9<div class="center" id="page404" class="page404-container">
10 <h2>{'Sorry, nothing to see here.'|t}</h2> 10 <h2>{'Sorry, nothing to see here.'|t}</h2>
11 <img src="img/sad_star.png"> 11 <img src="img/sad_star.png" alt="">
12 <p>{$error_message}</p> 12 <p>{$error_message}</p>
13</div> 13</div>
14{include="page.footer"} 14{include="page.footer"}
diff --git a/tpl/default/addlink.html b/tpl/default/addlink.html
index 55864a02..b4b4a0ec 100644
--- a/tpl/default/addlink.html
+++ b/tpl/default/addlink.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/changepassword.html b/tpl/default/changepassword.html
index 2d15c92a..ab579433 100644
--- a/tpl/default/changepassword.html
+++ b/tpl/default/changepassword.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -11,10 +11,10 @@
11 <h2 class="window-title">{"Change password"|t}</h2> 11 <h2 class="window-title">{"Change password"|t}</h2>
12 <form method="POST" action="#" name="changepasswordform" id="changepasswordform"> 12 <form method="POST" action="#" name="changepasswordform" id="changepasswordform">
13 <div> 13 <div>
14 <input type="password" name="oldpassword" placeholder="{'Current password'|t}" class="autofocus"> 14 <input type="password" name="oldpassword" aria-label="{'Current password'|t}" placeholder="{'Current password'|t}" class="autofocus">
15 </div> 15 </div>
16 <div> 16 <div>
17 <input type="password" name="setpassword" placeholder="{'New password'|t}"> 17 <input type="password" name="setpassword" aria-label="{'New password'|t}" placeholder="{'New password'|t}">
18 </div> 18 </div>
19 <input type="hidden" name="token" value="{$token}"> 19 <input type="hidden" name="token" value="{$token}">
20 <div> 20 <div>
diff --git a/tpl/default/changetag.html b/tpl/default/changetag.html
index 6606c4fa..ec6e0b46 100644
--- a/tpl/default/changetag.html
+++ b/tpl/default/changetag.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -11,20 +11,20 @@
11 <h2 class="window-title">{"Manage tags"|t}</h2> 11 <h2 class="window-title">{"Manage tags"|t}</h2>
12 <form method="POST" action="#" name="changetag" id="changetag"> 12 <form method="POST" action="#" name="changetag" id="changetag">
13 <div> 13 <div>
14 <input type="text" name="fromtag" placeholder="{'Tag'|t}" value="{$fromtag}" 14 <input type="text" name="fromtag" aria-label="{'Tag'|t}" placeholder="{'Tag'|t}" value="{$fromtag}"
15 list="tagsList" autocomplete="off" class="awesomplete autofocus" data-minChars="1"> 15 list="tagsList" autocomplete="off" class="awesomplete autofocus" data-minChars="1">
16 <datalist id="tagsList"> 16 <datalist id="tagsList">
17 {loop="$tags"}<option>{$key}</option>{/loop} 17 {loop="$tags"}<option>{$key}</option>{/loop}
18 </datalist> 18 </datalist>
19 </div> 19 </div>
20 <div> 20 <div>
21 <input type="text" name="totag" placeholder="{'New name'|t}" 21 <input type="text" name="totag" aria-label="{'New name'|t}" placeholder="{'New name'|t}"
22 list="toTagsList" autocomplete="off" class="awesomplete" data-minChars="1"> 22 list="toTagsList" autocomplete="off" class="awesomplete" data-minChars="1">
23 <datalist id="toTagsList"> 23 <datalist id="toTagsList">
24 {loop="$tags"}<option>{$key}</option>{/loop} 24 {loop="$tags"}<option>{$key}</option>{/loop}
25 </datalist> 25 </datalist>
26 </div> 26 </div>
27 <div><i class="fa fa-info-circle"></i> {'Case sensitive'|t}</div> 27 <div><i class="fa fa-info-circle" aria-hidden="true"></i> {'Case sensitive'|t}</div>
28 <input type="hidden" name="token" value="{$token}"> 28 <input type="hidden" name="token" value="{$token}">
29 <div> 29 <div>
30 <input type="submit" value="{'Rename'|t}" name="renametag"> 30 <input type="submit" value="{'Rename'|t}" name="renametag">
diff --git a/tpl/default/configure.html b/tpl/default/configure.html
index 42e32230..83033624 100644
--- a/tpl/default/configure.html
+++ b/tpl/default/configure.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -215,6 +215,22 @@
215 <div class="pure-g"> 215 <div class="pure-g">
216 <div class="pure-u-lg-{$ratioLabel} pure-u-{$ratioLabelMobile}"> 216 <div class="pure-u-lg-{$ratioLabel} pure-u-{$ratioLabelMobile}">
217 <div class="form-label"> 217 <div class="form-label">
218 <label for="retrieveDescription">
219 <span class="label-name">{'Automatically retrieve description for new bookmarks'|t}</span><br>
220 <span class="label-desc">{'Shaarli will try to retrieve the description from meta HTML headers'|t}</span>
221 </label>
222 </div>
223 </div>
224 <div class="pure-u-lg-{$ratioInput} pure-u-{$ratioInputMobile}">
225 <div class="form-input">
226 <input type="checkbox" name="retrieveDescription" id="retrieveDescription"
227 {if="$retrieve_description"}checked{/if}/>
228 </div>
229 </div>
230 </div>
231 <div class="pure-g">
232 <div class="pure-u-lg-{$ratioLabel} pure-u-{$ratioLabelMobile}">
233 <div class="form-label">
218 <label for="enableApi"> 234 <label for="enableApi">
219 <span class="label-name">{'Enable REST API'|t}</span><br> 235 <span class="label-name">{'Enable REST API'|t}</span><br>
220 <span class="label-desc">{'Allow third party software to use Shaarli such as mobile application'|t}</span> 236 <span class="label-desc">{'Allow third party software to use Shaarli such as mobile application'|t}</span>
diff --git a/tpl/default/daily.html b/tpl/default/daily.html
index 2c409478..6b5103a4 100644
--- a/tpl/default/daily.html
+++ b/tpl/default/daily.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -44,7 +44,12 @@
44 </div> 44 </div>
45 </div> 45 </div>
46 <div> 46 <div>
47 <h3 class="window-subtitle">{function="format_date($dayDate, false)"}</h3> 47 <h3 class="window-subtitle">
48 {if="!empty($dayDesc)"}
49 {$dayDesc} -
50 {/if}
51 {function="format_date($dayDate, false)"}
52 </h3>
48 53
49 <div id="plugin_zone_about_daily" class="plugin_zone"> 54 <div id="plugin_zone_about_daily" class="plugin_zone">
50 {loop="$daily_about_plugin"} 55 {loop="$daily_about_plugin"}
diff --git a/tpl/default/editlink.html b/tpl/default/editlink.html
index d8c57155..df14535d 100644
--- a/tpl/default/editlink.html
+++ b/tpl/default/editlink.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/export.html b/tpl/default/export.html
index af1d6e33..99c01b11 100644
--- a/tpl/default/export.html
+++ b/tpl/default/export.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/import.html b/tpl/default/import.html
index bdc9086e..20f854d1 100644
--- a/tpl/default/import.html
+++ b/tpl/default/import.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/install.html b/tpl/default/install.html
index 6199b33d..f0e7040e 100644
--- a/tpl/default/install.html
+++ b/tpl/default/install.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/linklist.html b/tpl/default/linklist.html
index ed78f40a..a025d53c 100644
--- a/tpl/default/linklist.html
+++ b/tpl/default/linklist.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -52,7 +52,7 @@
52{/loop} 52{/loop}
53 53
54<div id="linklist"> 54<div id="linklist">
55 <div id="link-count-block" class="pure-g"> 55 <div id="link-count-block" class="pure-g link-count-block">
56 <div class="pure-u-lg-2-24 pure-u-1-24"></div> 56 <div class="pure-u-lg-2-24 pure-u-1-24"></div>
57 <div id="link-count-content" class="pure-u-lg-20-24 pure-u-22-24"> 57 <div id="link-count-content" class="pure-u-lg-20-24 pure-u-22-24">
58 <div class="linkcount pure-u-lg-0 center"> 58 <div class="linkcount pure-u-lg-0 center">
@@ -94,7 +94,7 @@
94 {'tagged'|t} 94 {'tagged'|t}
95 {loop="$exploded_tags"} 95 {loop="$exploded_tags"}
96 <span class="label label-tag" title="{'Remove tag'|t}"> 96 <span class="label label-tag" title="{'Remove tag'|t}">
97 <a href="?removetag={function="urlencode($value)"}">{$value}<span class="remove"><i class="fa fa-times"></i></span></a> 97 <a href="?removetag={function="urlencode($value)"}">{$value}<span class="remove"><i class="fa fa-times" aria-hidden="true"></i></span></a>
98 </span> 98 </span>
99 {/loop} 99 {/loop}
100 {/if} 100 {/if}
@@ -146,13 +146,14 @@
146 </div> 146 </div>
147 {/if} 147 {/if}
148 148
149 {if="$is_logged_in"} 149 <div class="linklist-item-editbuttons">
150 <div class="linklist-item-editbuttons"> 150 {if="$value.sticky"}
151 {if="$value.private"} 151 <span class="label label-sticky">{$strSticky}</span>
152 <span class="label label-private">{$strPrivate}</span> 152 {/if}
153 {/if} 153 {if="$value.private"}
154 </div> 154 <span class="label label-private">{$strPrivate}</span>
155 {/if} 155 {/if}
156 </div>
156 157
157 <h2> 158 <h2>
158 <a href="{$value.real_url}"> 159 <a href="{$value.real_url}">
@@ -195,18 +196,18 @@
195 <input type="checkbox" class="link-checkbox" value="{$value.id}"> 196 <input type="checkbox" class="link-checkbox" value="{$value.id}">
196 </span> 197 </span>
197 <span class="linklist-item-infos-controls-item ctrl-edit"> 198 <span class="linklist-item-infos-controls-item ctrl-edit">
198 <a href="?edit_link={$value.id}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link"></i></a> 199 <a href="?edit_link={$value.id}" aria-label="{$strEdit}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link" aria-hidden="true"></i></a>
199 </span> 200 </span>
200 <span class="linklist-item-infos-controls-item ctrl-delete"> 201 <span class="linklist-item-infos-controls-item ctrl-delete">
201 <a href="?delete_link&amp;lf_linkdate={$value.id}&amp;token={$token}" 202 <a href="?delete_link&amp;lf_linkdate={$value.id}&amp;token={$token}" aria-label="{$strDelete}"
202 title="{$strDelete}" class="delete-link pure-u-0 pure-u-lg-visible confirm-delete"> 203 title="{$strDelete}" class="delete-link pure-u-0 pure-u-lg-visible confirm-delete">
203 <i class="fa fa-trash"></i> 204 <i class="fa fa-trash" aria-hidden="true"></i>
204 </a> 205 </a>
205 </span> 206 </span>
206 <span class="linklist-item-infos-controls-item ctrl-pin"> 207 <span class="linklist-item-infos-controls-item ctrl-pin">
207 <a href="?do=pin&amp;id={$value.id}&amp;token={$token}" 208 <a href="?do=pin&amp;id={$value.id}&amp;token={$token}"
208 title="{$strToggleSticky}" class="pin-link {if="$value.sticky"}pinned-link{/if} pure-u-0 pure-u-lg-visible"> 209 title="{$strToggleSticky}" aria-label="{$strToggleSticky}" class="pin-link {if="$value.sticky"}pinned-link{/if} pure-u-0 pure-u-lg-visible">
209 <i class="fa fa-thumb-tack"></i> 210 <i class="fa fa-thumb-tack" aria-hidden="true"></i>
210 </a> 211 </a>
211 </span> 212 </span>
212 </div> 213 </div>
@@ -248,10 +249,10 @@
248 {ignore}do not add space or line break between these div - Firefox issue{/ignore} 249 {ignore}do not add space or line break between these div - Firefox issue{/ignore}
249 class="linklist-item-infos-url pure-u-lg-5-12 pure-u-1"> 250 class="linklist-item-infos-url pure-u-lg-5-12 pure-u-1">
250 <a href="{$value.real_url}" title="{$value.title}"> 251 <a href="{$value.real_url}" title="{$value.title}">
251 <i class="fa fa-link"></i> {$value.url} 252 <i class="fa fa-link" aria-hidden="true"></i> {$value.url}
252 </a> 253 </a>
253 <div class="linklist-item-buttons pure-u-0 pure-u-lg-visible"> 254 <div class="linklist-item-buttons pure-u-0 pure-u-lg-visible">
254 <a href="#" title="{$strFold}" class="fold-button"><i class="fa fa-chevron-up"></i></a> 255 <a href="#" aria-label="{$strFold}" title="{$strFold}" class="fold-button"><i class="fa fa-chevron-up" aria-hidden="true"></i></a>
255 </div> 256 </div>
256 </div> 257 </div>
257 <div class="mobile-buttons pure-u-1 pure-u-lg-0"> 258 <div class="mobile-buttons pure-u-1 pure-u-lg-0">
@@ -264,12 +265,12 @@
264 {/if} 265 {/if}
265 {if="$is_logged_in"} 266 {if="$is_logged_in"}
266 &middot; 267 &middot;
267 <a href="?delete_link&amp;lf_linkdate={$value.id}&amp;token={$token}" 268 <a href="?delete_link&amp;lf_linkdate={$value.id}&amp;token={$token}" aria-label="{$strDelete}"
268 title="{$strDelete}" class="delete-link confirm-delete"> 269 title="{$strDelete}" class="delete-link confirm-delete">
269 <i class="fa fa-trash"></i> 270 <i class="fa fa-trash" aria-hidden="true"></i>
270 </a> 271 </a>
271 &middot; 272 &middot;
272 <a href="?edit_link={$value.id}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link"></i></a> 273 <a href="?edit_link={$value.id}" aria-label="{$strEdit}" title="{$strEdit}"><i class="fa fa-pencil-square-o edit-link" aria-hidden="true"></i></a>
273 {/if} 274 {/if}
274 </div> 275 </div>
275 </div> 276 </div>
@@ -286,7 +287,7 @@
286 {/loop} 287 {/loop}
287 </div> 288 </div>
288 289
289<div id="linklist-paging-bottom-block" class="pure-g"> 290<div id="linklist-paging-bottom-block" class="pure-g link-count-block">
290 <div class="pure-u-lg-2-24 pure-u-1-24"></div> 291 <div class="pure-u-lg-2-24 pure-u-1-24"></div>
291 <div id="linklist-paging-bottom-content" class="pure-u-lg-20-24 pure-u-22-24"> 292 <div id="linklist-paging-bottom-content" class="pure-u-lg-20-24 pure-u-22-24">
292 {include="linklist.paging"} 293 {include="linklist.paging"}
diff --git a/tpl/default/linklist.paging.html b/tpl/default/linklist.paging.html
index fe665a84..68947f92 100644
--- a/tpl/default/linklist.paging.html
+++ b/tpl/default/linklist.paging.html
@@ -6,21 +6,21 @@
6 {'Filters'|t} 6 {'Filters'|t}
7 </span> 7 </span>
8 {if="$is_logged_in"} 8 {if="$is_logged_in"}
9 <a href="?visibility=private" title="{'Only display private links'|t}" 9 <a href="?visibility=private" aria-label="{'Only display private links'|t}" title="{'Only display private links'|t}"
10 class="{if="$visibility==='private'"}filter-on{else}filter-off{/if}" 10 class="{if="$visibility==='private'"}filter-on{else}filter-off{/if}"
11 ><i class="fa fa-user-secret"></i></a> 11 ><i class="fa fa-user-secret" aria-hidden="true"></i></a>
12 <a href="?visibility=public" title="{'Only display public links'|t}" 12 <a href="?visibility=public" aria-label="{'Only display public links'|t}" title="{'Only display public links'|t}"
13 class="{if="$visibility==='public'"}filter-on{else}filter-off{/if}" 13 class="{if="$visibility==='public'"}filter-on{else}filter-off{/if}"
14 ><i class="fa fa-globe"></i></a> 14 ><i class="fa fa-globe" aria-hidden="true"></i></a>
15 {/if} 15 {/if}
16 <a href="?untaggedonly" title="{'Filter untagged links'|t}" 16 <a href="?untaggedonly" aria-label="{'Filter untagged links'|t}" title="{'Filter untagged links'|t}"
17 class={if="$untaggedonly"}"filter-on"{else}"filter-off"{/if} 17 class={if="$untaggedonly"}"filter-on"{else}"filter-off"{/if}
18 ><i class="fa fa-tag"></i></a> 18 ><i class="fa fa-tag" aria-hidden="true"></i></a>
19 <a href="#" title="{'Select all'|t}" 19 <a href="#" aria-label="{'Select all'|t}" title="{'Select all'|t}"
20 class="filter-off select-all-button" 20 class="filter-off select-all-button pure-u-0 pure-u-lg-visible"
21 ><i class="fa fa-check-square-o"></i></a> 21 ><i class="fa fa-check-square-o" aria-hidden="true"></i></a>
22 <a href="#" class="filter-off fold-all pure-u-lg-0" title="{'Fold all'|t}"> 22 <a href="#" class="filter-off fold-all pure-u-lg-0" aria-label="{'Fold all'|t}" title="{'Fold all'|t}">
23 <i class="fa fa-chevron-up"></i> 23 <i class="fa fa-chevron-up" aria-hidden="true"></i>
24 </a> 24 </a>
25 {loop="$action_plugin"} 25 {loop="$action_plugin"}
26 {$value.attr.class=isset($value.attr.class) ? $value.attr.class : ''} 26 {$value.attr.class=isset($value.attr.class) ? $value.attr.class : ''}
@@ -59,8 +59,8 @@
59 <form method="GET" class="pure-u-0 pure-u-lg-visible"> 59 <form method="GET" class="pure-u-0 pure-u-lg-visible">
60 <input type="text" name="linksperpage" placeholder="133"> 60 <input type="text" name="linksperpage" placeholder="133">
61 </form> 61 </form>
62 <a href="#" class="filter-off fold-all pure-u-0 pure-u-lg-visible" title="{'Fold all'|t}"> 62 <a href="#" class="filter-off fold-all pure-u-0 pure-u-lg-visible" aria-label="{'Fold all'|t}" title="{'Fold all'|t}">
63 <i class="fa fa-chevron-up"></i> 63 <i class="fa fa-chevron-up" aria-hidden="true"></i>
64 </a> 64 </a>
65 </div> 65 </div>
66 </div> 66 </div>
diff --git a/tpl/default/loginform.html b/tpl/default/loginform.html
index 3cdab65a..761aec0c 100644
--- a/tpl/default/loginform.html
+++ b/tpl/default/loginform.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
@@ -9,7 +9,7 @@
9<div class="pure-g pure-alert pure-alert-error pure-alert-closable center"> 9<div class="pure-g pure-alert pure-alert-error pure-alert-closable center">
10 <div class="pure-u-2-24"></div> 10 <div class="pure-u-2-24"></div>
11 <div class="pure-u-20-24"> 11 <div class="pure-u-20-24">
12 {'You have been banned after too many failed login attempts. Try again later.'|t} 12 <p>{'You have been banned after too many failed login attempts. Try again later.'|t}</p>
13 </div> 13 </div>
14 <div class="pure-u-2-24"> 14 <div class="pure-u-2-24">
15 <i class="fa fa-times pure-alert-close"></i> 15 <i class="fa fa-times pure-alert-close"></i>
@@ -22,20 +22,19 @@
22 <form method="post" name="loginform"> 22 <form method="post" name="loginform">
23 <h2 class="window-title">{'Login'|t}</h2> 23 <h2 class="window-title">{'Login'|t}</h2>
24 <div> 24 <div>
25 <input type="text" name="login" placeholder="{'Username'|t}" 25 <input type="text" name="login" aria-label="{'Username'|t}" placeholder="{'Username'|t}"
26 {if="!empty($username)"}value="{$username}"{/if} class="autofocus" tabindex="20"> 26 {if="!empty($username)"}value="{$username}"{/if} class="autofocus">
27 </div> 27 </div>
28 <div> 28 <div>
29 <input type="password" name="password" placeholder="{'Password'|t}" class="autofocus" tabindex="21"> 29 <input type="password" name="password" aria-label="{'Password'|t}" placeholder="{'Password'|t}" class="autofocus">
30 </div> 30 </div>
31 <div class="remember-me"> 31 <div class="remember-me">
32 <input type="checkbox" name="longlastingsession" id="longlastingsessionform" 32 <input type="checkbox" name="longlastingsession" id="longlastingsessionform"
33 {if="$remember_user_default"}checked="checked"{/if} 33 {if="$remember_user_default"}checked="checked"{/if}>
34 tabindex="22">
35 <label for="longlastingsessionform">{'Remember me'|t}</label> 34 <label for="longlastingsessionform">{'Remember me'|t}</label>
36 </div> 35 </div>
37 <div> 36 <div>
38 <input type="submit" value="{'Login'|t}" class="bigbutton" tabindex="23"> 37 <input type="submit" value="{'Login'|t}" class="bigbutton">
39 </div> 38 </div>
40 <input type="hidden" name="token" value="{$token}"> 39 <input type="hidden" name="token" value="{$token}">
41 {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if} 40 {if="$returnurl"}<input type="hidden" name="returnurl" value="{$returnurl}">{/if}
@@ -48,4 +47,3 @@
48{include="page.footer"} 47{include="page.footer"}
49</body> 48</body>
50</html> 49</html>
51
diff --git a/tpl/default/page.footer.html b/tpl/default/page.footer.html
index 5af39be7..ce858e8c 100644
--- a/tpl/default/page.footer.html
+++ b/tpl/default/page.footer.html
@@ -2,7 +2,8 @@
2 2
3<div class="pure-g"> 3<div class="pure-g">
4 <div class="pure-u-2-24"></div> 4 <div class="pure-u-2-24"></div>
5 <div id="footer" class="pure-u-20-24 footer-container"> 5 <footer id="footer" class="pure-u-20-24 footer-container" role="contentinfo">
6 <i class="fa fa-shaarli" aria-hidden="true"></i>
6 <strong><a href="https://github.com/shaarli/Shaarli">Shaarli</a></strong> 7 <strong><a href="https://github.com/shaarli/Shaarli">Shaarli</a></strong>
7 {if="$is_logged_in===true"} 8 {if="$is_logged_in===true"}
8 {$version} 9 {$version}
@@ -13,7 +14,7 @@
13 {loop="$plugins_footer.text"} 14 {loop="$plugins_footer.text"}
14 {$value} 15 {$value}
15 {/loop} 16 {/loop}
16 </div> 17 </footer>
17 <div class="pure-u-2-24"></div> 18 <div class="pure-u-2-24"></div>
18</div> 19</div>
19 20
diff --git a/tpl/default/page.header.html b/tpl/default/page.header.html
index 4f6dd4d8..0ba1993f 100644
--- a/tpl/default/page.header.html
+++ b/tpl/default/page.header.html
@@ -1,11 +1,13 @@
1<div class="shaarli-menu pure-g" id="shaarli-menu"> 1<div class="shaarli-menu pure-g" id="shaarli-menu">
2 <div class="pure-u-lg-0 pure-u-1"> 2 <div class="pure-u-lg-0 pure-u-1">
3 <div class="pure-menu"> 3 <div class="pure-menu">
4 <header role="banner">
4 <a href="{$titleLink}" class="pure-menu-link shaarli-title" id="shaarli-title-mobile"> 5 <a href="{$titleLink}" class="pure-menu-link shaarli-title" id="shaarli-title-mobile">
5 <img src="img/icon.png" width="16" height="16" class="head-logo" alt="" /> 6 <i class="fa fa-shaarli" aria-hidden="true"></i>
6 {$shaarlititle} 7 {$shaarlititle}
7 </a> 8 </a>
8 <a href="#" class="menu-toggle" id="menu-toggle"><s class="bar"></s><s class="bar"></s></a> 9 </header>
10 <a href="#" class="menu-toggle" id="menu-toggle" aria-label="Menu"><s class="bar" aria-hidden="true"></s><s class="bar" aria-hidden="true"></s></a>
9 </div> 11 </div>
10 </div> 12 </div>
11 <div class="pure-u-1"> 13 <div class="pure-u-1">
@@ -13,14 +15,14 @@
13 <ul class="pure-menu-list pure-u-lg-5-6 pure-u-1"> 15 <ul class="pure-menu-list pure-u-lg-5-6 pure-u-1">
14 <li class="pure-menu-item pure-u-0 pure-u-lg-visible"> 16 <li class="pure-menu-item pure-u-0 pure-u-lg-visible">
15 <a href="{$titleLink}" class="pure-menu-link shaarli-title" id="shaarli-title-desktop"> 17 <a href="{$titleLink}" class="pure-menu-link shaarli-title" id="shaarli-title-desktop">
16 <img src="img/icon.png" width="16" height="16" class="head-logo" alt="" /> 18 <i class="fa fa-shaarli" aria-hidden="true"></i>
17 {$shaarlititle} 19 {$shaarlititle}
18 </a> 20 </a>
19 </li> 21 </li>
20 {if="$is_logged_in || $openshaarli"} 22 {if="$is_logged_in || $openshaarli"}
21 <li class="pure-menu-item"> 23 <li class="pure-menu-item">
22 <a href="?do=addlink" class="pure-menu-link" id="shaarli-menu-shaare"> 24 <a href="?do=addlink" class="pure-menu-link" id="shaarli-menu-shaare">
23 <i class="fa fa-plus" ></i> {'Shaare'|t} 25 <i class="fa fa-plus" aria-hidden="true"></i> {'Shaare'|t}
24 </a> 26 </a>
25 </li> 27 </li>
26 <li class="pure-menu-item" id="shaarli-menu-tools"> 28 <li class="pure-menu-item" id="shaarli-menu-tools">
@@ -67,27 +69,27 @@
67 <li class="pure-menu-item" id="shaarli-menu-desktop-search"> 69 <li class="pure-menu-item" id="shaarli-menu-desktop-search">
68 <a href="#" class="pure-menu-link subheader-opener" 70 <a href="#" class="pure-menu-link subheader-opener"
69 data-open-id="search" 71 data-open-id="search"
70 id="search-button" title="{'Search'|t}"> 72 id="search-button" aria-label="{'Search'|t}" title="{'Search'|t}">
71 <i class="fa fa-search"></i> 73 <i class="fa fa-search" aria-hidden="true"></i>
72 </a> 74 </a>
73 </li> 75 </li>
74 <li class="pure-menu-item" id="shaarli-menu-desktop-rss"> 76 <li class="pure-menu-item" id="shaarli-menu-desktop-rss">
75 <a href="?do={$feed_type}{$searchcrits}" class="pure-menu-link" title="{'RSS Feed'|t}"> 77 <a href="?do={$feed_type}{$searchcrits}" class="pure-menu-link" title="{'RSS Feed'|t}" aria-label="{'RSS Feed'|t}">
76 <i class="fa fa-rss"></i> 78 <i class="fa fa-rss" aria-hidden="true"></i>
77 </a> 79 </a>
78 </li> 80 </li>
79 {if="!$is_logged_in"} 81 {if="!$is_logged_in"}
80 <li class="pure-menu-item" id="shaarli-menu-desktop-login"> 82 <li class="pure-menu-item" id="shaarli-menu-desktop-login">
81 <a href="?do=login" class="pure-menu-link" 83 <a href="?do=login" class="pure-menu-link"
82 data-open-id="header-login-form" 84 data-open-id="header-login-form"
83 id="login-button" title="{'Login'|t}"> 85 id="login-button" aria-label="{'Login'|t}" title="{'Login'|t}">
84 <i class="fa fa-user"></i> 86 <i class="fa fa-user" aria-hidden="true"></i>
85 </a> 87 </a>
86 </li> 88 </li>
87 {else} 89 {else}
88 <li class="pure-menu-item" id="shaarli-menu-desktop-logout"> 90 <li class="pure-menu-item" id="shaarli-menu-desktop-logout">
89 <a href="?do=logout" class="pure-menu-link" title="{'Logout'|t}"> 91 <a href="?do=logout" class="pure-menu-link" aria-label="{'Logout'|t}" title="{'Logout'|t}">
90 <i class="fa fa-sign-out"></i> 92 <i class="fa fa-sign-out" aria-hidden="true"></i>
91 </a> 93 </a>
92 </li> 94 </li>
93 {/if} 95 {/if}
@@ -118,7 +120,18 @@
118 <div id="actions" class="subheader-form"> 120 <div id="actions" class="subheader-form">
119 <div class="pure-g"> 121 <div class="pure-g">
120 <div class="pure-u-1"> 122 <div class="pure-u-1">
121 <a href="" id="actions-delete" class="button">{'Delete'|t}</a> 123 <a href="" id="actions-delete" class="button">
124 <i class="fa fa-trash"></i>
125 {'Delete'|t}
126 </a>&nbsp;
127 <a href="" class="actions-change-visibility button" data-visibility="public">
128 <i class="fa fa-globe"></i>
129 {'Set public'|t}
130 </a>&nbsp;
131 <a href="" class="actions-change-visibility button" data-visibility="private">
132 <i class="fa fa-user-secret"></i>
133 {'Set private'|t}
134 </a>
122 </div> 135 </div>
123 </div> 136 </div>
124 </div> 137 </div>
diff --git a/tpl/default/picwall.html b/tpl/default/picwall.html
index 4c325487..5a959244 100644
--- a/tpl/default/picwall.html
+++ b/tpl/default/picwall.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/pluginsadmin.html b/tpl/default/pluginsadmin.html
index 82041972..4bfaa934 100644
--- a/tpl/default/pluginsadmin.html
+++ b/tpl/default/pluginsadmin.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/tag.cloud.html b/tpl/default/tag.cloud.html
index 9e52158d..bedf3f8c 100644
--- a/tpl/default/tag.cloud.html
+++ b/tpl/default/tag.cloud.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/tag.list.html b/tpl/default/tag.list.html
index bcddcd56..41eab246 100644
--- a/tpl/default/tag.list.html
+++ b/tpl/default/tag.list.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/tag.sort.html b/tpl/default/tag.sort.html
index 89acda0d..d24c9f64 100644
--- a/tpl/default/tag.sort.html
+++ b/tpl/default/tag.sort.html
@@ -1,8 +1,8 @@
1<div class="pure-g"> 1<div class="pure-g">
2 <div class="pure-u-1 pure-alert pure-alert-success tag-sort"> 2 <div class="pure-u-1 pure-alert pure-alert-success tag-sort">
3 {'Sort by:'|t} 3 {'Sort by:'|t}
4 <a href="?do=tagcloud" title="cloud">{'Cloud'|t}</a> &middot; 4 <a href="?do=tagcloud">{'Cloud'|t}</a> &middot;
5 <a href="?do=taglist&sort=usage" title="cloud">{'Most used'|t}</a> &middot; 5 <a href="?do=taglist&sort=usage">{'Most used'|t}</a> &middot;
6 <a href="?do=taglist&sort=alpha" title="cloud">{'Alphabetical'|t}</a> 6 <a href="?do=taglist&sort=alpha">{'Alphabetical'|t}</a>
7 </div> 7 </div>
8</div> \ No newline at end of file 8</div> \ No newline at end of file
diff --git a/tpl/default/thumbnails.html b/tpl/default/thumbnails.html
index a8cf904e..f1939798 100644
--- a/tpl/default/thumbnails.html
+++ b/tpl/default/thumbnails.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/default/tools.html b/tpl/default/tools.html
index c9ce1eaf..20d0c893 100644
--- a/tpl/default/tools.html
+++ b/tpl/default/tools.html
@@ -1,5 +1,5 @@
1<!DOCTYPE html> 1<!DOCTYPE html>
2<html> 2<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
3<head> 3<head>
4 {include="includes"} 4 {include="includes"}
5</head> 5</head>
diff --git a/tpl/vintage/configure.html b/tpl/vintage/configure.html
index f1892fa1..160286a5 100644
--- a/tpl/vintage/configure.html
+++ b/tpl/vintage/configure.html
@@ -107,6 +107,14 @@
107 </td> 107 </td>
108 </tr> 108 </tr>
109 <tr> 109 <tr>
110 <td valign="top"><b>Automatically retrieve description for new bookmarks:</b></td>
111 <td>
112 <input type="checkbox" name="retrieveDescription" id="retrieveDescription"
113 {if="$retrieve_description"}checked{/if}/>
114 <label for="retrieveDescription">&nbsp;Shaarli will try to retrieve the description from meta HTML headers</label>
115 </td>
116 </tr>
117 <tr>
110 <td valign="top"><b>Enable REST API</b></td> 118 <td valign="top"><b>Enable REST API</b></td>
111 <td> 119 <td>
112 <input type="checkbox" name="enableApi" id="enableApi" 120 <input type="checkbox" name="enableApi" id="enableApi"
diff --git a/tpl/vintage/daily.html b/tpl/vintage/daily.html
index 71d84475..00f18e26 100644
--- a/tpl/vintage/daily.html
+++ b/tpl/vintage/daily.html
@@ -35,6 +35,9 @@
35 35
36 <div class="dailyDate"> 36 <div class="dailyDate">
37 <span class="nomobile">&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</span> 37 <span class="nomobile">&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</span>
38 {if="!empty($dayDesc)"}
39 {$dayDesc} -
40 {/if}
38 {function="strftime('%A %d, %B %Y', $day)"} 41 {function="strftime('%A %d, %B %Y', $day)"}
39 <span class="nomobile">&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</span> 42 <span class="nomobile">&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</span>
40 </div> 43 </div>
diff --git a/yarn.lock b/yarn.lock
index f1c8e9cf..1aa94f42 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,62 +5,84 @@
5abbrev@1: 5abbrev@1:
6 version "1.1.1" 6 version "1.1.1"
7 resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 7 resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
8 integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
8 9
9acorn-dynamic-import@^2.0.0: 10acorn-dynamic-import@^2.0.0:
10 version "2.0.2" 11 version "2.0.2"
11 resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" 12 resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
13 integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=
12 dependencies: 14 dependencies:
13 acorn "^4.0.3" 15 acorn "^4.0.3"
14 16
15acorn-jsx@^3.0.0: 17acorn-jsx@^3.0.0:
16 version "3.0.1" 18 version "3.0.1"
17 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 19 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
20 integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
18 dependencies: 21 dependencies:
19 acorn "^3.0.4" 22 acorn "^3.0.4"
20 23
21acorn@^3.0.4: 24acorn@^3.0.4:
22 version "3.3.0" 25 version "3.3.0"
23 resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 26 resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
27 integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
24 28
25acorn@^4.0.3: 29acorn@^4.0.3:
26 version "4.0.13" 30 version "4.0.13"
27 resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" 31 resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
32 integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
28 33
29acorn@^5.0.0, acorn@^5.4.0: 34acorn@^5.0.0, acorn@^5.5.0:
30 version "5.4.1" 35 version "5.7.3"
31 resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102" 36 resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
32 37 integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
33acorn@^5.5.0:
34 version "5.5.3"
35 resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
36 38
37ajv-keywords@^1.0.0: 39ajv-keywords@^1.0.0:
38 version "1.5.1" 40 version "1.5.1"
39 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 41 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
42 integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw=
40 43
41ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: 44ajv-keywords@^2.1.0:
42 version "2.1.1" 45 version "2.1.1"
43 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" 46 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
47 integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
48
49ajv-keywords@^3.1.0:
50 version "3.4.0"
51 resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
52 integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
44 53
45ajv@^4.7.0, ajv@^4.9.1: 54ajv@^4.7.0:
46 version "4.11.8" 55 version "4.11.8"
47 resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 56 resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
57 integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=
48 dependencies: 58 dependencies:
49 co "^4.6.0" 59 co "^4.6.0"
50 json-stable-stringify "^1.0.1" 60 json-stable-stringify "^1.0.1"
51 61
52ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.3, ajv@^5.3.0: 62ajv@^5.0.0, ajv@^5.2.3, ajv@^5.3.0:
53 version "5.5.2" 63 version "5.5.2"
54 resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 64 resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
65 integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
55 dependencies: 66 dependencies:
56 co "^4.6.0" 67 co "^4.6.0"
57 fast-deep-equal "^1.0.0" 68 fast-deep-equal "^1.0.0"
58 fast-json-stable-stringify "^2.0.0" 69 fast-json-stable-stringify "^2.0.0"
59 json-schema-traverse "^0.3.0" 70 json-schema-traverse "^0.3.0"
60 71
72ajv@^6.1.0, ajv@^6.5.5:
73 version "6.10.0"
74 resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
75 integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
76 dependencies:
77 fast-deep-equal "^2.0.1"
78 fast-json-stable-stringify "^2.0.0"
79 json-schema-traverse "^0.4.1"
80 uri-js "^4.2.2"
81
61align-text@^0.1.1, align-text@^0.1.3: 82align-text@^0.1.1, align-text@^0.1.3:
62 version "0.1.4" 83 version "0.1.4"
63 resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 84 resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
85 integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
64 dependencies: 86 dependencies:
65 kind-of "^3.0.2" 87 kind-of "^3.0.2"
66 longest "^1.0.1" 88 longest "^1.0.1"
@@ -69,140 +91,171 @@ align-text@^0.1.1, align-text@^0.1.3:
69alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: 91alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
70 version "1.0.2" 92 version "1.0.2"
71 resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" 93 resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
94 integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
72 95
73amdefine@>=0.0.4: 96amdefine@>=0.0.4:
74 version "1.0.1" 97 version "1.0.1"
75 resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 98 resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
99 integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
76 100
77ansi-escapes@^1.1.0: 101ansi-escapes@^1.1.0:
78 version "1.4.0" 102 version "1.4.0"
79 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 103 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
104 integrity sha1-06ioOzGapneTZisT52HHkRQiMG4=
80 105
81ansi-escapes@^3.0.0: 106ansi-escapes@^3.0.0:
82 version "3.0.0" 107 version "3.2.0"
83 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" 108 resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
109 integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
84 110
85ansi-regex@^2.0.0: 111ansi-regex@^2.0.0:
86 version "2.1.1" 112 version "2.1.1"
87 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 113 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
114 integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
88 115
89ansi-regex@^3.0.0: 116ansi-regex@^3.0.0:
90 version "3.0.0" 117 version "3.0.0"
91 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 118 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
119 integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
92 120
93ansi-styles@^2.2.1: 121ansi-styles@^2.2.1:
94 version "2.2.1" 122 version "2.2.1"
95 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 123 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
124 integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
96 125
97ansi-styles@^3.1.0: 126ansi-styles@^3.2.1:
98 version "3.2.0" 127 version "3.2.1"
99 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 128 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
129 integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
100 dependencies: 130 dependencies:
101 color-convert "^1.9.0" 131 color-convert "^1.9.0"
102 132
103anymatch@^1.3.0: 133anymatch@^2.0.0:
104 version "1.3.2" 134 version "2.0.0"
105 resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" 135 resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
136 integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
106 dependencies: 137 dependencies:
107 micromatch "^2.1.5" 138 micromatch "^3.1.4"
108 normalize-path "^2.0.0" 139 normalize-path "^2.1.1"
109 140
110aproba@^1.0.3: 141aproba@^1.0.3:
111 version "1.2.0" 142 version "1.2.0"
112 resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 143 resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
144 integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
113 145
114are-we-there-yet@~1.1.2: 146are-we-there-yet@~1.1.2:
115 version "1.1.4" 147 version "1.1.5"
116 resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 148 resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
149 integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
117 dependencies: 150 dependencies:
118 delegates "^1.0.0" 151 delegates "^1.0.0"
119 readable-stream "^2.0.6" 152 readable-stream "^2.0.6"
120 153
121argparse@^1.0.7: 154argparse@^1.0.7:
122 version "1.0.9" 155 version "1.0.10"
123 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 156 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
157 integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
124 dependencies: 158 dependencies:
125 sprintf-js "~1.0.2" 159 sprintf-js "~1.0.2"
126 160
127arr-diff@^2.0.0: 161arr-diff@^4.0.0:
128 version "2.0.0" 162 version "4.0.0"
129 resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 163 resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
130 dependencies: 164 integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
131 arr-flatten "^1.0.1"
132 165
133arr-flatten@^1.0.1: 166arr-flatten@^1.1.0:
134 version "1.1.0" 167 version "1.1.0"
135 resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 168 resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
169 integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
170
171arr-union@^3.1.0:
172 version "3.1.0"
173 resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
174 integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
136 175
137array-find-index@^1.0.1: 176array-find-index@^1.0.1:
138 version "1.0.2" 177 version "1.0.2"
139 resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 178 resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
179 integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
140 180
141array-union@^1.0.1: 181array-includes@^3.0.3:
142 version "1.0.2" 182 version "3.0.3"
143 resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 183 resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
184 integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
144 dependencies: 185 dependencies:
145 array-uniq "^1.0.1" 186 define-properties "^1.1.2"
187 es-abstract "^1.7.0"
146 188
147array-uniq@^1.0.1: 189array-unique@^0.3.2:
148 version "1.0.3" 190 version "0.3.2"
149 resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 191 resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
150 192 integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
151array-unique@^0.2.1:
152 version "0.2.1"
153 resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
154
155arrify@^1.0.0:
156 version "1.0.1"
157 resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
158 193
159asn1.js@^4.0.0: 194asn1.js@^4.0.0:
160 version "4.9.2" 195 version "4.10.1"
161 resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" 196 resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
197 integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
162 dependencies: 198 dependencies:
163 bn.js "^4.0.0" 199 bn.js "^4.0.0"
164 inherits "^2.0.1" 200 inherits "^2.0.1"
165 minimalistic-assert "^1.0.0" 201 minimalistic-assert "^1.0.0"
166 202
167asn1@~0.2.3: 203asn1@~0.2.3:
168 version "0.2.3" 204 version "0.2.4"
169 resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 205 resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
206 integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
207 dependencies:
208 safer-buffer "~2.1.0"
170 209
171assert-plus@1.0.0, assert-plus@^1.0.0: 210assert-plus@1.0.0, assert-plus@^1.0.0:
172 version "1.0.0" 211 version "1.0.0"
173 resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 212 resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
174 213 integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
175assert-plus@^0.2.0:
176 version "0.2.0"
177 resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
178 214
179assert@^1.1.1: 215assert@^1.1.1:
180 version "1.4.1" 216 version "1.5.0"
181 resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 217 resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
218 integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
182 dependencies: 219 dependencies:
220 object-assign "^4.1.1"
183 util "0.10.3" 221 util "0.10.3"
184 222
185async-each@^1.0.0: 223assign-symbols@^1.0.0:
186 version "1.0.1" 224 version "1.0.0"
187 resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 225 resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
226 integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
227
228async-each@^1.0.1:
229 version "1.0.3"
230 resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
231 integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
188 232
189async-foreach@^0.1.3: 233async-foreach@^0.1.3:
190 version "0.1.3" 234 version "0.1.3"
191 resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" 235 resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
236 integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
192 237
193async@^2.1.2, async@^2.1.5, async@^2.4.1: 238async@^2.1.2, async@^2.4.1:
194 version "2.6.0" 239 version "2.6.2"
195 resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" 240 resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
241 integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
196 dependencies: 242 dependencies:
197 lodash "^4.14.0" 243 lodash "^4.17.11"
198 244
199asynckit@^0.4.0: 245asynckit@^0.4.0:
200 version "0.4.0" 246 version "0.4.0"
201 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 247 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
248 integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
249
250atob@^2.1.1:
251 version "2.1.2"
252 resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
253 integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
202 254
203autoprefixer@^6.3.1: 255autoprefixer@^6.3.1:
204 version "6.7.7" 256 version "6.7.7"
205 resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" 257 resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
258 integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=
206 dependencies: 259 dependencies:
207 browserslist "^1.7.6" 260 browserslist "^1.7.6"
208 caniuse-db "^1.0.30000634" 261 caniuse-db "^1.0.30000634"
@@ -212,32 +265,33 @@ autoprefixer@^6.3.1:
212 postcss-value-parser "^3.2.3" 265 postcss-value-parser "^3.2.3"
213 266
214awesomplete@^1.1.2: 267awesomplete@^1.1.2:
215 version "1.1.2" 268 version "1.1.4"
216 resolved "https://registry.yarnpkg.com/awesomplete/-/awesomplete-1.1.2.tgz#b6e253f73474e46278bba5ae7f81d4262160fb75" 269 resolved "https://registry.yarnpkg.com/awesomplete/-/awesomplete-1.1.4.tgz#cdfcbbb2391857ff3a3340b5b1ebde7701b355e6"
217 270 integrity sha512-AgYrODNlVD3ZJ6Em54YesLnOSusuVCjoRAt0l5bi3L1Oiv5r5dkPdxVPJaG3/wnPlxRUmGcpGnK02VK7N02kCg==
218aws-sign2@~0.6.0:
219 version "0.6.0"
220 resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
221 271
222aws-sign2@~0.7.0: 272aws-sign2@~0.7.0:
223 version "0.7.0" 273 version "0.7.0"
224 resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 274 resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
275 integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
225 276
226aws4@^1.2.1, aws4@^1.6.0: 277aws4@^1.8.0:
227 version "1.6.0" 278 version "1.8.0"
228 resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 279 resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
280 integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
229 281
230babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: 282babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
231 version "6.26.0" 283 version "6.26.0"
232 resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 284 resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
285 integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
233 dependencies: 286 dependencies:
234 chalk "^1.1.3" 287 chalk "^1.1.3"
235 esutils "^2.0.2" 288 esutils "^2.0.2"
236 js-tokens "^3.0.2" 289 js-tokens "^3.0.2"
237 290
238babel-core@^6.24.1, babel-core@^6.26.0: 291babel-core@^6.24.1, babel-core@^6.26.0:
239 version "6.26.0" 292 version "6.26.3"
240 resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" 293 resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
294 integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
241 dependencies: 295 dependencies:
242 babel-code-frame "^6.26.0" 296 babel-code-frame "^6.26.0"
243 babel-generator "^6.26.0" 297 babel-generator "^6.26.0"
@@ -249,19 +303,20 @@ babel-core@^6.24.1, babel-core@^6.26.0:
249 babel-traverse "^6.26.0" 303 babel-traverse "^6.26.0"
250 babel-types "^6.26.0" 304 babel-types "^6.26.0"
251 babylon "^6.18.0" 305 babylon "^6.18.0"
252 convert-source-map "^1.5.0" 306 convert-source-map "^1.5.1"
253 debug "^2.6.8" 307 debug "^2.6.9"
254 json5 "^0.5.1" 308 json5 "^0.5.1"
255 lodash "^4.17.4" 309 lodash "^4.17.4"
256 minimatch "^3.0.4" 310 minimatch "^3.0.4"
257 path-is-absolute "^1.0.1" 311 path-is-absolute "^1.0.1"
258 private "^0.1.7" 312 private "^0.1.8"
259 slash "^1.0.0" 313 slash "^1.0.0"
260 source-map "^0.5.6" 314 source-map "^0.5.7"
261 315
262babel-generator@^6.26.0: 316babel-generator@^6.26.0:
263 version "6.26.1" 317 version "6.26.1"
264 resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 318 resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
319 integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
265 dependencies: 320 dependencies:
266 babel-messages "^6.23.0" 321 babel-messages "^6.23.0"
267 babel-runtime "^6.26.0" 322 babel-runtime "^6.26.0"
@@ -275,6 +330,7 @@ babel-generator@^6.26.0:
275babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: 330babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
276 version "6.24.1" 331 version "6.24.1"
277 resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" 332 resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
333 integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=
278 dependencies: 334 dependencies:
279 babel-helper-explode-assignable-expression "^6.24.1" 335 babel-helper-explode-assignable-expression "^6.24.1"
280 babel-runtime "^6.22.0" 336 babel-runtime "^6.22.0"
@@ -283,6 +339,7 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
283babel-helper-call-delegate@^6.24.1: 339babel-helper-call-delegate@^6.24.1:
284 version "6.24.1" 340 version "6.24.1"
285 resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" 341 resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
342 integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=
286 dependencies: 343 dependencies:
287 babel-helper-hoist-variables "^6.24.1" 344 babel-helper-hoist-variables "^6.24.1"
288 babel-runtime "^6.22.0" 345 babel-runtime "^6.22.0"
@@ -292,6 +349,7 @@ babel-helper-call-delegate@^6.24.1:
292babel-helper-define-map@^6.24.1: 349babel-helper-define-map@^6.24.1:
293 version "6.26.0" 350 version "6.26.0"
294 resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" 351 resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
352 integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=
295 dependencies: 353 dependencies:
296 babel-helper-function-name "^6.24.1" 354 babel-helper-function-name "^6.24.1"
297 babel-runtime "^6.26.0" 355 babel-runtime "^6.26.0"
@@ -301,10 +359,12 @@ babel-helper-define-map@^6.24.1:
301babel-helper-evaluate-path@^0.2.0: 359babel-helper-evaluate-path@^0.2.0:
302 version "0.2.0" 360 version "0.2.0"
303 resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz#0bb2eb01996c0cef53c5e8405e999fe4a0244c08" 361 resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz#0bb2eb01996c0cef53c5e8405e999fe4a0244c08"
362 integrity sha512-0EK9TUKMxHL549hWDPkQoS7R0Ozg1CDLheVBHYds2B2qoAvmr9ejY3zOXFsrICK73TN7bPhU14PBeKc8jcBTwg==
304 363
305babel-helper-explode-assignable-expression@^6.24.1: 364babel-helper-explode-assignable-expression@^6.24.1:
306 version "6.24.1" 365 version "6.24.1"
307 resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" 366 resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
367 integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo=
308 dependencies: 368 dependencies:
309 babel-runtime "^6.22.0" 369 babel-runtime "^6.22.0"
310 babel-traverse "^6.24.1" 370 babel-traverse "^6.24.1"
@@ -313,10 +373,12 @@ babel-helper-explode-assignable-expression@^6.24.1:
313babel-helper-flip-expressions@^0.2.0: 373babel-helper-flip-expressions@^0.2.0:
314 version "0.2.0" 374 version "0.2.0"
315 resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz#160d2090a3d9f9c64a750905321a0bc218f884ec" 375 resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz#160d2090a3d9f9c64a750905321a0bc218f884ec"
376 integrity sha512-rAsPA1pWBc7e2E6HepkP2e1sXugT+Oq/VCqhyuHJ8aJ2d/ifwnJfd4Qxjm21qlW43AN8tqaeByagKK6wECFMSw==
316 377
317babel-helper-function-name@^6.24.1: 378babel-helper-function-name@^6.24.1:
318 version "6.24.1" 379 version "6.24.1"
319 resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" 380 resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
381 integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=
320 dependencies: 382 dependencies:
321 babel-helper-get-function-arity "^6.24.1" 383 babel-helper-get-function-arity "^6.24.1"
322 babel-runtime "^6.22.0" 384 babel-runtime "^6.22.0"
@@ -327,6 +389,7 @@ babel-helper-function-name@^6.24.1:
327babel-helper-get-function-arity@^6.24.1: 389babel-helper-get-function-arity@^6.24.1:
328 version "6.24.1" 390 version "6.24.1"
329 resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" 391 resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
392 integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=
330 dependencies: 393 dependencies:
331 babel-runtime "^6.22.0" 394 babel-runtime "^6.22.0"
332 babel-types "^6.24.1" 395 babel-types "^6.24.1"
@@ -334,6 +397,7 @@ babel-helper-get-function-arity@^6.24.1:
334babel-helper-hoist-variables@^6.24.1: 397babel-helper-hoist-variables@^6.24.1:
335 version "6.24.1" 398 version "6.24.1"
336 resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" 399 resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
400 integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY=
337 dependencies: 401 dependencies:
338 babel-runtime "^6.22.0" 402 babel-runtime "^6.22.0"
339 babel-types "^6.24.1" 403 babel-types "^6.24.1"
@@ -341,18 +405,22 @@ babel-helper-hoist-variables@^6.24.1:
341babel-helper-is-nodes-equiv@^0.0.1: 405babel-helper-is-nodes-equiv@^0.0.1:
342 version "0.0.1" 406 version "0.0.1"
343 resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" 407 resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
408 integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
344 409
345babel-helper-is-void-0@^0.2.0: 410babel-helper-is-void-0@^0.2.0:
346 version "0.2.0" 411 version "0.2.0"
347 resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz#6ed0ada8a9b1c5b6e88af6b47c1b3b5c080860eb" 412 resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz#6ed0ada8a9b1c5b6e88af6b47c1b3b5c080860eb"
413 integrity sha512-Axj1AYuD0E3Dl7nT3KxROP7VekEofz3XtEljzURf3fABalLpr8PamtgLFt+zuxtaCxRf9iuZmbAMMYWri5Bazw==
348 414
349babel-helper-mark-eval-scopes@^0.2.0: 415babel-helper-mark-eval-scopes@^0.2.0:
350 version "0.2.0" 416 version "0.2.0"
351 resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz#7648aaf2ec92aae9b09a20ad91e8df5e1fcc94b2" 417 resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz#7648aaf2ec92aae9b09a20ad91e8df5e1fcc94b2"
418 integrity sha512-KJuwrOUcHbvbh6he4xRXZFLaivK9DF9o3CrvpWnK1Wp0B+1ANYABXBMgwrnNFIDK/AvicxQ9CNr8wsgivlp4Aw==
352 419
353babel-helper-optimise-call-expression@^6.24.1: 420babel-helper-optimise-call-expression@^6.24.1:
354 version "6.24.1" 421 version "6.24.1"
355 resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" 422 resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
423 integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=
356 dependencies: 424 dependencies:
357 babel-runtime "^6.22.0" 425 babel-runtime "^6.22.0"
358 babel-types "^6.24.1" 426 babel-types "^6.24.1"
@@ -360,6 +428,7 @@ babel-helper-optimise-call-expression@^6.24.1:
360babel-helper-regex@^6.24.1: 428babel-helper-regex@^6.24.1:
361 version "6.26.0" 429 version "6.26.0"
362 resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" 430 resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
431 integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=
363 dependencies: 432 dependencies:
364 babel-runtime "^6.26.0" 433 babel-runtime "^6.26.0"
365 babel-types "^6.26.0" 434 babel-types "^6.26.0"
@@ -368,6 +437,7 @@ babel-helper-regex@^6.24.1:
368babel-helper-remap-async-to-generator@^6.24.1: 437babel-helper-remap-async-to-generator@^6.24.1:
369 version "6.24.1" 438 version "6.24.1"
370 resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" 439 resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
440 integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=
371 dependencies: 441 dependencies:
372 babel-helper-function-name "^6.24.1" 442 babel-helper-function-name "^6.24.1"
373 babel-runtime "^6.22.0" 443 babel-runtime "^6.22.0"
@@ -378,10 +448,12 @@ babel-helper-remap-async-to-generator@^6.24.1:
378babel-helper-remove-or-void@^0.2.0: 448babel-helper-remove-or-void@^0.2.0:
379 version "0.2.0" 449 version "0.2.0"
380 resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz#8e46ad5b30560d57d7510b3fd93f332ee7c67386" 450 resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz#8e46ad5b30560d57d7510b3fd93f332ee7c67386"
451 integrity sha512-1Z41upf/XR+PwY7Nd+F15Jo5BiQi5205ZXUuKed3yoyQgDkMyoM7vAdjEJS/T+M6jy32sXjskMUgms4zeiVtRA==
381 452
382babel-helper-replace-supers@^6.24.1: 453babel-helper-replace-supers@^6.24.1:
383 version "6.24.1" 454 version "6.24.1"
384 resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" 455 resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
456 integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo=
385 dependencies: 457 dependencies:
386 babel-helper-optimise-call-expression "^6.24.1" 458 babel-helper-optimise-call-expression "^6.24.1"
387 babel-messages "^6.23.0" 459 babel-messages "^6.23.0"
@@ -393,17 +465,20 @@ babel-helper-replace-supers@^6.24.1:
393babel-helper-to-multiple-sequence-expressions@^0.2.0: 465babel-helper-to-multiple-sequence-expressions@^0.2.0:
394 version "0.2.0" 466 version "0.2.0"
395 resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318" 467 resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318"
468 integrity sha512-ij9lpfdP3+Zc/7kNwa+NXbTrUlsYEWPwt/ugmQO0qflzLrveTIkbfOqQztvitk81aG5NblYDQXDlRohzu3oa8Q==
396 469
397babel-helpers@^6.24.1: 470babel-helpers@^6.24.1:
398 version "6.24.1" 471 version "6.24.1"
399 resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 472 resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
473 integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=
400 dependencies: 474 dependencies:
401 babel-runtime "^6.22.0" 475 babel-runtime "^6.22.0"
402 babel-template "^6.24.1" 476 babel-template "^6.24.1"
403 477
404babel-loader@^7.1.2: 478babel-loader@^7.1.2:
405 version "7.1.2" 479 version "7.1.5"
406 resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" 480 resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
481 integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==
407 dependencies: 482 dependencies:
408 find-cache-dir "^1.0.0" 483 find-cache-dir "^1.0.0"
409 loader-utils "^1.0.2" 484 loader-utils "^1.0.2"
@@ -412,12 +487,14 @@ babel-loader@^7.1.2:
412babel-messages@^6.23.0: 487babel-messages@^6.23.0:
413 version "6.23.0" 488 version "6.23.0"
414 resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 489 resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
490 integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
415 dependencies: 491 dependencies:
416 babel-runtime "^6.22.0" 492 babel-runtime "^6.22.0"
417 493
418babel-minify-webpack-plugin@^0.2.0: 494babel-minify-webpack-plugin@^0.2.0:
419 version "0.2.0" 495 version "0.2.0"
420 resolved "https://registry.yarnpkg.com/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.2.0.tgz#ef9694d11a1b8ab8f3204d89f5c9278dd28fc2a9" 496 resolved "https://registry.yarnpkg.com/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.2.0.tgz#ef9694d11a1b8ab8f3204d89f5c9278dd28fc2a9"
497 integrity sha512-+5G5Qqm+DIVl7gY4rkHqlFRkaf1FZtz0imzu/Dy9+88AfOIuy7D5MQjkNgQr5gU6/YSZ+rImgxDqFcWkvvrjkQ==
421 dependencies: 498 dependencies:
422 babel-core "^6.24.1" 499 babel-core "^6.24.1"
423 babel-preset-minify "^0.2.0" 500 babel-preset-minify "^0.2.0"
@@ -426,24 +503,28 @@ babel-minify-webpack-plugin@^0.2.0:
426babel-plugin-check-es2015-constants@^6.22.0: 503babel-plugin-check-es2015-constants@^6.22.0:
427 version "6.22.0" 504 version "6.22.0"
428 resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 505 resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
506 integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
429 dependencies: 507 dependencies:
430 babel-runtime "^6.22.0" 508 babel-runtime "^6.22.0"
431 509
432babel-plugin-minify-builtins@^0.2.0: 510babel-plugin-minify-builtins@^0.2.0:
433 version "0.2.0" 511 version "0.2.0"
434 resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz#317f824b0907210b6348671bb040ca072e2e0c82" 512 resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz#317f824b0907210b6348671bb040ca072e2e0c82"
513 integrity sha512-4i+8ntaS8gwVUcOz5y+zE+55OVOl2nTbmHV51D4wAIiKcRI8U5K//ip1GHfhsgk/NJrrHK7h97Oy5jpqt0Iixg==
435 dependencies: 514 dependencies:
436 babel-helper-evaluate-path "^0.2.0" 515 babel-helper-evaluate-path "^0.2.0"
437 516
438babel-plugin-minify-constant-folding@^0.2.0: 517babel-plugin-minify-constant-folding@^0.2.0:
439 version "0.2.0" 518 version "0.2.0"
440 resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz#8c70b528b2eb7c13e94d95c8789077d4cdbc3970" 519 resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz#8c70b528b2eb7c13e94d95c8789077d4cdbc3970"
520 integrity sha512-B3ffQBEUQ8ydlIkYv2MkZtTCbV7FAkWAV7NkyhcXlGpD10PaCxNGQ/B9oguXGowR1m16Q5nGhvNn8Pkn1MO6Hw==
441 dependencies: 521 dependencies:
442 babel-helper-evaluate-path "^0.2.0" 522 babel-helper-evaluate-path "^0.2.0"
443 523
444babel-plugin-minify-dead-code-elimination@^0.2.0: 524babel-plugin-minify-dead-code-elimination@^0.2.0:
445 version "0.2.0" 525 version "0.2.0"
446 resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz#e8025ee10a1e5e4f202633a6928ce892c33747e3" 526 resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz#e8025ee10a1e5e4f202633a6928ce892c33747e3"
527 integrity sha512-zE7y3pRyzA4zK5nBou0kTcwUTSQ/AiFrynt1cIEYN7vcO2gS9ZFZoI0aO9JYLUdct5fsC1vfB35408yrzTyVfg==
447 dependencies: 528 dependencies:
448 babel-helper-evaluate-path "^0.2.0" 529 babel-helper-evaluate-path "^0.2.0"
449 babel-helper-mark-eval-scopes "^0.2.0" 530 babel-helper-mark-eval-scopes "^0.2.0"
@@ -453,36 +534,43 @@ babel-plugin-minify-dead-code-elimination@^0.2.0:
453babel-plugin-minify-flip-comparisons@^0.2.0: 534babel-plugin-minify-flip-comparisons@^0.2.0:
454 version "0.2.0" 535 version "0.2.0"
455 resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz#0c9c8e93155c8f09dedad8118b634c259f709ef5" 536 resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz#0c9c8e93155c8f09dedad8118b634c259f709ef5"
537 integrity sha512-QOqXSEmD/LhT3LpM1WCyzAGcQZYYKJF7oOHvS6QbpomHenydrV53DMdPX2mK01icBExKZcJAHF209wvDBa+CSg==
456 dependencies: 538 dependencies:
457 babel-helper-is-void-0 "^0.2.0" 539 babel-helper-is-void-0 "^0.2.0"
458 540
459babel-plugin-minify-guarded-expressions@^0.2.0: 541babel-plugin-minify-guarded-expressions@^0.2.0:
460 version "0.2.0" 542 version "0.2.0"
461 resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz#8a8c950040fce3e258a12e6eb21eab94ad7235ab" 543 resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz#8a8c950040fce3e258a12e6eb21eab94ad7235ab"
544 integrity sha512-5+NSPdRQ9mnrHaA+zFj+D5OzmSiv90EX5zGH6cWQgR/OUqmCHSDqgTRPFvOctgpo8MJyO7Rt7ajs2UfLnlAwYg==
462 dependencies: 545 dependencies:
463 babel-helper-flip-expressions "^0.2.0" 546 babel-helper-flip-expressions "^0.2.0"
464 547
465babel-plugin-minify-infinity@^0.2.0: 548babel-plugin-minify-infinity@^0.2.0:
466 version "0.2.0" 549 version "0.2.0"
467 resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz#30960c615ddbc657c045bb00a1d8eb4af257cf03" 550 resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz#30960c615ddbc657c045bb00a1d8eb4af257cf03"
551 integrity sha512-U694vrla1lN6vDHWGrR832t3a/A2eh+kyl019LxEE2+sS4VTydyOPRsAOIYAdJegWRA4cMX1lm9azAN0cLIr8g==
468 552
469babel-plugin-minify-mangle-names@^0.2.0: 553babel-plugin-minify-mangle-names@^0.2.0:
470 version "0.2.0" 554 version "0.2.0"
471 resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz#719892297ff0106a6ec1a4b0fc062f1f8b6a8529" 555 resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz#719892297ff0106a6ec1a4b0fc062f1f8b6a8529"
556 integrity sha512-Gixuak1/CO7VCdjn15/8Bxe/QsAtDG4zPbnsNoe1mIJGCIH/kcmSjFhMlGJtXDQZd6EKzeMfA5WmX9+jvGRefw==
472 dependencies: 557 dependencies:
473 babel-helper-mark-eval-scopes "^0.2.0" 558 babel-helper-mark-eval-scopes "^0.2.0"
474 559
475babel-plugin-minify-numeric-literals@^0.2.0: 560babel-plugin-minify-numeric-literals@^0.2.0:
476 version "0.2.0" 561 version "0.2.0"
477 resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz#5746e851700167a380c05e93f289a7070459a0d1" 562 resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz#5746e851700167a380c05e93f289a7070459a0d1"
563 integrity sha512-VcLpb+r1YS7+RIOXdRsFVLLqoh22177USpHf+JM/g1nZbzdqENmfd5v534MLAbRErhbz6SyK+NQViVzVtBxu8g==
478 564
479babel-plugin-minify-replace@^0.2.0: 565babel-plugin-minify-replace@^0.2.0:
480 version "0.2.0" 566 version "0.2.0"
481 resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz#3c1f06bc4e6d3e301eacb763edc1be611efc39b0" 567 resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz#3c1f06bc4e6d3e301eacb763edc1be611efc39b0"
568 integrity sha512-SEW6zoSVxh3OH6E1LCgyhhTWMnCv+JIRu5h5IlJDA11tU4ZeSF7uPQcO4vN/o52+FssRB26dmzJ/8D+z0QPg5Q==
482 569
483babel-plugin-minify-simplify@^0.2.0: 570babel-plugin-minify-simplify@^0.2.0:
484 version "0.2.0" 571 version "0.2.0"
485 resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz#21ceec4857100c5476d7cef121f351156e5c9bc0" 572 resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz#21ceec4857100c5476d7cef121f351156e5c9bc0"
573 integrity sha512-Mj3Mwy2zVosMfXDWXZrQH5/uMAyfJdmDQ1NVqit+ArbHC3LlXVzptuyC1JxTyai/wgFvjLaichm/7vSUshkWqw==
486 dependencies: 574 dependencies:
487 babel-helper-flip-expressions "^0.2.0" 575 babel-helper-flip-expressions "^0.2.0"
488 babel-helper-is-nodes-equiv "^0.0.1" 576 babel-helper-is-nodes-equiv "^0.0.1"
@@ -491,24 +579,29 @@ babel-plugin-minify-simplify@^0.2.0:
491babel-plugin-minify-type-constructors@^0.2.0: 579babel-plugin-minify-type-constructors@^0.2.0:
492 version "0.2.0" 580 version "0.2.0"
493 resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz#7f3b6458be0863cfd59e9985bed6d134aa7a2e17" 581 resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz#7f3b6458be0863cfd59e9985bed6d134aa7a2e17"
582 integrity sha512-NiOvvA9Pq6bki6nP4BayXwT5GZadw7DJFDDzHmkpnOQpENWe8RtHtKZM44MG1R6EQ5XxgbLdsdhswIzTkFlO5g==
494 dependencies: 583 dependencies:
495 babel-helper-is-void-0 "^0.2.0" 584 babel-helper-is-void-0 "^0.2.0"
496 585
497babel-plugin-syntax-async-functions@^6.8.0: 586babel-plugin-syntax-async-functions@^6.8.0:
498 version "6.13.0" 587 version "6.13.0"
499 resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 588 resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
589 integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=
500 590
501babel-plugin-syntax-exponentiation-operator@^6.8.0: 591babel-plugin-syntax-exponentiation-operator@^6.8.0:
502 version "6.13.0" 592 version "6.13.0"
503 resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 593 resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
594 integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=
504 595
505babel-plugin-syntax-trailing-function-commas@^6.22.0: 596babel-plugin-syntax-trailing-function-commas@^6.22.0:
506 version "6.22.0" 597 version "6.22.0"
507 resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 598 resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
599 integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=
508 600
509babel-plugin-transform-async-to-generator@^6.22.0: 601babel-plugin-transform-async-to-generator@^6.22.0:
510 version "6.24.1" 602 version "6.24.1"
511 resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" 603 resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
604 integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=
512 dependencies: 605 dependencies:
513 babel-helper-remap-async-to-generator "^6.24.1" 606 babel-helper-remap-async-to-generator "^6.24.1"
514 babel-plugin-syntax-async-functions "^6.8.0" 607 babel-plugin-syntax-async-functions "^6.8.0"
@@ -517,18 +610,21 @@ babel-plugin-transform-async-to-generator@^6.22.0:
517babel-plugin-transform-es2015-arrow-functions@^6.22.0: 610babel-plugin-transform-es2015-arrow-functions@^6.22.0:
518 version "6.22.0" 611 version "6.22.0"
519 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 612 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
613 integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
520 dependencies: 614 dependencies:
521 babel-runtime "^6.22.0" 615 babel-runtime "^6.22.0"
522 616
523babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: 617babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
524 version "6.22.0" 618 version "6.22.0"
525 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 619 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
620 integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
526 dependencies: 621 dependencies:
527 babel-runtime "^6.22.0" 622 babel-runtime "^6.22.0"
528 623
529babel-plugin-transform-es2015-block-scoping@^6.23.0: 624babel-plugin-transform-es2015-block-scoping@^6.23.0:
530 version "6.26.0" 625 version "6.26.0"
531 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" 626 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
627 integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=
532 dependencies: 628 dependencies:
533 babel-runtime "^6.26.0" 629 babel-runtime "^6.26.0"
534 babel-template "^6.26.0" 630 babel-template "^6.26.0"
@@ -539,6 +635,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0:
539babel-plugin-transform-es2015-classes@^6.23.0: 635babel-plugin-transform-es2015-classes@^6.23.0:
540 version "6.24.1" 636 version "6.24.1"
541 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" 637 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
638 integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=
542 dependencies: 639 dependencies:
543 babel-helper-define-map "^6.24.1" 640 babel-helper-define-map "^6.24.1"
544 babel-helper-function-name "^6.24.1" 641 babel-helper-function-name "^6.24.1"
@@ -553,6 +650,7 @@ babel-plugin-transform-es2015-classes@^6.23.0:
553babel-plugin-transform-es2015-computed-properties@^6.22.0: 650babel-plugin-transform-es2015-computed-properties@^6.22.0:
554 version "6.24.1" 651 version "6.24.1"
555 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" 652 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
653 integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=
556 dependencies: 654 dependencies:
557 babel-runtime "^6.22.0" 655 babel-runtime "^6.22.0"
558 babel-template "^6.24.1" 656 babel-template "^6.24.1"
@@ -560,12 +658,14 @@ babel-plugin-transform-es2015-computed-properties@^6.22.0:
560babel-plugin-transform-es2015-destructuring@^6.23.0: 658babel-plugin-transform-es2015-destructuring@^6.23.0:
561 version "6.23.0" 659 version "6.23.0"
562 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 660 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
661 integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=
563 dependencies: 662 dependencies:
564 babel-runtime "^6.22.0" 663 babel-runtime "^6.22.0"
565 664
566babel-plugin-transform-es2015-duplicate-keys@^6.22.0: 665babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
567 version "6.24.1" 666 version "6.24.1"
568 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" 667 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
668 integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4=
569 dependencies: 669 dependencies:
570 babel-runtime "^6.22.0" 670 babel-runtime "^6.22.0"
571 babel-types "^6.24.1" 671 babel-types "^6.24.1"
@@ -573,12 +673,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
573babel-plugin-transform-es2015-for-of@^6.23.0: 673babel-plugin-transform-es2015-for-of@^6.23.0:
574 version "6.23.0" 674 version "6.23.0"
575 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 675 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
676 integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=
576 dependencies: 677 dependencies:
577 babel-runtime "^6.22.0" 678 babel-runtime "^6.22.0"
578 679
579babel-plugin-transform-es2015-function-name@^6.22.0: 680babel-plugin-transform-es2015-function-name@^6.22.0:
580 version "6.24.1" 681 version "6.24.1"
581 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" 682 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
683 integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=
582 dependencies: 684 dependencies:
583 babel-helper-function-name "^6.24.1" 685 babel-helper-function-name "^6.24.1"
584 babel-runtime "^6.22.0" 686 babel-runtime "^6.22.0"
@@ -587,20 +689,23 @@ babel-plugin-transform-es2015-function-name@^6.22.0:
587babel-plugin-transform-es2015-literals@^6.22.0: 689babel-plugin-transform-es2015-literals@^6.22.0:
588 version "6.22.0" 690 version "6.22.0"
589 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 691 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
692 integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
590 dependencies: 693 dependencies:
591 babel-runtime "^6.22.0" 694 babel-runtime "^6.22.0"
592 695
593babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: 696babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1:
594 version "6.24.1" 697 version "6.24.1"
595 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" 698 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
699 integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=
596 dependencies: 700 dependencies:
597 babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 701 babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
598 babel-runtime "^6.22.0" 702 babel-runtime "^6.22.0"
599 babel-template "^6.24.1" 703 babel-template "^6.24.1"
600 704
601babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 705babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
602 version "6.26.0" 706 version "6.26.2"
603 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" 707 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
708 integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==
604 dependencies: 709 dependencies:
605 babel-plugin-transform-strict-mode "^6.24.1" 710 babel-plugin-transform-strict-mode "^6.24.1"
606 babel-runtime "^6.26.0" 711 babel-runtime "^6.26.0"
@@ -610,6 +715,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e
610babel-plugin-transform-es2015-modules-systemjs@^6.23.0: 715babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
611 version "6.24.1" 716 version "6.24.1"
612 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" 717 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
718 integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=
613 dependencies: 719 dependencies:
614 babel-helper-hoist-variables "^6.24.1" 720 babel-helper-hoist-variables "^6.24.1"
615 babel-runtime "^6.22.0" 721 babel-runtime "^6.22.0"
@@ -618,6 +724,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0:
618babel-plugin-transform-es2015-modules-umd@^6.23.0: 724babel-plugin-transform-es2015-modules-umd@^6.23.0:
619 version "6.24.1" 725 version "6.24.1"
620 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" 726 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
727 integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg=
621 dependencies: 728 dependencies:
622 babel-plugin-transform-es2015-modules-amd "^6.24.1" 729 babel-plugin-transform-es2015-modules-amd "^6.24.1"
623 babel-runtime "^6.22.0" 730 babel-runtime "^6.22.0"
@@ -626,6 +733,7 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0:
626babel-plugin-transform-es2015-object-super@^6.22.0: 733babel-plugin-transform-es2015-object-super@^6.22.0:
627 version "6.24.1" 734 version "6.24.1"
628 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" 735 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
736 integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40=
629 dependencies: 737 dependencies:
630 babel-helper-replace-supers "^6.24.1" 738 babel-helper-replace-supers "^6.24.1"
631 babel-runtime "^6.22.0" 739 babel-runtime "^6.22.0"
@@ -633,6 +741,7 @@ babel-plugin-transform-es2015-object-super@^6.22.0:
633babel-plugin-transform-es2015-parameters@^6.23.0: 741babel-plugin-transform-es2015-parameters@^6.23.0:
634 version "6.24.1" 742 version "6.24.1"
635 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" 743 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
744 integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=
636 dependencies: 745 dependencies:
637 babel-helper-call-delegate "^6.24.1" 746 babel-helper-call-delegate "^6.24.1"
638 babel-helper-get-function-arity "^6.24.1" 747 babel-helper-get-function-arity "^6.24.1"
@@ -644,6 +753,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0:
644babel-plugin-transform-es2015-shorthand-properties@^6.22.0: 753babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
645 version "6.24.1" 754 version "6.24.1"
646 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" 755 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
756 integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=
647 dependencies: 757 dependencies:
648 babel-runtime "^6.22.0" 758 babel-runtime "^6.22.0"
649 babel-types "^6.24.1" 759 babel-types "^6.24.1"
@@ -651,12 +761,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
651babel-plugin-transform-es2015-spread@^6.22.0: 761babel-plugin-transform-es2015-spread@^6.22.0:
652 version "6.22.0" 762 version "6.22.0"
653 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 763 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
764 integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
654 dependencies: 765 dependencies:
655 babel-runtime "^6.22.0" 766 babel-runtime "^6.22.0"
656 767
657babel-plugin-transform-es2015-sticky-regex@^6.22.0: 768babel-plugin-transform-es2015-sticky-regex@^6.22.0:
658 version "6.24.1" 769 version "6.24.1"
659 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" 770 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
771 integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw=
660 dependencies: 772 dependencies:
661 babel-helper-regex "^6.24.1" 773 babel-helper-regex "^6.24.1"
662 babel-runtime "^6.22.0" 774 babel-runtime "^6.22.0"
@@ -665,18 +777,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.22.0:
665babel-plugin-transform-es2015-template-literals@^6.22.0: 777babel-plugin-transform-es2015-template-literals@^6.22.0:
666 version "6.22.0" 778 version "6.22.0"
667 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 779 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
780 integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
668 dependencies: 781 dependencies:
669 babel-runtime "^6.22.0" 782 babel-runtime "^6.22.0"
670 783
671babel-plugin-transform-es2015-typeof-symbol@^6.23.0: 784babel-plugin-transform-es2015-typeof-symbol@^6.23.0:
672 version "6.23.0" 785 version "6.23.0"
673 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 786 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
787 integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=
674 dependencies: 788 dependencies:
675 babel-runtime "^6.22.0" 789 babel-runtime "^6.22.0"
676 790
677babel-plugin-transform-es2015-unicode-regex@^6.22.0: 791babel-plugin-transform-es2015-unicode-regex@^6.22.0:
678 version "6.24.1" 792 version "6.24.1"
679 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" 793 resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
794 integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek=
680 dependencies: 795 dependencies:
681 babel-helper-regex "^6.24.1" 796 babel-helper-regex "^6.24.1"
682 babel-runtime "^6.22.0" 797 babel-runtime "^6.22.0"
@@ -685,6 +800,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0:
685babel-plugin-transform-exponentiation-operator@^6.22.0: 800babel-plugin-transform-exponentiation-operator@^6.22.0:
686 version "6.24.1" 801 version "6.24.1"
687 resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" 802 resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
803 integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=
688 dependencies: 804 dependencies:
689 babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" 805 babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
690 babel-plugin-syntax-exponentiation-operator "^6.8.0" 806 babel-plugin-syntax-exponentiation-operator "^6.8.0"
@@ -693,67 +809,81 @@ babel-plugin-transform-exponentiation-operator@^6.22.0:
693babel-plugin-transform-inline-consecutive-adds@^0.2.0: 809babel-plugin-transform-inline-consecutive-adds@^0.2.0:
694 version "0.2.0" 810 version "0.2.0"
695 resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426" 811 resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426"
812 integrity sha512-GlhOuLOQ28ua9prg0hT33HslCrEmz9xWXy9ZNZSACppCyRxxRW+haYtRgm7uYXCcd0q8ggCWD2pfWEJp5iiZfQ==
696 813
697babel-plugin-transform-member-expression-literals@^6.8.5: 814babel-plugin-transform-member-expression-literals@^6.8.5:
698 version "6.9.0" 815 version "6.9.4"
699 resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.0.tgz#ab07ad52a11ff7d2528c71388e8f901a4499c2b2" 816 resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf"
817 integrity sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=
700 818
701babel-plugin-transform-merge-sibling-variables@^6.8.6: 819babel-plugin-transform-merge-sibling-variables@^6.8.6:
702 version "6.9.0" 820 version "6.9.4"
703 resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.0.tgz#140017e305f8eb4f60d2f2db61154fbd71a9fcdd" 821 resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae"
822 integrity sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=
704 823
705babel-plugin-transform-minify-booleans@^6.8.3: 824babel-plugin-transform-minify-booleans@^6.8.3:
706 version "6.9.0" 825 version "6.9.4"
707 resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.0.tgz#e36ceaa49aadcae70ec98bd9dbccb660719a667a" 826 resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198"
827 integrity sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=
708 828
709babel-plugin-transform-property-literals@^6.8.5: 829babel-plugin-transform-property-literals@^6.8.5:
710 version "6.9.0" 830 version "6.9.4"
711 resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.0.tgz#4ddc12ada888927eacab4daff8a535ebc5de5a61" 831 resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39"
832 integrity sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=
712 dependencies: 833 dependencies:
713 esutils "^2.0.2" 834 esutils "^2.0.2"
714 835
715babel-plugin-transform-regenerator@^6.22.0: 836babel-plugin-transform-regenerator@^6.22.0:
716 version "6.26.0" 837 version "6.26.0"
717 resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" 838 resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
839 integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=
718 dependencies: 840 dependencies:
719 regenerator-transform "^0.10.0" 841 regenerator-transform "^0.10.0"
720 842
721babel-plugin-transform-regexp-constructors@^0.2.0: 843babel-plugin-transform-regexp-constructors@^0.2.0:
722 version "0.2.0" 844 version "0.2.0"
723 resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz#6aa5dd0acc515db4be929bbcec4ed4c946c534a3" 845 resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz#6aa5dd0acc515db4be929bbcec4ed4c946c534a3"
846 integrity sha512-7IsQ6aQx6LAaOqy97/PthTf+5Nx9grZww3r6E62IdWe76Yr8KsuwVjxzqSPQvESJqTE3EMADQ9S0RtwWDGNG9Q==
724 847
725babel-plugin-transform-remove-console@^6.8.5: 848babel-plugin-transform-remove-console@^6.8.5:
726 version "6.9.0" 849 version "6.9.4"
727 resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.0.tgz#a7b671aab050dd30ef7cf2142b61a7d10efb327f" 850 resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780"
851 integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=
728 852
729babel-plugin-transform-remove-debugger@^6.8.5: 853babel-plugin-transform-remove-debugger@^6.8.5:
730 version "6.9.0" 854 version "6.9.4"
731 resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.0.tgz#b465e74b3fbe1970da561fb1331e30aefac3f1fe" 855 resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2"
856 integrity sha1-QrcnYxyXl44estGZp67IShgznvI=
732 857
733babel-plugin-transform-remove-undefined@^0.2.0: 858babel-plugin-transform-remove-undefined@^0.2.0:
734 version "0.2.0" 859 version "0.2.0"
735 resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz#94f052062054c707e8d094acefe79416b63452b1" 860 resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz#94f052062054c707e8d094acefe79416b63452b1"
861 integrity sha512-O8v57tPMHkp89kA4ZfQEYds/pzgvz/QYerBJjIuL5/Jc7RnvMVRA5gJY9zFKP7WayW8WOSBV4vh8Y8FJRio+ow==
736 dependencies: 862 dependencies:
737 babel-helper-evaluate-path "^0.2.0" 863 babel-helper-evaluate-path "^0.2.0"
738 864
739babel-plugin-transform-simplify-comparison-operators@^6.8.5: 865babel-plugin-transform-simplify-comparison-operators@^6.8.5:
740 version "6.9.0" 866 version "6.9.4"
741 resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.0.tgz#586252fea023cb13f2400a09c0ab178dc0844f0a" 867 resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9"
868 integrity sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=
742 869
743babel-plugin-transform-strict-mode@^6.24.1: 870babel-plugin-transform-strict-mode@^6.24.1:
744 version "6.24.1" 871 version "6.24.1"
745 resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 872 resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
873 integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=
746 dependencies: 874 dependencies:
747 babel-runtime "^6.22.0" 875 babel-runtime "^6.22.0"
748 babel-types "^6.24.1" 876 babel-types "^6.24.1"
749 877
750babel-plugin-transform-undefined-to-void@^6.8.3: 878babel-plugin-transform-undefined-to-void@^6.8.3:
751 version "6.9.0" 879 version "6.9.4"
752 resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.0.tgz#eb5db0554caffe9ded0206468ec0c6c3b332b9d2" 880 resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280"
881 integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=
753 882
754babel-preset-env@^1.6.1: 883babel-preset-env@^1.6.1:
755 version "1.6.1" 884 version "1.7.0"
756 resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" 885 resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
886 integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==
757 dependencies: 887 dependencies:
758 babel-plugin-check-es2015-constants "^6.22.0" 888 babel-plugin-check-es2015-constants "^6.22.0"
759 babel-plugin-syntax-trailing-function-commas "^6.22.0" 889 babel-plugin-syntax-trailing-function-commas "^6.22.0"
@@ -782,13 +912,14 @@ babel-preset-env@^1.6.1:
782 babel-plugin-transform-es2015-unicode-regex "^6.22.0" 912 babel-plugin-transform-es2015-unicode-regex "^6.22.0"
783 babel-plugin-transform-exponentiation-operator "^6.22.0" 913 babel-plugin-transform-exponentiation-operator "^6.22.0"
784 babel-plugin-transform-regenerator "^6.22.0" 914 babel-plugin-transform-regenerator "^6.22.0"
785 browserslist "^2.1.2" 915 browserslist "^3.2.6"
786 invariant "^2.2.2" 916 invariant "^2.2.2"
787 semver "^5.3.0" 917 semver "^5.3.0"
788 918
789babel-preset-minify@^0.2.0: 919babel-preset-minify@^0.2.0:
790 version "0.2.0" 920 version "0.2.0"
791 resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc" 921 resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc"
922 integrity sha512-mR8Q44RmMzm18bM2Lqd9uiPopzk5GDCtVuquNbLFmX6lOKnqWoenaNBxnWW0UhBFC75lEHTIgNGCbnsRI0pJVw==
792 dependencies: 923 dependencies:
793 babel-plugin-minify-builtins "^0.2.0" 924 babel-plugin-minify-builtins "^0.2.0"
794 babel-plugin-minify-constant-folding "^0.2.0" 925 babel-plugin-minify-constant-folding "^0.2.0"
@@ -817,6 +948,7 @@ babel-preset-minify@^0.2.0:
817babel-register@^6.26.0: 948babel-register@^6.26.0:
818 version "6.26.0" 949 version "6.26.0"
819 resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 950 resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
951 integrity sha1-btAhFz4vy0htestFxgCahW9kcHE=
820 dependencies: 952 dependencies:
821 babel-core "^6.26.0" 953 babel-core "^6.26.0"
822 babel-runtime "^6.26.0" 954 babel-runtime "^6.26.0"
@@ -829,6 +961,7 @@ babel-register@^6.26.0:
829babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: 961babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
830 version "6.26.0" 962 version "6.26.0"
831 resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 963 resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
964 integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
832 dependencies: 965 dependencies:
833 core-js "^2.4.0" 966 core-js "^2.4.0"
834 regenerator-runtime "^0.11.0" 967 regenerator-runtime "^0.11.0"
@@ -836,6 +969,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
836babel-template@^6.24.1, babel-template@^6.26.0: 969babel-template@^6.24.1, babel-template@^6.26.0:
837 version "6.26.0" 970 version "6.26.0"
838 resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 971 resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
972 integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
839 dependencies: 973 dependencies:
840 babel-runtime "^6.26.0" 974 babel-runtime "^6.26.0"
841 babel-traverse "^6.26.0" 975 babel-traverse "^6.26.0"
@@ -846,6 +980,7 @@ babel-template@^6.24.1, babel-template@^6.26.0:
846babel-traverse@^6.24.1, babel-traverse@^6.26.0: 980babel-traverse@^6.24.1, babel-traverse@^6.26.0:
847 version "6.26.0" 981 version "6.26.0"
848 resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 982 resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
983 integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
849 dependencies: 984 dependencies:
850 babel-code-frame "^6.26.0" 985 babel-code-frame "^6.26.0"
851 babel-messages "^6.23.0" 986 babel-messages "^6.23.0"
@@ -860,6 +995,7 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0:
860babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: 995babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
861 version "6.26.0" 996 version "6.26.0"
862 resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 997 resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
998 integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
863 dependencies: 999 dependencies:
864 babel-runtime "^6.26.0" 1000 babel-runtime "^6.26.0"
865 esutils "^2.0.2" 1001 esutils "^2.0.2"
@@ -869,87 +1005,103 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
869babylon@^6.18.0: 1005babylon@^6.18.0:
870 version "6.18.0" 1006 version "6.18.0"
871 resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 1007 resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
1008 integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
872 1009
873balanced-match@^0.4.2: 1010balanced-match@^0.4.2:
874 version "0.4.2" 1011 version "0.4.2"
875 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 1012 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
1013 integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
876 1014
877balanced-match@^1.0.0: 1015balanced-match@^1.0.0:
878 version "1.0.0" 1016 version "1.0.0"
879 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 1017 resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
1018 integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
880 1019
881base64-js@^1.0.2: 1020base64-js@^1.0.2:
882 version "1.2.1" 1021 version "1.3.0"
883 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" 1022 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
1023 integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
1024
1025base@^0.11.1:
1026 version "0.11.2"
1027 resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
1028 integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
1029 dependencies:
1030 cache-base "^1.0.1"
1031 class-utils "^0.3.5"
1032 component-emitter "^1.2.1"
1033 define-property "^1.0.0"
1034 isobject "^3.0.1"
1035 mixin-deep "^1.2.0"
1036 pascalcase "^0.1.1"
884 1037
885bcrypt-pbkdf@^1.0.0: 1038bcrypt-pbkdf@^1.0.0:
886 version "1.0.1" 1039 version "1.0.2"
887 resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 1040 resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
1041 integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
888 dependencies: 1042 dependencies:
889 tweetnacl "^0.14.3" 1043 tweetnacl "^0.14.3"
890 1044
891big.js@^3.1.3: 1045big.js@^5.2.2:
892 version "3.2.0" 1046 version "5.2.2"
893 resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" 1047 resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
1048 integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
894 1049
895binary-extensions@^1.0.0: 1050binary-extensions@^1.0.0:
896 version "1.11.0" 1051 version "1.13.1"
897 resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" 1052 resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
1053 integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
898 1054
899blazy@^1.8.2: 1055blazy@^1.8.2:
900 version "1.8.2" 1056 version "1.8.2"
901 resolved "https://registry.yarnpkg.com/blazy/-/blazy-1.8.2.tgz#50dfd638baaf9003efd6eb3a836aca54184ab6da" 1057 resolved "https://registry.yarnpkg.com/blazy/-/blazy-1.8.2.tgz#50dfd638baaf9003efd6eb3a836aca54184ab6da"
1058 integrity sha1-UN/WOLqvkAPv1us6g2rKVBhKtto=
902 1059
903block-stream@*: 1060block-stream@*:
904 version "0.0.9" 1061 version "0.0.9"
905 resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 1062 resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
1063 integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
906 dependencies: 1064 dependencies:
907 inherits "~2.0.0" 1065 inherits "~2.0.0"
908 1066
909bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 1067bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
910 version "4.11.8" 1068 version "4.11.8"
911 resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" 1069 resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
912 1070 integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
913boom@2.x.x:
914 version "2.10.1"
915 resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
916 dependencies:
917 hoek "2.x.x"
918
919boom@4.x.x:
920 version "4.3.1"
921 resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
922 dependencies:
923 hoek "4.x.x"
924
925boom@5.x.x:
926 version "5.2.0"
927 resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
928 dependencies:
929 hoek "4.x.x"
930 1071
931brace-expansion@^1.1.7: 1072brace-expansion@^1.1.7:
932 version "1.1.8" 1073 version "1.1.11"
933 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 1074 resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
1075 integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
934 dependencies: 1076 dependencies:
935 balanced-match "^1.0.0" 1077 balanced-match "^1.0.0"
936 concat-map "0.0.1" 1078 concat-map "0.0.1"
937 1079
938braces@^1.8.2: 1080braces@^2.3.1, braces@^2.3.2:
939 version "1.8.5" 1081 version "2.3.2"
940 resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 1082 resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
1083 integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
941 dependencies: 1084 dependencies:
942 expand-range "^1.8.1" 1085 arr-flatten "^1.1.0"
943 preserve "^0.2.0" 1086 array-unique "^0.3.2"
1087 extend-shallow "^2.0.1"
1088 fill-range "^4.0.0"
1089 isobject "^3.0.1"
944 repeat-element "^1.1.2" 1090 repeat-element "^1.1.2"
1091 snapdragon "^0.8.1"
1092 snapdragon-node "^2.0.1"
1093 split-string "^3.0.2"
1094 to-regex "^3.0.1"
945 1095
946brorand@^1.0.1: 1096brorand@^1.0.1:
947 version "1.1.0" 1097 version "1.1.0"
948 resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 1098 resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
1099 integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
949 1100
950browserify-aes@^1.0.0, browserify-aes@^1.0.4: 1101browserify-aes@^1.0.0, browserify-aes@^1.0.4:
951 version "1.1.1" 1102 version "1.2.0"
952 resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" 1103 resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
1104 integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
953 dependencies: 1105 dependencies:
954 buffer-xor "^1.0.3" 1106 buffer-xor "^1.0.3"
955 cipher-base "^1.0.0" 1107 cipher-base "^1.0.0"
@@ -959,24 +1111,28 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
959 safe-buffer "^5.0.1" 1111 safe-buffer "^5.0.1"
960 1112
961browserify-cipher@^1.0.0: 1113browserify-cipher@^1.0.0:
962 version "1.0.0" 1114 version "1.0.1"
963 resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" 1115 resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
1116 integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
964 dependencies: 1117 dependencies:
965 browserify-aes "^1.0.4" 1118 browserify-aes "^1.0.4"
966 browserify-des "^1.0.0" 1119 browserify-des "^1.0.0"
967 evp_bytestokey "^1.0.0" 1120 evp_bytestokey "^1.0.0"
968 1121
969browserify-des@^1.0.0: 1122browserify-des@^1.0.0:
970 version "1.0.0" 1123 version "1.0.2"
971 resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" 1124 resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
1125 integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
972 dependencies: 1126 dependencies:
973 cipher-base "^1.0.1" 1127 cipher-base "^1.0.1"
974 des.js "^1.0.0" 1128 des.js "^1.0.0"
975 inherits "^2.0.1" 1129 inherits "^2.0.1"
1130 safe-buffer "^5.1.2"
976 1131
977browserify-rsa@^4.0.0: 1132browserify-rsa@^4.0.0:
978 version "4.0.1" 1133 version "4.0.1"
979 resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 1134 resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
1135 integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
980 dependencies: 1136 dependencies:
981 bn.js "^4.1.0" 1137 bn.js "^4.1.0"
982 randombytes "^2.0.1" 1138 randombytes "^2.0.1"
@@ -984,6 +1140,7 @@ browserify-rsa@^4.0.0:
984browserify-sign@^4.0.0: 1140browserify-sign@^4.0.0:
985 version "4.0.4" 1141 version "4.0.4"
986 resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" 1142 resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
1143 integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
987 dependencies: 1144 dependencies:
988 bn.js "^4.1.1" 1145 bn.js "^4.1.1"
989 browserify-rsa "^4.0.0" 1146 browserify-rsa "^4.0.0"
@@ -996,60 +1153,81 @@ browserify-sign@^4.0.0:
996browserify-zlib@^0.2.0: 1153browserify-zlib@^0.2.0:
997 version "0.2.0" 1154 version "0.2.0"
998 resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 1155 resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
1156 integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
999 dependencies: 1157 dependencies:
1000 pako "~1.0.5" 1158 pako "~1.0.5"
1001 1159
1002browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: 1160browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
1003 version "1.7.7" 1161 version "1.7.7"
1004 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" 1162 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
1163 integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=
1005 dependencies: 1164 dependencies:
1006 caniuse-db "^1.0.30000639" 1165 caniuse-db "^1.0.30000639"
1007 electron-to-chromium "^1.2.7" 1166 electron-to-chromium "^1.2.7"
1008 1167
1009browserslist@^2.1.2: 1168browserslist@^3.2.6:
1010 version "2.11.3" 1169 version "3.2.8"
1011 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" 1170 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
1171 integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==
1012 dependencies: 1172 dependencies:
1013 caniuse-lite "^1.0.30000792" 1173 caniuse-lite "^1.0.30000844"
1014 electron-to-chromium "^1.3.30" 1174 electron-to-chromium "^1.3.47"
1015 1175
1016buffer-from@^1.0.0: 1176buffer-from@^1.0.0:
1017 version "1.0.0" 1177 version "1.1.1"
1018 resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" 1178 resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
1179 integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
1019 1180
1020buffer-xor@^1.0.3: 1181buffer-xor@^1.0.3:
1021 version "1.0.3" 1182 version "1.0.3"
1022 resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 1183 resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
1184 integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
1023 1185
1024buffer@^4.3.0: 1186buffer@^4.3.0:
1025 version "4.9.1" 1187 version "4.9.1"
1026 resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 1188 resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
1189 integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
1027 dependencies: 1190 dependencies:
1028 base64-js "^1.0.2" 1191 base64-js "^1.0.2"
1029 ieee754 "^1.1.4" 1192 ieee754 "^1.1.4"
1030 isarray "^1.0.0" 1193 isarray "^1.0.0"
1031 1194
1032builtin-modules@^1.0.0, builtin-modules@^1.1.1:
1033 version "1.1.1"
1034 resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
1035
1036builtin-status-codes@^3.0.0: 1195builtin-status-codes@^3.0.0:
1037 version "3.0.0" 1196 version "3.0.0"
1038 resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 1197 resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
1198 integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
1199
1200cache-base@^1.0.1:
1201 version "1.0.1"
1202 resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
1203 integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
1204 dependencies:
1205 collection-visit "^1.0.0"
1206 component-emitter "^1.2.1"
1207 get-value "^2.0.6"
1208 has-value "^1.0.0"
1209 isobject "^3.0.1"
1210 set-value "^2.0.0"
1211 to-object-path "^0.3.0"
1212 union-value "^1.0.0"
1213 unset-value "^1.0.0"
1039 1214
1040caller-path@^0.1.0: 1215caller-path@^0.1.0:
1041 version "0.1.0" 1216 version "0.1.0"
1042 resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 1217 resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
1218 integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
1043 dependencies: 1219 dependencies:
1044 callsites "^0.2.0" 1220 callsites "^0.2.0"
1045 1221
1046callsites@^0.2.0: 1222callsites@^0.2.0:
1047 version "0.2.0" 1223 version "0.2.0"
1048 resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 1224 resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
1225 integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
1049 1226
1050camelcase-keys@^2.0.0: 1227camelcase-keys@^2.0.0:
1051 version "2.1.0" 1228 version "2.1.0"
1052 resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 1229 resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
1230 integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
1053 dependencies: 1231 dependencies:
1054 camelcase "^2.0.0" 1232 camelcase "^2.0.0"
1055 map-obj "^1.0.0" 1233 map-obj "^1.0.0"
@@ -1057,22 +1235,27 @@ camelcase-keys@^2.0.0:
1057camelcase@^1.0.2: 1235camelcase@^1.0.2:
1058 version "1.2.1" 1236 version "1.2.1"
1059 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 1237 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
1238 integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
1060 1239
1061camelcase@^2.0.0: 1240camelcase@^2.0.0:
1062 version "2.1.1" 1241 version "2.1.1"
1063 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 1242 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
1243 integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
1064 1244
1065camelcase@^3.0.0: 1245camelcase@^3.0.0:
1066 version "3.0.0" 1246 version "3.0.0"
1067 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 1247 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
1248 integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
1068 1249
1069camelcase@^4.1.0: 1250camelcase@^4.1.0:
1070 version "4.1.0" 1251 version "4.1.0"
1071 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 1252 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
1253 integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
1072 1254
1073caniuse-api@^1.5.2: 1255caniuse-api@^1.5.2:
1074 version "1.6.1" 1256 version "1.6.1"
1075 resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" 1257 resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
1258 integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=
1076 dependencies: 1259 dependencies:
1077 browserslist "^1.3.6" 1260 browserslist "^1.3.6"
1078 caniuse-db "^1.0.30000529" 1261 caniuse-db "^1.0.30000529"
@@ -1080,24 +1263,24 @@ caniuse-api@^1.5.2:
1080 lodash.uniq "^4.5.0" 1263 lodash.uniq "^4.5.0"
1081 1264
1082caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: 1265caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
1083 version "1.0.30000801" 1266 version "1.0.30000969"
1084 resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000801.tgz#a1d49def94c4e5aca5ccf1d58812e4668fac19d4" 1267 resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000969.tgz#e6aeca9b1bac88865990913a0b041f587180cd59"
1085 1268 integrity sha512-ttrmwpIXvEL/kg0JSg6Q+xEbMxAEcjZOOgZMGPcMe5JMYgi20Nvs9bqMRGfyIOQtd1jYa6yRWODIR6apj3xPQw==
1086caniuse-lite@^1.0.30000792:
1087 version "1.0.30000792"
1088 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332"
1089 1269
1090caseless@~0.11.0: 1270caniuse-lite@^1.0.30000844:
1091 version "0.11.0" 1271 version "1.0.30000969"
1092 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 1272 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000969.tgz#7664f571f2072657bde70b00a1fc1ba41f1942a9"
1273 integrity sha512-Kus0yxkoAJgVc0bax7S4gLSlFifCa7MnSZL9p9VuS/HIKEL4seaqh28KIQAAO50cD/rJ5CiJkJFapkdDAlhFxQ==
1093 1274
1094caseless@~0.12.0: 1275caseless@~0.12.0:
1095 version "0.12.0" 1276 version "0.12.0"
1096 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 1277 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
1278 integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
1097 1279
1098center-align@^0.1.1: 1280center-align@^0.1.1:
1099 version "0.1.3" 1281 version "0.1.3"
1100 resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 1282 resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
1283 integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
1101 dependencies: 1284 dependencies:
1102 align-text "^0.1.3" 1285 align-text "^0.1.3"
1103 lazy-cache "^1.0.3" 1286 lazy-cache "^1.0.3"
@@ -1105,6 +1288,7 @@ center-align@^0.1.1:
1105chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: 1288chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
1106 version "1.1.3" 1289 version "1.1.3"
1107 resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 1290 resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
1291 integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
1108 dependencies: 1292 dependencies:
1109 ansi-styles "^2.2.1" 1293 ansi-styles "^2.2.1"
1110 escape-string-regexp "^1.0.2" 1294 escape-string-regexp "^1.0.2"
@@ -1112,36 +1296,48 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
1112 strip-ansi "^3.0.0" 1296 strip-ansi "^3.0.0"
1113 supports-color "^2.0.0" 1297 supports-color "^2.0.0"
1114 1298
1115chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: 1299chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1:
1116 version "2.3.0" 1300 version "2.4.2"
1117 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" 1301 resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1302 integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1118 dependencies: 1303 dependencies:
1119 ansi-styles "^3.1.0" 1304 ansi-styles "^3.2.1"
1120 escape-string-regexp "^1.0.5" 1305 escape-string-regexp "^1.0.5"
1121 supports-color "^4.0.0" 1306 supports-color "^5.3.0"
1122 1307
1123chardet@^0.4.0: 1308chardet@^0.4.0:
1124 version "0.4.2" 1309 version "0.4.2"
1125 resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" 1310 resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
1311 integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
1126 1312
1127chokidar@^1.7.0: 1313chokidar@^2.0.2:
1128 version "1.7.0" 1314 version "2.1.6"
1129 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 1315 resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
1316 integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
1130 dependencies: 1317 dependencies:
1131 anymatch "^1.3.0" 1318 anymatch "^2.0.0"
1132 async-each "^1.0.0" 1319 async-each "^1.0.1"
1133 glob-parent "^2.0.0" 1320 braces "^2.3.2"
1134 inherits "^2.0.1" 1321 glob-parent "^3.1.0"
1322 inherits "^2.0.3"
1135 is-binary-path "^1.0.0" 1323 is-binary-path "^1.0.0"
1136 is-glob "^2.0.0" 1324 is-glob "^4.0.0"
1325 normalize-path "^3.0.0"
1137 path-is-absolute "^1.0.0" 1326 path-is-absolute "^1.0.0"
1138 readdirp "^2.0.0" 1327 readdirp "^2.2.1"
1328 upath "^1.1.1"
1139 optionalDependencies: 1329 optionalDependencies:
1140 fsevents "^1.0.0" 1330 fsevents "^1.2.7"
1331
1332chownr@^1.1.1:
1333 version "1.1.1"
1334 resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
1335 integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
1141 1336
1142cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 1337cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
1143 version "1.0.4" 1338 version "1.0.4"
1144 resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 1339 resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
1340 integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
1145 dependencies: 1341 dependencies:
1146 inherits "^2.0.1" 1342 inherits "^2.0.1"
1147 safe-buffer "^5.0.1" 1343 safe-buffer "^5.0.1"
@@ -1149,32 +1345,48 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
1149circular-json@^0.3.1: 1345circular-json@^0.3.1:
1150 version "0.3.3" 1346 version "0.3.3"
1151 resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 1347 resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
1348 integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
1152 1349
1153clap@^1.0.9: 1350clap@^1.0.9:
1154 version "1.2.3" 1351 version "1.2.3"
1155 resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" 1352 resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
1353 integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==
1156 dependencies: 1354 dependencies:
1157 chalk "^1.1.3" 1355 chalk "^1.1.3"
1158 1356
1357class-utils@^0.3.5:
1358 version "0.3.6"
1359 resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
1360 integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
1361 dependencies:
1362 arr-union "^3.1.0"
1363 define-property "^0.2.5"
1364 isobject "^3.0.0"
1365 static-extend "^0.1.1"
1366
1159cli-cursor@^1.0.1: 1367cli-cursor@^1.0.1:
1160 version "1.0.2" 1368 version "1.0.2"
1161 resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 1369 resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
1370 integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
1162 dependencies: 1371 dependencies:
1163 restore-cursor "^1.0.1" 1372 restore-cursor "^1.0.1"
1164 1373
1165cli-cursor@^2.1.0: 1374cli-cursor@^2.1.0:
1166 version "2.1.0" 1375 version "2.1.0"
1167 resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 1376 resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
1377 integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
1168 dependencies: 1378 dependencies:
1169 restore-cursor "^2.0.0" 1379 restore-cursor "^2.0.0"
1170 1380
1171cli-width@^2.0.0: 1381cli-width@^2.0.0:
1172 version "2.2.0" 1382 version "2.2.0"
1173 resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 1383 resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
1384 integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
1174 1385
1175cliui@^2.1.0: 1386cliui@^2.1.0:
1176 version "2.1.0" 1387 version "2.1.0"
1177 resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 1388 resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
1389 integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
1178 dependencies: 1390 dependencies:
1179 center-align "^0.1.1" 1391 center-align "^0.1.1"
1180 right-align "^0.1.1" 1392 right-align "^0.1.1"
@@ -1183,57 +1395,80 @@ cliui@^2.1.0:
1183cliui@^3.2.0: 1395cliui@^3.2.0:
1184 version "3.2.0" 1396 version "3.2.0"
1185 resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 1397 resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
1398 integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
1186 dependencies: 1399 dependencies:
1187 string-width "^1.0.1" 1400 string-width "^1.0.1"
1188 strip-ansi "^3.0.1" 1401 strip-ansi "^3.0.1"
1189 wrap-ansi "^2.0.0" 1402 wrap-ansi "^2.0.0"
1190 1403
1191clone-deep@^0.3.0: 1404clone-deep@^2.0.1:
1192 version "0.3.0" 1405 version "2.0.2"
1193 resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" 1406 resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
1407 integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==
1194 dependencies: 1408 dependencies:
1195 for-own "^1.0.0" 1409 for-own "^1.0.0"
1196 is-plain-object "^2.0.1" 1410 is-plain-object "^2.0.4"
1197 kind-of "^3.2.2" 1411 kind-of "^6.0.0"
1198 shallow-clone "^0.1.2" 1412 shallow-clone "^1.0.0"
1199 1413
1200clone@^1.0.2: 1414clone@^1.0.2:
1201 version "1.0.3" 1415 version "1.0.4"
1202 resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" 1416 resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
1417 integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
1203 1418
1204co@^4.6.0: 1419co@^4.6.0:
1205 version "4.6.0" 1420 version "4.6.0"
1206 resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1421 resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
1422 integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
1207 1423
1208coa@~1.0.1: 1424coa@~1.0.1:
1209 version "1.0.4" 1425 version "1.0.4"
1210 resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" 1426 resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
1427 integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=
1211 dependencies: 1428 dependencies:
1212 q "^1.1.2" 1429 q "^1.1.2"
1213 1430
1214code-point-at@^1.0.0: 1431code-point-at@^1.0.0:
1215 version "1.1.0" 1432 version "1.1.0"
1216 resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 1433 resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
1434 integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
1435
1436collection-visit@^1.0.0:
1437 version "1.0.0"
1438 resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
1439 integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
1440 dependencies:
1441 map-visit "^1.0.0"
1442 object-visit "^1.0.0"
1217 1443
1218color-convert@^1.3.0, color-convert@^1.9.0: 1444color-convert@^1.3.0, color-convert@^1.9.0:
1219 version "1.9.1" 1445 version "1.9.3"
1220 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 1446 resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1447 integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1221 dependencies: 1448 dependencies:
1222 color-name "^1.1.1" 1449 color-name "1.1.3"
1223 1450
1224color-name@^1.0.0, color-name@^1.1.1: 1451color-name@1.1.3:
1225 version "1.1.3" 1452 version "1.1.3"
1226 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1453 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1454 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1455
1456color-name@^1.0.0:
1457 version "1.1.4"
1458 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1459 integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1227 1460
1228color-string@^0.3.0: 1461color-string@^0.3.0:
1229 version "0.3.0" 1462 version "0.3.0"
1230 resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" 1463 resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
1464 integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=
1231 dependencies: 1465 dependencies:
1232 color-name "^1.0.0" 1466 color-name "^1.0.0"
1233 1467
1234color@^0.11.0: 1468color@^0.11.0:
1235 version "0.11.4" 1469 version "0.11.4"
1236 resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" 1470 resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
1471 integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=
1237 dependencies: 1472 dependencies:
1238 clone "^1.0.2" 1473 clone "^1.0.2"
1239 color-convert "^1.3.0" 1474 color-convert "^1.3.0"
@@ -1242,6 +1477,7 @@ color@^0.11.0:
1242colormin@^1.0.5: 1477colormin@^1.0.5:
1243 version "1.1.2" 1478 version "1.1.2"
1244 resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" 1479 resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
1480 integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=
1245 dependencies: 1481 dependencies:
1246 color "^0.11.0" 1482 color "^0.11.0"
1247 css-color-names "0.0.4" 1483 css-color-names "0.0.4"
@@ -1250,95 +1486,112 @@ colormin@^1.0.5:
1250colors@~1.1.2: 1486colors@~1.1.2:
1251 version "1.1.2" 1487 version "1.1.2"
1252 resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 1488 resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
1489 integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
1253 1490
1254combined-stream@^1.0.5, combined-stream@~1.0.5: 1491combined-stream@^1.0.6, combined-stream@~1.0.6:
1255 version "1.0.5" 1492 version "1.0.8"
1256 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 1493 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
1494 integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
1257 dependencies: 1495 dependencies:
1258 delayed-stream "~1.0.0" 1496 delayed-stream "~1.0.0"
1259 1497
1260commander@^2.8.1: 1498commander@^2.8.1:
1261 version "2.15.1" 1499 version "2.20.0"
1262 resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 1500 resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
1263 1501 integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
1264commander@^2.9.0:
1265 version "2.13.0"
1266 resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
1267 1502
1268commondir@^1.0.1: 1503commondir@^1.0.1:
1269 version "1.0.1" 1504 version "1.0.1"
1270 resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 1505 resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
1506 integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
1507
1508component-emitter@^1.2.1:
1509 version "1.3.0"
1510 resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
1511 integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
1271 1512
1272concat-map@0.0.1: 1513concat-map@0.0.1:
1273 version "0.0.1" 1514 version "0.0.1"
1274 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1515 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1516 integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
1275 1517
1276concat-stream@^1.4.6: 1518concat-stream@^1.4.6, concat-stream@^1.6.0:
1277 version "1.6.2" 1519 version "1.6.2"
1278 resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 1520 resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
1521 integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
1279 dependencies: 1522 dependencies:
1280 buffer-from "^1.0.0" 1523 buffer-from "^1.0.0"
1281 inherits "^2.0.3" 1524 inherits "^2.0.3"
1282 readable-stream "^2.2.2" 1525 readable-stream "^2.2.2"
1283 typedarray "^0.0.6" 1526 typedarray "^0.0.6"
1284 1527
1285concat-stream@^1.6.0:
1286 version "1.6.0"
1287 resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
1288 dependencies:
1289 inherits "^2.0.3"
1290 readable-stream "^2.2.2"
1291 typedarray "^0.0.6"
1292
1293console-browserify@^1.1.0: 1528console-browserify@^1.1.0:
1294 version "1.1.0" 1529 version "1.1.0"
1295 resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 1530 resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
1531 integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
1296 dependencies: 1532 dependencies:
1297 date-now "^0.1.4" 1533 date-now "^0.1.4"
1298 1534
1299console-control-strings@^1.0.0, console-control-strings@~1.1.0: 1535console-control-strings@^1.0.0, console-control-strings@~1.1.0:
1300 version "1.1.0" 1536 version "1.1.0"
1301 resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 1537 resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
1538 integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
1302 1539
1303constants-browserify@^1.0.0: 1540constants-browserify@^1.0.0:
1304 version "1.0.0" 1541 version "1.0.0"
1305 resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 1542 resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
1543 integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
1306 1544
1307contains-path@^0.1.0: 1545contains-path@^0.1.0:
1308 version "0.1.0" 1546 version "0.1.0"
1309 resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 1547 resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
1548 integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
1310 1549
1311convert-source-map@^1.5.0: 1550convert-source-map@^1.5.1:
1312 version "1.5.1" 1551 version "1.6.0"
1313 resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 1552 resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
1553 integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
1554 dependencies:
1555 safe-buffer "~5.1.1"
1556
1557copy-descriptor@^0.1.0:
1558 version "0.1.1"
1559 resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
1560 integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
1314 1561
1315core-js@^2.4.0, core-js@^2.5.0: 1562core-js@^2.4.0, core-js@^2.5.0:
1316 version "2.5.3" 1563 version "2.6.5"
1317 resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" 1564 resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895"
1565 integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==
1318 1566
1319core-util-is@1.0.2, core-util-is@~1.0.0: 1567core-util-is@1.0.2, core-util-is@~1.0.0:
1320 version "1.0.2" 1568 version "1.0.2"
1321 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1569 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
1570 integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
1322 1571
1323create-ecdh@^4.0.0: 1572create-ecdh@^4.0.0:
1324 version "4.0.0" 1573 version "4.0.3"
1325 resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 1574 resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
1575 integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
1326 dependencies: 1576 dependencies:
1327 bn.js "^4.1.0" 1577 bn.js "^4.1.0"
1328 elliptic "^6.0.0" 1578 elliptic "^6.0.0"
1329 1579
1330create-hash@^1.1.0, create-hash@^1.1.2: 1580create-hash@^1.1.0, create-hash@^1.1.2:
1331 version "1.1.3" 1581 version "1.2.0"
1332 resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" 1582 resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
1583 integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
1333 dependencies: 1584 dependencies:
1334 cipher-base "^1.0.1" 1585 cipher-base "^1.0.1"
1335 inherits "^2.0.1" 1586 inherits "^2.0.1"
1336 ripemd160 "^2.0.0" 1587 md5.js "^1.3.4"
1588 ripemd160 "^2.0.1"
1337 sha.js "^2.4.0" 1589 sha.js "^2.4.0"
1338 1590
1339create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: 1591create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
1340 version "1.1.6" 1592 version "1.1.7"
1341 resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" 1593 resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
1594 integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
1342 dependencies: 1595 dependencies:
1343 cipher-base "^1.0.3" 1596 cipher-base "^1.0.3"
1344 create-hash "^1.1.0" 1597 create-hash "^1.1.0"
@@ -1350,6 +1603,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
1350cross-spawn@^3.0.0: 1603cross-spawn@^3.0.0:
1351 version "3.0.1" 1604 version "3.0.1"
1352 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" 1605 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
1606 integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI=
1353 dependencies: 1607 dependencies:
1354 lru-cache "^4.0.1" 1608 lru-cache "^4.0.1"
1355 which "^1.2.9" 1609 which "^1.2.9"
@@ -1357,26 +1611,16 @@ cross-spawn@^3.0.0:
1357cross-spawn@^5.0.1, cross-spawn@^5.1.0: 1611cross-spawn@^5.0.1, cross-spawn@^5.1.0:
1358 version "5.1.0" 1612 version "5.1.0"
1359 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 1613 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
1614 integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
1360 dependencies: 1615 dependencies:
1361 lru-cache "^4.0.1" 1616 lru-cache "^4.0.1"
1362 shebang-command "^1.2.0" 1617 shebang-command "^1.2.0"
1363 which "^1.2.9" 1618 which "^1.2.9"
1364 1619
1365cryptiles@2.x.x:
1366 version "2.0.5"
1367 resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
1368 dependencies:
1369 boom "2.x.x"
1370
1371cryptiles@3.x.x:
1372 version "3.1.2"
1373 resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
1374 dependencies:
1375 boom "5.x.x"
1376
1377crypto-browserify@^3.11.0: 1620crypto-browserify@^3.11.0:
1378 version "3.12.0" 1621 version "3.12.0"
1379 resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 1622 resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
1623 integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
1380 dependencies: 1624 dependencies:
1381 browserify-cipher "^1.0.0" 1625 browserify-cipher "^1.0.0"
1382 browserify-sign "^4.0.0" 1626 browserify-sign "^4.0.0"
@@ -1393,10 +1637,12 @@ crypto-browserify@^3.11.0:
1393css-color-names@0.0.4: 1637css-color-names@0.0.4:
1394 version "0.0.4" 1638 version "0.0.4"
1395 resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" 1639 resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
1640 integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
1396 1641
1397css-loader@^0.28.9: 1642css-loader@^0.28.9:
1398 version "0.28.9" 1643 version "0.28.11"
1399 resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95" 1644 resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
1645 integrity sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==
1400 dependencies: 1646 dependencies:
1401 babel-code-frame "^6.26.0" 1647 babel-code-frame "^6.26.0"
1402 css-selector-tokenizer "^0.7.0" 1648 css-selector-tokenizer "^0.7.0"
@@ -1414,8 +1660,9 @@ css-loader@^0.28.9:
1414 source-list-map "^2.0.0" 1660 source-list-map "^2.0.0"
1415 1661
1416css-selector-tokenizer@^0.7.0: 1662css-selector-tokenizer@^0.7.0:
1417 version "0.7.0" 1663 version "0.7.1"
1418 resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" 1664 resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
1665 integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
1419 dependencies: 1666 dependencies:
1420 cssesc "^0.1.0" 1667 cssesc "^0.1.0"
1421 fastparse "^1.1.1" 1668 fastparse "^1.1.1"
@@ -1424,10 +1671,12 @@ css-selector-tokenizer@^0.7.0:
1424cssesc@^0.1.0: 1671cssesc@^0.1.0:
1425 version "0.1.0" 1672 version "0.1.0"
1426 resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" 1673 resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
1674 integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
1427 1675
1428cssnano@^3.10.0: 1676cssnano@^3.10.0:
1429 version "3.10.0" 1677 version "3.10.0"
1430 resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" 1678 resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
1679 integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=
1431 dependencies: 1680 dependencies:
1432 autoprefixer "^6.3.1" 1681 autoprefixer "^6.3.1"
1433 decamelize "^1.1.2" 1682 decamelize "^1.1.2"
@@ -1465,6 +1714,7 @@ cssnano@^3.10.0:
1465csso@~2.3.1: 1714csso@~2.3.1:
1466 version "2.3.2" 1715 version "2.3.2"
1467 resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" 1716 resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
1717 integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=
1468 dependencies: 1718 dependencies:
1469 clap "^1.0.9" 1719 clap "^1.0.9"
1470 source-map "^0.5.3" 1720 source-map "^0.5.3"
@@ -1472,76 +1722,111 @@ csso@~2.3.1:
1472currently-unhandled@^0.4.1: 1722currently-unhandled@^0.4.1:
1473 version "0.4.1" 1723 version "0.4.1"
1474 resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 1724 resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
1725 integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
1475 dependencies: 1726 dependencies:
1476 array-find-index "^1.0.1" 1727 array-find-index "^1.0.1"
1477 1728
1478d@1: 1729d@1:
1479 version "1.0.0" 1730 version "1.0.0"
1480 resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 1731 resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
1732 integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=
1481 dependencies: 1733 dependencies:
1482 es5-ext "^0.10.9" 1734 es5-ext "^0.10.9"
1483 1735
1484dashdash@^1.12.0: 1736dashdash@^1.12.0:
1485 version "1.14.1" 1737 version "1.14.1"
1486 resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 1738 resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
1739 integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
1487 dependencies: 1740 dependencies:
1488 assert-plus "^1.0.0" 1741 assert-plus "^1.0.0"
1489 1742
1490date-now@^0.1.4: 1743date-now@^0.1.4:
1491 version "0.1.4" 1744 version "0.1.4"
1492 resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 1745 resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
1746 integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
1493 1747
1494debug@^2.1.1, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9: 1748debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
1495 version "2.6.9" 1749 version "2.6.9"
1496 resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1750 resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1751 integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
1497 dependencies: 1752 dependencies:
1498 ms "2.0.0" 1753 ms "2.0.0"
1499 1754
1500debug@^3.1.0: 1755debug@^3.1.0, debug@^3.2.6:
1501 version "3.1.0" 1756 version "3.2.6"
1502 resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 1757 resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
1758 integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
1503 dependencies: 1759 dependencies:
1504 ms "2.0.0" 1760 ms "^2.1.1"
1505 1761
1506decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: 1762decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
1507 version "1.2.0" 1763 version "1.2.0"
1508 resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1764 resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
1765 integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
1509 1766
1510deep-extend@~0.4.0: 1767decode-uri-component@^0.2.0:
1511 version "0.4.2" 1768 version "0.2.0"
1512 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 1769 resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
1770 integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
1771
1772deep-extend@^0.6.0:
1773 version "0.6.0"
1774 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
1775 integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
1513 1776
1514deep-is@~0.1.3: 1777deep-is@~0.1.3:
1515 version "0.1.3" 1778 version "0.1.3"
1516 resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1779 resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
1780 integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
1517 1781
1518defined@^1.0.0: 1782define-properties@^1.1.2:
1783 version "1.1.3"
1784 resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
1785 integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
1786 dependencies:
1787 object-keys "^1.0.12"
1788
1789define-property@^0.2.5:
1790 version "0.2.5"
1791 resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
1792 integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
1793 dependencies:
1794 is-descriptor "^0.1.0"
1795
1796define-property@^1.0.0:
1519 version "1.0.0" 1797 version "1.0.0"
1520 resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 1798 resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
1799 integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
1800 dependencies:
1801 is-descriptor "^1.0.0"
1521 1802
1522del@^2.0.2: 1803define-property@^2.0.2:
1523 version "2.2.2" 1804 version "2.0.2"
1524 resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 1805 resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
1806 integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
1525 dependencies: 1807 dependencies:
1526 globby "^5.0.0" 1808 is-descriptor "^1.0.2"
1527 is-path-cwd "^1.0.0" 1809 isobject "^3.0.1"
1528 is-path-in-cwd "^1.0.0" 1810
1529 object-assign "^4.0.1" 1811defined@^1.0.0:
1530 pify "^2.0.0" 1812 version "1.0.0"
1531 pinkie-promise "^2.0.0" 1813 resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
1532 rimraf "^2.2.8" 1814 integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
1533 1815
1534delayed-stream@~1.0.0: 1816delayed-stream@~1.0.0:
1535 version "1.0.0" 1817 version "1.0.0"
1536 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1818 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
1819 integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
1537 1820
1538delegates@^1.0.0: 1821delegates@^1.0.0:
1539 version "1.0.0" 1822 version "1.0.0"
1540 resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1823 resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
1824 integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
1541 1825
1542des.js@^1.0.0: 1826des.js@^1.0.0:
1543 version "1.0.0" 1827 version "1.0.0"
1544 resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 1828 resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
1829 integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
1545 dependencies: 1830 dependencies:
1546 inherits "^2.0.1" 1831 inherits "^2.0.1"
1547 minimalistic-assert "^1.0.0" 1832 minimalistic-assert "^1.0.0"
@@ -1549,16 +1834,19 @@ des.js@^1.0.0:
1549detect-indent@^4.0.0: 1834detect-indent@^4.0.0:
1550 version "4.0.0" 1835 version "4.0.0"
1551 resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1836 resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
1837 integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
1552 dependencies: 1838 dependencies:
1553 repeating "^2.0.0" 1839 repeating "^2.0.0"
1554 1840
1555detect-libc@^1.0.2: 1841detect-libc@^1.0.2:
1556 version "1.0.3" 1842 version "1.0.3"
1557 resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 1843 resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
1844 integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
1558 1845
1559diffie-hellman@^5.0.0: 1846diffie-hellman@^5.0.0:
1560 version "5.0.2" 1847 version "5.0.3"
1561 resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 1848 resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
1849 integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
1562 dependencies: 1850 dependencies:
1563 bn.js "^4.1.0" 1851 bn.js "^4.1.0"
1564 miller-rabin "^4.0.0" 1852 miller-rabin "^4.0.0"
@@ -1567,6 +1855,7 @@ diffie-hellman@^5.0.0:
1567doctrine@1.5.0, doctrine@^1.2.2: 1855doctrine@1.5.0, doctrine@^1.2.2:
1568 version "1.5.0" 1856 version "1.5.0"
1569 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 1857 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
1858 integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
1570 dependencies: 1859 dependencies:
1571 esutils "^2.0.2" 1860 esutils "^2.0.2"
1572 isarray "^1.0.0" 1861 isarray "^1.0.0"
@@ -1574,26 +1863,32 @@ doctrine@1.5.0, doctrine@^1.2.2:
1574doctrine@^2.1.0: 1863doctrine@^2.1.0:
1575 version "2.1.0" 1864 version "2.1.0"
1576 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 1865 resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
1866 integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
1577 dependencies: 1867 dependencies:
1578 esutils "^2.0.2" 1868 esutils "^2.0.2"
1579 1869
1580domain-browser@^1.1.1: 1870domain-browser@^1.1.1:
1581 version "1.2.0" 1871 version "1.2.0"
1582 resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 1872 resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
1873 integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
1583 1874
1584ecc-jsbn@~0.1.1: 1875ecc-jsbn@~0.1.1:
1585 version "0.1.1" 1876 version "0.1.2"
1586 resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 1877 resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
1878 integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
1587 dependencies: 1879 dependencies:
1588 jsbn "~0.1.0" 1880 jsbn "~0.1.0"
1881 safer-buffer "^2.1.0"
1589 1882
1590electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: 1883electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47:
1591 version "1.3.32" 1884 version "1.3.135"
1592 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.32.tgz#11d0684c0840e003c4be8928f8ac5f35dbc2b4e6" 1885 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.135.tgz#f5799b95f2bcd8de17cde47d63392d83a4477041"
1886 integrity sha512-xXLNstRdVsisPF3pL3H9TVZo2XkMILfqtD6RiWIUmDK2sFX1Bjwqmd8LBp0Kuo2FgKO63JXPoEVGm8WyYdwP0Q==
1593 1887
1594elliptic@^6.0.0: 1888elliptic@^6.0.0:
1595 version "6.4.0" 1889 version "6.4.1"
1596 resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" 1890 resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
1891 integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
1597 dependencies: 1892 dependencies:
1598 bn.js "^4.4.0" 1893 bn.js "^4.4.0"
1599 brorand "^1.0.1" 1894 brorand "^1.0.1"
@@ -1606,10 +1901,12 @@ elliptic@^6.0.0:
1606emojis-list@^2.0.0: 1901emojis-list@^2.0.0:
1607 version "2.1.0" 1902 version "2.1.0"
1608 resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 1903 resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
1904 integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
1609 1905
1610enhanced-resolve@^3.4.0: 1906enhanced-resolve@^3.4.0:
1611 version "3.4.1" 1907 version "3.4.1"
1612 resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" 1908 resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
1909 integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=
1613 dependencies: 1910 dependencies:
1614 graceful-fs "^4.1.2" 1911 graceful-fs "^4.1.2"
1615 memory-fs "^0.4.0" 1912 memory-fs "^0.4.0"
@@ -1617,27 +1914,53 @@ enhanced-resolve@^3.4.0:
1617 tapable "^0.2.7" 1914 tapable "^0.2.7"
1618 1915
1619errno@^0.1.3: 1916errno@^0.1.3:
1620 version "0.1.6" 1917 version "0.1.7"
1621 resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026" 1918 resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
1919 integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
1622 dependencies: 1920 dependencies:
1623 prr "~1.0.1" 1921 prr "~1.0.1"
1624 1922
1625error-ex@^1.2.0: 1923error-ex@^1.2.0:
1626 version "1.3.1" 1924 version "1.3.2"
1627 resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 1925 resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1926 integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1628 dependencies: 1927 dependencies:
1629 is-arrayish "^0.2.1" 1928 is-arrayish "^0.2.1"
1630 1929
1930es-abstract@^1.7.0:
1931 version "1.13.0"
1932 resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
1933 integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
1934 dependencies:
1935 es-to-primitive "^1.2.0"
1936 function-bind "^1.1.1"
1937 has "^1.0.3"
1938 is-callable "^1.1.4"
1939 is-regex "^1.0.4"
1940 object-keys "^1.0.12"
1941
1942es-to-primitive@^1.2.0:
1943 version "1.2.0"
1944 resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
1945 integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
1946 dependencies:
1947 is-callable "^1.1.4"
1948 is-date-object "^1.0.1"
1949 is-symbol "^1.0.2"
1950
1631es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: 1951es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
1632 version "0.10.38" 1952 version "0.10.50"
1633 resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" 1953 resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778"
1954 integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==
1634 dependencies: 1955 dependencies:
1635 es6-iterator "~2.0.3" 1956 es6-iterator "~2.0.3"
1636 es6-symbol "~3.1.1" 1957 es6-symbol "~3.1.1"
1958 next-tick "^1.0.0"
1637 1959
1638es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: 1960es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
1639 version "2.0.3" 1961 version "2.0.3"
1640 resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" 1962 resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
1963 integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
1641 dependencies: 1964 dependencies:
1642 d "1" 1965 d "1"
1643 es5-ext "^0.10.35" 1966 es5-ext "^0.10.35"
@@ -1646,6 +1969,7 @@ es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
1646es6-map@^0.1.3: 1969es6-map@^0.1.3:
1647 version "0.1.5" 1970 version "0.1.5"
1648 resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 1971 resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
1972 integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=
1649 dependencies: 1973 dependencies:
1650 d "1" 1974 d "1"
1651 es5-ext "~0.10.14" 1975 es5-ext "~0.10.14"
@@ -1657,6 +1981,7 @@ es6-map@^0.1.3:
1657es6-set@~0.1.5: 1981es6-set@~0.1.5:
1658 version "0.1.5" 1982 version "0.1.5"
1659 resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 1983 resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
1984 integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=
1660 dependencies: 1985 dependencies:
1661 d "1" 1986 d "1"
1662 es5-ext "~0.10.14" 1987 es5-ext "~0.10.14"
@@ -1667,6 +1992,7 @@ es6-set@~0.1.5:
1667es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: 1992es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
1668 version "3.1.1" 1993 version "3.1.1"
1669 resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 1994 resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
1995 integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
1670 dependencies: 1996 dependencies:
1671 d "1" 1997 d "1"
1672 es5-ext "~0.10.14" 1998 es5-ext "~0.10.14"
@@ -1674,6 +2000,7 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
1674es6-weak-map@^2.0.1: 2000es6-weak-map@^2.0.1:
1675 version "2.0.2" 2001 version "2.0.2"
1676 resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 2002 resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
2003 integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=
1677 dependencies: 2004 dependencies:
1678 d "1" 2005 d "1"
1679 es5-ext "^0.10.14" 2006 es5-ext "^0.10.14"
@@ -1683,10 +2010,12 @@ es6-weak-map@^2.0.1:
1683escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 2010escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
1684 version "1.0.5" 2011 version "1.0.5"
1685 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 2012 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
2013 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1686 2014
1687escope@^3.6.0: 2015escope@^3.6.0:
1688 version "3.6.0" 2016 version "3.6.0"
1689 resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 2017 resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
2018 integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=
1690 dependencies: 2019 dependencies:
1691 es6-map "^0.1.3" 2020 es6-map "^0.1.3"
1692 es6-weak-map "^2.0.1" 2021 es6-weak-map "^2.0.1"
@@ -1696,45 +2025,52 @@ escope@^3.6.0:
1696eslint-config-airbnb-base@^12.1.0: 2025eslint-config-airbnb-base@^12.1.0:
1697 version "12.1.0" 2026 version "12.1.0"
1698 resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz#386441e54a12ccd957b0a92564a4bafebd747944" 2027 resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz#386441e54a12ccd957b0a92564a4bafebd747944"
2028 integrity sha512-/vjm0Px5ZCpmJqnjIzcFb9TKZrKWz0gnuG/7Gfkt0Db1ELJR51xkZth+t14rYdqWgX836XbuxtArbIHlVhbLBA==
1699 dependencies: 2029 dependencies:
1700 eslint-restricted-globals "^0.1.1" 2030 eslint-restricted-globals "^0.1.1"
1701 2031
1702eslint-import-resolver-node@^0.3.1: 2032eslint-import-resolver-node@^0.3.2:
1703 version "0.3.2" 2033 version "0.3.2"
1704 resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" 2034 resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
2035 integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
1705 dependencies: 2036 dependencies:
1706 debug "^2.6.9" 2037 debug "^2.6.9"
1707 resolve "^1.5.0" 2038 resolve "^1.5.0"
1708 2039
1709eslint-module-utils@^2.1.1: 2040eslint-module-utils@^2.4.0:
1710 version "2.1.1" 2041 version "2.4.0"
1711 resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" 2042 resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a"
2043 integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==
1712 dependencies: 2044 dependencies:
1713 debug "^2.6.8" 2045 debug "^2.6.8"
1714 pkg-dir "^1.0.0" 2046 pkg-dir "^2.0.0"
1715 2047
1716eslint-plugin-import@^2.8.0: 2048eslint-plugin-import@^2.8.0:
1717 version "2.8.0" 2049 version "2.17.2"
1718 resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" 2050 resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz#d227d5c6dc67eca71eb590d2bb62fb38d86e9fcb"
2051 integrity sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==
1719 dependencies: 2052 dependencies:
1720 builtin-modules "^1.1.1" 2053 array-includes "^3.0.3"
1721 contains-path "^0.1.0" 2054 contains-path "^0.1.0"
1722 debug "^2.6.8" 2055 debug "^2.6.9"
1723 doctrine "1.5.0" 2056 doctrine "1.5.0"
1724 eslint-import-resolver-node "^0.3.1" 2057 eslint-import-resolver-node "^0.3.2"
1725 eslint-module-utils "^2.1.1" 2058 eslint-module-utils "^2.4.0"
1726 has "^1.0.1" 2059 has "^1.0.3"
1727 lodash.cond "^4.3.0" 2060 lodash "^4.17.11"
1728 minimatch "^3.0.3" 2061 minimatch "^3.0.4"
1729 read-pkg-up "^2.0.0" 2062 read-pkg-up "^2.0.0"
2063 resolve "^1.10.0"
1730 2064
1731eslint-restricted-globals@^0.1.1: 2065eslint-restricted-globals@^0.1.1:
1732 version "0.1.1" 2066 version "0.1.1"
1733 resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" 2067 resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7"
2068 integrity sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=
1734 2069
1735eslint-scope@^3.7.1: 2070eslint-scope@^3.7.1:
1736 version "3.7.1" 2071 version "3.7.3"
1737 resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 2072 resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
2073 integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
1738 dependencies: 2074 dependencies:
1739 esrecurse "^4.1.0" 2075 esrecurse "^4.1.0"
1740 estraverse "^4.1.1" 2076 estraverse "^4.1.1"
@@ -1742,10 +2078,12 @@ eslint-scope@^3.7.1:
1742eslint-visitor-keys@^1.0.0: 2078eslint-visitor-keys@^1.0.0:
1743 version "1.0.0" 2079 version "1.0.0"
1744 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" 2080 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
2081 integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
1745 2082
1746eslint@^2.7.0: 2083eslint@^2.7.0:
1747 version "2.13.1" 2084 version "2.13.1"
1748 resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" 2085 resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11"
2086 integrity sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE=
1749 dependencies: 2087 dependencies:
1750 chalk "^1.1.3" 2088 chalk "^1.1.3"
1751 concat-stream "^1.4.6" 2089 concat-stream "^1.4.6"
@@ -1782,8 +2120,9 @@ eslint@^2.7.0:
1782 user-home "^2.0.0" 2120 user-home "^2.0.0"
1783 2121
1784eslint@^4.16.0: 2122eslint@^4.16.0:
1785 version "4.17.0" 2123 version "4.19.1"
1786 resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.17.0.tgz#dc24bb51ede48df629be7031c71d9dc0ee4f3ddf" 2124 resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
2125 integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==
1787 dependencies: 2126 dependencies:
1788 ajv "^5.3.0" 2127 ajv "^5.3.0"
1789 babel-code-frame "^6.22.0" 2128 babel-code-frame "^6.22.0"
@@ -1794,7 +2133,7 @@ eslint@^4.16.0:
1794 doctrine "^2.1.0" 2133 doctrine "^2.1.0"
1795 eslint-scope "^3.7.1" 2134 eslint-scope "^3.7.1"
1796 eslint-visitor-keys "^1.0.0" 2135 eslint-visitor-keys "^1.0.0"
1797 espree "^3.5.2" 2136 espree "^3.5.4"
1798 esquery "^1.0.0" 2137 esquery "^1.0.0"
1799 esutils "^2.0.2" 2138 esutils "^2.0.2"
1800 file-entry-cache "^2.0.0" 2139 file-entry-cache "^2.0.0"
@@ -1816,70 +2155,73 @@ eslint@^4.16.0:
1816 path-is-inside "^1.0.2" 2155 path-is-inside "^1.0.2"
1817 pluralize "^7.0.0" 2156 pluralize "^7.0.0"
1818 progress "^2.0.0" 2157 progress "^2.0.0"
2158 regexpp "^1.0.1"
1819 require-uncached "^1.0.3" 2159 require-uncached "^1.0.3"
1820 semver "^5.3.0" 2160 semver "^5.3.0"
1821 strip-ansi "^4.0.0" 2161 strip-ansi "^4.0.0"
1822 strip-json-comments "~2.0.1" 2162 strip-json-comments "~2.0.1"
1823 table "^4.0.1" 2163 table "4.0.2"
1824 text-table "~0.2.0" 2164 text-table "~0.2.0"
1825 2165
1826espree@^3.1.6: 2166espree@^3.1.6, espree@^3.5.4:
1827 version "3.5.4" 2167 version "3.5.4"
1828 resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" 2168 resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
2169 integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
1829 dependencies: 2170 dependencies:
1830 acorn "^5.5.0" 2171 acorn "^5.5.0"
1831 acorn-jsx "^3.0.0" 2172 acorn-jsx "^3.0.0"
1832 2173
1833espree@^3.5.2:
1834 version "3.5.3"
1835 resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.3.tgz#931e0af64e7fbbed26b050a29daad1fc64799fa6"
1836 dependencies:
1837 acorn "^5.4.0"
1838 acorn-jsx "^3.0.0"
1839
1840esprima@^2.6.0: 2174esprima@^2.6.0:
1841 version "2.7.3" 2175 version "2.7.3"
1842 resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 2176 resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
2177 integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
1843 2178
1844esprima@^4.0.0: 2179esprima@^4.0.0:
1845 version "4.0.0" 2180 version "4.0.1"
1846 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 2181 resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
2182 integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
1847 2183
1848esquery@^1.0.0: 2184esquery@^1.0.0:
1849 version "1.0.0" 2185 version "1.0.1"
1850 resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 2186 resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
2187 integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
1851 dependencies: 2188 dependencies:
1852 estraverse "^4.0.0" 2189 estraverse "^4.0.0"
1853 2190
1854esrecurse@^4.1.0: 2191esrecurse@^4.1.0:
1855 version "4.2.0" 2192 version "4.2.1"
1856 resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" 2193 resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
2194 integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
1857 dependencies: 2195 dependencies:
1858 estraverse "^4.1.0" 2196 estraverse "^4.1.0"
1859 object-assign "^4.0.1"
1860 2197
1861estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: 2198estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
1862 version "4.2.0" 2199 version "4.2.0"
1863 resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 2200 resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
2201 integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
1864 2202
1865esutils@^2.0.2: 2203esutils@^2.0.2:
1866 version "2.0.2" 2204 version "2.0.2"
1867 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 2205 resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
2206 integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
1868 2207
1869event-emitter@~0.3.5: 2208event-emitter@~0.3.5:
1870 version "0.3.5" 2209 version "0.3.5"
1871 resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 2210 resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
2211 integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
1872 dependencies: 2212 dependencies:
1873 d "1" 2213 d "1"
1874 es5-ext "~0.10.14" 2214 es5-ext "~0.10.14"
1875 2215
1876events@^1.0.0: 2216events@^3.0.0:
1877 version "1.1.1" 2217 version "3.0.0"
1878 resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 2218 resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
2219 integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
1879 2220
1880evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 2221evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
1881 version "1.0.3" 2222 version "1.0.3"
1882 resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 2223 resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
2224 integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
1883 dependencies: 2225 dependencies:
1884 md5.js "^1.3.4" 2226 md5.js "^1.3.4"
1885 safe-buffer "^5.1.1" 2227 safe-buffer "^5.1.1"
@@ -1887,6 +2229,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
1887execa@^0.7.0: 2229execa@^0.7.0:
1888 version "0.7.0" 2230 version "0.7.0"
1889 resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 2231 resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
2232 integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
1890 dependencies: 2233 dependencies:
1891 cross-spawn "^5.0.1" 2234 cross-spawn "^5.0.1"
1892 get-stream "^3.0.0" 2235 get-stream "^3.0.0"
@@ -1899,40 +2242,68 @@ execa@^0.7.0:
1899exit-hook@^1.0.0: 2242exit-hook@^1.0.0:
1900 version "1.1.1" 2243 version "1.1.1"
1901 resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 2244 resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
2245 integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
1902 2246
1903expand-brackets@^0.1.4: 2247expand-brackets@^2.1.4:
1904 version "0.1.5" 2248 version "2.1.4"
1905 resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 2249 resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
2250 integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
2251 dependencies:
2252 debug "^2.3.3"
2253 define-property "^0.2.5"
2254 extend-shallow "^2.0.1"
2255 posix-character-classes "^0.1.0"
2256 regex-not "^1.0.0"
2257 snapdragon "^0.8.1"
2258 to-regex "^3.0.1"
2259
2260extend-shallow@^2.0.1:
2261 version "2.0.1"
2262 resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
2263 integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
1906 dependencies: 2264 dependencies:
1907 is-posix-bracket "^0.1.0" 2265 is-extendable "^0.1.0"
1908 2266
1909expand-range@^1.8.1: 2267extend-shallow@^3.0.0, extend-shallow@^3.0.2:
1910 version "1.8.2" 2268 version "3.0.2"
1911 resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 2269 resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
2270 integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
1912 dependencies: 2271 dependencies:
1913 fill-range "^2.1.0" 2272 assign-symbols "^1.0.0"
2273 is-extendable "^1.0.1"
1914 2274
1915extend@~3.0.0, extend@~3.0.1: 2275extend@~3.0.2:
1916 version "3.0.1" 2276 version "3.0.2"
1917 resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 2277 resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
2278 integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
1918 2279
1919external-editor@^2.0.4: 2280external-editor@^2.0.4:
1920 version "2.1.0" 2281 version "2.2.0"
1921 resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" 2282 resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
2283 integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
1922 dependencies: 2284 dependencies:
1923 chardet "^0.4.0" 2285 chardet "^0.4.0"
1924 iconv-lite "^0.4.17" 2286 iconv-lite "^0.4.17"
1925 tmp "^0.0.33" 2287 tmp "^0.0.33"
1926 2288
1927extglob@^0.3.1: 2289extglob@^2.0.4:
1928 version "0.3.2" 2290 version "2.0.4"
1929 resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 2291 resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
1930 dependencies: 2292 integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
1931 is-extglob "^1.0.0" 2293 dependencies:
2294 array-unique "^0.3.2"
2295 define-property "^1.0.0"
2296 expand-brackets "^2.1.4"
2297 extend-shallow "^2.0.1"
2298 fragment-cache "^0.2.1"
2299 regex-not "^1.0.0"
2300 snapdragon "^0.8.1"
2301 to-regex "^3.0.1"
1932 2302
1933extract-text-webpack-plugin@^3.0.2: 2303extract-text-webpack-plugin@^3.0.2:
1934 version "3.0.2" 2304 version "3.0.2"
1935 resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" 2305 resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
2306 integrity sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==
1936 dependencies: 2307 dependencies:
1937 async "^2.4.1" 2308 async "^2.4.1"
1938 loader-utils "^1.1.0" 2309 loader-utils "^1.1.0"
@@ -1942,30 +2313,42 @@ extract-text-webpack-plugin@^3.0.2:
1942extsprintf@1.3.0: 2313extsprintf@1.3.0:
1943 version "1.3.0" 2314 version "1.3.0"
1944 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 2315 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
2316 integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
1945 2317
1946extsprintf@^1.2.0: 2318extsprintf@^1.2.0:
1947 version "1.4.0" 2319 version "1.4.0"
1948 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 2320 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
2321 integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
1949 2322
1950fast-deep-equal@^1.0.0: 2323fast-deep-equal@^1.0.0:
1951 version "1.0.0" 2324 version "1.1.0"
1952 resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 2325 resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
2326 integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
2327
2328fast-deep-equal@^2.0.1:
2329 version "2.0.1"
2330 resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
2331 integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
1953 2332
1954fast-json-stable-stringify@^2.0.0: 2333fast-json-stable-stringify@^2.0.0:
1955 version "2.0.0" 2334 version "2.0.0"
1956 resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 2335 resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
2336 integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
1957 2337
1958fast-levenshtein@~2.0.4: 2338fast-levenshtein@~2.0.4:
1959 version "2.0.6" 2339 version "2.0.6"
1960 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 2340 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
2341 integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
1961 2342
1962fastparse@^1.1.1: 2343fastparse@^1.1.1:
1963 version "1.1.1" 2344 version "1.1.2"
1964 resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" 2345 resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
2346 integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
1965 2347
1966figures@^1.3.5: 2348figures@^1.3.5:
1967 version "1.7.0" 2349 version "1.7.0"
1968 resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 2350 resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
2351 integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
1969 dependencies: 2352 dependencies:
1970 escape-string-regexp "^1.0.5" 2353 escape-string-regexp "^1.0.5"
1971 object-assign "^4.1.0" 2354 object-assign "^4.1.0"
@@ -1973,12 +2356,14 @@ figures@^1.3.5:
1973figures@^2.0.0: 2356figures@^2.0.0:
1974 version "2.0.0" 2357 version "2.0.0"
1975 resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 2358 resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
2359 integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
1976 dependencies: 2360 dependencies:
1977 escape-string-regexp "^1.0.5" 2361 escape-string-regexp "^1.0.5"
1978 2362
1979file-entry-cache@^1.1.1: 2363file-entry-cache@^1.1.1:
1980 version "1.3.1" 2364 version "1.3.1"
1981 resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" 2365 resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8"
2366 integrity sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=
1982 dependencies: 2367 dependencies:
1983 flat-cache "^1.2.1" 2368 flat-cache "^1.2.1"
1984 object-assign "^4.0.1" 2369 object-assign "^4.0.1"
@@ -1986,34 +2371,33 @@ file-entry-cache@^1.1.1:
1986file-entry-cache@^2.0.0: 2371file-entry-cache@^2.0.0:
1987 version "2.0.0" 2372 version "2.0.0"
1988 resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 2373 resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
2374 integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
1989 dependencies: 2375 dependencies:
1990 flat-cache "^1.2.1" 2376 flat-cache "^1.2.1"
1991 object-assign "^4.0.1" 2377 object-assign "^4.0.1"
1992 2378
1993file-loader@^1.1.6: 2379file-loader@^1.1.6:
1994 version "1.1.6" 2380 version "1.1.11"
1995 resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8" 2381 resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
2382 integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==
1996 dependencies: 2383 dependencies:
1997 loader-utils "^1.0.2" 2384 loader-utils "^1.0.2"
1998 schema-utils "^0.3.0" 2385 schema-utils "^0.4.5"
1999
2000filename-regex@^2.0.0:
2001 version "2.0.1"
2002 resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
2003 2386
2004fill-range@^2.1.0: 2387fill-range@^4.0.0:
2005 version "2.2.3" 2388 version "4.0.0"
2006 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 2389 resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
2390 integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
2007 dependencies: 2391 dependencies:
2008 is-number "^2.1.0" 2392 extend-shallow "^2.0.1"
2009 isobject "^2.0.0" 2393 is-number "^3.0.0"
2010 randomatic "^1.1.3" 2394 repeat-string "^1.6.1"
2011 repeat-element "^1.1.2" 2395 to-regex-range "^2.1.0"
2012 repeat-string "^1.5.2"
2013 2396
2014find-cache-dir@^1.0.0: 2397find-cache-dir@^1.0.0:
2015 version "1.0.0" 2398 version "1.0.0"
2016 resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" 2399 resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
2400 integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=
2017 dependencies: 2401 dependencies:
2018 commondir "^1.0.1" 2402 commondir "^1.0.1"
2019 make-dir "^1.0.0" 2403 make-dir "^1.0.0"
@@ -2022,6 +2406,7 @@ find-cache-dir@^1.0.0:
2022find-up@^1.0.0: 2406find-up@^1.0.0:
2023 version "1.1.2" 2407 version "1.1.2"
2024 resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 2408 resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
2409 integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
2025 dependencies: 2410 dependencies:
2026 path-exists "^2.0.0" 2411 path-exists "^2.0.0"
2027 pinkie-promise "^2.0.0" 2412 pinkie-promise "^2.0.0"
@@ -2029,119 +2414,128 @@ find-up@^1.0.0:
2029find-up@^2.0.0, find-up@^2.1.0: 2414find-up@^2.0.0, find-up@^2.1.0:
2030 version "2.1.0" 2415 version "2.1.0"
2031 resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 2416 resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
2417 integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
2032 dependencies: 2418 dependencies:
2033 locate-path "^2.0.0" 2419 locate-path "^2.0.0"
2034 2420
2035flat-cache@^1.2.1: 2421flat-cache@^1.2.1:
2036 version "1.3.0" 2422 version "1.3.4"
2037 resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 2423 resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
2424 integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
2038 dependencies: 2425 dependencies:
2039 circular-json "^0.3.1" 2426 circular-json "^0.3.1"
2040 del "^2.0.2"
2041 graceful-fs "^4.1.2" 2427 graceful-fs "^4.1.2"
2428 rimraf "~2.6.2"
2042 write "^0.2.1" 2429 write "^0.2.1"
2043 2430
2044flatten@^1.0.2: 2431flatten@^1.0.2:
2045 version "1.0.2" 2432 version "1.0.2"
2046 resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" 2433 resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
2047 2434 integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=
2048font-awesome@^4.7.0:
2049 version "4.7.0"
2050 resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
2051 2435
2052for-in@^0.1.3: 2436for-in@^0.1.3:
2053 version "0.1.8" 2437 version "0.1.8"
2054 resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" 2438 resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
2439 integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
2055 2440
2056for-in@^1.0.1: 2441for-in@^1.0.1, for-in@^1.0.2:
2057 version "1.0.2" 2442 version "1.0.2"
2058 resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 2443 resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
2059 2444 integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
2060for-own@^0.1.4:
2061 version "0.1.5"
2062 resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
2063 dependencies:
2064 for-in "^1.0.1"
2065 2445
2066for-own@^1.0.0: 2446for-own@^1.0.0:
2067 version "1.0.0" 2447 version "1.0.0"
2068 resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" 2448 resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
2449 integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
2069 dependencies: 2450 dependencies:
2070 for-in "^1.0.1" 2451 for-in "^1.0.1"
2071 2452
2072forever-agent@~0.6.1: 2453forever-agent@~0.6.1:
2073 version "0.6.1" 2454 version "0.6.1"
2074 resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 2455 resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
2456 integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
2075 2457
2076form-data@~2.1.1: 2458fork-awesome@^1.1.7:
2077 version "2.1.4" 2459 version "1.1.7"
2078 resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 2460 resolved "https://registry.yarnpkg.com/fork-awesome/-/fork-awesome-1.1.7.tgz#1427da1cac3d1713046ee88427e5fcecb9501d21"
2461 integrity sha512-IHI7XCSXrKfUIWslse8c/PaaVDT1oBaYge+ju40ihL2ooiQeBpTr4wvIXhgTd2NuhntlvX+M5jYHAPTzNlmv0g==
2462
2463form-data@~2.3.2:
2464 version "2.3.3"
2465 resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
2466 integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
2079 dependencies: 2467 dependencies:
2080 asynckit "^0.4.0" 2468 asynckit "^0.4.0"
2081 combined-stream "^1.0.5" 2469 combined-stream "^1.0.6"
2082 mime-types "^2.1.12" 2470 mime-types "^2.1.12"
2083 2471
2084form-data@~2.3.1: 2472fragment-cache@^0.2.1:
2085 version "2.3.1" 2473 version "0.2.1"
2086 resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" 2474 resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
2475 integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
2087 dependencies: 2476 dependencies:
2088 asynckit "^0.4.0" 2477 map-cache "^0.2.2"
2089 combined-stream "^1.0.5"
2090 mime-types "^2.1.12"
2091 2478
2092front-matter@2.1.2: 2479front-matter@2.1.2:
2093 version "2.1.2" 2480 version "2.1.2"
2094 resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb" 2481 resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb"
2482 integrity sha1-91mDufL0E75ljJPf172M5AePXNs=
2095 dependencies: 2483 dependencies:
2096 js-yaml "^3.4.6" 2484 js-yaml "^3.4.6"
2097 2485
2098fs-extra@^3.0.1: 2486fs-extra@^3.0.1:
2099 version "3.0.1" 2487 version "3.0.1"
2100 resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" 2488 resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
2489 integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=
2101 dependencies: 2490 dependencies:
2102 graceful-fs "^4.1.2" 2491 graceful-fs "^4.1.2"
2103 jsonfile "^3.0.0" 2492 jsonfile "^3.0.0"
2104 universalify "^0.1.0" 2493 universalify "^0.1.0"
2105 2494
2495fs-minipass@^1.2.5:
2496 version "1.2.6"
2497 resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
2498 integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
2499 dependencies:
2500 minipass "^2.2.1"
2501
2106fs.realpath@^1.0.0: 2502fs.realpath@^1.0.0:
2107 version "1.0.0" 2503 version "1.0.0"
2108 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 2504 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
2505 integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
2109 2506
2110fsevents@^1.0.0: 2507fsevents@^1.2.7:
2111 version "1.1.3" 2508 version "1.2.9"
2112 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" 2509 resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
2113 dependencies: 2510 integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
2114 nan "^2.3.0"
2115 node-pre-gyp "^0.6.39"
2116
2117fstream-ignore@^1.0.5:
2118 version "1.0.5"
2119 resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
2120 dependencies: 2511 dependencies:
2121 fstream "^1.0.0" 2512 nan "^2.12.1"
2122 inherits "2" 2513 node-pre-gyp "^0.12.0"
2123 minimatch "^3.0.0"
2124 2514
2125fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 2515fstream@^1.0.0, fstream@^1.0.12:
2126 version "1.0.11" 2516 version "1.0.12"
2127 resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 2517 resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
2518 integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==
2128 dependencies: 2519 dependencies:
2129 graceful-fs "^4.1.2" 2520 graceful-fs "^4.1.2"
2130 inherits "~2.0.0" 2521 inherits "~2.0.0"
2131 mkdirp ">=0.5 0" 2522 mkdirp ">=0.5 0"
2132 rimraf "2" 2523 rimraf "2"
2133 2524
2134function-bind@^1.0.2: 2525function-bind@^1.1.1:
2135 version "1.1.1" 2526 version "1.1.1"
2136 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 2527 resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
2528 integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
2137 2529
2138functional-red-black-tree@^1.0.1: 2530functional-red-black-tree@^1.0.1:
2139 version "1.0.1" 2531 version "1.0.1"
2140 resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 2532 resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
2533 integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
2141 2534
2142gauge@~2.7.3: 2535gauge@~2.7.3:
2143 version "2.7.4" 2536 version "2.7.4"
2144 resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 2537 resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
2538 integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
2145 dependencies: 2539 dependencies:
2146 aproba "^1.0.3" 2540 aproba "^1.0.3"
2147 console-control-strings "^1.0.0" 2541 console-control-strings "^1.0.0"
@@ -2153,65 +2547,65 @@ gauge@~2.7.3:
2153 wide-align "^1.1.0" 2547 wide-align "^1.1.0"
2154 2548
2155gaze@^1.0.0: 2549gaze@^1.0.0:
2156 version "1.1.2" 2550 version "1.1.3"
2157 resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" 2551 resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
2552 integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
2158 dependencies: 2553 dependencies:
2159 globule "^1.0.0" 2554 globule "^1.0.0"
2160 2555
2161generate-function@^2.0.0: 2556generate-function@^2.0.0:
2162 version "2.0.0" 2557 version "2.3.1"
2163 resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 2558 resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
2559 integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==
2560 dependencies:
2561 is-property "^1.0.2"
2164 2562
2165generate-object-property@^1.1.0: 2563generate-object-property@^1.1.0:
2166 version "1.2.0" 2564 version "1.2.0"
2167 resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 2565 resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
2566 integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
2168 dependencies: 2567 dependencies:
2169 is-property "^1.0.0" 2568 is-property "^1.0.0"
2170 2569
2171get-caller-file@^1.0.1: 2570get-caller-file@^1.0.1:
2172 version "1.0.2" 2571 version "1.0.3"
2173 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 2572 resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
2573 integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
2174 2574
2175get-stdin@^4.0.1: 2575get-stdin@^4.0.1:
2176 version "4.0.1" 2576 version "4.0.1"
2177 resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 2577 resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
2578 integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
2178 2579
2179get-stream@^3.0.0: 2580get-stream@^3.0.0:
2180 version "3.0.0" 2581 version "3.0.0"
2181 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 2582 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
2583 integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
2584
2585get-value@^2.0.3, get-value@^2.0.6:
2586 version "2.0.6"
2587 resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
2588 integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
2182 2589
2183getpass@^0.1.1: 2590getpass@^0.1.1:
2184 version "0.1.7" 2591 version "0.1.7"
2185 resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 2592 resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
2593 integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
2186 dependencies: 2594 dependencies:
2187 assert-plus "^1.0.0" 2595 assert-plus "^1.0.0"
2188 2596
2189glob-base@^0.3.0: 2597glob-parent@^3.1.0:
2190 version "0.3.0" 2598 version "3.1.0"
2191 resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 2599 resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
2192 dependencies: 2600 integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
2193 glob-parent "^2.0.0"
2194 is-glob "^2.0.0"
2195
2196glob-parent@^2.0.0:
2197 version "2.0.0"
2198 resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
2199 dependencies:
2200 is-glob "^2.0.0"
2201
2202glob@^6.0.4:
2203 version "6.0.4"
2204 resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
2205 dependencies: 2601 dependencies:
2206 inflight "^1.0.4" 2602 is-glob "^3.1.0"
2207 inherits "2" 2603 path-dirname "^1.0.0"
2208 minimatch "2 || 3"
2209 once "^1.3.0"
2210 path-is-absolute "^1.0.0"
2211 2604
2212glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1: 2605glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1:
2213 version "7.1.2" 2606 version "7.1.4"
2214 resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 2607 resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
2608 integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
2215 dependencies: 2609 dependencies:
2216 fs.realpath "^1.0.0" 2610 fs.realpath "^1.0.0"
2217 inflight "^1.0.4" 2611 inflight "^1.0.4"
@@ -2221,177 +2615,166 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1:
2221 path-is-absolute "^1.0.0" 2615 path-is-absolute "^1.0.0"
2222 2616
2223globals@^11.0.1: 2617globals@^11.0.1:
2224 version "11.3.0" 2618 version "11.12.0"
2225 resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0" 2619 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
2620 integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2226 2621
2227globals@^9.18.0, globals@^9.2.0: 2622globals@^9.18.0, globals@^9.2.0:
2228 version "9.18.0" 2623 version "9.18.0"
2229 resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 2624 resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
2230 2625 integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
2231globby@^5.0.0:
2232 version "5.0.0"
2233 resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
2234 dependencies:
2235 array-union "^1.0.1"
2236 arrify "^1.0.0"
2237 glob "^7.0.3"
2238 object-assign "^4.0.1"
2239 pify "^2.0.0"
2240 pinkie-promise "^2.0.0"
2241 2626
2242globule@^1.0.0: 2627globule@^1.0.0:
2243 version "1.2.0" 2628 version "1.2.1"
2244 resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" 2629 resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
2630 integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==
2245 dependencies: 2631 dependencies:
2246 glob "~7.1.1" 2632 glob "~7.1.1"
2247 lodash "~4.17.4" 2633 lodash "~4.17.10"
2248 minimatch "~3.0.2" 2634 minimatch "~3.0.2"
2249 2635
2250gonzales-pe-sl@^4.2.3: 2636gonzales-pe-sl@^4.2.3:
2251 version "4.2.3" 2637 version "4.2.3"
2252 resolved "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz#6a868bc380645f141feeb042c6f97fcc71b59fe6" 2638 resolved "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz#6a868bc380645f141feeb042c6f97fcc71b59fe6"
2639 integrity sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y=
2253 dependencies: 2640 dependencies:
2254 minimist "1.1.x" 2641 minimist "1.1.x"
2255 2642
2256graceful-fs@^4.1.2, graceful-fs@^4.1.6: 2643graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
2257 version "4.1.11" 2644 version "4.1.15"
2258 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 2645 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
2259 2646 integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
2260har-schema@^1.0.5:
2261 version "1.0.5"
2262 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
2263 2647
2264har-schema@^2.0.0: 2648har-schema@^2.0.0:
2265 version "2.0.0" 2649 version "2.0.0"
2266 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 2650 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
2651 integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
2267 2652
2268har-validator@~2.0.6: 2653har-validator@~5.1.0:
2269 version "2.0.6" 2654 version "5.1.3"
2270 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 2655 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
2656 integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
2271 dependencies: 2657 dependencies:
2272 chalk "^1.1.1" 2658 ajv "^6.5.5"
2273 commander "^2.9.0"
2274 is-my-json-valid "^2.12.4"
2275 pinkie-promise "^2.0.0"
2276
2277har-validator@~4.2.1:
2278 version "4.2.1"
2279 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
2280 dependencies:
2281 ajv "^4.9.1"
2282 har-schema "^1.0.5"
2283
2284har-validator@~5.0.3:
2285 version "5.0.3"
2286 resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
2287 dependencies:
2288 ajv "^5.1.0"
2289 har-schema "^2.0.0" 2659 har-schema "^2.0.0"
2290 2660
2291has-ansi@^2.0.0: 2661has-ansi@^2.0.0:
2292 version "2.0.0" 2662 version "2.0.0"
2293 resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 2663 resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
2664 integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
2294 dependencies: 2665 dependencies:
2295 ansi-regex "^2.0.0" 2666 ansi-regex "^2.0.0"
2296 2667
2297has-flag@^1.0.0: 2668has-flag@^1.0.0:
2298 version "1.0.0" 2669 version "1.0.0"
2299 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 2670 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
2671 integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
2300 2672
2301has-flag@^2.0.0: 2673has-flag@^2.0.0:
2302 version "2.0.0" 2674 version "2.0.0"
2303 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 2675 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
2676 integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
2677
2678has-flag@^3.0.0:
2679 version "3.0.0"
2680 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
2681 integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
2682
2683has-symbols@^1.0.0:
2684 version "1.0.0"
2685 resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
2686 integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
2304 2687
2305has-unicode@^2.0.0: 2688has-unicode@^2.0.0:
2306 version "2.0.1" 2689 version "2.0.1"
2307 resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 2690 resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
2691 integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
2308 2692
2309has@^1.0.1: 2693has-value@^0.3.1:
2310 version "1.0.1" 2694 version "0.3.1"
2311 resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 2695 resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
2696 integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
2312 dependencies: 2697 dependencies:
2313 function-bind "^1.0.2" 2698 get-value "^2.0.3"
2699 has-values "^0.1.4"
2700 isobject "^2.0.0"
2314 2701
2315hash-base@^2.0.0: 2702has-value@^1.0.0:
2316 version "2.0.2" 2703 version "1.0.0"
2317 resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" 2704 resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
2705 integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
2318 dependencies: 2706 dependencies:
2319 inherits "^2.0.1" 2707 get-value "^2.0.6"
2708 has-values "^1.0.0"
2709 isobject "^3.0.0"
2710
2711has-values@^0.1.4:
2712 version "0.1.4"
2713 resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
2714 integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
2715
2716has-values@^1.0.0:
2717 version "1.0.0"
2718 resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
2719 integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
2720 dependencies:
2721 is-number "^3.0.0"
2722 kind-of "^4.0.0"
2723
2724has@^1.0.1, has@^1.0.3:
2725 version "1.0.3"
2726 resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
2727 integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
2728 dependencies:
2729 function-bind "^1.1.1"
2320 2730
2321hash-base@^3.0.0: 2731hash-base@^3.0.0:
2322 version "3.0.4" 2732 version "3.0.4"
2323 resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" 2733 resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
2734 integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
2324 dependencies: 2735 dependencies:
2325 inherits "^2.0.1" 2736 inherits "^2.0.1"
2326 safe-buffer "^5.0.1" 2737 safe-buffer "^5.0.1"
2327 2738
2328hash.js@^1.0.0, hash.js@^1.0.3: 2739hash.js@^1.0.0, hash.js@^1.0.3:
2329 version "1.1.3" 2740 version "1.1.7"
2330 resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" 2741 resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
2742 integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
2331 dependencies: 2743 dependencies:
2332 inherits "^2.0.3" 2744 inherits "^2.0.3"
2333 minimalistic-assert "^1.0.0" 2745 minimalistic-assert "^1.0.1"
2334
2335hawk@3.1.3, hawk@~3.1.3:
2336 version "3.1.3"
2337 resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
2338 dependencies:
2339 boom "2.x.x"
2340 cryptiles "2.x.x"
2341 hoek "2.x.x"
2342 sntp "1.x.x"
2343
2344hawk@~6.0.2:
2345 version "6.0.2"
2346 resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
2347 dependencies:
2348 boom "4.x.x"
2349 cryptiles "3.x.x"
2350 hoek "4.x.x"
2351 sntp "2.x.x"
2352 2746
2353hmac-drbg@^1.0.0: 2747hmac-drbg@^1.0.0:
2354 version "1.0.1" 2748 version "1.0.1"
2355 resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 2749 resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
2750 integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
2356 dependencies: 2751 dependencies:
2357 hash.js "^1.0.3" 2752 hash.js "^1.0.3"
2358 minimalistic-assert "^1.0.0" 2753 minimalistic-assert "^1.0.0"
2359 minimalistic-crypto-utils "^1.0.1" 2754 minimalistic-crypto-utils "^1.0.1"
2360 2755
2361hoek@2.x.x:
2362 version "2.16.3"
2363 resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
2364
2365hoek@4.x.x:
2366 version "4.2.0"
2367 resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
2368
2369home-or-tmp@^2.0.0: 2756home-or-tmp@^2.0.0:
2370 version "2.0.0" 2757 version "2.0.0"
2371 resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 2758 resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
2759 integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
2372 dependencies: 2760 dependencies:
2373 os-homedir "^1.0.0" 2761 os-homedir "^1.0.0"
2374 os-tmpdir "^1.0.1" 2762 os-tmpdir "^1.0.1"
2375 2763
2376hosted-git-info@^2.1.4: 2764hosted-git-info@^2.1.4:
2377 version "2.5.0" 2765 version "2.7.1"
2378 resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 2766 resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
2767 integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
2379 2768
2380html-comment-regex@^1.1.0: 2769html-comment-regex@^1.1.0:
2381 version "1.1.1" 2770 version "1.1.2"
2382 resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" 2771 resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
2383 2772 integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
2384http-signature@~1.1.0:
2385 version "1.1.1"
2386 resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
2387 dependencies:
2388 assert-plus "^0.2.0"
2389 jsprim "^1.2.2"
2390 sshpk "^1.7.0"
2391 2773
2392http-signature@~1.2.0: 2774http-signature@~1.2.0:
2393 version "1.2.0" 2775 version "1.2.0"
2394 resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 2776 resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
2777 integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
2395 dependencies: 2778 dependencies:
2396 assert-plus "^1.0.0" 2779 assert-plus "^1.0.0"
2397 jsprim "^1.2.2" 2780 jsprim "^1.2.2"
@@ -2400,73 +2783,98 @@ http-signature@~1.2.0:
2400https-browserify@^1.0.0: 2783https-browserify@^1.0.0:
2401 version "1.0.0" 2784 version "1.0.0"
2402 resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 2785 resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
2786 integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
2403 2787
2404iconv-lite@^0.4.17: 2788iconv-lite@^0.4.17, iconv-lite@^0.4.4:
2405 version "0.4.19" 2789 version "0.4.24"
2406 resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 2790 resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
2791 integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
2792 dependencies:
2793 safer-buffer ">= 2.1.2 < 3"
2407 2794
2408icss-replace-symbols@^1.1.0: 2795icss-replace-symbols@^1.1.0:
2409 version "1.1.0" 2796 version "1.1.0"
2410 resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" 2797 resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
2798 integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
2411 2799
2412icss-utils@^2.1.0: 2800icss-utils@^2.1.0:
2413 version "2.1.0" 2801 version "2.1.0"
2414 resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" 2802 resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
2803 integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=
2415 dependencies: 2804 dependencies:
2416 postcss "^6.0.1" 2805 postcss "^6.0.1"
2417 2806
2418ieee754@^1.1.4: 2807ieee754@^1.1.4:
2419 version "1.1.8" 2808 version "1.1.13"
2420 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 2809 resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
2810 integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
2811
2812ignore-walk@^3.0.1:
2813 version "3.0.1"
2814 resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
2815 integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
2816 dependencies:
2817 minimatch "^3.0.4"
2421 2818
2422ignore@^3.1.2, ignore@^3.3.3: 2819ignore@^3.1.2, ignore@^3.3.3:
2423 version "3.3.7" 2820 version "3.3.10"
2424 resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" 2821 resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
2822 integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
2425 2823
2426imurmurhash@^0.1.4: 2824imurmurhash@^0.1.4:
2427 version "0.1.4" 2825 version "0.1.4"
2428 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 2826 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
2827 integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
2429 2828
2430in-publish@^2.0.0: 2829in-publish@^2.0.0:
2431 version "2.0.0" 2830 version "2.0.0"
2432 resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" 2831 resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
2832 integrity sha1-4g/146KvwmkDILbcVSaCqcf631E=
2433 2833
2434indent-string@^2.1.0: 2834indent-string@^2.1.0:
2435 version "2.1.0" 2835 version "2.1.0"
2436 resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 2836 resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
2837 integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
2437 dependencies: 2838 dependencies:
2438 repeating "^2.0.0" 2839 repeating "^2.0.0"
2439 2840
2440indexes-of@^1.0.1: 2841indexes-of@^1.0.1:
2441 version "1.0.1" 2842 version "1.0.1"
2442 resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" 2843 resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
2844 integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
2443 2845
2444indexof@0.0.1: 2846indexof@0.0.1:
2445 version "0.0.1" 2847 version "0.0.1"
2446 resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 2848 resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
2849 integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
2447 2850
2448inflight@^1.0.4: 2851inflight@^1.0.4:
2449 version "1.0.6" 2852 version "1.0.6"
2450 resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 2853 resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
2854 integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
2451 dependencies: 2855 dependencies:
2452 once "^1.3.0" 2856 once "^1.3.0"
2453 wrappy "1" 2857 wrappy "1"
2454 2858
2455inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: 2859inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
2456 version "2.0.3" 2860 version "2.0.3"
2457 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 2861 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
2862 integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
2458 2863
2459inherits@2.0.1: 2864inherits@2.0.1:
2460 version "2.0.1" 2865 version "2.0.1"
2461 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 2866 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
2867 integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
2462 2868
2463ini@~1.3.0: 2869ini@~1.3.0:
2464 version "1.3.5" 2870 version "1.3.5"
2465 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 2871 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
2872 integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
2466 2873
2467inquirer@^0.12.0: 2874inquirer@^0.12.0:
2468 version "0.12.0" 2875 version "0.12.0"
2469 resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 2876 resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
2877 integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=
2470 dependencies: 2878 dependencies:
2471 ansi-escapes "^1.1.0" 2879 ansi-escapes "^1.1.0"
2472 ansi-regex "^2.0.0" 2880 ansi-regex "^2.0.0"
@@ -2485,6 +2893,7 @@ inquirer@^0.12.0:
2485inquirer@^3.0.6: 2893inquirer@^3.0.6:
2486 version "3.3.0" 2894 version "3.3.0"
2487 resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 2895 resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
2896 integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==
2488 dependencies: 2897 dependencies:
2489 ansi-escapes "^3.0.0" 2898 ansi-escapes "^3.0.0"
2490 chalk "^2.0.0" 2899 chalk "^2.0.0"
@@ -2502,90 +2911,159 @@ inquirer@^3.0.6:
2502 through "^2.3.6" 2911 through "^2.3.6"
2503 2912
2504interpret@^1.0.0: 2913interpret@^1.0.0:
2505 version "1.1.0" 2914 version "1.2.0"
2506 resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" 2915 resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
2916 integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
2507 2917
2508invariant@^2.2.2: 2918invariant@^2.2.2:
2509 version "2.2.2" 2919 version "2.2.4"
2510 resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 2920 resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
2921 integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
2511 dependencies: 2922 dependencies:
2512 loose-envify "^1.0.0" 2923 loose-envify "^1.0.0"
2513 2924
2514invert-kv@^1.0.0: 2925invert-kv@^1.0.0:
2515 version "1.0.0" 2926 version "1.0.0"
2516 resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 2927 resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
2928 integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
2517 2929
2518is-absolute-url@^2.0.0: 2930is-absolute-url@^2.0.0:
2519 version "2.1.0" 2931 version "2.1.0"
2520 resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" 2932 resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
2933 integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
2934
2935is-accessor-descriptor@^0.1.6:
2936 version "0.1.6"
2937 resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
2938 integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
2939 dependencies:
2940 kind-of "^3.0.2"
2941
2942is-accessor-descriptor@^1.0.0:
2943 version "1.0.0"
2944 resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
2945 integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
2946 dependencies:
2947 kind-of "^6.0.0"
2521 2948
2522is-arrayish@^0.2.1: 2949is-arrayish@^0.2.1:
2523 version "0.2.1" 2950 version "0.2.1"
2524 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 2951 resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
2952 integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
2525 2953
2526is-binary-path@^1.0.0: 2954is-binary-path@^1.0.0:
2527 version "1.0.1" 2955 version "1.0.1"
2528 resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 2956 resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
2957 integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
2529 dependencies: 2958 dependencies:
2530 binary-extensions "^1.0.0" 2959 binary-extensions "^1.0.0"
2531 2960
2532is-buffer@^1.0.2, is-buffer@^1.1.5: 2961is-buffer@^1.1.5:
2533 version "1.1.6" 2962 version "1.1.6"
2534 resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 2963 resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
2964 integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
2965
2966is-callable@^1.1.4:
2967 version "1.1.4"
2968 resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
2969 integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
2535 2970
2536is-builtin-module@^1.0.0: 2971is-data-descriptor@^0.1.4:
2972 version "0.1.4"
2973 resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
2974 integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
2975 dependencies:
2976 kind-of "^3.0.2"
2977
2978is-data-descriptor@^1.0.0:
2537 version "1.0.0" 2979 version "1.0.0"
2538 resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 2980 resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
2981 integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
2539 dependencies: 2982 dependencies:
2540 builtin-modules "^1.0.0" 2983 kind-of "^6.0.0"
2541 2984
2542is-dotfile@^1.0.0: 2985is-date-object@^1.0.1:
2543 version "1.0.3" 2986 version "1.0.1"
2544 resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 2987 resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
2988 integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
2545 2989
2546is-equal-shallow@^0.1.3: 2990is-descriptor@^0.1.0:
2547 version "0.1.3" 2991 version "0.1.6"
2548 resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 2992 resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
2993 integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
2994 dependencies:
2995 is-accessor-descriptor "^0.1.6"
2996 is-data-descriptor "^0.1.4"
2997 kind-of "^5.0.0"
2998
2999is-descriptor@^1.0.0, is-descriptor@^1.0.2:
3000 version "1.0.2"
3001 resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
3002 integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
2549 dependencies: 3003 dependencies:
2550 is-primitive "^2.0.0" 3004 is-accessor-descriptor "^1.0.0"
3005 is-data-descriptor "^1.0.0"
3006 kind-of "^6.0.2"
2551 3007
2552is-extendable@^0.1.1: 3008is-extendable@^0.1.0, is-extendable@^0.1.1:
2553 version "0.1.1" 3009 version "0.1.1"
2554 resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 3010 resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
3011 integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
2555 3012
2556is-extglob@^1.0.0: 3013is-extendable@^1.0.1:
2557 version "1.0.0" 3014 version "1.0.1"
2558 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 3015 resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
3016 integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
3017 dependencies:
3018 is-plain-object "^2.0.4"
3019
3020is-extglob@^2.1.0, is-extglob@^2.1.1:
3021 version "2.1.1"
3022 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
3023 integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
2559 3024
2560is-finite@^1.0.0: 3025is-finite@^1.0.0:
2561 version "1.0.2" 3026 version "1.0.2"
2562 resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 3027 resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
3028 integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
2563 dependencies: 3029 dependencies:
2564 number-is-nan "^1.0.0" 3030 number-is-nan "^1.0.0"
2565 3031
2566is-fullwidth-code-point@^1.0.0: 3032is-fullwidth-code-point@^1.0.0:
2567 version "1.0.0" 3033 version "1.0.0"
2568 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 3034 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
3035 integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
2569 dependencies: 3036 dependencies:
2570 number-is-nan "^1.0.0" 3037 number-is-nan "^1.0.0"
2571 3038
2572is-fullwidth-code-point@^2.0.0: 3039is-fullwidth-code-point@^2.0.0:
2573 version "2.0.0" 3040 version "2.0.0"
2574 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 3041 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
3042 integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
2575 3043
2576is-glob@^2.0.0, is-glob@^2.0.1: 3044is-glob@^3.1.0:
2577 version "2.0.1" 3045 version "3.1.0"
2578 resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 3046 resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
3047 integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
3048 dependencies:
3049 is-extglob "^2.1.0"
3050
3051is-glob@^4.0.0:
3052 version "4.0.1"
3053 resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
3054 integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
2579 dependencies: 3055 dependencies:
2580 is-extglob "^1.0.0" 3056 is-extglob "^2.1.1"
2581 3057
2582is-my-ip-valid@^1.0.0: 3058is-my-ip-valid@^1.0.0:
2583 version "1.0.0" 3059 version "1.0.0"
2584 resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" 3060 resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824"
3061 integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==
2585 3062
2586is-my-json-valid@^2.10.0: 3063is-my-json-valid@^2.10.0:
2587 version "2.17.2" 3064 version "2.20.0"
2588 resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" 3065 resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz#1345a6fca3e8daefc10d0fa77067f54cedafd59a"
3066 integrity sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==
2589 dependencies: 3067 dependencies:
2590 generate-function "^2.0.0" 3068 generate-function "^2.0.0"
2591 generate-object-property "^1.1.0" 3069 generate-object-property "^1.1.0"
@@ -2593,131 +3071,127 @@ is-my-json-valid@^2.10.0:
2593 jsonpointer "^4.0.0" 3071 jsonpointer "^4.0.0"
2594 xtend "^4.0.0" 3072 xtend "^4.0.0"
2595 3073
2596is-my-json-valid@^2.12.4:
2597 version "2.17.1"
2598 resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471"
2599 dependencies:
2600 generate-function "^2.0.0"
2601 generate-object-property "^1.1.0"
2602 jsonpointer "^4.0.0"
2603 xtend "^4.0.0"
2604
2605is-number@^2.1.0:
2606 version "2.1.0"
2607 resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
2608 dependencies:
2609 kind-of "^3.0.2"
2610
2611is-number@^3.0.0: 3074is-number@^3.0.0:
2612 version "3.0.0" 3075 version "3.0.0"
2613 resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 3076 resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
3077 integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
2614 dependencies: 3078 dependencies:
2615 kind-of "^3.0.2" 3079 kind-of "^3.0.2"
2616 3080
2617is-path-cwd@^1.0.0:
2618 version "1.0.0"
2619 resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
2620
2621is-path-in-cwd@^1.0.0:
2622 version "1.0.0"
2623 resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
2624 dependencies:
2625 is-path-inside "^1.0.0"
2626
2627is-path-inside@^1.0.0:
2628 version "1.0.1"
2629 resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
2630 dependencies:
2631 path-is-inside "^1.0.1"
2632
2633is-plain-obj@^1.0.0: 3081is-plain-obj@^1.0.0:
2634 version "1.1.0" 3082 version "1.1.0"
2635 resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 3083 resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
3084 integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
2636 3085
2637is-plain-object@^2.0.1: 3086is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
2638 version "2.0.4" 3087 version "2.0.4"
2639 resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 3088 resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
3089 integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
2640 dependencies: 3090 dependencies:
2641 isobject "^3.0.1" 3091 isobject "^3.0.1"
2642 3092
2643is-posix-bracket@^0.1.0:
2644 version "0.1.1"
2645 resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
2646
2647is-primitive@^2.0.0:
2648 version "2.0.0"
2649 resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
2650
2651is-promise@^2.1.0: 3093is-promise@^2.1.0:
2652 version "2.1.0" 3094 version "2.1.0"
2653 resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 3095 resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
3096 integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
2654 3097
2655is-property@^1.0.0: 3098is-property@^1.0.0, is-property@^1.0.2:
2656 version "1.0.2" 3099 version "1.0.2"
2657 resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 3100 resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
3101 integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
3102
3103is-regex@^1.0.4:
3104 version "1.0.4"
3105 resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
3106 integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
3107 dependencies:
3108 has "^1.0.1"
2658 3109
2659is-resolvable@^1.0.0: 3110is-resolvable@^1.0.0:
2660 version "1.1.0" 3111 version "1.1.0"
2661 resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" 3112 resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
3113 integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
2662 3114
2663is-stream@^1.1.0: 3115is-stream@^1.1.0:
2664 version "1.1.0" 3116 version "1.1.0"
2665 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 3117 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
3118 integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
2666 3119
2667is-svg@^2.0.0: 3120is-svg@^2.0.0:
2668 version "2.1.0" 3121 version "2.1.0"
2669 resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" 3122 resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
3123 integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=
2670 dependencies: 3124 dependencies:
2671 html-comment-regex "^1.1.0" 3125 html-comment-regex "^1.1.0"
2672 3126
3127is-symbol@^1.0.2:
3128 version "1.0.2"
3129 resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
3130 integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
3131 dependencies:
3132 has-symbols "^1.0.0"
3133
2673is-typedarray@~1.0.0: 3134is-typedarray@~1.0.0:
2674 version "1.0.0" 3135 version "1.0.0"
2675 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 3136 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
3137 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
2676 3138
2677is-utf8@^0.2.0: 3139is-utf8@^0.2.0:
2678 version "0.2.1" 3140 version "0.2.1"
2679 resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 3141 resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
3142 integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
3143
3144is-windows@^1.0.2:
3145 version "1.0.2"
3146 resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
3147 integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
2680 3148
2681isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 3149isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
2682 version "1.0.0" 3150 version "1.0.0"
2683 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 3151 resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
3152 integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
2684 3153
2685isexe@^2.0.0: 3154isexe@^2.0.0:
2686 version "2.0.0" 3155 version "2.0.0"
2687 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 3156 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
3157 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
2688 3158
2689isobject@^2.0.0: 3159isobject@^2.0.0:
2690 version "2.1.0" 3160 version "2.1.0"
2691 resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 3161 resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
3162 integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
2692 dependencies: 3163 dependencies:
2693 isarray "1.0.0" 3164 isarray "1.0.0"
2694 3165
2695isobject@^3.0.1: 3166isobject@^3.0.0, isobject@^3.0.1:
2696 version "3.0.1" 3167 version "3.0.1"
2697 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 3168 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
3169 integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
2698 3170
2699isstream@~0.1.2: 3171isstream@~0.1.2:
2700 version "0.1.2" 3172 version "0.1.2"
2701 resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 3173 resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
3174 integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
2702 3175
2703js-base64@^2.1.8, js-base64@^2.1.9: 3176js-base64@^2.1.8, js-base64@^2.1.9:
2704 version "2.4.3" 3177 version "2.5.1"
2705 resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" 3178 resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
3179 integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
3180
3181"js-tokens@^3.0.0 || ^4.0.0":
3182 version "4.0.0"
3183 resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
3184 integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
2706 3185
2707js-tokens@^3.0.0, js-tokens@^3.0.2: 3186js-tokens@^3.0.2:
2708 version "3.0.2" 3187 version "3.0.2"
2709 resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 3188 resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
3189 integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
2710 3190
2711js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4: 3191js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.9.1:
2712 version "3.11.0" 3192 version "3.13.1"
2713 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" 3193 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
2714 dependencies: 3194 integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
2715 argparse "^1.0.7"
2716 esprima "^4.0.0"
2717
2718js-yaml@^3.9.1:
2719 version "3.10.0"
2720 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
2721 dependencies: 3195 dependencies:
2722 argparse "^1.0.7" 3196 argparse "^1.0.7"
2723 esprima "^4.0.0" 3197 esprima "^4.0.0"
@@ -2725,6 +3199,7 @@ js-yaml@^3.9.1:
2725js-yaml@~3.7.0: 3199js-yaml@~3.7.0:
2726 version "3.7.0" 3200 version "3.7.0"
2727 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" 3201 resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
3202 integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=
2728 dependencies: 3203 dependencies:
2729 argparse "^1.0.7" 3204 argparse "^1.0.7"
2730 esprima "^2.6.0" 3205 esprima "^2.6.0"
@@ -2732,107 +3207,139 @@ js-yaml@~3.7.0:
2732jsbn@~0.1.0: 3207jsbn@~0.1.0:
2733 version "0.1.1" 3208 version "0.1.1"
2734 resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 3209 resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
3210 integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
2735 3211
2736jsesc@^1.3.0: 3212jsesc@^1.3.0:
2737 version "1.3.0" 3213 version "1.3.0"
2738 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 3214 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
3215 integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
2739 3216
2740jsesc@~0.5.0: 3217jsesc@~0.5.0:
2741 version "0.5.0" 3218 version "0.5.0"
2742 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 3219 resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
3220 integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
2743 3221
2744json-loader@^0.5.4: 3222json-loader@^0.5.4:
2745 version "0.5.7" 3223 version "0.5.7"
2746 resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" 3224 resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
3225 integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
2747 3226
2748json-schema-traverse@^0.3.0: 3227json-schema-traverse@^0.3.0:
2749 version "0.3.1" 3228 version "0.3.1"
2750 resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 3229 resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
3230 integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
3231
3232json-schema-traverse@^0.4.1:
3233 version "0.4.1"
3234 resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
3235 integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
2751 3236
2752json-schema@0.2.3: 3237json-schema@0.2.3:
2753 version "0.2.3" 3238 version "0.2.3"
2754 resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 3239 resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
3240 integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
2755 3241
2756json-stable-stringify-without-jsonify@^1.0.1: 3242json-stable-stringify-without-jsonify@^1.0.1:
2757 version "1.0.1" 3243 version "1.0.1"
2758 resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 3244 resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
3245 integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
2759 3246
2760json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 3247json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
2761 version "1.0.1" 3248 version "1.0.1"
2762 resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 3249 resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
3250 integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
2763 dependencies: 3251 dependencies:
2764 jsonify "~0.0.0" 3252 jsonify "~0.0.0"
2765 3253
2766json-stringify-safe@~5.0.1: 3254json-stringify-safe@~5.0.1:
2767 version "5.0.1" 3255 version "5.0.1"
2768 resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 3256 resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
3257 integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
2769 3258
2770json5@^0.5.0, json5@^0.5.1: 3259json5@^0.5.1:
2771 version "0.5.1" 3260 version "0.5.1"
2772 resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 3261 resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
3262 integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
3263
3264json5@^1.0.1:
3265 version "1.0.1"
3266 resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
3267 integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
3268 dependencies:
3269 minimist "^1.2.0"
2773 3270
2774jsonfile@^3.0.0: 3271jsonfile@^3.0.0:
2775 version "3.0.1" 3272 version "3.0.1"
2776 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" 3273 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
3274 integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=
2777 optionalDependencies: 3275 optionalDependencies:
2778 graceful-fs "^4.1.6" 3276 graceful-fs "^4.1.6"
2779 3277
2780jsonify@~0.0.0: 3278jsonify@~0.0.0:
2781 version "0.0.0" 3279 version "0.0.0"
2782 resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 3280 resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
3281 integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
2783 3282
2784jsonpointer@^4.0.0: 3283jsonpointer@^4.0.0:
2785 version "4.0.1" 3284 version "4.0.1"
2786 resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 3285 resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
3286 integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
2787 3287
2788jsprim@^1.2.2: 3288jsprim@^1.2.2:
2789 version "1.4.1" 3289 version "1.4.1"
2790 resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 3290 resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
3291 integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
2791 dependencies: 3292 dependencies:
2792 assert-plus "1.0.0" 3293 assert-plus "1.0.0"
2793 extsprintf "1.3.0" 3294 extsprintf "1.3.0"
2794 json-schema "0.2.3" 3295 json-schema "0.2.3"
2795 verror "1.10.0" 3296 verror "1.10.0"
2796 3297
2797kind-of@^2.0.1: 3298kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
2798 version "2.0.1"
2799 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
2800 dependencies:
2801 is-buffer "^1.0.2"
2802
2803kind-of@^3.0.2, kind-of@^3.2.2:
2804 version "3.2.2" 3299 version "3.2.2"
2805 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 3300 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
3301 integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
2806 dependencies: 3302 dependencies:
2807 is-buffer "^1.1.5" 3303 is-buffer "^1.1.5"
2808 3304
2809kind-of@^4.0.0: 3305kind-of@^4.0.0:
2810 version "4.0.0" 3306 version "4.0.0"
2811 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 3307 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
3308 integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
2812 dependencies: 3309 dependencies:
2813 is-buffer "^1.1.5" 3310 is-buffer "^1.1.5"
2814 3311
3312kind-of@^5.0.0:
3313 version "5.1.0"
3314 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
3315 integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
3316
3317kind-of@^6.0.0, kind-of@^6.0.2:
3318 version "6.0.2"
3319 resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
3320 integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
3321
2815known-css-properties@^0.3.0: 3322known-css-properties@^0.3.0:
2816 version "0.3.0" 3323 version "0.3.0"
2817 resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" 3324 resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4"
2818 3325 integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ==
2819lazy-cache@^0.2.3:
2820 version "0.2.7"
2821 resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
2822 3326
2823lazy-cache@^1.0.3: 3327lazy-cache@^1.0.3:
2824 version "1.0.4" 3328 version "1.0.4"
2825 resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 3329 resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
3330 integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
2826 3331
2827lcid@^1.0.0: 3332lcid@^1.0.0:
2828 version "1.0.0" 3333 version "1.0.0"
2829 resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 3334 resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
3335 integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
2830 dependencies: 3336 dependencies:
2831 invert-kv "^1.0.0" 3337 invert-kv "^1.0.0"
2832 3338
2833levn@^0.3.0, levn@~0.3.0: 3339levn@^0.3.0, levn@~0.3.0:
2834 version "0.3.0" 3340 version "0.3.0"
2835 resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 3341 resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
3342 integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
2836 dependencies: 3343 dependencies:
2837 prelude-ls "~1.1.2" 3344 prelude-ls "~1.1.2"
2838 type-check "~0.3.2" 3345 type-check "~0.3.2"
@@ -2840,6 +3347,7 @@ levn@^0.3.0, levn@~0.3.0:
2840load-json-file@^1.0.0: 3347load-json-file@^1.0.0:
2841 version "1.1.0" 3348 version "1.1.0"
2842 resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 3349 resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
3350 integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
2843 dependencies: 3351 dependencies:
2844 graceful-fs "^4.1.2" 3352 graceful-fs "^4.1.2"
2845 parse-json "^2.2.0" 3353 parse-json "^2.2.0"
@@ -2850,6 +3358,7 @@ load-json-file@^1.0.0:
2850load-json-file@^2.0.0: 3358load-json-file@^2.0.0:
2851 version "2.0.0" 3359 version "2.0.0"
2852 resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 3360 resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
3361 integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
2853 dependencies: 3362 dependencies:
2854 graceful-fs "^4.1.2" 3363 graceful-fs "^4.1.2"
2855 parse-json "^2.2.0" 3364 parse-json "^2.2.0"
@@ -2857,134 +3366,149 @@ load-json-file@^2.0.0:
2857 strip-bom "^3.0.0" 3366 strip-bom "^3.0.0"
2858 3367
2859loader-runner@^2.3.0: 3368loader-runner@^2.3.0:
2860 version "2.3.0" 3369 version "2.4.0"
2861 resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" 3370 resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
3371 integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
2862 3372
2863loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: 3373loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
2864 version "1.1.0" 3374 version "1.2.3"
2865 resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 3375 resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
3376 integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
2866 dependencies: 3377 dependencies:
2867 big.js "^3.1.3" 3378 big.js "^5.2.2"
2868 emojis-list "^2.0.0" 3379 emojis-list "^2.0.0"
2869 json5 "^0.5.0" 3380 json5 "^1.0.1"
2870 3381
2871locate-path@^2.0.0: 3382locate-path@^2.0.0:
2872 version "2.0.0" 3383 version "2.0.0"
2873 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 3384 resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
3385 integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
2874 dependencies: 3386 dependencies:
2875 p-locate "^2.0.0" 3387 p-locate "^2.0.0"
2876 path-exists "^3.0.0" 3388 path-exists "^3.0.0"
2877 3389
2878lodash.assign@^4.2.0:
2879 version "4.2.0"
2880 resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
2881
2882lodash.camelcase@^4.3.0: 3390lodash.camelcase@^4.3.0:
2883 version "4.3.0" 3391 version "4.3.0"
2884 resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" 3392 resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
3393 integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
2885 3394
2886lodash.capitalize@^4.1.0: 3395lodash.capitalize@^4.1.0:
2887 version "4.2.1" 3396 version "4.2.1"
2888 resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" 3397 resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9"
2889 3398 integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk=
2890lodash.clonedeep@^4.3.2:
2891 version "4.5.0"
2892 resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
2893
2894lodash.cond@^4.3.0:
2895 version "4.5.2"
2896 resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
2897 3399
2898lodash.isplainobject@^4.0.6: 3400lodash.isplainobject@^4.0.6:
2899 version "4.0.6" 3401 version "4.0.6"
2900 resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 3402 resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
3403 integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
2901 3404
2902lodash.kebabcase@^4.0.0: 3405lodash.kebabcase@^4.0.0:
2903 version "4.1.1" 3406 version "4.1.1"
2904 resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" 3407 resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
3408 integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY=
2905 3409
2906lodash.memoize@^4.1.2: 3410lodash.memoize@^4.1.2:
2907 version "4.1.2" 3411 version "4.1.2"
2908 resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 3412 resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
2909 3413 integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
2910lodash.mergewith@^4.6.0:
2911 version "4.6.1"
2912 resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
2913 3414
2914lodash.some@^4.6.0: 3415lodash.some@^4.6.0:
2915 version "4.6.0" 3416 version "4.6.0"
2916 resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" 3417 resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
3418 integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
2917 3419
2918lodash.tail@^4.1.1: 3420lodash.tail@^4.1.1:
2919 version "4.1.1" 3421 version "4.1.1"
2920 resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" 3422 resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
3423 integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=
2921 3424
2922lodash.uniq@^4.5.0: 3425lodash.uniq@^4.5.0:
2923 version "4.5.0" 3426 version "4.5.0"
2924 resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" 3427 resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
3428 integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
2925 3429
2926lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.4: 3430lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.10:
2927 version "4.17.5" 3431 version "4.17.11"
2928 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" 3432 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
3433 integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
2929 3434
2930longest@^1.0.1: 3435longest@^1.0.1:
2931 version "1.0.1" 3436 version "1.0.1"
2932 resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 3437 resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
3438 integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
2933 3439
2934loose-envify@^1.0.0: 3440loose-envify@^1.0.0:
2935 version "1.3.1" 3441 version "1.4.0"
2936 resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 3442 resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
3443 integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
2937 dependencies: 3444 dependencies:
2938 js-tokens "^3.0.0" 3445 js-tokens "^3.0.0 || ^4.0.0"
2939 3446
2940loud-rejection@^1.0.0: 3447loud-rejection@^1.0.0:
2941 version "1.6.0" 3448 version "1.6.0"
2942 resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 3449 resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
3450 integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
2943 dependencies: 3451 dependencies:
2944 currently-unhandled "^0.4.1" 3452 currently-unhandled "^0.4.1"
2945 signal-exit "^3.0.0" 3453 signal-exit "^3.0.0"
2946 3454
2947lru-cache@^4.0.1: 3455lru-cache@^4.0.1:
2948 version "4.1.1" 3456 version "4.1.5"
2949 resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 3457 resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
3458 integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
2950 dependencies: 3459 dependencies:
2951 pseudomap "^1.0.2" 3460 pseudomap "^1.0.2"
2952 yallist "^2.1.2" 3461 yallist "^2.1.2"
2953 3462
2954macaddress@^0.2.8:
2955 version "0.2.8"
2956 resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
2957
2958make-dir@^1.0.0: 3463make-dir@^1.0.0:
2959 version "1.1.0" 3464 version "1.3.0"
2960 resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" 3465 resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
3466 integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
2961 dependencies: 3467 dependencies:
2962 pify "^3.0.0" 3468 pify "^3.0.0"
2963 3469
3470map-cache@^0.2.2:
3471 version "0.2.2"
3472 resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
3473 integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
3474
2964map-obj@^1.0.0, map-obj@^1.0.1: 3475map-obj@^1.0.0, map-obj@^1.0.1:
2965 version "1.0.1" 3476 version "1.0.1"
2966 resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 3477 resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
3478 integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
3479
3480map-visit@^1.0.0:
3481 version "1.0.0"
3482 resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
3483 integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
3484 dependencies:
3485 object-visit "^1.0.0"
2967 3486
2968math-expression-evaluator@^1.2.14: 3487math-expression-evaluator@^1.2.14:
2969 version "1.2.17" 3488 version "1.2.17"
2970 resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" 3489 resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
3490 integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
2971 3491
2972md5.js@^1.3.4: 3492md5.js@^1.3.4:
2973 version "1.3.4" 3493 version "1.3.5"
2974 resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" 3494 resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
3495 integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
2975 dependencies: 3496 dependencies:
2976 hash-base "^3.0.0" 3497 hash-base "^3.0.0"
2977 inherits "^2.0.1" 3498 inherits "^2.0.1"
3499 safe-buffer "^5.1.2"
2978 3500
2979mem@^1.1.0: 3501mem@^1.1.0:
2980 version "1.1.0" 3502 version "1.1.0"
2981 resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 3503 resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
3504 integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
2982 dependencies: 3505 dependencies:
2983 mimic-fn "^1.0.0" 3506 mimic-fn "^1.0.0"
2984 3507
2985memory-fs@^0.4.0, memory-fs@~0.4.1: 3508memory-fs@^0.4.0, memory-fs@~0.4.1:
2986 version "0.4.1" 3509 version "0.4.1"
2987 resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 3510 resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
3511 integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
2988 dependencies: 3512 dependencies:
2989 errno "^0.1.3" 3513 errno "^0.1.3"
2990 readable-stream "^2.0.1" 3514 readable-stream "^2.0.1"
@@ -2992,6 +3516,7 @@ memory-fs@^0.4.0, memory-fs@~0.4.1:
2992meow@^3.7.0: 3516meow@^3.7.0:
2993 version "3.7.0" 3517 version "3.7.0"
2994 resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 3518 resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
3519 integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
2995 dependencies: 3520 dependencies:
2996 camelcase-keys "^2.0.0" 3521 camelcase-keys "^2.0.0"
2997 decamelize "^1.1.2" 3522 decamelize "^1.1.2"
@@ -3005,81 +3530,118 @@ meow@^3.7.0:
3005 trim-newlines "^1.0.0" 3530 trim-newlines "^1.0.0"
3006 3531
3007merge@^1.2.0: 3532merge@^1.2.0:
3008 version "1.2.0" 3533 version "1.2.1"
3009 resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" 3534 resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
3010 3535 integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
3011micromatch@^2.1.5: 3536
3012 version "2.3.11" 3537micromatch@^3.1.10, micromatch@^3.1.4:
3013 resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 3538 version "3.1.10"
3014 dependencies: 3539 resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
3015 arr-diff "^2.0.0" 3540 integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
3016 array-unique "^0.2.1" 3541 dependencies:
3017 braces "^1.8.2" 3542 arr-diff "^4.0.0"
3018 expand-brackets "^0.1.4" 3543 array-unique "^0.3.2"
3019 extglob "^0.3.1" 3544 braces "^2.3.1"
3020 filename-regex "^2.0.0" 3545 define-property "^2.0.2"
3021 is-extglob "^1.0.0" 3546 extend-shallow "^3.0.2"
3022 is-glob "^2.0.1" 3547 extglob "^2.0.4"
3023 kind-of "^3.0.2" 3548 fragment-cache "^0.2.1"
3024 normalize-path "^2.0.1" 3549 kind-of "^6.0.2"
3025 object.omit "^2.0.0" 3550 nanomatch "^1.2.9"
3026 parse-glob "^3.0.4" 3551 object.pick "^1.3.0"
3027 regex-cache "^0.4.2" 3552 regex-not "^1.0.0"
3553 snapdragon "^0.8.1"
3554 to-regex "^3.0.2"
3028 3555
3029miller-rabin@^4.0.0: 3556miller-rabin@^4.0.0:
3030 version "4.0.1" 3557 version "4.0.1"
3031 resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 3558 resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
3559 integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
3032 dependencies: 3560 dependencies:
3033 bn.js "^4.0.0" 3561 bn.js "^4.0.0"
3034 brorand "^1.0.1" 3562 brorand "^1.0.1"
3035 3563
3036mime-db@~1.30.0: 3564mime-db@1.40.0:
3037 version "1.30.0" 3565 version "1.40.0"
3038 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 3566 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
3567 integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
3039 3568
3040mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: 3569mime-types@^2.1.12, mime-types@~2.1.19:
3041 version "2.1.17" 3570 version "2.1.24"
3042 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 3571 resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
3572 integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
3043 dependencies: 3573 dependencies:
3044 mime-db "~1.30.0" 3574 mime-db "1.40.0"
3045 3575
3046mime@^1.4.1: 3576mime@^1.4.1:
3047 version "1.6.0" 3577 version "1.6.0"
3048 resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 3578 resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
3579 integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
3049 3580
3050mimic-fn@^1.0.0: 3581mimic-fn@^1.0.0:
3051 version "1.2.0" 3582 version "1.2.0"
3052 resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 3583 resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
3584 integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
3053 3585
3054minimalistic-assert@^1.0.0: 3586minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
3055 version "1.0.0" 3587 version "1.0.1"
3056 resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 3588 resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
3589 integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
3057 3590
3058minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 3591minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
3059 version "1.0.1" 3592 version "1.0.1"
3060 resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 3593 resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
3594 integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
3061 3595
3062"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: 3596minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2:
3063 version "3.0.4" 3597 version "3.0.4"
3064 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 3598 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
3599 integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
3065 dependencies: 3600 dependencies:
3066 brace-expansion "^1.1.7" 3601 brace-expansion "^1.1.7"
3067 3602
3068minimist@0.0.8: 3603minimist@0.0.8:
3069 version "0.0.8" 3604 version "0.0.8"
3070 resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 3605 resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
3606 integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
3071 3607
3072minimist@1.1.x: 3608minimist@1.1.x:
3073 version "1.1.3" 3609 version "1.1.3"
3074 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" 3610 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8"
3611 integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=
3075 3612
3076minimist@^1.1.3, minimist@^1.2.0: 3613minimist@^1.1.3, minimist@^1.2.0:
3077 version "1.2.0" 3614 version "1.2.0"
3078 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 3615 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
3616 integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
3617
3618minipass@^2.2.1, minipass@^2.3.4:
3619 version "2.3.5"
3620 resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
3621 integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
3622 dependencies:
3623 safe-buffer "^5.1.2"
3624 yallist "^3.0.0"
3625
3626minizlib@^1.1.1:
3627 version "1.2.1"
3628 resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
3629 integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
3630 dependencies:
3631 minipass "^2.2.1"
3632
3633mixin-deep@^1.2.0:
3634 version "1.3.1"
3635 resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
3636 integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
3637 dependencies:
3638 for-in "^1.0.2"
3639 is-extendable "^1.0.1"
3079 3640
3080mixin-object@^2.0.1: 3641mixin-object@^2.0.1:
3081 version "2.0.1" 3642 version "2.0.1"
3082 resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" 3643 resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
3644 integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
3083 dependencies: 3645 dependencies:
3084 for-in "^0.1.3" 3646 for-in "^0.1.3"
3085 is-extendable "^0.1.1" 3647 is-extendable "^0.1.1"
@@ -3087,50 +3649,98 @@ mixin-object@^2.0.1:
3087"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: 3649"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
3088 version "0.5.1" 3650 version "0.5.1"
3089 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 3651 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
3652 integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
3090 dependencies: 3653 dependencies:
3091 minimist "0.0.8" 3654 minimist "0.0.8"
3092 3655
3093ms@2.0.0: 3656ms@2.0.0:
3094 version "2.0.0" 3657 version "2.0.0"
3095 resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 3658 resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
3659 integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
3660
3661ms@^2.1.1:
3662 version "2.1.1"
3663 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
3664 integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
3096 3665
3097mute-stream@0.0.5: 3666mute-stream@0.0.5:
3098 version "0.0.5" 3667 version "0.0.5"
3099 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 3668 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
3669 integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=
3100 3670
3101mute-stream@0.0.7: 3671mute-stream@0.0.7:
3102 version "0.0.7" 3672 version "0.0.7"
3103 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 3673 resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
3104 3674 integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
3105nan@^2.3.0, nan@^2.3.2: 3675
3106 version "2.8.0" 3676nan@^2.12.1, nan@^2.13.2:
3107 resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" 3677 version "2.14.0"
3678 resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
3679 integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
3680
3681nanomatch@^1.2.9:
3682 version "1.2.13"
3683 resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
3684 integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
3685 dependencies:
3686 arr-diff "^4.0.0"
3687 array-unique "^0.3.2"
3688 define-property "^2.0.2"
3689 extend-shallow "^3.0.2"
3690 fragment-cache "^0.2.1"
3691 is-windows "^1.0.2"
3692 kind-of "^6.0.2"
3693 object.pick "^1.3.0"
3694 regex-not "^1.0.0"
3695 snapdragon "^0.8.1"
3696 to-regex "^3.0.1"
3108 3697
3109natural-compare@^1.4.0: 3698natural-compare@^1.4.0:
3110 version "1.4.0" 3699 version "1.4.0"
3111 resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 3700 resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
3701 integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
3112 3702
3113node-gyp@^3.3.1: 3703needle@^2.2.1:
3114 version "3.6.2" 3704 version "2.4.0"
3115 resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" 3705 resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
3706 integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
3707 dependencies:
3708 debug "^3.2.6"
3709 iconv-lite "^0.4.4"
3710 sax "^1.2.4"
3711
3712neo-async@^2.5.0:
3713 version "2.6.1"
3714 resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
3715 integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
3716
3717next-tick@^1.0.0:
3718 version "1.0.0"
3719 resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
3720 integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
3721
3722node-gyp@^3.8.0:
3723 version "3.8.0"
3724 resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
3725 integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
3116 dependencies: 3726 dependencies:
3117 fstream "^1.0.0" 3727 fstream "^1.0.0"
3118 glob "^7.0.3" 3728 glob "^7.0.3"
3119 graceful-fs "^4.1.2" 3729 graceful-fs "^4.1.2"
3120 minimatch "^3.0.2"
3121 mkdirp "^0.5.0" 3730 mkdirp "^0.5.0"
3122 nopt "2 || 3" 3731 nopt "2 || 3"
3123 npmlog "0 || 1 || 2 || 3 || 4" 3732 npmlog "0 || 1 || 2 || 3 || 4"
3124 osenv "0" 3733 osenv "0"
3125 request "2" 3734 request "^2.87.0"
3126 rimraf "2" 3735 rimraf "2"
3127 semver "~5.3.0" 3736 semver "~5.3.0"
3128 tar "^2.0.0" 3737 tar "^2.0.0"
3129 which "1" 3738 which "1"
3130 3739
3131node-libs-browser@^2.0.0: 3740node-libs-browser@^2.0.0:
3132 version "2.1.0" 3741 version "2.2.0"
3133 resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" 3742 resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77"
3743 integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==
3134 dependencies: 3744 dependencies:
3135 assert "^1.1.1" 3745 assert "^1.1.1"
3136 browserify-zlib "^0.2.0" 3746 browserify-zlib "^0.2.0"
@@ -3139,7 +3749,7 @@ node-libs-browser@^2.0.0:
3139 constants-browserify "^1.0.0" 3749 constants-browserify "^1.0.0"
3140 crypto-browserify "^3.11.0" 3750 crypto-browserify "^3.11.0"
3141 domain-browser "^1.1.1" 3751 domain-browser "^1.1.1"
3142 events "^1.0.0" 3752 events "^3.0.0"
3143 https-browserify "^1.0.0" 3753 https-browserify "^1.0.0"
3144 os-browserify "^0.3.0" 3754 os-browserify "^0.3.0"
3145 path-browserify "0.0.0" 3755 path-browserify "0.0.0"
@@ -3153,28 +3763,29 @@ node-libs-browser@^2.0.0:
3153 timers-browserify "^2.0.4" 3763 timers-browserify "^2.0.4"
3154 tty-browserify "0.0.0" 3764 tty-browserify "0.0.0"
3155 url "^0.11.0" 3765 url "^0.11.0"
3156 util "^0.10.3" 3766 util "^0.11.0"
3157 vm-browserify "0.0.4" 3767 vm-browserify "0.0.4"
3158 3768
3159node-pre-gyp@^0.6.39: 3769node-pre-gyp@^0.12.0:
3160 version "0.6.39" 3770 version "0.12.0"
3161 resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" 3771 resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
3772 integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
3162 dependencies: 3773 dependencies:
3163 detect-libc "^1.0.2" 3774 detect-libc "^1.0.2"
3164 hawk "3.1.3"
3165 mkdirp "^0.5.1" 3775 mkdirp "^0.5.1"
3776 needle "^2.2.1"
3166 nopt "^4.0.1" 3777 nopt "^4.0.1"
3778 npm-packlist "^1.1.6"
3167 npmlog "^4.0.2" 3779 npmlog "^4.0.2"
3168 rc "^1.1.7" 3780 rc "^1.2.7"
3169 request "2.81.0"
3170 rimraf "^2.6.1" 3781 rimraf "^2.6.1"
3171 semver "^5.3.0" 3782 semver "^5.3.0"
3172 tar "^2.2.1" 3783 tar "^4"
3173 tar-pack "^3.4.0"
3174 3784
3175node-sass@^4.7.2: 3785node-sass@^4.12.0:
3176 version "4.7.2" 3786 version "4.12.0"
3177 resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e" 3787 resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017"
3788 integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==
3178 dependencies: 3789 dependencies:
3179 async-foreach "^0.1.3" 3790 async-foreach "^0.1.3"
3180 chalk "^1.1.1" 3791 chalk "^1.1.1"
@@ -3183,15 +3794,13 @@ node-sass@^4.7.2:
3183 get-stdin "^4.0.1" 3794 get-stdin "^4.0.1"
3184 glob "^7.0.3" 3795 glob "^7.0.3"
3185 in-publish "^2.0.0" 3796 in-publish "^2.0.0"
3186 lodash.assign "^4.2.0" 3797 lodash "^4.17.11"
3187 lodash.clonedeep "^4.3.2"
3188 lodash.mergewith "^4.6.0"
3189 meow "^3.7.0" 3798 meow "^3.7.0"
3190 mkdirp "^0.5.1" 3799 mkdirp "^0.5.1"
3191 nan "^2.3.2" 3800 nan "^2.13.2"
3192 node-gyp "^3.3.1" 3801 node-gyp "^3.8.0"
3193 npmlog "^4.0.0" 3802 npmlog "^4.0.0"
3194 request "~2.79.0" 3803 request "^2.88.0"
3195 sass-graph "^2.2.4" 3804 sass-graph "^2.2.4"
3196 stdout-stream "^1.4.0" 3805 stdout-stream "^1.4.0"
3197 "true-case-path" "^1.0.2" 3806 "true-case-path" "^1.0.2"
@@ -3199,53 +3808,79 @@ node-sass@^4.7.2:
3199"nopt@2 || 3": 3808"nopt@2 || 3":
3200 version "3.0.6" 3809 version "3.0.6"
3201 resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 3810 resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
3811 integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
3202 dependencies: 3812 dependencies:
3203 abbrev "1" 3813 abbrev "1"
3204 3814
3205nopt@^4.0.1: 3815nopt@^4.0.1:
3206 version "4.0.1" 3816 version "4.0.1"
3207 resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 3817 resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
3818 integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
3208 dependencies: 3819 dependencies:
3209 abbrev "1" 3820 abbrev "1"
3210 osenv "^0.1.4" 3821 osenv "^0.1.4"
3211 3822
3212normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 3823normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
3213 version "2.4.0" 3824 version "2.5.0"
3214 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 3825 resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
3826 integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
3215 dependencies: 3827 dependencies:
3216 hosted-git-info "^2.1.4" 3828 hosted-git-info "^2.1.4"
3217 is-builtin-module "^1.0.0" 3829 resolve "^1.10.0"
3218 semver "2 || 3 || 4 || 5" 3830 semver "2 || 3 || 4 || 5"
3219 validate-npm-package-license "^3.0.1" 3831 validate-npm-package-license "^3.0.1"
3220 3832
3221normalize-path@^2.0.0, normalize-path@^2.0.1: 3833normalize-path@^2.1.1:
3222 version "2.1.1" 3834 version "2.1.1"
3223 resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 3835 resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
3836 integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
3224 dependencies: 3837 dependencies:
3225 remove-trailing-separator "^1.0.1" 3838 remove-trailing-separator "^1.0.1"
3226 3839
3840normalize-path@^3.0.0:
3841 version "3.0.0"
3842 resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
3843 integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
3844
3227normalize-range@^0.1.2: 3845normalize-range@^0.1.2:
3228 version "0.1.2" 3846 version "0.1.2"
3229 resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 3847 resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
3848 integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
3230 3849
3231normalize-url@^1.4.0: 3850normalize-url@^1.4.0:
3232 version "1.9.1" 3851 version "1.9.1"
3233 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" 3852 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
3853 integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
3234 dependencies: 3854 dependencies:
3235 object-assign "^4.0.1" 3855 object-assign "^4.0.1"
3236 prepend-http "^1.0.0" 3856 prepend-http "^1.0.0"
3237 query-string "^4.1.0" 3857 query-string "^4.1.0"
3238 sort-keys "^1.0.0" 3858 sort-keys "^1.0.0"
3239 3859
3860npm-bundled@^1.0.1:
3861 version "1.0.6"
3862 resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
3863 integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
3864
3865npm-packlist@^1.1.6:
3866 version "1.4.1"
3867 resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
3868 integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
3869 dependencies:
3870 ignore-walk "^3.0.1"
3871 npm-bundled "^1.0.1"
3872
3240npm-run-path@^2.0.0: 3873npm-run-path@^2.0.0:
3241 version "2.0.2" 3874 version "2.0.2"
3242 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 3875 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
3876 integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
3243 dependencies: 3877 dependencies:
3244 path-key "^2.0.0" 3878 path-key "^2.0.0"
3245 3879
3246"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: 3880"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
3247 version "4.1.2" 3881 version "4.1.2"
3248 resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 3882 resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
3883 integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
3249 dependencies: 3884 dependencies:
3250 are-we-there-yet "~1.1.2" 3885 are-we-there-yet "~1.1.2"
3251 console-control-strings "~1.1.0" 3886 console-control-strings "~1.1.0"
@@ -3255,45 +3890,74 @@ npm-run-path@^2.0.0:
3255num2fraction@^1.2.2: 3890num2fraction@^1.2.2:
3256 version "1.2.2" 3891 version "1.2.2"
3257 resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" 3892 resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
3893 integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
3258 3894
3259number-is-nan@^1.0.0: 3895number-is-nan@^1.0.0:
3260 version "1.0.1" 3896 version "1.0.1"
3261 resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 3897 resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
3898 integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
3262 3899
3263oauth-sign@~0.8.1, oauth-sign@~0.8.2: 3900oauth-sign@~0.9.0:
3264 version "0.8.2" 3901 version "0.9.0"
3265 resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 3902 resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
3903 integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
3266 3904
3267object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: 3905object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
3268 version "4.1.1" 3906 version "4.1.1"
3269 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 3907 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
3908 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
3270 3909
3271object.omit@^2.0.0: 3910object-copy@^0.1.0:
3272 version "2.0.1" 3911 version "0.1.0"
3273 resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 3912 resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
3913 integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
3274 dependencies: 3914 dependencies:
3275 for-own "^0.1.4" 3915 copy-descriptor "^0.1.0"
3276 is-extendable "^0.1.1" 3916 define-property "^0.2.5"
3917 kind-of "^3.0.3"
3918
3919object-keys@^1.0.12:
3920 version "1.1.1"
3921 resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
3922 integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
3923
3924object-visit@^1.0.0:
3925 version "1.0.1"
3926 resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
3927 integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
3928 dependencies:
3929 isobject "^3.0.0"
3930
3931object.pick@^1.3.0:
3932 version "1.3.0"
3933 resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
3934 integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
3935 dependencies:
3936 isobject "^3.0.1"
3277 3937
3278once@^1.3.0, once@^1.3.3: 3938once@^1.3.0:
3279 version "1.4.0" 3939 version "1.4.0"
3280 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 3940 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
3941 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
3281 dependencies: 3942 dependencies:
3282 wrappy "1" 3943 wrappy "1"
3283 3944
3284onetime@^1.0.0: 3945onetime@^1.0.0:
3285 version "1.1.0" 3946 version "1.1.0"
3286 resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 3947 resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
3948 integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=
3287 3949
3288onetime@^2.0.0: 3950onetime@^2.0.0:
3289 version "2.0.1" 3951 version "2.0.1"
3290 resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 3952 resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
3953 integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
3291 dependencies: 3954 dependencies:
3292 mimic-fn "^1.0.0" 3955 mimic-fn "^1.0.0"
3293 3956
3294optionator@^0.8.1, optionator@^0.8.2: 3957optionator@^0.8.1, optionator@^0.8.2:
3295 version "0.8.2" 3958 version "0.8.2"
3296 resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 3959 resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
3960 integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
3297 dependencies: 3961 dependencies:
3298 deep-is "~0.1.3" 3962 deep-is "~0.1.3"
3299 fast-levenshtein "~2.0.4" 3963 fast-levenshtein "~2.0.4"
@@ -3305,20 +3969,24 @@ optionator@^0.8.1, optionator@^0.8.2:
3305os-browserify@^0.3.0: 3969os-browserify@^0.3.0:
3306 version "0.3.0" 3970 version "0.3.0"
3307 resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 3971 resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
3972 integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
3308 3973
3309os-homedir@^1.0.0: 3974os-homedir@^1.0.0:
3310 version "1.0.2" 3975 version "1.0.2"
3311 resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 3976 resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
3977 integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
3312 3978
3313os-locale@^1.4.0: 3979os-locale@^1.4.0:
3314 version "1.4.0" 3980 version "1.4.0"
3315 resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 3981 resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
3982 integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
3316 dependencies: 3983 dependencies:
3317 lcid "^1.0.0" 3984 lcid "^1.0.0"
3318 3985
3319os-locale@^2.0.0: 3986os-locale@^2.0.0:
3320 version "2.1.0" 3987 version "2.1.0"
3321 resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 3988 resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
3989 integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
3322 dependencies: 3990 dependencies:
3323 execa "^0.7.0" 3991 execa "^0.7.0"
3324 lcid "^1.0.0" 3992 lcid "^1.0.0"
@@ -3327,10 +3995,12 @@ os-locale@^2.0.0:
3327os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: 3995os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
3328 version "1.0.2" 3996 version "1.0.2"
3329 resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 3997 resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
3998 integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
3330 3999
3331osenv@0, osenv@^0.1.4: 4000osenv@0, osenv@^0.1.4:
3332 version "0.1.4" 4001 version "0.1.5"
3333 resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 4002 resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
4003 integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
3334 dependencies: 4004 dependencies:
3335 os-homedir "^1.0.0" 4005 os-homedir "^1.0.0"
3336 os-tmpdir "^1.0.0" 4006 os-tmpdir "^1.0.0"
@@ -3338,85 +4008,102 @@ osenv@0, osenv@^0.1.4:
3338p-finally@^1.0.0: 4008p-finally@^1.0.0:
3339 version "1.0.0" 4009 version "1.0.0"
3340 resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 4010 resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
4011 integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
3341 4012
3342p-limit@^1.1.0: 4013p-limit@^1.1.0:
3343 version "1.2.0" 4014 version "1.3.0"
3344 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" 4015 resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
4016 integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
3345 dependencies: 4017 dependencies:
3346 p-try "^1.0.0" 4018 p-try "^1.0.0"
3347 4019
3348p-locate@^2.0.0: 4020p-locate@^2.0.0:
3349 version "2.0.0" 4021 version "2.0.0"
3350 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 4022 resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
4023 integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
3351 dependencies: 4024 dependencies:
3352 p-limit "^1.1.0" 4025 p-limit "^1.1.0"
3353 4026
3354p-try@^1.0.0: 4027p-try@^1.0.0:
3355 version "1.0.0" 4028 version "1.0.0"
3356 resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 4029 resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
4030 integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
3357 4031
3358pako@~1.0.5: 4032pako@~1.0.5:
3359 version "1.0.6" 4033 version "1.0.10"
3360 resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" 4034 resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
4035 integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
3361 4036
3362parse-asn1@^5.0.0: 4037parse-asn1@^5.0.0:
3363 version "5.1.0" 4038 version "5.1.4"
3364 resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" 4039 resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
4040 integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
3365 dependencies: 4041 dependencies:
3366 asn1.js "^4.0.0" 4042 asn1.js "^4.0.0"
3367 browserify-aes "^1.0.0" 4043 browserify-aes "^1.0.0"
3368 create-hash "^1.1.0" 4044 create-hash "^1.1.0"
3369 evp_bytestokey "^1.0.0" 4045 evp_bytestokey "^1.0.0"
3370 pbkdf2 "^3.0.3" 4046 pbkdf2 "^3.0.3"
3371 4047 safe-buffer "^5.1.1"
3372parse-glob@^3.0.4:
3373 version "3.0.4"
3374 resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
3375 dependencies:
3376 glob-base "^0.3.0"
3377 is-dotfile "^1.0.0"
3378 is-extglob "^1.0.0"
3379 is-glob "^2.0.0"
3380 4048
3381parse-json@^2.2.0: 4049parse-json@^2.2.0:
3382 version "2.2.0" 4050 version "2.2.0"
3383 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 4051 resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
4052 integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
3384 dependencies: 4053 dependencies:
3385 error-ex "^1.2.0" 4054 error-ex "^1.2.0"
3386 4055
4056pascalcase@^0.1.1:
4057 version "0.1.1"
4058 resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
4059 integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
4060
3387path-browserify@0.0.0: 4061path-browserify@0.0.0:
3388 version "0.0.0" 4062 version "0.0.0"
3389 resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 4063 resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
4064 integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
4065
4066path-dirname@^1.0.0:
4067 version "1.0.2"
4068 resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
4069 integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
3390 4070
3391path-exists@^2.0.0: 4071path-exists@^2.0.0:
3392 version "2.1.0" 4072 version "2.1.0"
3393 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 4073 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
4074 integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
3394 dependencies: 4075 dependencies:
3395 pinkie-promise "^2.0.0" 4076 pinkie-promise "^2.0.0"
3396 4077
3397path-exists@^3.0.0: 4078path-exists@^3.0.0:
3398 version "3.0.0" 4079 version "3.0.0"
3399 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 4080 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
4081 integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
3400 4082
3401path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 4083path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
3402 version "1.0.1" 4084 version "1.0.1"
3403 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 4085 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
4086 integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
3404 4087
3405path-is-inside@^1.0.1, path-is-inside@^1.0.2: 4088path-is-inside@^1.0.1, path-is-inside@^1.0.2:
3406 version "1.0.2" 4089 version "1.0.2"
3407 resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 4090 resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
4091 integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
3408 4092
3409path-key@^2.0.0: 4093path-key@^2.0.0:
3410 version "2.0.1" 4094 version "2.0.1"
3411 resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 4095 resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
4096 integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
3412 4097
3413path-parse@^1.0.5: 4098path-parse@^1.0.6:
3414 version "1.0.5" 4099 version "1.0.6"
3415 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 4100 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
4101 integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
3416 4102
3417path-type@^1.0.0: 4103path-type@^1.0.0:
3418 version "1.1.0" 4104 version "1.1.0"
3419 resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 4105 resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
4106 integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
3420 dependencies: 4107 dependencies:
3421 graceful-fs "^4.1.2" 4108 graceful-fs "^4.1.2"
3422 pify "^2.0.0" 4109 pify "^2.0.0"
@@ -3425,12 +4112,14 @@ path-type@^1.0.0:
3425path-type@^2.0.0: 4112path-type@^2.0.0:
3426 version "2.0.0" 4113 version "2.0.0"
3427 resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 4114 resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
4115 integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
3428 dependencies: 4116 dependencies:
3429 pify "^2.0.0" 4117 pify "^2.0.0"
3430 4118
3431pbkdf2@^3.0.3: 4119pbkdf2@^3.0.3:
3432 version "3.0.14" 4120 version "3.0.17"
3433 resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" 4121 resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
4122 integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
3434 dependencies: 4123 dependencies:
3435 create-hash "^1.1.2" 4124 create-hash "^1.1.2"
3436 create-hmac "^1.1.4" 4125 create-hmac "^1.1.4"
@@ -3438,55 +4127,59 @@ pbkdf2@^3.0.3:
3438 safe-buffer "^5.0.1" 4127 safe-buffer "^5.0.1"
3439 sha.js "^2.4.8" 4128 sha.js "^2.4.8"
3440 4129
3441performance-now@^0.2.0:
3442 version "0.2.0"
3443 resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
3444
3445performance-now@^2.1.0: 4130performance-now@^2.1.0:
3446 version "2.1.0" 4131 version "2.1.0"
3447 resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 4132 resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
4133 integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
3448 4134
3449pify@^2.0.0: 4135pify@^2.0.0:
3450 version "2.3.0" 4136 version "2.3.0"
3451 resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 4137 resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
4138 integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
3452 4139
3453pify@^3.0.0: 4140pify@^3.0.0:
3454 version "3.0.0" 4141 version "3.0.0"
3455 resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 4142 resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
4143 integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
3456 4144
3457pinkie-promise@^2.0.0: 4145pinkie-promise@^2.0.0:
3458 version "2.0.1" 4146 version "2.0.1"
3459 resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 4147 resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
4148 integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
3460 dependencies: 4149 dependencies:
3461 pinkie "^2.0.0" 4150 pinkie "^2.0.0"
3462 4151
3463pinkie@^2.0.0: 4152pinkie@^2.0.0:
3464 version "2.0.4" 4153 version "2.0.4"
3465 resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 4154 resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
3466 4155 integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
3467pkg-dir@^1.0.0:
3468 version "1.0.0"
3469 resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
3470 dependencies:
3471 find-up "^1.0.0"
3472 4156
3473pkg-dir@^2.0.0: 4157pkg-dir@^2.0.0:
3474 version "2.0.0" 4158 version "2.0.0"
3475 resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 4159 resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
4160 integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
3476 dependencies: 4161 dependencies:
3477 find-up "^2.1.0" 4162 find-up "^2.1.0"
3478 4163
3479pluralize@^1.2.1: 4164pluralize@^1.2.1:
3480 version "1.2.1" 4165 version "1.2.1"
3481 resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 4166 resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
4167 integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=
3482 4168
3483pluralize@^7.0.0: 4169pluralize@^7.0.0:
3484 version "7.0.0" 4170 version "7.0.0"
3485 resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 4171 resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
4172 integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
4173
4174posix-character-classes@^0.1.0:
4175 version "0.1.1"
4176 resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
4177 integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
3486 4178
3487postcss-calc@^5.2.0: 4179postcss-calc@^5.2.0:
3488 version "5.3.1" 4180 version "5.3.1"
3489 resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" 4181 resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
4182 integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14=
3490 dependencies: 4183 dependencies:
3491 postcss "^5.0.2" 4184 postcss "^5.0.2"
3492 postcss-message-helpers "^2.0.0" 4185 postcss-message-helpers "^2.0.0"
@@ -3495,6 +4188,7 @@ postcss-calc@^5.2.0:
3495postcss-colormin@^2.1.8: 4188postcss-colormin@^2.1.8:
3496 version "2.2.2" 4189 version "2.2.2"
3497 resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" 4190 resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
4191 integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=
3498 dependencies: 4192 dependencies:
3499 colormin "^1.0.5" 4193 colormin "^1.0.5"
3500 postcss "^5.0.13" 4194 postcss "^5.0.13"
@@ -3503,6 +4197,7 @@ postcss-colormin@^2.1.8:
3503postcss-convert-values@^2.3.4: 4197postcss-convert-values@^2.3.4:
3504 version "2.6.1" 4198 version "2.6.1"
3505 resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" 4199 resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
4200 integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=
3506 dependencies: 4201 dependencies:
3507 postcss "^5.0.11" 4202 postcss "^5.0.11"
3508 postcss-value-parser "^3.1.2" 4203 postcss-value-parser "^3.1.2"
@@ -3510,44 +4205,50 @@ postcss-convert-values@^2.3.4:
3510postcss-discard-comments@^2.0.4: 4205postcss-discard-comments@^2.0.4:
3511 version "2.0.4" 4206 version "2.0.4"
3512 resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" 4207 resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
4208 integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=
3513 dependencies: 4209 dependencies:
3514 postcss "^5.0.14" 4210 postcss "^5.0.14"
3515 4211
3516postcss-discard-duplicates@^2.0.1: 4212postcss-discard-duplicates@^2.0.1:
3517 version "2.1.0" 4213 version "2.1.0"
3518 resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" 4214 resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
4215 integrity sha1-uavye4isGIFYpesSq8riAmO5GTI=
3519 dependencies: 4216 dependencies:
3520 postcss "^5.0.4" 4217 postcss "^5.0.4"
3521 4218
3522postcss-discard-empty@^2.0.1: 4219postcss-discard-empty@^2.0.1:
3523 version "2.1.0" 4220 version "2.1.0"
3524 resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" 4221 resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
4222 integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=
3525 dependencies: 4223 dependencies:
3526 postcss "^5.0.14" 4224 postcss "^5.0.14"
3527 4225
3528postcss-discard-overridden@^0.1.1: 4226postcss-discard-overridden@^0.1.1:
3529 version "0.1.1" 4227 version "0.1.1"
3530 resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" 4228 resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
4229 integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=
3531 dependencies: 4230 dependencies:
3532 postcss "^5.0.16" 4231 postcss "^5.0.16"
3533 4232
3534postcss-discard-unused@^2.2.1: 4233postcss-discard-unused@^2.2.1:
3535 version "2.2.3" 4234 version "2.2.3"
3536 resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" 4235 resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
4236 integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=
3537 dependencies: 4237 dependencies:
3538 postcss "^5.0.14" 4238 postcss "^5.0.14"
3539 uniqs "^2.0.0" 4239 uniqs "^2.0.0"
3540 4240
3541postcss-filter-plugins@^2.0.0: 4241postcss-filter-plugins@^2.0.0:
3542 version "2.0.2" 4242 version "2.0.3"
3543 resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" 4243 resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
4244 integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==
3544 dependencies: 4245 dependencies:
3545 postcss "^5.0.4" 4246 postcss "^5.0.4"
3546 uniqid "^4.0.0"
3547 4247
3548postcss-merge-idents@^2.1.5: 4248postcss-merge-idents@^2.1.5:
3549 version "2.1.7" 4249 version "2.1.7"
3550 resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" 4250 resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
4251 integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=
3551 dependencies: 4252 dependencies:
3552 has "^1.0.1" 4253 has "^1.0.1"
3553 postcss "^5.0.10" 4254 postcss "^5.0.10"
@@ -3556,12 +4257,14 @@ postcss-merge-idents@^2.1.5:
3556postcss-merge-longhand@^2.0.1: 4257postcss-merge-longhand@^2.0.1:
3557 version "2.0.2" 4258 version "2.0.2"
3558 resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" 4259 resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
4260 integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=
3559 dependencies: 4261 dependencies:
3560 postcss "^5.0.4" 4262 postcss "^5.0.4"
3561 4263
3562postcss-merge-rules@^2.0.3: 4264postcss-merge-rules@^2.0.3:
3563 version "2.1.2" 4265 version "2.1.2"
3564 resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" 4266 resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
4267 integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE=
3565 dependencies: 4268 dependencies:
3566 browserslist "^1.5.2" 4269 browserslist "^1.5.2"
3567 caniuse-api "^1.5.2" 4270 caniuse-api "^1.5.2"
@@ -3572,10 +4275,12 @@ postcss-merge-rules@^2.0.3:
3572postcss-message-helpers@^2.0.0: 4275postcss-message-helpers@^2.0.0:
3573 version "2.0.0" 4276 version "2.0.0"
3574 resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" 4277 resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
4278 integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=
3575 4279
3576postcss-minify-font-values@^1.0.2: 4280postcss-minify-font-values@^1.0.2:
3577 version "1.0.5" 4281 version "1.0.5"
3578 resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" 4282 resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
4283 integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k=
3579 dependencies: 4284 dependencies:
3580 object-assign "^4.0.1" 4285 object-assign "^4.0.1"
3581 postcss "^5.0.4" 4286 postcss "^5.0.4"
@@ -3584,6 +4289,7 @@ postcss-minify-font-values@^1.0.2:
3584postcss-minify-gradients@^1.0.1: 4289postcss-minify-gradients@^1.0.1:
3585 version "1.0.5" 4290 version "1.0.5"
3586 resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" 4291 resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
4292 integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=
3587 dependencies: 4293 dependencies:
3588 postcss "^5.0.12" 4294 postcss "^5.0.12"
3589 postcss-value-parser "^3.3.0" 4295 postcss-value-parser "^3.3.0"
@@ -3591,6 +4297,7 @@ postcss-minify-gradients@^1.0.1:
3591postcss-minify-params@^1.0.4: 4297postcss-minify-params@^1.0.4:
3592 version "1.2.2" 4298 version "1.2.2"
3593 resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" 4299 resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
4300 integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=
3594 dependencies: 4301 dependencies:
3595 alphanum-sort "^1.0.1" 4302 alphanum-sort "^1.0.1"
3596 postcss "^5.0.2" 4303 postcss "^5.0.2"
@@ -3600,6 +4307,7 @@ postcss-minify-params@^1.0.4:
3600postcss-minify-selectors@^2.0.4: 4307postcss-minify-selectors@^2.0.4:
3601 version "2.1.1" 4308 version "2.1.1"
3602 resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" 4309 resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
4310 integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8=
3603 dependencies: 4311 dependencies:
3604 alphanum-sort "^1.0.2" 4312 alphanum-sort "^1.0.2"
3605 has "^1.0.1" 4313 has "^1.0.1"
@@ -3607,14 +4315,16 @@ postcss-minify-selectors@^2.0.4:
3607 postcss-selector-parser "^2.0.0" 4315 postcss-selector-parser "^2.0.0"
3608 4316
3609postcss-modules-extract-imports@^1.2.0: 4317postcss-modules-extract-imports@^1.2.0:
3610 version "1.2.0" 4318 version "1.2.1"
3611 resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" 4319 resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a"
4320 integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==
3612 dependencies: 4321 dependencies:
3613 postcss "^6.0.1" 4322 postcss "^6.0.1"
3614 4323
3615postcss-modules-local-by-default@^1.2.0: 4324postcss-modules-local-by-default@^1.2.0:
3616 version "1.2.0" 4325 version "1.2.0"
3617 resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" 4326 resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
4327 integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
3618 dependencies: 4328 dependencies:
3619 css-selector-tokenizer "^0.7.0" 4329 css-selector-tokenizer "^0.7.0"
3620 postcss "^6.0.1" 4330 postcss "^6.0.1"
@@ -3622,6 +4332,7 @@ postcss-modules-local-by-default@^1.2.0:
3622postcss-modules-scope@^1.1.0: 4332postcss-modules-scope@^1.1.0:
3623 version "1.1.0" 4333 version "1.1.0"
3624 resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" 4334 resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
4335 integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
3625 dependencies: 4336 dependencies:
3626 css-selector-tokenizer "^0.7.0" 4337 css-selector-tokenizer "^0.7.0"
3627 postcss "^6.0.1" 4338 postcss "^6.0.1"
@@ -3629,6 +4340,7 @@ postcss-modules-scope@^1.1.0:
3629postcss-modules-values@^1.3.0: 4340postcss-modules-values@^1.3.0:
3630 version "1.3.0" 4341 version "1.3.0"
3631 resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" 4342 resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
4343 integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
3632 dependencies: 4344 dependencies:
3633 icss-replace-symbols "^1.1.0" 4345 icss-replace-symbols "^1.1.0"
3634 postcss "^6.0.1" 4346 postcss "^6.0.1"
@@ -3636,12 +4348,14 @@ postcss-modules-values@^1.3.0:
3636postcss-normalize-charset@^1.1.0: 4348postcss-normalize-charset@^1.1.0:
3637 version "1.1.1" 4349 version "1.1.1"
3638 resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" 4350 resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
4351 integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E=
3639 dependencies: 4352 dependencies:
3640 postcss "^5.0.5" 4353 postcss "^5.0.5"
3641 4354
3642postcss-normalize-url@^3.0.7: 4355postcss-normalize-url@^3.0.7:
3643 version "3.0.8" 4356 version "3.0.8"
3644 resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" 4357 resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
4358 integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI=
3645 dependencies: 4359 dependencies:
3646 is-absolute-url "^2.0.0" 4360 is-absolute-url "^2.0.0"
3647 normalize-url "^1.4.0" 4361 normalize-url "^1.4.0"
@@ -3651,6 +4365,7 @@ postcss-normalize-url@^3.0.7:
3651postcss-ordered-values@^2.1.0: 4365postcss-ordered-values@^2.1.0:
3652 version "2.2.3" 4366 version "2.2.3"
3653 resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" 4367 resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
4368 integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=
3654 dependencies: 4369 dependencies:
3655 postcss "^5.0.4" 4370 postcss "^5.0.4"
3656 postcss-value-parser "^3.0.1" 4371 postcss-value-parser "^3.0.1"
@@ -3658,6 +4373,7 @@ postcss-ordered-values@^2.1.0:
3658postcss-reduce-idents@^2.2.2: 4373postcss-reduce-idents@^2.2.2:
3659 version "2.4.0" 4374 version "2.4.0"
3660 resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" 4375 resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
4376 integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=
3661 dependencies: 4377 dependencies:
3662 postcss "^5.0.4" 4378 postcss "^5.0.4"
3663 postcss-value-parser "^3.0.2" 4379 postcss-value-parser "^3.0.2"
@@ -3665,12 +4381,14 @@ postcss-reduce-idents@^2.2.2:
3665postcss-reduce-initial@^1.0.0: 4381postcss-reduce-initial@^1.0.0:
3666 version "1.0.1" 4382 version "1.0.1"
3667 resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" 4383 resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
4384 integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=
3668 dependencies: 4385 dependencies:
3669 postcss "^5.0.4" 4386 postcss "^5.0.4"
3670 4387
3671postcss-reduce-transforms@^1.0.3: 4388postcss-reduce-transforms@^1.0.3:
3672 version "1.0.4" 4389 version "1.0.4"
3673 resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" 4390 resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
4391 integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=
3674 dependencies: 4392 dependencies:
3675 has "^1.0.1" 4393 has "^1.0.1"
3676 postcss "^5.0.8" 4394 postcss "^5.0.8"
@@ -3679,6 +4397,7 @@ postcss-reduce-transforms@^1.0.3:
3679postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: 4397postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
3680 version "2.2.3" 4398 version "2.2.3"
3681 resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" 4399 resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
4400 integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
3682 dependencies: 4401 dependencies:
3683 flatten "^1.0.2" 4402 flatten "^1.0.2"
3684 indexes-of "^1.0.1" 4403 indexes-of "^1.0.1"
@@ -3687,6 +4406,7 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
3687postcss-svgo@^2.1.1: 4406postcss-svgo@^2.1.1:
3688 version "2.1.6" 4407 version "2.1.6"
3689 resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" 4408 resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
4409 integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=
3690 dependencies: 4410 dependencies:
3691 is-svg "^2.0.0" 4411 is-svg "^2.0.0"
3692 postcss "^5.0.14" 4412 postcss "^5.0.14"
@@ -3696,18 +4416,21 @@ postcss-svgo@^2.1.1:
3696postcss-unique-selectors@^2.0.2: 4416postcss-unique-selectors@^2.0.2:
3697 version "2.0.2" 4417 version "2.0.2"
3698 resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" 4418 resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
4419 integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=
3699 dependencies: 4420 dependencies:
3700 alphanum-sort "^1.0.1" 4421 alphanum-sort "^1.0.1"
3701 postcss "^5.0.4" 4422 postcss "^5.0.4"
3702 uniqs "^2.0.0" 4423 uniqs "^2.0.0"
3703 4424
3704postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: 4425postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
3705 version "3.3.0" 4426 version "3.3.1"
3706 resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" 4427 resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
4428 integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
3707 4429
3708postcss-zindex@^2.0.1: 4430postcss-zindex@^2.0.1:
3709 version "2.2.0" 4431 version "2.2.0"
3710 resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" 4432 resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
4433 integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=
3711 dependencies: 4434 dependencies:
3712 has "^1.0.1" 4435 has "^1.0.1"
3713 postcss "^5.0.4" 4436 postcss "^5.0.4"
@@ -3716,6 +4439,7 @@ postcss-zindex@^2.0.1:
3716postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: 4439postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
3717 version "5.2.18" 4440 version "5.2.18"
3718 resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" 4441 resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
4442 integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
3719 dependencies: 4443 dependencies:
3720 chalk "^1.1.3" 4444 chalk "^1.1.3"
3721 js-base64 "^2.1.9" 4445 js-base64 "^2.1.9"
@@ -3723,98 +4447,115 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
3723 supports-color "^3.2.3" 4447 supports-color "^3.2.3"
3724 4448
3725postcss@^6.0.1: 4449postcss@^6.0.1:
3726 version "6.0.17" 4450 version "6.0.23"
3727 resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.17.tgz#e259a051ca513f81e9afd0c21f7f82eda50c65c5" 4451 resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
4452 integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
3728 dependencies: 4453 dependencies:
3729 chalk "^2.3.0" 4454 chalk "^2.4.1"
3730 source-map "^0.6.1" 4455 source-map "^0.6.1"
3731 supports-color "^5.1.0" 4456 supports-color "^5.4.0"
3732 4457
3733prelude-ls@~1.1.2: 4458prelude-ls@~1.1.2:
3734 version "1.1.2" 4459 version "1.1.2"
3735 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 4460 resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
4461 integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
3736 4462
3737prepend-http@^1.0.0: 4463prepend-http@^1.0.0:
3738 version "1.0.4" 4464 version "1.0.4"
3739 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 4465 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
4466 integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
3740 4467
3741preserve@^0.2.0: 4468private@^0.1.6, private@^0.1.8:
3742 version "0.2.0"
3743 resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
3744
3745private@^0.1.6, private@^0.1.7:
3746 version "0.1.8" 4469 version "0.1.8"
3747 resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 4470 resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
4471 integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
3748 4472
3749process-nextick-args@~1.0.6: 4473process-nextick-args@~2.0.0:
3750 version "1.0.7" 4474 version "2.0.0"
3751 resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 4475 resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
4476 integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
3752 4477
3753process@^0.11.10: 4478process@^0.11.10:
3754 version "0.11.10" 4479 version "0.11.10"
3755 resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 4480 resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
4481 integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
3756 4482
3757progress@^1.1.8: 4483progress@^1.1.8:
3758 version "1.1.8" 4484 version "1.1.8"
3759 resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 4485 resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
4486 integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=
3760 4487
3761progress@^2.0.0: 4488progress@^2.0.0:
3762 version "2.0.0" 4489 version "2.0.3"
3763 resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 4490 resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
4491 integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
3764 4492
3765prr@~1.0.1: 4493prr@~1.0.1:
3766 version "1.0.1" 4494 version "1.0.1"
3767 resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 4495 resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
4496 integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
3768 4497
3769pseudomap@^1.0.2: 4498pseudomap@^1.0.2:
3770 version "1.0.2" 4499 version "1.0.2"
3771 resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 4500 resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
4501 integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
4502
4503psl@^1.1.24:
4504 version "1.1.31"
4505 resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
4506 integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==
3772 4507
3773public-encrypt@^4.0.0: 4508public-encrypt@^4.0.0:
3774 version "4.0.0" 4509 version "4.0.3"
3775 resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 4510 resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
4511 integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
3776 dependencies: 4512 dependencies:
3777 bn.js "^4.1.0" 4513 bn.js "^4.1.0"
3778 browserify-rsa "^4.0.0" 4514 browserify-rsa "^4.0.0"
3779 create-hash "^1.1.0" 4515 create-hash "^1.1.0"
3780 parse-asn1 "^5.0.0" 4516 parse-asn1 "^5.0.0"
3781 randombytes "^2.0.1" 4517 randombytes "^2.0.1"
4518 safe-buffer "^5.1.2"
3782 4519
3783punycode@1.3.2: 4520punycode@1.3.2:
3784 version "1.3.2" 4521 version "1.3.2"
3785 resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 4522 resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
4523 integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
3786 4524
3787punycode@^1.2.4, punycode@^1.4.1: 4525punycode@^1.2.4, punycode@^1.4.1:
3788 version "1.4.1" 4526 version "1.4.1"
3789 resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 4527 resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
4528 integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
4529
4530punycode@^2.1.0:
4531 version "2.1.1"
4532 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
4533 integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
3790 4534
3791pure-extras@^1.0.0: 4535pure-extras@^1.0.0:
3792 version "1.0.0" 4536 version "1.0.0"
3793 resolved "https://registry.yarnpkg.com/pure-extras/-/pure-extras-1.0.0.tgz#37e3cc3590cba850981454cda5db28e27a63871a" 4537 resolved "https://registry.yarnpkg.com/pure-extras/-/pure-extras-1.0.0.tgz#37e3cc3590cba850981454cda5db28e27a63871a"
4538 integrity sha1-N+PMNZDLqFCYFFTNpdso4npjhxo=
3794 4539
3795purecss@^1.0.0: 4540purecss@^1.0.0:
3796 version "1.0.0" 4541 version "1.0.0"
3797 resolved "https://registry.yarnpkg.com/purecss/-/purecss-1.0.0.tgz#3dbcd9e2a7592448a69acb705cce16311bf4b785" 4542 resolved "https://registry.yarnpkg.com/purecss/-/purecss-1.0.0.tgz#3dbcd9e2a7592448a69acb705cce16311bf4b785"
4543 integrity sha512-gfC78WCOWNnfkzulx9aoWwcl+0JflhwKeJ+k9s/ZyIawfYNA4bqBmt0DtfgtQK9iuYMtGfbdE8R2AQMjSWR2VQ==
3798 4544
3799q@^1.1.2: 4545q@^1.1.2:
3800 version "1.5.1" 4546 version "1.5.1"
3801 resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" 4547 resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
4548 integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
3802 4549
3803qs@~6.3.0: 4550qs@~6.5.2:
3804 version "6.3.2" 4551 version "6.5.2"
3805 resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" 4552 resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
3806 4553 integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
3807qs@~6.4.0:
3808 version "6.4.0"
3809 resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
3810
3811qs@~6.5.1:
3812 version "6.5.1"
3813 resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
3814 4554
3815query-string@^4.1.0: 4555query-string@^4.1.0:
3816 version "4.3.4" 4556 version "4.3.4"
3817 resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" 4557 resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
4558 integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
3818 dependencies: 4559 dependencies:
3819 object-assign "^4.1.0" 4560 object-assign "^4.1.0"
3820 strict-uri-encode "^1.0.0" 4561 strict-uri-encode "^1.0.0"
@@ -3822,36 +4563,34 @@ query-string@^4.1.0:
3822querystring-es3@^0.2.0: 4563querystring-es3@^0.2.0:
3823 version "0.2.1" 4564 version "0.2.1"
3824 resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 4565 resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
4566 integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
3825 4567
3826querystring@0.2.0: 4568querystring@0.2.0:
3827 version "0.2.0" 4569 version "0.2.0"
3828 resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 4570 resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
3829 4571 integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
3830randomatic@^1.1.3:
3831 version "1.1.7"
3832 resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
3833 dependencies:
3834 is-number "^3.0.0"
3835 kind-of "^4.0.0"
3836 4572
3837randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 4573randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
3838 version "2.0.6" 4574 version "2.1.0"
3839 resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" 4575 resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
4576 integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
3840 dependencies: 4577 dependencies:
3841 safe-buffer "^5.1.0" 4578 safe-buffer "^5.1.0"
3842 4579
3843randomfill@^1.0.3: 4580randomfill@^1.0.3:
3844 version "1.0.3" 4581 version "1.0.4"
3845 resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" 4582 resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
4583 integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
3846 dependencies: 4584 dependencies:
3847 randombytes "^2.0.5" 4585 randombytes "^2.0.5"
3848 safe-buffer "^5.1.0" 4586 safe-buffer "^5.1.0"
3849 4587
3850rc@^1.1.7: 4588rc@^1.2.7:
3851 version "1.2.5" 4589 version "1.2.8"
3852 resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" 4590 resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
4591 integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
3853 dependencies: 4592 dependencies:
3854 deep-extend "~0.4.0" 4593 deep-extend "^0.6.0"
3855 ini "~1.3.0" 4594 ini "~1.3.0"
3856 minimist "^1.2.0" 4595 minimist "^1.2.0"
3857 strip-json-comments "~2.0.1" 4596 strip-json-comments "~2.0.1"
@@ -3859,6 +4598,7 @@ rc@^1.1.7:
3859read-pkg-up@^1.0.1: 4598read-pkg-up@^1.0.1:
3860 version "1.0.1" 4599 version "1.0.1"
3861 resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 4600 resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
4601 integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
3862 dependencies: 4602 dependencies:
3863 find-up "^1.0.0" 4603 find-up "^1.0.0"
3864 read-pkg "^1.0.0" 4604 read-pkg "^1.0.0"
@@ -3866,6 +4606,7 @@ read-pkg-up@^1.0.1:
3866read-pkg-up@^2.0.0: 4606read-pkg-up@^2.0.0:
3867 version "2.0.0" 4607 version "2.0.0"
3868 resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 4608 resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
4609 integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
3869 dependencies: 4610 dependencies:
3870 find-up "^2.0.0" 4611 find-up "^2.0.0"
3871 read-pkg "^2.0.0" 4612 read-pkg "^2.0.0"
@@ -3873,6 +4614,7 @@ read-pkg-up@^2.0.0:
3873read-pkg@^1.0.0: 4614read-pkg@^1.0.0:
3874 version "1.1.0" 4615 version "1.1.0"
3875 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 4616 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
4617 integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
3876 dependencies: 4618 dependencies:
3877 load-json-file "^1.0.0" 4619 load-json-file "^1.0.0"
3878 normalize-package-data "^2.3.2" 4620 normalize-package-data "^2.3.2"
@@ -3881,35 +4623,38 @@ read-pkg@^1.0.0:
3881read-pkg@^2.0.0: 4623read-pkg@^2.0.0:
3882 version "2.0.0" 4624 version "2.0.0"
3883 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 4625 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
4626 integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
3884 dependencies: 4627 dependencies:
3885 load-json-file "^2.0.0" 4628 load-json-file "^2.0.0"
3886 normalize-package-data "^2.3.2" 4629 normalize-package-data "^2.3.2"
3887 path-type "^2.0.0" 4630 path-type "^2.0.0"
3888 4631
3889readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3: 4632readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6:
3890 version "2.3.3" 4633 version "2.3.6"
3891 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 4634 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
4635 integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
3892 dependencies: 4636 dependencies:
3893 core-util-is "~1.0.0" 4637 core-util-is "~1.0.0"
3894 inherits "~2.0.3" 4638 inherits "~2.0.3"
3895 isarray "~1.0.0" 4639 isarray "~1.0.0"
3896 process-nextick-args "~1.0.6" 4640 process-nextick-args "~2.0.0"
3897 safe-buffer "~5.1.1" 4641 safe-buffer "~5.1.1"
3898 string_decoder "~1.0.3" 4642 string_decoder "~1.1.1"
3899 util-deprecate "~1.0.1" 4643 util-deprecate "~1.0.1"
3900 4644
3901readdirp@^2.0.0: 4645readdirp@^2.2.1:
3902 version "2.1.0" 4646 version "2.2.1"
3903 resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 4647 resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
4648 integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
3904 dependencies: 4649 dependencies:
3905 graceful-fs "^4.1.2" 4650 graceful-fs "^4.1.11"
3906 minimatch "^3.0.2" 4651 micromatch "^3.1.10"
3907 readable-stream "^2.0.2" 4652 readable-stream "^2.0.2"
3908 set-immediate-shim "^1.0.1"
3909 4653
3910readline2@^1.0.1: 4654readline2@^1.0.1:
3911 version "1.0.1" 4655 version "1.0.1"
3912 resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 4656 resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
4657 integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=
3913 dependencies: 4658 dependencies:
3914 code-point-at "^1.0.0" 4659 code-point-at "^1.0.0"
3915 is-fullwidth-code-point "^1.0.0" 4660 is-fullwidth-code-point "^1.0.0"
@@ -3918,6 +4663,7 @@ readline2@^1.0.1:
3918redent@^1.0.0: 4663redent@^1.0.0:
3919 version "1.0.0" 4664 version "1.0.0"
3920 resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 4665 resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
4666 integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
3921 dependencies: 4667 dependencies:
3922 indent-string "^2.1.0" 4668 indent-string "^2.1.0"
3923 strip-indent "^1.0.1" 4669 strip-indent "^1.0.1"
@@ -3925,6 +4671,7 @@ redent@^1.0.0:
3925reduce-css-calc@^1.2.6: 4671reduce-css-calc@^1.2.6:
3926 version "1.3.0" 4672 version "1.3.0"
3927 resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" 4673 resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
4674 integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=
3928 dependencies: 4675 dependencies:
3929 balanced-match "^0.4.2" 4676 balanced-match "^0.4.2"
3930 math-expression-evaluator "^1.2.14" 4677 math-expression-evaluator "^1.2.14"
@@ -3933,34 +4680,46 @@ reduce-css-calc@^1.2.6:
3933reduce-function-call@^1.0.1: 4680reduce-function-call@^1.0.1:
3934 version "1.0.2" 4681 version "1.0.2"
3935 resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" 4682 resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
4683 integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=
3936 dependencies: 4684 dependencies:
3937 balanced-match "^0.4.2" 4685 balanced-match "^0.4.2"
3938 4686
3939regenerate@^1.2.1: 4687regenerate@^1.2.1:
3940 version "1.3.3" 4688 version "1.4.0"
3941 resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" 4689 resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
4690 integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
3942 4691
3943regenerator-runtime@^0.11.0: 4692regenerator-runtime@^0.11.0:
3944 version "0.11.1" 4693 version "0.11.1"
3945 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 4694 resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
4695 integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
3946 4696
3947regenerator-transform@^0.10.0: 4697regenerator-transform@^0.10.0:
3948 version "0.10.1" 4698 version "0.10.1"
3949 resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" 4699 resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
4700 integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==
3950 dependencies: 4701 dependencies:
3951 babel-runtime "^6.18.0" 4702 babel-runtime "^6.18.0"
3952 babel-types "^6.19.0" 4703 babel-types "^6.19.0"
3953 private "^0.1.6" 4704 private "^0.1.6"
3954 4705
3955regex-cache@^0.4.2: 4706regex-not@^1.0.0, regex-not@^1.0.2:
3956 version "0.4.4" 4707 version "1.0.2"
3957 resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 4708 resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
4709 integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
3958 dependencies: 4710 dependencies:
3959 is-equal-shallow "^0.1.3" 4711 extend-shallow "^3.0.2"
4712 safe-regex "^1.1.0"
4713
4714regexpp@^1.0.1:
4715 version "1.1.0"
4716 resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
4717 integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==
3960 4718
3961regexpu-core@^1.0.0: 4719regexpu-core@^1.0.0:
3962 version "1.0.0" 4720 version "1.0.0"
3963 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" 4721 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
4722 integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
3964 dependencies: 4723 dependencies:
3965 regenerate "^1.2.1" 4724 regenerate "^1.2.1"
3966 regjsgen "^0.2.0" 4725 regjsgen "^0.2.0"
@@ -3969,6 +4728,7 @@ regexpu-core@^1.0.0:
3969regexpu-core@^2.0.0: 4728regexpu-core@^2.0.0:
3970 version "2.0.0" 4729 version "2.0.0"
3971 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 4730 resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
4731 integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
3972 dependencies: 4732 dependencies:
3973 regenerate "^1.2.1" 4733 regenerate "^1.2.1"
3974 regjsgen "^0.2.0" 4734 regjsgen "^0.2.0"
@@ -3977,121 +4737,77 @@ regexpu-core@^2.0.0:
3977regjsgen@^0.2.0: 4737regjsgen@^0.2.0:
3978 version "0.2.0" 4738 version "0.2.0"
3979 resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 4739 resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
4740 integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
3980 4741
3981regjsparser@^0.1.4: 4742regjsparser@^0.1.4:
3982 version "0.1.5" 4743 version "0.1.5"
3983 resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 4744 resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
4745 integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
3984 dependencies: 4746 dependencies:
3985 jsesc "~0.5.0" 4747 jsesc "~0.5.0"
3986 4748
3987remove-trailing-separator@^1.0.1: 4749remove-trailing-separator@^1.0.1:
3988 version "1.1.0" 4750 version "1.1.0"
3989 resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 4751 resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
4752 integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
3990 4753
3991repeat-element@^1.1.2: 4754repeat-element@^1.1.2:
3992 version "1.1.2" 4755 version "1.1.3"
3993 resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 4756 resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
4757 integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
3994 4758
3995repeat-string@^1.5.2: 4759repeat-string@^1.5.2, repeat-string@^1.6.1:
3996 version "1.6.1" 4760 version "1.6.1"
3997 resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 4761 resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
4762 integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
3998 4763
3999repeating@^2.0.0: 4764repeating@^2.0.0:
4000 version "2.0.1" 4765 version "2.0.1"
4001 resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 4766 resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
4767 integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
4002 dependencies: 4768 dependencies:
4003 is-finite "^1.0.0" 4769 is-finite "^1.0.0"
4004 4770
4005request@2: 4771request@^2.87.0, request@^2.88.0:
4006 version "2.83.0" 4772 version "2.88.0"
4007 resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" 4773 resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
4774 integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
4008 dependencies: 4775 dependencies:
4009 aws-sign2 "~0.7.0" 4776 aws-sign2 "~0.7.0"
4010 aws4 "^1.6.0" 4777 aws4 "^1.8.0"
4011 caseless "~0.12.0" 4778 caseless "~0.12.0"
4012 combined-stream "~1.0.5" 4779 combined-stream "~1.0.6"
4013 extend "~3.0.1" 4780 extend "~3.0.2"
4014 forever-agent "~0.6.1" 4781 forever-agent "~0.6.1"
4015 form-data "~2.3.1" 4782 form-data "~2.3.2"
4016 har-validator "~5.0.3" 4783 har-validator "~5.1.0"
4017 hawk "~6.0.2"
4018 http-signature "~1.2.0" 4784 http-signature "~1.2.0"
4019 is-typedarray "~1.0.0" 4785 is-typedarray "~1.0.0"
4020 isstream "~0.1.2" 4786 isstream "~0.1.2"
4021 json-stringify-safe "~5.0.1" 4787 json-stringify-safe "~5.0.1"
4022 mime-types "~2.1.17" 4788 mime-types "~2.1.19"
4023 oauth-sign "~0.8.2" 4789 oauth-sign "~0.9.0"
4024 performance-now "^2.1.0" 4790 performance-now "^2.1.0"
4025 qs "~6.5.1" 4791 qs "~6.5.2"
4026 safe-buffer "^5.1.1" 4792 safe-buffer "^5.1.2"
4027 stringstream "~0.0.5" 4793 tough-cookie "~2.4.3"
4028 tough-cookie "~2.3.3"
4029 tunnel-agent "^0.6.0" 4794 tunnel-agent "^0.6.0"
4030 uuid "^3.1.0" 4795 uuid "^3.3.2"
4031
4032request@2.81.0:
4033 version "2.81.0"
4034 resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
4035 dependencies:
4036 aws-sign2 "~0.6.0"
4037 aws4 "^1.2.1"
4038 caseless "~0.12.0"
4039 combined-stream "~1.0.5"
4040 extend "~3.0.0"
4041 forever-agent "~0.6.1"
4042 form-data "~2.1.1"
4043 har-validator "~4.2.1"
4044 hawk "~3.1.3"
4045 http-signature "~1.1.0"
4046 is-typedarray "~1.0.0"
4047 isstream "~0.1.2"
4048 json-stringify-safe "~5.0.1"
4049 mime-types "~2.1.7"
4050 oauth-sign "~0.8.1"
4051 performance-now "^0.2.0"
4052 qs "~6.4.0"
4053 safe-buffer "^5.0.1"
4054 stringstream "~0.0.4"
4055 tough-cookie "~2.3.0"
4056 tunnel-agent "^0.6.0"
4057 uuid "^3.0.0"
4058
4059request@~2.79.0:
4060 version "2.79.0"
4061 resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
4062 dependencies:
4063 aws-sign2 "~0.6.0"
4064 aws4 "^1.2.1"
4065 caseless "~0.11.0"
4066 combined-stream "~1.0.5"
4067 extend "~3.0.0"
4068 forever-agent "~0.6.1"
4069 form-data "~2.1.1"
4070 har-validator "~2.0.6"
4071 hawk "~3.1.3"
4072 http-signature "~1.1.0"
4073 is-typedarray "~1.0.0"
4074 isstream "~0.1.2"
4075 json-stringify-safe "~5.0.1"
4076 mime-types "~2.1.7"
4077 oauth-sign "~0.8.1"
4078 qs "~6.3.0"
4079 stringstream "~0.0.4"
4080 tough-cookie "~2.3.0"
4081 tunnel-agent "~0.4.1"
4082 uuid "^3.0.0"
4083 4796
4084require-directory@^2.1.1: 4797require-directory@^2.1.1:
4085 version "2.1.1" 4798 version "2.1.1"
4086 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 4799 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
4800 integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
4087 4801
4088require-main-filename@^1.0.1: 4802require-main-filename@^1.0.1:
4089 version "1.0.1" 4803 version "1.0.1"
4090 resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 4804 resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
4805 integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
4091 4806
4092require-uncached@^1.0.2, require-uncached@^1.0.3: 4807require-uncached@^1.0.2, require-uncached@^1.0.3:
4093 version "1.0.3" 4808 version "1.0.3"
4094 resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 4809 resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
4810 integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
4095 dependencies: 4811 dependencies:
4096 caller-path "^0.1.0" 4812 caller-path "^0.1.0"
4097 resolve-from "^1.0.0" 4813 resolve-from "^1.0.0"
@@ -4099,16 +4815,24 @@ require-uncached@^1.0.2, require-uncached@^1.0.3:
4099resolve-from@^1.0.0: 4815resolve-from@^1.0.0:
4100 version "1.0.1" 4816 version "1.0.1"
4101 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 4817 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
4818 integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=
4102 4819
4103resolve@^1.5.0: 4820resolve-url@^0.2.1:
4104 version "1.5.0" 4821 version "0.2.1"
4105 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" 4822 resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
4823 integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
4824
4825resolve@^1.10.0, resolve@^1.5.0:
4826 version "1.11.0"
4827 resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232"
4828 integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==
4106 dependencies: 4829 dependencies:
4107 path-parse "^1.0.5" 4830 path-parse "^1.0.6"
4108 4831
4109restore-cursor@^1.0.1: 4832restore-cursor@^1.0.1:
4110 version "1.0.1" 4833 version "1.0.1"
4111 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 4834 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
4835 integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=
4112 dependencies: 4836 dependencies:
4113 exit-hook "^1.0.0" 4837 exit-hook "^1.0.0"
4114 onetime "^1.0.0" 4838 onetime "^1.0.0"
@@ -4116,62 +4840,90 @@ restore-cursor@^1.0.1:
4116restore-cursor@^2.0.0: 4840restore-cursor@^2.0.0:
4117 version "2.0.0" 4841 version "2.0.0"
4118 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 4842 resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
4843 integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
4119 dependencies: 4844 dependencies:
4120 onetime "^2.0.0" 4845 onetime "^2.0.0"
4121 signal-exit "^3.0.2" 4846 signal-exit "^3.0.2"
4122 4847
4848ret@~0.1.10:
4849 version "0.1.15"
4850 resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
4851 integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
4852
4123right-align@^0.1.1: 4853right-align@^0.1.1:
4124 version "0.1.3" 4854 version "0.1.3"
4125 resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 4855 resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
4856 integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
4126 dependencies: 4857 dependencies:
4127 align-text "^0.1.1" 4858 align-text "^0.1.1"
4128 4859
4129rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: 4860rimraf@2, rimraf@^2.6.1, rimraf@~2.6.2:
4130 version "2.6.2" 4861 version "2.6.3"
4131 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 4862 resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
4863 integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
4132 dependencies: 4864 dependencies:
4133 glob "^7.0.5" 4865 glob "^7.1.3"
4134 4866
4135ripemd160@^2.0.0, ripemd160@^2.0.1: 4867ripemd160@^2.0.0, ripemd160@^2.0.1:
4136 version "2.0.1" 4868 version "2.0.2"
4137 resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" 4869 resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
4870 integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
4138 dependencies: 4871 dependencies:
4139 hash-base "^2.0.0" 4872 hash-base "^3.0.0"
4140 inherits "^2.0.1" 4873 inherits "^2.0.1"
4141 4874
4142run-async@^0.1.0: 4875run-async@^0.1.0:
4143 version "0.1.0" 4876 version "0.1.0"
4144 resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 4877 resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
4878 integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=
4145 dependencies: 4879 dependencies:
4146 once "^1.3.0" 4880 once "^1.3.0"
4147 4881
4148run-async@^2.2.0: 4882run-async@^2.2.0:
4149 version "2.3.0" 4883 version "2.3.0"
4150 resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 4884 resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
4885 integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
4151 dependencies: 4886 dependencies:
4152 is-promise "^2.1.0" 4887 is-promise "^2.1.0"
4153 4888
4154rx-lite-aggregates@^4.0.8: 4889rx-lite-aggregates@^4.0.8:
4155 version "4.0.8" 4890 version "4.0.8"
4156 resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 4891 resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
4892 integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=
4157 dependencies: 4893 dependencies:
4158 rx-lite "*" 4894 rx-lite "*"
4159 4895
4160rx-lite@*, rx-lite@^4.0.8: 4896rx-lite@*, rx-lite@^4.0.8:
4161 version "4.0.8" 4897 version "4.0.8"
4162 resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 4898 resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
4899 integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
4163 4900
4164rx-lite@^3.1.2: 4901rx-lite@^3.1.2:
4165 version "3.1.2" 4902 version "3.1.2"
4166 resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 4903 resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
4904 integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=
4905
4906safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
4907 version "5.1.2"
4908 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
4909 integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
4910
4911safe-regex@^1.1.0:
4912 version "1.1.0"
4913 resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
4914 integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
4915 dependencies:
4916 ret "~0.1.10"
4167 4917
4168safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 4918"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
4169 version "5.1.1" 4919 version "2.1.2"
4170 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 4920 resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
4921 integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
4171 4922
4172sass-graph@^2.2.4: 4923sass-graph@^2.2.4:
4173 version "2.2.4" 4924 version "2.2.4"
4174 resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" 4925 resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
4926 integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=
4175 dependencies: 4927 dependencies:
4176 glob "^7.0.0" 4928 glob "^7.0.0"
4177 lodash "^4.0.0" 4929 lodash "^4.0.0"
@@ -4179,8 +4931,9 @@ sass-graph@^2.2.4:
4179 yargs "^7.0.0" 4931 yargs "^7.0.0"
4180 4932
4181sass-lint@^1.12.1: 4933sass-lint@^1.12.1:
4182 version "1.12.1" 4934 version "1.13.1"
4183 resolved "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.12.1.tgz#630f69c216aa206b8232fb2aa907bdf3336b6d83" 4935 resolved "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.13.1.tgz#5fd2b2792e9215272335eb0f0dc607f61e8acc8f"
4936 integrity sha512-DSyah8/MyjzW2BWYmQWekYEKir44BpLqrCFsgs9iaWiVTcwZfwXHF586hh3D1n+/9ihUNMfd8iHAyb9KkGgs7Q==
4184 dependencies: 4937 dependencies:
4185 commander "^2.8.1" 4938 commander "^2.8.1"
4186 eslint "^2.7.0" 4939 eslint "^2.7.0"
@@ -4198,269 +4951,397 @@ sass-lint@^1.12.1:
4198 util "^0.10.3" 4951 util "^0.10.3"
4199 4952
4200sass-loader@^6.0.6: 4953sass-loader@^6.0.6:
4201 version "6.0.6" 4954 version "6.0.7"
4202 resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9" 4955 resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.7.tgz#dd2fdb3e7eeff4a53f35ba6ac408715488353d00"
4956 integrity sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA==
4203 dependencies: 4957 dependencies:
4204 async "^2.1.5" 4958 clone-deep "^2.0.1"
4205 clone-deep "^0.3.0"
4206 loader-utils "^1.0.1" 4959 loader-utils "^1.0.1"
4207 lodash.tail "^4.1.1" 4960 lodash.tail "^4.1.1"
4961 neo-async "^2.5.0"
4208 pify "^3.0.0" 4962 pify "^3.0.0"
4209 4963
4210sax@~1.2.1: 4964sax@^1.2.4, sax@~1.2.1:
4211 version "1.2.4" 4965 version "1.2.4"
4212 resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 4966 resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
4967 integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
4213 4968
4214schema-utils@^0.3.0: 4969schema-utils@^0.3.0:
4215 version "0.3.0" 4970 version "0.3.0"
4216 resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" 4971 resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
4972 integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=
4217 dependencies: 4973 dependencies:
4218 ajv "^5.0.0" 4974 ajv "^5.0.0"
4219 4975
4976schema-utils@^0.4.5:
4977 version "0.4.7"
4978 resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
4979 integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
4980 dependencies:
4981 ajv "^6.1.0"
4982 ajv-keywords "^3.1.0"
4983
4220scss-tokenizer@^0.2.3: 4984scss-tokenizer@^0.2.3:
4221 version "0.2.3" 4985 version "0.2.3"
4222 resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" 4986 resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
4987 integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE=
4223 dependencies: 4988 dependencies:
4224 js-base64 "^2.1.8" 4989 js-base64 "^2.1.8"
4225 source-map "^0.4.2" 4990 source-map "^0.4.2"
4226 4991
4227"semver@2 || 3 || 4 || 5", semver@^5.3.0: 4992"semver@2 || 3 || 4 || 5", semver@^5.3.0:
4228 version "5.5.0" 4993 version "5.7.0"
4229 resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 4994 resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
4995 integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
4230 4996
4231semver@~5.3.0: 4997semver@~5.3.0:
4232 version "5.3.0" 4998 version "5.3.0"
4233 resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 4999 resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
5000 integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
4234 5001
4235set-blocking@^2.0.0, set-blocking@~2.0.0: 5002set-blocking@^2.0.0, set-blocking@~2.0.0:
4236 version "2.0.0" 5003 version "2.0.0"
4237 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 5004 resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
5005 integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
4238 5006
4239set-immediate-shim@^1.0.1: 5007set-value@^0.4.3:
4240 version "1.0.1" 5008 version "0.4.3"
4241 resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 5009 resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
5010 integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
5011 dependencies:
5012 extend-shallow "^2.0.1"
5013 is-extendable "^0.1.1"
5014 is-plain-object "^2.0.1"
5015 to-object-path "^0.3.0"
5016
5017set-value@^2.0.0:
5018 version "2.0.0"
5019 resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
5020 integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
5021 dependencies:
5022 extend-shallow "^2.0.1"
5023 is-extendable "^0.1.1"
5024 is-plain-object "^2.0.3"
5025 split-string "^3.0.1"
4242 5026
4243setimmediate@^1.0.4: 5027setimmediate@^1.0.4:
4244 version "1.0.5" 5028 version "1.0.5"
4245 resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 5029 resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
5030 integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
4246 5031
4247sha.js@^2.4.0, sha.js@^2.4.8: 5032sha.js@^2.4.0, sha.js@^2.4.8:
4248 version "2.4.10" 5033 version "2.4.11"
4249 resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" 5034 resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
5035 integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
4250 dependencies: 5036 dependencies:
4251 inherits "^2.0.1" 5037 inherits "^2.0.1"
4252 safe-buffer "^5.0.1" 5038 safe-buffer "^5.0.1"
4253 5039
4254shallow-clone@^0.1.2: 5040shallow-clone@^1.0.0:
4255 version "0.1.2" 5041 version "1.0.0"
4256 resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" 5042 resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
5043 integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==
4257 dependencies: 5044 dependencies:
4258 is-extendable "^0.1.1" 5045 is-extendable "^0.1.1"
4259 kind-of "^2.0.1" 5046 kind-of "^5.0.0"
4260 lazy-cache "^0.2.3"
4261 mixin-object "^2.0.1" 5047 mixin-object "^2.0.1"
4262 5048
4263shebang-command@^1.2.0: 5049shebang-command@^1.2.0:
4264 version "1.2.0" 5050 version "1.2.0"
4265 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 5051 resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
5052 integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
4266 dependencies: 5053 dependencies:
4267 shebang-regex "^1.0.0" 5054 shebang-regex "^1.0.0"
4268 5055
4269shebang-regex@^1.0.0: 5056shebang-regex@^1.0.0:
4270 version "1.0.0" 5057 version "1.0.0"
4271 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 5058 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
5059 integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
4272 5060
4273shelljs@^0.6.0: 5061shelljs@^0.6.0:
4274 version "0.6.1" 5062 version "0.6.1"
4275 resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" 5063 resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8"
5064 integrity sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=
4276 5065
4277signal-exit@^3.0.0, signal-exit@^3.0.2: 5066signal-exit@^3.0.0, signal-exit@^3.0.2:
4278 version "3.0.2" 5067 version "3.0.2"
4279 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 5068 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
5069 integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
4280 5070
4281slash@^1.0.0: 5071slash@^1.0.0:
4282 version "1.0.0" 5072 version "1.0.0"
4283 resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 5073 resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
5074 integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
4284 5075
4285slice-ansi@0.0.4: 5076slice-ansi@0.0.4:
4286 version "0.0.4" 5077 version "0.0.4"
4287 resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 5078 resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
5079 integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
4288 5080
4289slice-ansi@1.0.0: 5081slice-ansi@1.0.0:
4290 version "1.0.0" 5082 version "1.0.0"
4291 resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 5083 resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
5084 integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
4292 dependencies: 5085 dependencies:
4293 is-fullwidth-code-point "^2.0.0" 5086 is-fullwidth-code-point "^2.0.0"
4294 5087
4295sntp@1.x.x: 5088snapdragon-node@^2.0.1:
4296 version "1.0.9" 5089 version "2.1.1"
4297 resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 5090 resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
5091 integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
4298 dependencies: 5092 dependencies:
4299 hoek "2.x.x" 5093 define-property "^1.0.0"
5094 isobject "^3.0.0"
5095 snapdragon-util "^3.0.1"
4300 5096
4301sntp@2.x.x: 5097snapdragon-util@^3.0.1:
4302 version "2.1.0" 5098 version "3.0.1"
4303 resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" 5099 resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
5100 integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
5101 dependencies:
5102 kind-of "^3.2.0"
5103
5104snapdragon@^0.8.1:
5105 version "0.8.2"
5106 resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
5107 integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
4304 dependencies: 5108 dependencies:
4305 hoek "4.x.x" 5109 base "^0.11.1"
5110 debug "^2.2.0"
5111 define-property "^0.2.5"
5112 extend-shallow "^2.0.1"
5113 map-cache "^0.2.2"
5114 source-map "^0.5.6"
5115 source-map-resolve "^0.5.0"
5116 use "^3.1.0"
4306 5117
4307sort-keys@^1.0.0: 5118sort-keys@^1.0.0:
4308 version "1.1.2" 5119 version "1.1.2"
4309 resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" 5120 resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
5121 integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
4310 dependencies: 5122 dependencies:
4311 is-plain-obj "^1.0.0" 5123 is-plain-obj "^1.0.0"
4312 5124
4313source-list-map@^2.0.0: 5125source-list-map@^2.0.0:
4314 version "2.0.0" 5126 version "2.0.1"
4315 resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" 5127 resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
5128 integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
5129
5130source-map-resolve@^0.5.0:
5131 version "0.5.2"
5132 resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
5133 integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
5134 dependencies:
5135 atob "^2.1.1"
5136 decode-uri-component "^0.2.0"
5137 resolve-url "^0.2.1"
5138 source-map-url "^0.4.0"
5139 urix "^0.1.0"
4316 5140
4317source-map-support@^0.4.15: 5141source-map-support@^0.4.15:
4318 version "0.4.18" 5142 version "0.4.18"
4319 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 5143 resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
5144 integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
4320 dependencies: 5145 dependencies:
4321 source-map "^0.5.6" 5146 source-map "^0.5.6"
4322 5147
5148source-map-url@^0.4.0:
5149 version "0.4.0"
5150 resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
5151 integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
5152
4323source-map@^0.4.2: 5153source-map@^0.4.2:
4324 version "0.4.4" 5154 version "0.4.4"
4325 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 5155 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
5156 integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
4326 dependencies: 5157 dependencies:
4327 amdefine ">=0.0.4" 5158 amdefine ">=0.0.4"
4328 5159
4329source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: 5160source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
4330 version "0.5.7" 5161 version "0.5.7"
4331 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 5162 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
5163 integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
4332 5164
4333source-map@^0.6.1, source-map@~0.6.1: 5165source-map@^0.6.1, source-map@~0.6.1:
4334 version "0.6.1" 5166 version "0.6.1"
4335 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 5167 resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
5168 integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
4336 5169
4337spdx-correct@~1.0.0: 5170spdx-correct@^3.0.0:
4338 version "1.0.2" 5171 version "3.1.0"
4339 resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 5172 resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
5173 integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
4340 dependencies: 5174 dependencies:
4341 spdx-license-ids "^1.0.2" 5175 spdx-expression-parse "^3.0.0"
5176 spdx-license-ids "^3.0.0"
4342 5177
4343spdx-expression-parse@~1.0.0: 5178spdx-exceptions@^2.1.0:
4344 version "1.0.4" 5179 version "2.2.0"
4345 resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 5180 resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
5181 integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
4346 5182
4347spdx-license-ids@^1.0.2: 5183spdx-expression-parse@^3.0.0:
4348 version "1.2.2" 5184 version "3.0.0"
4349 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 5185 resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
5186 integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
5187 dependencies:
5188 spdx-exceptions "^2.1.0"
5189 spdx-license-ids "^3.0.0"
5190
5191spdx-license-ids@^3.0.0:
5192 version "3.0.4"
5193 resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
5194 integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
5195
5196split-string@^3.0.1, split-string@^3.0.2:
5197 version "3.1.0"
5198 resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
5199 integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
5200 dependencies:
5201 extend-shallow "^3.0.0"
4350 5202
4351sprintf-js@~1.0.2: 5203sprintf-js@~1.0.2:
4352 version "1.0.3" 5204 version "1.0.3"
4353 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 5205 resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
5206 integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
4354 5207
4355sshpk@^1.7.0: 5208sshpk@^1.7.0:
4356 version "1.13.1" 5209 version "1.16.1"
4357 resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 5210 resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
5211 integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
4358 dependencies: 5212 dependencies:
4359 asn1 "~0.2.3" 5213 asn1 "~0.2.3"
4360 assert-plus "^1.0.0" 5214 assert-plus "^1.0.0"
4361 dashdash "^1.12.0"
4362 getpass "^0.1.1"
4363 optionalDependencies:
4364 bcrypt-pbkdf "^1.0.0" 5215 bcrypt-pbkdf "^1.0.0"
5216 dashdash "^1.12.0"
4365 ecc-jsbn "~0.1.1" 5217 ecc-jsbn "~0.1.1"
5218 getpass "^0.1.1"
4366 jsbn "~0.1.0" 5219 jsbn "~0.1.0"
5220 safer-buffer "^2.0.2"
4367 tweetnacl "~0.14.0" 5221 tweetnacl "~0.14.0"
4368 5222
5223static-extend@^0.1.1:
5224 version "0.1.2"
5225 resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
5226 integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
5227 dependencies:
5228 define-property "^0.2.5"
5229 object-copy "^0.1.0"
5230
4369stdout-stream@^1.4.0: 5231stdout-stream@^1.4.0:
4370 version "1.4.0" 5232 version "1.4.1"
4371 resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" 5233 resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de"
5234 integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
4372 dependencies: 5235 dependencies:
4373 readable-stream "^2.0.1" 5236 readable-stream "^2.0.1"
4374 5237
4375stream-browserify@^2.0.1: 5238stream-browserify@^2.0.1:
4376 version "2.0.1" 5239 version "2.0.2"
4377 resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 5240 resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
5241 integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
4378 dependencies: 5242 dependencies:
4379 inherits "~2.0.1" 5243 inherits "~2.0.1"
4380 readable-stream "^2.0.2" 5244 readable-stream "^2.0.2"
4381 5245
4382stream-http@^2.7.2: 5246stream-http@^2.7.2:
4383 version "2.8.0" 5247 version "2.8.3"
4384 resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" 5248 resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
5249 integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
4385 dependencies: 5250 dependencies:
4386 builtin-status-codes "^3.0.0" 5251 builtin-status-codes "^3.0.0"
4387 inherits "^2.0.1" 5252 inherits "^2.0.1"
4388 readable-stream "^2.3.3" 5253 readable-stream "^2.3.6"
4389 to-arraybuffer "^1.0.0" 5254 to-arraybuffer "^1.0.0"
4390 xtend "^4.0.0" 5255 xtend "^4.0.0"
4391 5256
4392strict-uri-encode@^1.0.0: 5257strict-uri-encode@^1.0.0:
4393 version "1.1.0" 5258 version "1.1.0"
4394 resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" 5259 resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
5260 integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
4395 5261
4396string-width@^1.0.1, string-width@^1.0.2: 5262string-width@^1.0.1, string-width@^1.0.2:
4397 version "1.0.2" 5263 version "1.0.2"
4398 resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 5264 resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
5265 integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
4399 dependencies: 5266 dependencies:
4400 code-point-at "^1.0.0" 5267 code-point-at "^1.0.0"
4401 is-fullwidth-code-point "^1.0.0" 5268 is-fullwidth-code-point "^1.0.0"
4402 strip-ansi "^3.0.0" 5269 strip-ansi "^3.0.0"
4403 5270
4404string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: 5271"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
4405 version "2.1.1" 5272 version "2.1.1"
4406 resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 5273 resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
5274 integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
4407 dependencies: 5275 dependencies:
4408 is-fullwidth-code-point "^2.0.0" 5276 is-fullwidth-code-point "^2.0.0"
4409 strip-ansi "^4.0.0" 5277 strip-ansi "^4.0.0"
4410 5278
4411string_decoder@^1.0.0, string_decoder@~1.0.3: 5279string_decoder@^1.0.0:
4412 version "1.0.3" 5280 version "1.2.0"
4413 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 5281 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
5282 integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
4414 dependencies: 5283 dependencies:
4415 safe-buffer "~5.1.0" 5284 safe-buffer "~5.1.0"
4416 5285
4417stringstream@~0.0.4, stringstream@~0.0.5: 5286string_decoder@~1.1.1:
4418 version "0.0.5" 5287 version "1.1.1"
4419 resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 5288 resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
5289 integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
5290 dependencies:
5291 safe-buffer "~5.1.0"
4420 5292
4421strip-ansi@^3.0.0, strip-ansi@^3.0.1: 5293strip-ansi@^3.0.0, strip-ansi@^3.0.1:
4422 version "3.0.1" 5294 version "3.0.1"
4423 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 5295 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
5296 integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
4424 dependencies: 5297 dependencies:
4425 ansi-regex "^2.0.0" 5298 ansi-regex "^2.0.0"
4426 5299
4427strip-ansi@^4.0.0: 5300strip-ansi@^4.0.0:
4428 version "4.0.0" 5301 version "4.0.0"
4429 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 5302 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
5303 integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
4430 dependencies: 5304 dependencies:
4431 ansi-regex "^3.0.0" 5305 ansi-regex "^3.0.0"
4432 5306
4433strip-bom@^2.0.0: 5307strip-bom@^2.0.0:
4434 version "2.0.0" 5308 version "2.0.0"
4435 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 5309 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
5310 integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
4436 dependencies: 5311 dependencies:
4437 is-utf8 "^0.2.0" 5312 is-utf8 "^0.2.0"
4438 5313
4439strip-bom@^3.0.0: 5314strip-bom@^3.0.0:
4440 version "3.0.0" 5315 version "3.0.0"
4441 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 5316 resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
5317 integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
4442 5318
4443strip-eof@^1.0.0: 5319strip-eof@^1.0.0:
4444 version "1.0.0" 5320 version "1.0.0"
4445 resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 5321 resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
5322 integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
4446 5323
4447strip-indent@^1.0.1: 5324strip-indent@^1.0.1:
4448 version "1.0.1" 5325 version "1.0.1"
4449 resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 5326 resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
5327 integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
4450 dependencies: 5328 dependencies:
4451 get-stdin "^4.0.1" 5329 get-stdin "^4.0.1"
4452 5330
4453strip-json-comments@~1.0.1: 5331strip-json-comments@~1.0.1:
4454 version "1.0.4" 5332 version "1.0.4"
4455 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 5333 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
5334 integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
4456 5335
4457strip-json-comments@~2.0.1: 5336strip-json-comments@~2.0.1:
4458 version "2.0.1" 5337 version "2.0.1"
4459 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 5338 resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
5339 integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
4460 5340
4461style-loader@^0.19.1: 5341style-loader@^0.19.1:
4462 version "0.19.1" 5342 version "0.19.1"
4463 resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85" 5343 resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85"
5344 integrity sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==
4464 dependencies: 5345 dependencies:
4465 loader-utils "^1.0.2" 5346 loader-utils "^1.0.2"
4466 schema-utils "^0.3.0" 5347 schema-utils "^0.3.0"
@@ -4468,28 +5349,33 @@ style-loader@^0.19.1:
4468supports-color@^2.0.0: 5349supports-color@^2.0.0:
4469 version "2.0.0" 5350 version "2.0.0"
4470 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 5351 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
5352 integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
4471 5353
4472supports-color@^3.2.3: 5354supports-color@^3.2.3:
4473 version "3.2.3" 5355 version "3.2.3"
4474 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 5356 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
5357 integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
4475 dependencies: 5358 dependencies:
4476 has-flag "^1.0.0" 5359 has-flag "^1.0.0"
4477 5360
4478supports-color@^4.0.0, supports-color@^4.2.1: 5361supports-color@^4.2.1:
4479 version "4.5.0" 5362 version "4.5.0"
4480 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" 5363 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
5364 integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
4481 dependencies: 5365 dependencies:
4482 has-flag "^2.0.0" 5366 has-flag "^2.0.0"
4483 5367
4484supports-color@^5.1.0: 5368supports-color@^5.3.0, supports-color@^5.4.0:
4485 version "5.1.0" 5369 version "5.5.0"
4486 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" 5370 resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
5371 integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
4487 dependencies: 5372 dependencies:
4488 has-flag "^2.0.0" 5373 has-flag "^3.0.0"
4489 5374
4490svgo@^0.7.0: 5375svgo@^0.7.0:
4491 version "0.7.2" 5376 version "0.7.2"
4492 resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" 5377 resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
5378 integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=
4493 dependencies: 5379 dependencies:
4494 coa "~1.0.1" 5380 coa "~1.0.1"
4495 colors "~1.1.2" 5381 colors "~1.1.2"
@@ -4499,9 +5385,22 @@ svgo@^0.7.0:
4499 sax "~1.2.1" 5385 sax "~1.2.1"
4500 whet.extend "~0.9.9" 5386 whet.extend "~0.9.9"
4501 5387
5388table@4.0.2:
5389 version "4.0.2"
5390 resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
5391 integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==
5392 dependencies:
5393 ajv "^5.2.3"
5394 ajv-keywords "^2.1.0"
5395 chalk "^2.1.0"
5396 lodash "^4.17.4"
5397 slice-ansi "1.0.0"
5398 string-width "^2.1.1"
5399
4502table@^3.7.8: 5400table@^3.7.8:
4503 version "3.8.3" 5401 version "3.8.3"
4504 resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 5402 resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
5403 integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=
4505 dependencies: 5404 dependencies:
4506 ajv "^4.7.0" 5405 ajv "^4.7.0"
4507 ajv-keywords "^1.0.0" 5406 ajv-keywords "^1.0.0"
@@ -4510,121 +5409,150 @@ table@^3.7.8:
4510 slice-ansi "0.0.4" 5409 slice-ansi "0.0.4"
4511 string-width "^2.0.0" 5410 string-width "^2.0.0"
4512 5411
4513table@^4.0.1:
4514 version "4.0.2"
4515 resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
4516 dependencies:
4517 ajv "^5.2.3"
4518 ajv-keywords "^2.1.0"
4519 chalk "^2.1.0"
4520 lodash "^4.17.4"
4521 slice-ansi "1.0.0"
4522 string-width "^2.1.1"
4523
4524tapable@^0.2.7: 5412tapable@^0.2.7:
4525 version "0.2.8" 5413 version "0.2.9"
4526 resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" 5414 resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8"
5415 integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==
4527 5416
4528tar-pack@^3.4.0: 5417tar@^2.0.0:
4529 version "3.4.1" 5418 version "2.2.2"
4530 resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" 5419 resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40"
4531 dependencies: 5420 integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==
4532 debug "^2.2.0"
4533 fstream "^1.0.10"
4534 fstream-ignore "^1.0.5"
4535 once "^1.3.3"
4536 readable-stream "^2.1.4"
4537 rimraf "^2.5.1"
4538 tar "^2.2.1"
4539 uid-number "^0.0.6"
4540
4541tar@^2.0.0, tar@^2.2.1:
4542 version "2.2.1"
4543 resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
4544 dependencies: 5421 dependencies:
4545 block-stream "*" 5422 block-stream "*"
4546 fstream "^1.0.2" 5423 fstream "^1.0.12"
4547 inherits "2" 5424 inherits "2"
4548 5425
5426tar@^4:
5427 version "4.4.8"
5428 resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
5429 integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
5430 dependencies:
5431 chownr "^1.1.1"
5432 fs-minipass "^1.2.5"
5433 minipass "^2.3.4"
5434 minizlib "^1.1.1"
5435 mkdirp "^0.5.0"
5436 safe-buffer "^5.1.2"
5437 yallist "^3.0.2"
5438
4549text-table@~0.2.0: 5439text-table@~0.2.0:
4550 version "0.2.0" 5440 version "0.2.0"
4551 resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 5441 resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
5442 integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
4552 5443
4553through@^2.3.6: 5444through@^2.3.6:
4554 version "2.3.8" 5445 version "2.3.8"
4555 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 5446 resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
5447 integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
4556 5448
4557timers-browserify@^2.0.4: 5449timers-browserify@^2.0.4:
4558 version "2.0.6" 5450 version "2.0.10"
4559 resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" 5451 resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
5452 integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
4560 dependencies: 5453 dependencies:
4561 setimmediate "^1.0.4" 5454 setimmediate "^1.0.4"
4562 5455
4563tmp@^0.0.33: 5456tmp@^0.0.33:
4564 version "0.0.33" 5457 version "0.0.33"
4565 resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 5458 resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
5459 integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
4566 dependencies: 5460 dependencies:
4567 os-tmpdir "~1.0.2" 5461 os-tmpdir "~1.0.2"
4568 5462
4569to-arraybuffer@^1.0.0: 5463to-arraybuffer@^1.0.0:
4570 version "1.0.1" 5464 version "1.0.1"
4571 resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 5465 resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
5466 integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
4572 5467
4573to-fast-properties@^1.0.3: 5468to-fast-properties@^1.0.3:
4574 version "1.0.3" 5469 version "1.0.3"
4575 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 5470 resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
5471 integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
4576 5472
4577tough-cookie@~2.3.0, tough-cookie@~2.3.3: 5473to-object-path@^0.3.0:
4578 version "2.3.3" 5474 version "0.3.0"
4579 resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" 5475 resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
5476 integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
4580 dependencies: 5477 dependencies:
5478 kind-of "^3.0.2"
5479
5480to-regex-range@^2.1.0:
5481 version "2.1.1"
5482 resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
5483 integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
5484 dependencies:
5485 is-number "^3.0.0"
5486 repeat-string "^1.6.1"
5487
5488to-regex@^3.0.1, to-regex@^3.0.2:
5489 version "3.0.2"
5490 resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
5491 integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
5492 dependencies:
5493 define-property "^2.0.2"
5494 extend-shallow "^3.0.2"
5495 regex-not "^1.0.2"
5496 safe-regex "^1.1.0"
5497
5498tough-cookie@~2.4.3:
5499 version "2.4.3"
5500 resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
5501 integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
5502 dependencies:
5503 psl "^1.1.24"
4581 punycode "^1.4.1" 5504 punycode "^1.4.1"
4582 5505
4583trim-newlines@^1.0.0: 5506trim-newlines@^1.0.0:
4584 version "1.0.0" 5507 version "1.0.0"
4585 resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 5508 resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
5509 integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
4586 5510
4587trim-right@^1.0.1: 5511trim-right@^1.0.1:
4588 version "1.0.1" 5512 version "1.0.1"
4589 resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 5513 resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
5514 integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
4590 5515
4591"true-case-path@^1.0.2": 5516"true-case-path@^1.0.2":
4592 version "1.0.2" 5517 version "1.0.3"
4593 resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" 5518 resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d"
5519 integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==
4594 dependencies: 5520 dependencies:
4595 glob "^6.0.4" 5521 glob "^7.1.2"
4596 5522
4597tty-browserify@0.0.0: 5523tty-browserify@0.0.0:
4598 version "0.0.0" 5524 version "0.0.0"
4599 resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 5525 resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
5526 integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
4600 5527
4601tunnel-agent@^0.6.0: 5528tunnel-agent@^0.6.0:
4602 version "0.6.0" 5529 version "0.6.0"
4603 resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 5530 resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
5531 integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
4604 dependencies: 5532 dependencies:
4605 safe-buffer "^5.0.1" 5533 safe-buffer "^5.0.1"
4606 5534
4607tunnel-agent@~0.4.1:
4608 version "0.4.3"
4609 resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
4610
4611tweetnacl@^0.14.3, tweetnacl@~0.14.0: 5535tweetnacl@^0.14.3, tweetnacl@~0.14.0:
4612 version "0.14.5" 5536 version "0.14.5"
4613 resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 5537 resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
5538 integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
4614 5539
4615type-check@~0.3.2: 5540type-check@~0.3.2:
4616 version "0.3.2" 5541 version "0.3.2"
4617 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 5542 resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
5543 integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
4618 dependencies: 5544 dependencies:
4619 prelude-ls "~1.1.2" 5545 prelude-ls "~1.1.2"
4620 5546
4621typedarray@^0.0.6: 5547typedarray@^0.0.6:
4622 version "0.0.6" 5548 version "0.0.6"
4623 resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 5549 resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
5550 integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
4624 5551
4625uglify-js@^2.8.29: 5552uglify-js@^2.8.29:
4626 version "2.8.29" 5553 version "2.8.29"
4627 resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 5554 resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
5555 integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0=
4628 dependencies: 5556 dependencies:
4629 source-map "~0.5.1" 5557 source-map "~0.5.1"
4630 yargs "~3.10.0" 5558 yargs "~3.10.0"
@@ -4634,40 +5562,71 @@ uglify-js@^2.8.29:
4634uglify-to-browserify@~1.0.0: 5562uglify-to-browserify@~1.0.0:
4635 version "1.0.2" 5563 version "1.0.2"
4636 resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 5564 resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
5565 integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
4637 5566
4638uglifyjs-webpack-plugin@^0.4.6: 5567uglifyjs-webpack-plugin@^0.4.6:
4639 version "0.4.6" 5568 version "0.4.6"
4640 resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" 5569 resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
5570 integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=
4641 dependencies: 5571 dependencies:
4642 source-map "^0.5.6" 5572 source-map "^0.5.6"
4643 uglify-js "^2.8.29" 5573 uglify-js "^2.8.29"
4644 webpack-sources "^1.0.1" 5574 webpack-sources "^1.0.1"
4645 5575
4646uid-number@^0.0.6: 5576union-value@^1.0.0:
4647 version "0.0.6" 5577 version "1.0.0"
4648 resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 5578 resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
5579 integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
5580 dependencies:
5581 arr-union "^3.1.0"
5582 get-value "^2.0.6"
5583 is-extendable "^0.1.1"
5584 set-value "^0.4.3"
4649 5585
4650uniq@^1.0.1: 5586uniq@^1.0.1:
4651 version "1.0.1" 5587 version "1.0.1"
4652 resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" 5588 resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
4653 5589 integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
4654uniqid@^4.0.0:
4655 version "4.1.1"
4656 resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
4657 dependencies:
4658 macaddress "^0.2.8"
4659 5590
4660uniqs@^2.0.0: 5591uniqs@^2.0.0:
4661 version "2.0.0" 5592 version "2.0.0"
4662 resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" 5593 resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
5594 integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
4663 5595
4664universalify@^0.1.0: 5596universalify@^0.1.0:
4665 version "0.1.1" 5597 version "0.1.2"
4666 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" 5598 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
5599 integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
5600
5601unset-value@^1.0.0:
5602 version "1.0.0"
5603 resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
5604 integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
5605 dependencies:
5606 has-value "^0.3.1"
5607 isobject "^3.0.0"
5608
5609upath@^1.1.1:
5610 version "1.1.2"
5611 resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
5612 integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
5613
5614uri-js@^4.2.2:
5615 version "4.2.2"
5616 resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
5617 integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
5618 dependencies:
5619 punycode "^2.1.0"
5620
5621urix@^0.1.0:
5622 version "0.1.0"
5623 resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
5624 integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
4667 5625
4668url-loader@^0.6.2: 5626url-loader@^0.6.2:
4669 version "0.6.2" 5627 version "0.6.2"
4670 resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7" 5628 resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.6.2.tgz#a007a7109620e9d988d14bce677a1decb9a993f7"
5629 integrity sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==
4671 dependencies: 5630 dependencies:
4672 loader-utils "^1.0.2" 5631 loader-utils "^1.0.2"
4673 mime "^1.4.1" 5632 mime "^1.4.1"
@@ -4676,44 +5635,71 @@ url-loader@^0.6.2:
4676url@^0.11.0: 5635url@^0.11.0:
4677 version "0.11.0" 5636 version "0.11.0"
4678 resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 5637 resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
5638 integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
4679 dependencies: 5639 dependencies:
4680 punycode "1.3.2" 5640 punycode "1.3.2"
4681 querystring "0.2.0" 5641 querystring "0.2.0"
4682 5642
5643use@^3.1.0:
5644 version "3.1.1"
5645 resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
5646 integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
5647
4683user-home@^2.0.0: 5648user-home@^2.0.0:
4684 version "2.0.0" 5649 version "2.0.0"
4685 resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 5650 resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
5651 integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8=
4686 dependencies: 5652 dependencies:
4687 os-homedir "^1.0.0" 5653 os-homedir "^1.0.0"
4688 5654
4689util-deprecate@~1.0.1: 5655util-deprecate@~1.0.1:
4690 version "1.0.2" 5656 version "1.0.2"
4691 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 5657 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
5658 integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
4692 5659
4693util@0.10.3, util@^0.10.3: 5660util@0.10.3:
4694 version "0.10.3" 5661 version "0.10.3"
4695 resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 5662 resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
5663 integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
4696 dependencies: 5664 dependencies:
4697 inherits "2.0.1" 5665 inherits "2.0.1"
4698 5666
4699uuid@^3.0.0, uuid@^3.1.0: 5667util@^0.10.3:
4700 version "3.2.1" 5668 version "0.10.4"
4701 resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 5669 resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
5670 integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
5671 dependencies:
5672 inherits "2.0.3"
5673
5674util@^0.11.0:
5675 version "0.11.1"
5676 resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
5677 integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
5678 dependencies:
5679 inherits "2.0.3"
5680
5681uuid@^3.3.2:
5682 version "3.3.2"
5683 resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
5684 integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
4702 5685
4703validate-npm-package-license@^3.0.1: 5686validate-npm-package-license@^3.0.1:
4704 version "3.0.1" 5687 version "3.0.4"
4705 resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 5688 resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
5689 integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
4706 dependencies: 5690 dependencies:
4707 spdx-correct "~1.0.0" 5691 spdx-correct "^3.0.0"
4708 spdx-expression-parse "~1.0.0" 5692 spdx-expression-parse "^3.0.0"
4709 5693
4710vendors@^1.0.0: 5694vendors@^1.0.0:
4711 version "1.0.1" 5695 version "1.0.3"
4712 resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" 5696 resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
5697 integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
4713 5698
4714verror@1.10.0: 5699verror@1.10.0:
4715 version "1.10.0" 5700 version "1.10.0"
4716 resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 5701 resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
5702 integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
4717 dependencies: 5703 dependencies:
4718 assert-plus "^1.0.0" 5704 assert-plus "^1.0.0"
4719 core-util-is "1.0.2" 5705 core-util-is "1.0.2"
@@ -4722,32 +5708,36 @@ verror@1.10.0:
4722vm-browserify@0.0.4: 5708vm-browserify@0.0.4:
4723 version "0.0.4" 5709 version "0.0.4"
4724 resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 5710 resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
5711 integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
4725 dependencies: 5712 dependencies:
4726 indexof "0.0.1" 5713 indexof "0.0.1"
4727 5714
4728watchpack@^1.4.0: 5715watchpack@^1.4.0:
4729 version "1.4.0" 5716 version "1.6.0"
4730 resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" 5717 resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
5718 integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
4731 dependencies: 5719 dependencies:
4732 async "^2.1.2" 5720 chokidar "^2.0.2"
4733 chokidar "^1.7.0"
4734 graceful-fs "^4.1.2" 5721 graceful-fs "^4.1.2"
5722 neo-async "^2.5.0"
4735 5723
4736webpack-sources@^1.0.1: 5724webpack-sources@^1.0.1:
4737 version "1.1.0" 5725 version "1.3.0"
4738 resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" 5726 resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
5727 integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
4739 dependencies: 5728 dependencies:
4740 source-list-map "^2.0.0" 5729 source-list-map "^2.0.0"
4741 source-map "~0.6.1" 5730 source-map "~0.6.1"
4742 5731
4743webpack@^3.10.0: 5732webpack@^3.10.0:
4744 version "3.10.0" 5733 version "3.12.0"
4745 resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" 5734 resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.12.0.tgz#3f9e34360370602fcf639e97939db486f4ec0d74"
5735 integrity sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==
4746 dependencies: 5736 dependencies:
4747 acorn "^5.0.0" 5737 acorn "^5.0.0"
4748 acorn-dynamic-import "^2.0.0" 5738 acorn-dynamic-import "^2.0.0"
4749 ajv "^5.1.5" 5739 ajv "^6.1.0"
4750 ajv-keywords "^2.0.0" 5740 ajv-keywords "^3.1.0"
4751 async "^2.1.2" 5741 async "^2.1.2"
4752 enhanced-resolve "^3.4.0" 5742 enhanced-resolve "^3.4.0"
4753 escope "^3.6.0" 5743 escope "^3.6.0"
@@ -4770,42 +5760,51 @@ webpack@^3.10.0:
4770whet.extend@~0.9.9: 5760whet.extend@~0.9.9:
4771 version "0.9.9" 5761 version "0.9.9"
4772 resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" 5762 resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
5763 integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=
4773 5764
4774which-module@^1.0.0: 5765which-module@^1.0.0:
4775 version "1.0.0" 5766 version "1.0.0"
4776 resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 5767 resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
5768 integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
4777 5769
4778which-module@^2.0.0: 5770which-module@^2.0.0:
4779 version "2.0.0" 5771 version "2.0.0"
4780 resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 5772 resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
5773 integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
4781 5774
4782which@1, which@^1.2.9: 5775which@1, which@^1.2.9:
4783 version "1.3.0" 5776 version "1.3.1"
4784 resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 5777 resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
5778 integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
4785 dependencies: 5779 dependencies:
4786 isexe "^2.0.0" 5780 isexe "^2.0.0"
4787 5781
4788wide-align@^1.1.0: 5782wide-align@^1.1.0:
4789 version "1.1.2" 5783 version "1.1.3"
4790 resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 5784 resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
5785 integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
4791 dependencies: 5786 dependencies:
4792 string-width "^1.0.2" 5787 string-width "^1.0.2 || 2"
4793 5788
4794window-size@0.1.0: 5789window-size@0.1.0:
4795 version "0.1.0" 5790 version "0.1.0"
4796 resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 5791 resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
5792 integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
4797 5793
4798wordwrap@0.0.2: 5794wordwrap@0.0.2:
4799 version "0.0.2" 5795 version "0.0.2"
4800 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 5796 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
5797 integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
4801 5798
4802wordwrap@~1.0.0: 5799wordwrap@~1.0.0:
4803 version "1.0.0" 5800 version "1.0.0"
4804 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 5801 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
5802 integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
4805 5803
4806wrap-ansi@^2.0.0: 5804wrap-ansi@^2.0.0:
4807 version "2.1.0" 5805 version "2.1.0"
4808 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 5806 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
5807 integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
4809 dependencies: 5808 dependencies:
4810 string-width "^1.0.1" 5809 string-width "^1.0.1"
4811 strip-ansi "^3.0.1" 5810 strip-ansi "^3.0.1"
@@ -4813,40 +5812,53 @@ wrap-ansi@^2.0.0:
4813wrappy@1: 5812wrappy@1:
4814 version "1.0.2" 5813 version "1.0.2"
4815 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 5814 resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
5815 integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
4816 5816
4817write@^0.2.1: 5817write@^0.2.1:
4818 version "0.2.1" 5818 version "0.2.1"
4819 resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 5819 resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
5820 integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
4820 dependencies: 5821 dependencies:
4821 mkdirp "^0.5.1" 5822 mkdirp "^0.5.1"
4822 5823
4823xtend@^4.0.0: 5824xtend@^4.0.0:
4824 version "4.0.1" 5825 version "4.0.1"
4825 resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 5826 resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
5827 integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
4826 5828
4827y18n@^3.2.1: 5829y18n@^3.2.1:
4828 version "3.2.1" 5830 version "3.2.1"
4829 resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 5831 resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
5832 integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
4830 5833
4831yallist@^2.1.2: 5834yallist@^2.1.2:
4832 version "2.1.2" 5835 version "2.1.2"
4833 resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 5836 resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
5837 integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
5838
5839yallist@^3.0.0, yallist@^3.0.2:
5840 version "3.0.3"
5841 resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
5842 integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
4834 5843
4835yargs-parser@^5.0.0: 5844yargs-parser@^5.0.0:
4836 version "5.0.0" 5845 version "5.0.0"
4837 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" 5846 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
5847 integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=
4838 dependencies: 5848 dependencies:
4839 camelcase "^3.0.0" 5849 camelcase "^3.0.0"
4840 5850
4841yargs-parser@^7.0.0: 5851yargs-parser@^7.0.0:
4842 version "7.0.0" 5852 version "7.0.0"
4843 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" 5853 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
5854 integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k=
4844 dependencies: 5855 dependencies:
4845 camelcase "^4.1.0" 5856 camelcase "^4.1.0"
4846 5857
4847yargs@^7.0.0: 5858yargs@^7.0.0:
4848 version "7.1.0" 5859 version "7.1.0"
4849 resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" 5860 resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
5861 integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=
4850 dependencies: 5862 dependencies:
4851 camelcase "^3.0.0" 5863 camelcase "^3.0.0"
4852 cliui "^3.2.0" 5864 cliui "^3.2.0"
@@ -4865,6 +5877,7 @@ yargs@^7.0.0:
4865yargs@^8.0.2: 5877yargs@^8.0.2:
4866 version "8.0.2" 5878 version "8.0.2"
4867 resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" 5879 resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
5880 integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A=
4868 dependencies: 5881 dependencies:
4869 camelcase "^4.1.0" 5882 camelcase "^4.1.0"
4870 cliui "^3.2.0" 5883 cliui "^3.2.0"
@@ -4883,6 +5896,7 @@ yargs@^8.0.2:
4883yargs@~3.10.0: 5896yargs@~3.10.0:
4884 version "3.10.0" 5897 version "3.10.0"
4885 resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 5898 resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
5899 integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
4886 dependencies: 5900 dependencies:
4887 camelcase "^1.0.2" 5901 camelcase "^1.0.2"
4888 cliui "^2.1.0" 5902 cliui "^2.1.0"