diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ca09066b..5d039822 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,17 +1,20 @@ +exclude: '^static/css/elegant.prod.css' fail_fast: true repos: +- repo: meta + hooks: + - id: check-useless-excludes - repo: https://github.com/prettier/prettier - rev: master + rev: 1.19.1 hooks: - id: prettier files: \.(css|js|md|markdown|json) - exclude: ^static/(tipuesearch|magnific) - repo: https://github.com/python/black - rev: master + rev: 19.10b0 hooks: - id: black - repo: https://github.com/pre-commit/pre-commit-hooks - rev: master + rev: v2.4.0 hooks: - id: check-added-large-files - id: check-ast diff --git a/.travis.yml b/.travis.yml index a3c058c1..ef611791 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,9 @@ dist: trusty python: - '3.6' +env: +- NODE_VERSION="12.13.1" + branches: only: - master @@ -20,6 +23,9 @@ cache: - directories: - $HOME/.cache/pre-commit +before_install: +- nvm install $NODE_VERSION + install: - pip install -r documentation/requirements.txt - pip install -U html5validator diff --git a/.yaspeller.json b/.yaspeller.json index c6bc65cc..52b3701d 100644 --- a/.yaspeller.json +++ b/.yaspeller.json @@ -15,199 +15,117 @@ "ignoreUppercase": true, "maxRequests": 5, "dictionary": [ - "7rack", - "aggregators", - "Alexandr", - "amongst", "analytics", - "andreburgaud", - "André", "AsciiDoc", - "Ashwin", - "ashwinvis", - "Astori", - "autoprefixer", - "AWegnerGitHub", - "Ayub", - "Baskerville", "BestAzon", "bestazon", "bing", - "Blais", + "blockquote", "blog-o-matic", - "bnice5000", "BrowserSync", - "Burgaud", - "cahuk", - "calfzhou", - "calibre", - "Carr", - "Carr's", "cd", "changelog", "ci", "codebase", - "CodeHilite", - "codehilite", "commitizen", - "committer", "config", "crafted", + "cssmin", "customizable", "customizations", - "debiatan", "delinkification", "dev", - "Dijk", "disqus", - "disqus_identifier", "div", - "dogfooding", - "emoji", "exif", "extract_toc", - "Fami", "favicon", - "Fayad", - "fayadfami", - "flexbox", - "FontAwesome", "foss", "FreeLists", "freelists", "fucking", - "Gan", - "Garamond", - "Gert", - "gertvdijk", "GitHub", "github", "github.com", "google", - "gravatar", - "gshen42", + "GulpJS", "gulpjs", "Gómez", - "Hi Talha", - "Hi", - "html5validator", "https", - "Iconifier.net", - "ijvxwtg", - "ImageOptim", - "imgur", - "Inkscape", - "io", "iOS", "iranzo", - "Jed", - "Jeremy", - "jerith", "Jinja", "jinja2", - "Jinkun", "jQuery", "js", - "Jérémie", - "kafran", - "Kamran", - "Kolmar", + "jsx", "LaTeX", - "Lauwers", - "Lechón", - "Lekhonkhobe", - "leotrs", - "liangfu", "lightbox", - "Lin", - "LinkedIn", - "linuxabc", "LiveReload", "MacBook", "mailchimp", "maintainer", "maintainers", "Makefile", - "mansoor", + "Mansoor", "markdown", "matic", "Matija", "md", "Melissa", - "meta", "metadata", - "metatag", - "metatags", "Miguel", - "minification", - "Mohamed", - "Mohanan", "monetization", - "Morehead", - "Métaireau", - "Narula", "navbar", - "Ndung'u", - "Neha", "netlify", "newbies", "newline", - "NodeJS", - "NoDerivatives", "nofollow", - "NonCommercial", + "noopener", "OneLink", "onelink", "organizational", - "os", "Pablo", "Pablo's", "pelicanconf", + "permalink", "permalinks", "peru", - "phdbreak", "photogallery", "piexif", - "piwik", "PostCSS", - "Pubcon", + "postcss", "Pygments", "README", "rebase", "rebasing", "refactor", + "rel", "reST", "reStructuredText", "resubmitting", - "rmorehead", "roadmap", "rss", "screenshots", "setuptools", - "ShareAlike", - "Shen", "sidebar", "sidebar's", "sidebars", - "silverhook", "sitemap", - "Smalllike", + "situational", "solarized", - "SourceCodePro", "StatCounter", "statcounter", + "submitter", "sudo", - "svg", - "svgexport", - "svgo", "takeaways", + "Talha", "talha", "Talha's", "talha131", "talham", "talham_", "themed", - "Thurgood", "timestamps", "Tipue", "tipue", @@ -215,26 +133,20 @@ "toc", "tox", "travis", - "tshepang", - "tshepang_dev", "uncollapsed", "understandability", "unhide", + "unmaintained", "unordered", "validator", + "versioning", "virtualenv", - "w3c_validator", + "webassets", "webmasters", "Wegner", "whitespace", - "xiang", - "xiaoweiz", - "Xin", "yaml", - "Yanxin", - "Yue", - "yuex", - "Zhou", + "yaspeller", "Šuklje" ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 628e4466..adf778a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ - **clean URL:** default URL of categories, tags and archives fails on some servers ([3c7df6a](https://github.com/Pelican-Elegant/elegant/commit/3c7df6a)), closes [#280](https://github.com/Pelican-Elegant/elegant/issues/280) [#276](https://github.com/Pelican-Elegant/elegant/issues/276) - **comments:** W3C validation errors ([76a1f26](https://github.com/Pelican-Elegant/elegant/commit/76a1f26)) - **disqus:** remove SITEURL condition to show Disqus comments section ([753d5a5](https://github.com/Pelican-Elegant/elegant/commit/753d5a5)) -- **lang:** do not override default value of DEFAULT_LANG set by Pelican ([d6c60c2](https://github.com/Pelican-Elegant/elegant/commit/d6c60c2)) +- **lang:** do not override default value of DEFAULT_LANG set by Pelican ([d6c60c2](https://github.com/Pelican-Elegant/elegant/commit/d6c60c2)) - **social:** reduce icon sizes in the sidebar ([c769ba3](https://github.com/Pelican-Elegant/elegant/commit/c769ba3)) - **social:** use nofollow for social links in the sidebar ([50cff87](https://github.com/Pelican-Elegant/elegant/commit/50cff87)) - **social:** W3C validation error ([ec4521e](https://github.com/Pelican-Elegant/elegant/commit/ec4521e)) @@ -27,23 +27,22 @@ - **admonition:** add box shadow ([246f826](https://github.com/Pelican-Elegant/elegant/commit/246f826)) - **admonition:** border color should match the title color ([1adadbe](https://github.com/Pelican-Elegant/elegant/commit/1adadbe)) - **admonition:** increase contrast of title ([7fb82cc](https://github.com/Pelican-Elegant/elegant/commit/7fb82cc)) -- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) +- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) - **clean url:** support clean URL for search page ([088791e](https://github.com/Pelican-Elegant/elegant/commit/088791e)) - **comments:** add support for utterances comment system ([a2151cc](https://github.com/Pelican-Elegant/elegant/commit/a2151cc)), closes [#288](https://github.com/Pelican-Elegant/elegant/issues/288) - **quotes:** improve style and remove font-awesome for quote icon ([9ef3ac8](https://github.com/Pelican-Elegant/elegant/commit/9ef3ac8)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) - **social:** add icons for 7 more websites ([8dcf8fa](https://github.com/Pelican-Elegant/elegant/commit/8dcf8fa)), closes [#494](https://github.com/Pelican-Elegant/elegant/issues/494) -- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) +- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) - **table:** add style rule to make tables pop out ([6a8500b](https://github.com/Pelican-Elegant/elegant/commit/6a8500b)), closes [#440](https://github.com/Pelican-Elegant/elegant/issues/440) ### Performance Improvements -- **admonition:** add attributes to svg iamges ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) +- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) - **requests:** remove font awesome ([7c20145](https://github.com/Pelican-Elegant/elegant/commit/7c20145)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) ### BREAKING CHANGES -- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result - in one less web request, which in turn will improve your websites performance. +- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result in one less web request, which in turn will improve your websites performance. - **social:** Style customization and configuration of social icons in the sidebar has changed. @@ -58,7 +57,7 @@ New icons have better colors and bigger sizes. ### Bug Fixes -- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) +- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) - **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) - **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) @@ -126,8 +125,8 @@ New icons have better colors and bigger sizes. - **footer:** open exit links in new tab ([8fd9f28](https://github.com/Pelican-Elegant/elegant/commit/8fd9f28)) - **footer:** optionally show the host information ([9de2dab](https://github.com/Pelican-Elegant/elegant/commit/9de2dab)) - **footer:** powered by message is always aligned to the right ([5e47b7c](https://github.com/Pelican-Elegant/elegant/commit/5e47b7c)) -- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) -- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) +- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) +- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) - **onelink:** add Amazon Affiliate Disclosure ([cbfa6ac](https://github.com/Pelican-Elegant/elegant/commit/cbfa6ac)) # Version 2.3.0 @@ -141,7 +140,7 @@ New icons have better colors and bigger sizes. ## Features -- New: FontAwesome updated to version 4.7.0 +- New: FontAwesome updated to version 4.7.0 - New: `Photos` plugin support for photo gallery creation - New: Lightbox support for `Photos` plugin - Fixed: Amazon One Link div is in the header @@ -242,7 +241,7 @@ New icons have better colors and bigger sizes. - Next and previous article navigation is placed below comments section so that article's content and comments appear together - Article title and site name in `` tag is separated by `·` which is cleaner and more subtle than `-` - Subtitle of articles and pages is added in `<title>` tag along with main title -- Description meta tag on Home Page uses `SITE_DESCRIPTION` +- Description metadata tag on Home Page uses `SITE_DESCRIPTION` - Bug fix: Expand comments section if URL points to a comment - Bug fix: CSS style of links in an unordered list inside article content is different from article links @@ -258,13 +257,13 @@ New icons have better colors and bigger sizes. # Version 1.1 - Add template for pages. Pages do not have tags, category and Disqus comments -- Keep style of a hyperlink in `modified` meta data consisted with the theme -- Add `keywords` meta tag that uses keywords, tags and category attribute of articles and pages +- Keep style of a hyperlink in `modified` metadata consisted with the theme +- Add `keywords` metadata tag that uses keywords, tags and category attribute of articles and pages - Validate search form for empty strings - If `RECENT_ARTICLES_COUNT` is undefined, set it to 10. So that Pelican does not throw critical error - Bug fix: Path of search.html in search form action should always be absolute -- Bug fix: Copyright meta tag should be set to the author, instead of the license -- Bug fix: Close meta tags +- Bug fix: Copyright metadata tag should be set to the author, instead of the license +- Bug fix: Close metadata tags - Bug fix: ID of search form in 404 page should be different from the ID of search form in main navigation - Bug fix: Links in ordered list in an article do not conform to the link style in rest of the article diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be80312a..105c6ea0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,7 @@ -See our documentation at following link: +# Contributions -<https://elegant.oncrashreboot.com/categories#contributing-ref> +We welcome contributions to the Elegant project! + +If you are considering contributing, [please read this](https://elegant.oncrashreboot.com/invitation-to-participate.html). + +If you have a patch ready for pull request, [please read this before contributing](https://elegant.oncrashreboot.com/how-to-contribute.html). diff --git a/documentation/content/101 Quick Start/security.md b/documentation/content/101 Quick Start/security.md new file mode 100644 index 00000000..f667d701 --- /dev/null +++ b/documentation/content/101 Quick Start/security.md @@ -0,0 +1,18 @@ +Title: Elegant Is Safe +Tags: security, +Category: 101 — Quick Start +Date: 2019-12-02 11:45 +Slug: elegant-is-safe +Subtitle: +Summary: +Keywords: +Authors: Talha Mansoor + +Static sites are usually safer than server side rendered sites. There can be some edge cases though even for a static site. + +We came to know about a potential security issue that involves, `target="_blank"`. We have updated our code to follow the recommended fix. + +You can read more about the issue and its fix at these links, + +1. [About rel=noopener](https://mathiasbynens.github.io/rel-noopener/) +1. [react/jsx-no-target-blank](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md) diff --git a/documentation/content/101 Quick Start/testimonials.md b/documentation/content/101 Quick Start/testimonials.md index 81b0a0de..f5e5f14b 100644 --- a/documentation/content/101 Quick Start/testimonials.md +++ b/documentation/content/101 Quick Start/testimonials.md @@ -11,27 +11,27 @@ authors: Talha Mansoor > Thanks for this amazing project. -[Sebastian Lauwers](https://github.com/Pelican-Elegant/elegant/issues/111#issuecomment-40943827) +[Sebastian Lauwers](https://github.com/Pelican-Elegant/elegant/issues/111#issuecomment-40943827) <!-- yaspeller ignore --> > Let me start by saying your theme is awesome. I would like to use it for my blog. -[bnice5000](https://github.com/Pelican-Elegant/elegant/issues/115#issue-30103539) +[bnice5000](https://github.com/Pelican-Elegant/elegant/issues/115#issue-30103539) <!-- yaspeller ignore --> > i love the elegant theme -[7rack](https://github.com/Pelican-Elegant/elegant/issues/118#issue-32226954) +[7rack](https://github.com/Pelican-Elegant/elegant/issues/118#issue-32226954) <!-- yaspeller ignore --> > I tried your pelican theme elegant, it's awesome, clean and elegant. [悟道洞穴人](https://github.com/Pelican-Elegant/elegant/pull/2#issue-19502670) -<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> yours is the most innovative Pelican theme I've seen yet: <a href="http://t.co/worboJFRuX">http://t.co/worboJFRuX</a>. I love the search feature.</p>— Tshepang Lekhonkhobe (@tshepang_dev) <a href="https://twitter.com/tshepang_dev/statuses/384347807387095040">September 29, 2013</a></blockquote> +<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> yours is the most innovative Pelican theme I've seen yet: <a href="http://t.co/worboJFRuX">http://t.co/worboJFRuX</a>. I love the search feature.</p>— Tshepang Lekhonkhobe (@tshepang_dev) <a href="https://twitter.com/tshepang_dev/statuses/384347807387095040">September 29, 2013</a></blockquote> <!-- yaspeller ignore --> <script async src="//platform.twitter.com/widgets.js"></script> -<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Thanks for the Elegant theme. It is really elegant :).</p>— Simon Cahuk (@cahuk) <a href="https://twitter.com/cahuk/statuses/391533360830775296">October 19, 2013</a></blockquote> +<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Thanks for the Elegant theme. It is really elegant :).</p>— Simon Cahuk (@cahuk) <a href="https://twitter.com/cahuk/statuses/391533360830775296">October 19, 2013</a></blockquote> <!-- yaspeller ignore --> <script async src="//platform.twitter.com/widgets.js"></script> -<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Hi, Elegant is a cool theme. Checking it out.</p>— Fayad Fami (@fayadfami) <a href="https://twitter.com/fayadfami/statuses/451420620241137664">April 2, 2014</a></blockquote> +<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Hi, Elegant is a cool theme. Checking it out.</p>— Fayad Fami (@fayadfami) <a href="https://twitter.com/fayadfami/statuses/451420620241137664">April 2, 2014</a></blockquote> <!-- yaspeller ignore --> <script async src="//platform.twitter.com/widgets.js"></script> > I'm hugely impressed with your work on the theme; thank you for opening the @@ -41,58 +41,58 @@ J L > Thank you very much for your reply and for your great Pelican theme !) -Alexandr +Alexandr <!-- yaspeller ignore --> > pelican-elegant is the best pelican theme -vim xiang +vim xiang <!-- yaspeller ignore --> > as I'm just starting using Pelican, I have to say: great work on the elegant theme. -Yanxin +Yanxin <!-- yaspeller ignore --> > I am using the very nice elegant theme for pelican that you wrote. -Brian Blais +Brian Blais <!-- yaspeller ignore --> > It is really awesome! -Jinkun Lin +Jinkun Lin <!-- yaspeller ignore --> > thanks for writing the "elegant" theme -[Jed Brown](https://plus.google.com/u/0/+JedBrown/) +[Jed Brown](https://plus.google.com/u/0/+JedBrown/) <!-- yaspeller ignore --> -> Hi Talha, thanks to your great theme, I made my homepage better :) I was once +> Hi Talha, thanks to your great theme, I made my homepage better :) I was once <!-- yaspeller ignore --> > trying to make a theme of my own. But never can i make such an awesome one > like #Elegant#. -[liangfu](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1451253675) +[liangfu](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1451253675) <!-- yaspeller ignore --> > Thanks for your beautiful work! -[xiaoweiz](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1429880788) +[xiaoweiz](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1429880788) <!-- yaspeller ignore --> > Awesome work -[Kevin Ndung'u](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1364943390) +[Kevin Ndung'u](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1364943390) <!-- yaspeller ignore --> > Nice work! -[Mohamed](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1340387082) +[Mohamed](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1340387082) <!-- yaspeller ignore --> > Thanks dude, an awesome theme! -[linuxabc](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1123824877) +[linuxabc](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1123824877) <!-- yaspeller ignore --> > Really cool theme. [Calf](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1117848663) -> This theme is fucking awesome. I will start using it =). Thank you +> This theme is fucking awesome. I will start using it =). Thank you <!-- yaspeller ignore --> -[Kolmar Kafran](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1116584083) +[Kolmar Kafran](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1116584083) <!-- yaspeller ignore --> > Thank you so much for this wonderful pelican theme -[phdbreak](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1080851511) +[phdbreak](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1080851511) <!-- yaspeller ignore --> diff --git a/documentation/content/Advanced Features/favicons-speed-dial-icons.md b/documentation/content/Advanced Features/favicons-speed-dial-icons.md index d6cbb834..4d210aa3 100644 --- a/documentation/content/Advanced Features/favicons-speed-dial-icons.md +++ b/documentation/content/Advanced Features/favicons-speed-dial-icons.md @@ -36,5 +36,6 @@ Your images should have these names, 1. `apple-touch-icon.png` 1. `favicon.ico` -I highly recommend you to use [Iconifier.net](http://iconifier.net/) to -generate the set of images. +I highly recommend you to use +[Iconifier.net](http://iconifier.net/) <!-- yaspeller ignore --> +to generate the set of images. diff --git a/documentation/content/Advanced Features/meta-data.md b/documentation/content/Advanced Features/metadata.md similarity index 100% rename from documentation/content/Advanced Features/meta-data.md rename to documentation/content/Advanced Features/metadata.md diff --git a/documentation/content/Advanced Features/modified-date.md b/documentation/content/Advanced Features/modified-date.md index 91c822c3..42258fd2 100644 --- a/documentation/content/Advanced Features/modified-date.md +++ b/documentation/content/Advanced Features/modified-date.md @@ -1,6 +1,6 @@ --- Title: How does modified metadata works -Tags: web-design, meta-data, date +Tags: web-design, metadata, date Category: Advanced Features Date: 2014-04-19 14:52 Slug: how-does-modified-metadata-works diff --git a/documentation/content/Analytics SEO SMO/seo-social-media-tags.md b/documentation/content/Analytics SEO SMO/seo-social-media-tags.md index 413d6c08..c04e91d6 100644 --- a/documentation/content/Analytics SEO SMO/seo-social-media-tags.md +++ b/documentation/content/Analytics SEO SMO/seo-social-media-tags.md @@ -23,7 +23,7 @@ social media. ## Social Media Optimization (SMO) -Inspired by the post ["What is the New SEO? Pubcon 2013 +Inspired by the post ["What is the New SEO? Pubcon 2013 <!-- yaspeller ignore --> Takeaways"](https://medium.com/on-startups/f15264e5d790), I looked into the tags that social media sites use. They can be broadly divided into two categories, [Open Graph protocol](http://ogp.me/) and [Twitter diff --git a/documentation/content/Components/add-license.md b/documentation/content/Components/add-license.md index 0fd8926e..246485fe 100644 --- a/documentation/content/Components/add-license.md +++ b/documentation/content/Components/add-license.md @@ -13,7 +13,7 @@ You can optionally define `SITE_LICENSE` variable in Pelican configuration. It w For example, ```python -SITE_LICENSE = """Content licensed under <a rel="license" +SITE_LICENSE = """Content licensed under <a rel="license nofollow noopener noreferrer" href="http://creativecommons.org/licenses/by/4.0/" target="_blank"> Creative Commons Attribution 4.0 International License</a>.""" ``` diff --git a/documentation/content/Components/article-subtitle.md b/documentation/content/Components/article-subtitle.md index 3b774b33..fc11543c 100644 --- a/documentation/content/Components/article-subtitle.md +++ b/documentation/content/Components/article-subtitle.md @@ -8,8 +8,8 @@ Category: Components authors: Talha Mansoor --- -Pelican lets you define title of your article in the meta data. Elegant adds -subtitle support. Just define `subtitle` in your article's meta data and it +Pelican lets you define title of your article in the metadata. Elegant adds +subtitle support. Just define `subtitle` in your article's metadata and it will appear along with your title. Here is an example, ![Article subtitle diff --git a/documentation/content/Components/blockquote.md b/documentation/content/Components/blockquote.md new file mode 100644 index 00000000..adfef2f7 --- /dev/null +++ b/documentation/content/Components/blockquote.md @@ -0,0 +1,27 @@ +Title: Blockquote Style +Tags: style, typography +Category: Components +Date: 2019-12-01 18:41 +Slug: blockquote-style +Authors: Talha Mansoor +Subtitle: +Summary: +Keywords: + +<!-- yaspeller ignore:start --> + +This is how blockquotes appear in the Elegant theme. + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. +> +> Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. Elit pellentesque habitant morbi tristique senectus et. Netus et malesuada fames ac turpis egestas. +> +> Porttitor rhoncus dolor purus non enim praesent elementum facilisis. Augue eget arcu dictum varius duis at consectetur. +> +> Pharetra pharetra massa massa ultricies mi quis. Vulputate enim nulla aliquet porttitor lacus luctus accumsan. Pulvinar neque laoreet suspendisse interdum. +> +> Ultrices eros in cursus turpis massa tincidunt dui ut ornare. Sem et tortor consequat id porta nibh venenatis. Nulla facilisi morbi tempus iaculis urna id volutpat lacus. +> +> Arcu ac tortor dignissim convallis aenean. Mauris pharetra et ultrices neque ornare. Scelerisque fermentum dui faucibus in ornare. Nibh tellus molestie nunc non blandit. + +<!-- yaspeller ignore:end --> diff --git a/documentation/content/Components/filter-tags.md b/documentation/content/Components/filter-tags.md index bf9f5e3e..a1a9a0b4 100644 --- a/documentation/content/Components/filter-tags.md +++ b/documentation/content/Components/filter-tags.md @@ -18,13 +18,13 @@ will automatically filter the list. For example, this is how my tags page looks like -![Tags view -unfiltered]({static}/images/elegant-theme_tags-live-filter-default.png) +![Tags view unfiltered]({static}/images/elegant-theme_tags-live-filter-default.png) -As soon as I type "os", all other tags are filtered out +As soon as I type +"os", <!-- yaspeller ignore --> +all other tags are filtered out -![Tags view filtered for -"os"]({static}/images/elegant-theme_tags-live-filter-filtered.png) +![Tags view filtered for "os"]({static}/images/elegant-theme_tags-live-filter-filtered.png) <!-- yaspeller ignore --> With live filter, your reader will have no difficulty in picking up his desired tag from the list, even if your site has hundreds of tags. diff --git a/documentation/content/Components/heading.md b/documentation/content/Components/heading.md new file mode 100644 index 00000000..10c3f51f --- /dev/null +++ b/documentation/content/Components/heading.md @@ -0,0 +1,39 @@ +Title: Headings Style +Tags: style, typography +Category: Components +Date: 2019-12-01 10:38 +Slug: headings-style +Authors: Talha Mansoor +Subtitle: +Summary: +Keywords: + +Following are the examples of headings as they appear inside an article. + +<!-- yaspeller ignore:start --> + +# Heading 1 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +## Heading 2 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +### Heading 3 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +#### Heading 4 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +##### Heading 5 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +###### Heading 6 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +<!-- yaspeller ignore:end --> diff --git a/documentation/content/Components/line-numbers-code-snippet.md b/documentation/content/Components/line-numbers-code-snippet.md index b8641e41..2014ca55 100644 --- a/documentation/content/Components/line-numbers-code-snippet.md +++ b/documentation/content/Components/line-numbers-code-snippet.md @@ -5,7 +5,7 @@ Category: Components Date: 2013-11-05 17:36 Slug: display-line-numbers-in-code-snippets Summary: reStructuredText and Markdown have directives that generate line numbers for code blocks. Use them to display line numbers in code snippets. -Keywords: codehilite, python-markdown +Keywords: code-snippets, python-markdown authors: Talha Mansoor --- @@ -33,8 +33,10 @@ markup. Use `linenos` flag to switch on line numbers for the snippet. ## Markdown [Python-Markdown](https://github.com/Python-Markdown/markdown/) uses -[CodeHilite](https://python-markdown.github.io/extensions/code_hilite/) -extension for syntax highlighting. Setup CodeHilite, then use Shebang `!#` to +[CodeHilite](https://python-markdown.github.io/extensions/code_hilite/) <!-- yaspeller ignore --> +extension for syntax highlighting. Setup +CodeHilite <!-- yaspeller ignore --> +, then use Shebang `!#` to generate line numbers. :::markdown diff --git a/documentation/content/Components/links.md b/documentation/content/Components/links.md new file mode 100644 index 00000000..2d7fe575 --- /dev/null +++ b/documentation/content/Components/links.md @@ -0,0 +1,43 @@ +Title: Hyperlinks Styles +Tags: style +Category: Components +Date: 2019-12-02 15:09 +Slug: hyperlinks-styles +Authors: Talha Mansoor +Subtitle: +Summary: +Keywords: + +Elegant has three styles for hyperlinks that you can use. + +## Muted Style + +This is the default style of link. + +[Example Link - Use Firefox Browser](https://www.mozilla.org/en-US/firefox/new/) to support open web standards. + +This style is very suitable for long-form articles. To read the rationale behind this choice, read our help article [Why Does Elegant Look The Way It Does?]({filename}../Contributing/why-look-and-feel.md). + +## Amplified Style + +We understand not all links should be muted. Some links require attention. + +[Example Link - Use Firefox Browser](https://www.mozilla.org/en-US/firefox/new/){: class="ampl"} to support open web standards. <!-- yaspeller ignore --> + +To use this style, you need to enable [Markdown attribute list extension](https://python-markdown.github.io/extensions/attr_list/){:class="ampl"}. <!-- yaspeller ignore --> + +``` +# Plugins and extensions +MARKDOWN = { + "extension_configs": { + "markdown.extensions.extra": {}, + "markdown.extensions.meta": {}, + } +} +``` + +Then use this style using `ampl` class. + +```text +[Example Link](https://www.mozilla.org/){: class="ampl"} blah blah +``` diff --git a/documentation/content/Components/permalink.md b/documentation/content/Components/permalink.md new file mode 100644 index 00000000..ee157be0 --- /dev/null +++ b/documentation/content/Components/permalink.md @@ -0,0 +1,57 @@ +Title: Permalinks To Headings +Tags: navigation, +Category: Components +Date: 2019-12-02 11:05 +Slug: permalinks-to-headings +Subtitle: +Summary: +Keywords: + +First, you need to enable the `toc` extension for Markdown in your Pelican configuration. + +```python +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.toc': {} + } +} +``` + +Then enable `permalink` option available for the `toc` extension. + +```python +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.toc': { + 'permalink': 'true', + } + } +} +``` + +Enabling the `permalink` option will provide direct links to each heading. + +Hover over following example heading to see the permalink. + +## Example Heading + +You would get this, + +![Permalinks example using Markdown]({static}/images/elegant-theme-toc-permalinks.png) + +!!! Tip Recommendation + + When set to True the paragraph symbol `¶` or `¶` is used by Python markdown. + This becomes part of the RSS feed. + + We recommend setting permalink option to a space. + +```python +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.toc': { + 'permalink': ' ', + } + } +} +``` diff --git a/documentation/content/Components/table-of-contents.md b/documentation/content/Components/table-of-contents.md index 636c9535..4aca4434 100644 --- a/documentation/content/Components/table-of-contents.md +++ b/documentation/content/Components/table-of-contents.md @@ -71,29 +71,6 @@ This is the content of my sample blog post. I will end my example here. ``` -### Enabling Permalinks - -Although it is not required, we recommend you to take advantage of `permalink` option available for the -`toc` extension. - -Enabling the `permalink` option will -provide direct links to each section. - -![Permalinks example using Markdown]({static}/images/elegant-theme-toc-permalinks.png) - -To enable this option, you need to add the `'permalink': 'true'` property to the -`'markdown.extensions.toc'` section that was added in the previous section. - -```python -MARKDOWN = { - 'extension_configs': { - 'markdown.extensions.toc': { - 'permalink': 'true', - } - } -} -``` - ### Other Options For other options available for the Markdown Table of Contents extension, refer to the diff --git a/documentation/content/Components/web-safe-fonts.md b/documentation/content/Components/web-safe-fonts.md index 67813245..a24dee23 100644 --- a/documentation/content/Components/web-safe-fonts.md +++ b/documentation/content/Components/web-safe-fonts.md @@ -10,6 +10,11 @@ authors: Talha Mansoor Elegant uses commonly available typefaces in every style rule. It has a list of closely matching fonts in the fallback list. -For examples Baskerville is the -first choice for headings. But if reader does not have Baskerville installed, -Garamond will be used. If that too fails then Georgia will be used. +For examples +Baskerville <!-- yaspeller ignore --> +is the +first choice for headings. But if reader does not have +Baskerville <!-- yaspeller ignore --> +installed, +Garamond <!-- yaspeller ignore --> +will be used. If that too fails then Georgia will be used. diff --git a/documentation/content/Connecting With Your Readers/rss-feeds.md b/documentation/content/Connecting With Your Readers/rss-feeds.md index be5e3bd7..e11e3f70 100644 --- a/documentation/content/Connecting With Your Readers/rss-feeds.md +++ b/documentation/content/Connecting With Your Readers/rss-feeds.md @@ -4,15 +4,18 @@ Tags: pelican-theme, font-awesome, web-design Category: Connecting With Your Readers Date: 2014-03-17 15:28 Slug: how-to-show-rss-feeds-icon -Comment_id: ijvxwtg-how-to-show-rss-feeds-icon +Comment_id: how-to-show-rss-feeds-icon Summary: Elegant supports RSS and Atom feeds for your posts, categories and tags authors: Talha Mansoor --- RSS feeds is the oldest and arguably the most used format to publish blog -updates. Its use is not limited to RSS aggregators and readers. Tools like +updates. Its use is not limited to RSS +aggregators <!-- yaspeller ignore --> +and readers. Tools like [IFTTT](https://ifttt.com/recipes?channel=feed) and -[Calibre](http://manual.calibre-ebook.com/news.html) increases RSS feeds' power +[Calibre](http://manual.calibre-ebook.com/news.html) <!-- yaspeller ignore --> +increases RSS feeds' power and versatility by manifolds. To enable RSS feeds, see [Feed diff --git a/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md b/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md index bf8b237b..f36981bd 100644 --- a/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md +++ b/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md @@ -17,8 +17,8 @@ social media profiles; inviting readers to engage with them else where on the web too. Most social widgets are loud and obtrusive. Their colors and placement takes away readers' attention from the actual content. -<img class="align-right" style="width: 179px; height: 202px" -src="{static}/images/social-profiles-sidebar-default-2019-08-12.png" alt="Social +<img class="align-right" style="width: 35%;" +src="{static}/images/social-profiles-sidebar-svg-default.png" alt="Social Profiles in the Sidebar" /> Elegant understands the importance of readers engagement but it makes sure @@ -26,18 +26,19 @@ not to push author's _"online social karma"_ down readers' throats. Elegant displays the widget in the sidebar. Each icon is a link to a social media profile with an optional title attribute. Icons use muted color which -changes when user hovers over them. +changes when user hovers over them. On hover, icon is also scaled up in size. -Here is an example of hovering over LinkedIn icon. +Here is an example of hovering over +LinkedIn <!-- yaspeller ignore --> +icon. -<img style="width: 177px; height: 201px" -src="{static}/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png" alt="Hover over LinkedIn in the Sidebar" /> +<img style="width:35%;" +src="{static}/images/social-profiles-sidebar-svg-hover-linkedin.png" alt="Hover over LinkedIn in the Sidebar" /> -Following image shows what each of them look like when user hovers over them. +Following image shows these icons in color. -<img style="width: 177px; height: 205px" -src="{static}/images/social-profiles-sidebar-hover-2019-08-12.png" alt="Hover over all Social -Profiles in the Sidebar" /> +<img style="width:35%;" +src="{static}/images/social-profiles-sidebar-svg-hover.png" alt="Social Profiles in color" /> These SVG icons are [Super Tiny](https://github.com/edent/SuperTinyIcons). Most of them have sizes less than 500 bytes, and none of them exceeds 1 K bytes in size. This gives you increased website speed. diff --git a/documentation/content/Contributing/adding-new-features.md b/documentation/content/Contributing/adding-new-features.md deleted file mode 100644 index 9ba88fe5..00000000 --- a/documentation/content/Contributing/adding-new-features.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -Title: Contributing New Features -Date: 2019-07-03 22:17 -Slug: contributing-new-features -Category: Contributing -authors: Talha Mansoor ---- - -If you plan to add new features to the theme, please make sure that: - -- you set sensible defaults so the theme works out of the box, without forcing the user to set any variable -- your changes do not negatively effect readability and reading experience -- your changes do not cause distraction for the reader diff --git a/documentation/content/Contributing/automated-release.md b/documentation/content/Contributing/automated-release.md index f5f6223e..ee14e3a2 100644 --- a/documentation/content/Contributing/automated-release.md +++ b/documentation/content/Contributing/automated-release.md @@ -1,26 +1,45 @@ --- -Title: Fully automated version management and publishing -Date: 2019-07-20 23:17 -Slug: fully-automated-version-management-and-publishing +Title: Automated Version Management and Release +Subtitle: +Slug: fully-automated-version-management-and-release Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-20 23:17 +Summary: Elegant utilizes a 'release early, release often' philosophy that embraces a fully automated release process. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -Elegant follows "release early, release often" software development philosophy. In this regard, our release process is fully automated. +[TOC] + +The Elegant project follows a "release early, release often" software development philosophy. +By employing this philosophy, we are able to have each team member working on a different +aspect of the project with next to no friction from each other's changes. At any point, any +team member can pull changes that have been made in another branch to their fork of the +repository and exercise their changes with complete confidence. -We use [semantic-release](https://github.com/semantic-release/semantic-release) for version management and publishing. +Release process should be fully automated to materialize this goal. -Our semantic release configuration can be viewed [here](https://github.com/Pelican-Elegant/elegant/blob/master/.releaserc.json). +## Release Versions -## CHANGELOG +Version management and publishing is accomplished using the +[semantic-release](https://github.com/semantic-release/semantic-release) tool and it's +[configuration file](https://github.com/Pelican-Elegant/elegant/blob/master/.releaserc.json). +This tool entirely removes human intervention from deciding the type and label of the next release of the project. -It generates the change log automatically, therefore you do not have to update the [CHANGELOG](https://github.com/Pelican-Elegant/elegant/blob/master/CHANGELOG.md). +### How Does Versioning Work? -## New Releases and Version Number +Semantic release bases it's decisions on the +[Semantic Versioning 2.0.0 specification](https://semver.org/), which is very specific. -semantic-release uses the commit messages to determine the type of changes in the codebase. Following [formalized conventions for commit messages]({filename}./git-commit-guidelines.md), semantic-release automatically determines the next semantic version number, generates a changelog and publishes the release. +A quick summary is as follows. Each version is detailed in the form: `MAJOR.MINOR.PATCH`. +The **PATCH** version is incremented when only backwards compatible bug fixes are made in the +release. The **MINOR** version is incremented (and **PATCH** reset to 0) when functionality +is added in a backwards compatible manner to the release, along with any backwards compatible +bug fixes. The **MAJOR** version is incremented (and **MINOR** and **PATCH** reset to 0) when +incompatible API changes are introduced, along with any backwards compatible features or fixes. -Here is an example of the release type that will be done based on a commit messages: +Here are some examples of release types that are generated based on commit messages: <!-- yaspeller ignore:start --> @@ -32,11 +51,72 @@ Here is an example of the release type that will be done based on a commit messa <!-- yaspeller ignore:end --> -## Test Release Process Locally +Note that the release type is specified as if that commit was the only commit in the release. +If the first two commits were put together in the release, the `Minor Feature Release` of the +second commit would take precedence over the `Patch Release` of the first commit. In the same +manner, the `Major Breaking Release` of the third commit would take precedence if all three +commits were submitted in the same release. + +## CHANGELOG File Updates + +An integral part of the release is updating the +[CHANGELOG](https://github.com/Pelican-Elegant/elegant/blob/master/CHANGELOG.md). +By mandating that any commits for the project follow a +[mandated format for the commit messages]({filename}./git-commit-guidelines.md), +the commits being added to the release can have their commit messages scanned by a tool, +including relevant portions into the release notes. This too is done automatically. + +### Example of an Automated Release + +Here is an example of an automated release. This is the +[Version 3.2.0](https://github.com/Pelican-Elegant/elegant/releases/tag/V3.2.0) that +was released on 30-Jul-2019. The specifics about the release can be obtained by clicking +on the 7 digit hexadecimal number below the version tag on the left side of the page, which +will take you to the [release commit](https://github.com/Pelican-Elegant/elegant/commit/48f39643edd6c3b7449af5dae8ade6323bc7c21f). + +![automated release]({static}/images/automated-release.png) + +This release can also be viewed by performing a `git log --grep=chore(release)` command and +looking for the specific release information in the logs. You can then view the specific +information for that commit by using the `git show` command with the hash for the release's +commit, `git show 48f39643edd6c3b7449af5dae8ade6323bc7c21f`. + +Using either process, the result will look like: + +```text +commit 48f39643edd6c3b7449af5dae8ade6323bc7c21f +Author: semantic-release-bot <semantic-release-bot@martynus.net> +Date: Tue Jul 30 19:56:10 2019 +0000 + + chore(release): 3.2.0 [skip ci] + + # [3.2.0](https://github.com/Pelican-Elegant/elegant/compare/V3.1.0...V3.2.0) (2019-07-30) + + ### Bug Fixes + + * **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) + * **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) + * **freelists:** rm unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) + + ### Features + + * **comments:** reduce transition duration from 500 to 200 ([b86e13d](https://github.com/Pelican-Elegant/elegant/commit/b86e13d)) + * **favicon:** add 180x180 dimension shortcut icon support ([dd2ed24](https://github.com/Pelican-Elegant/elegant/commit/dd2ed24)) + * **filter:** add black list, white list feature for Disqus ([4887aec](https://github.com/Pelican-Elegant/elegant/commit/4887aec)) + * **filter:** add black list, white list feature for FreeLists ([2407cc8](https://github.com/Pelican-Elegant/elegant/commit/2407cc8)) + * **filter:** add black list, white list feature for Mailchimp ([b96122d](https://github.com/Pelican-Elegant/elegant/commit/b96122d)) +``` -To test semantic-release locally, +In the main body of the output, there are links with associated text which are 7 digit +hexadecimal numbers. Each of these links is to a specific commit that was part of the +release. If you follow the link, you can verify that the correct text is being used for the +release notes. -1. Install yarn -1. Run `yarn semantic-release` +Additionally, there are links that are associated with text that starts with the `#` +character followed by an integer. Each of these links is to an issue that was either updated or +fixed by the given commit. As with the above paragraph, you can verify that the correct +issue was associated with the commit in the release notes by following the commit links and +looking for any issue number at the end of the commit text. -It will run the all the checks and steps in dry run mode. +As the commits added in to this release included features, the `Minor Feature Release` release +type was used, incrementing the minor part of the version number from 3.1.0 to 3.2.0. diff --git a/documentation/content/Contributing/beginners-guide.md b/documentation/content/Contributing/beginners-guide.md index 0a2b9999..0bfd83f4 100644 --- a/documentation/content/Contributing/beginners-guide.md +++ b/documentation/content/Contributing/beginners-guide.md @@ -1,34 +1,74 @@ --- Title: Git Tips for Beginners -Date: 2019-07-03 21:57 +Subtitle: Slug: git-tips-for-beginners Category: Contributing +Tags: +Date: 2019-07-03 21:57 +Summary: This article contains a number of tips useful for working with Elegant and Git. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -Here are some tips on how to make your life with Git easier when contributing. +[TOC] + +Here are some tips we have found useful for using Git to contribute to the project. + +## How To Set Up Your Git Repository + +1. Create your own fork of Elegant by going to the project repository webpage [on GitHub](https://github.com/Pelican-Elegant/elegant) and pressing the `Fork` button. + + ![Fork Button]({static}/images/github-fork-button.png) -## How To Set Up Your Git +2. You will now be redirected to the page representing your fork of the repository. To clone the your fork of the repository to your computer, press the `Clone or download` button and follow the instructions provided. -1. Create a fork of the [Elegant repository][elegant] by clicking on the “Fork” button. -2. Clone your fork to your computer by clicking on the “Clone or download” button and following the instructions there. -3. When in the Git repository of your fork, run the following command to set the main repository as the upstream: `git remote add upstream https://github.com/Pelican-Elegant/pelican-elegant.git` + ![Clone or Download button]({static}/images/github-clone-button.png) + +3. Create a directory to host your repository in and change to that directory. Run the following command to set your forked repository as `Upstream`: + + ```bash + git remote add upstream https://github.com/Pelican-Elegant/pelican-elegant.git + ``` + +## Pull Before Starting Changes + +Most of the changes that you will submit will be against the Upstream repository's `next` +branch. Whether you decide to work in your local repository's `next` branch or create a new +branch of your own, it is recommended that you do a `git pull` against the Upstream `next` +branch before starting to work on a new set of changes. This will ensure that you are starting +from a known good point, and reduce the chance of requiring a merge at a later stage. ## Updating/Rebasing to Upstream -Occasionally – often before a pull request is able to be merged – you will need to update your own (fork) repository to the upstream (i.e. [Elegant][elegant]) development (i.e. `next`) branch. This can be done as follows: +It is a good practice to update your repository to it's Upstream repository one or more times +during the development of your changes. Specifically, the `next` branch of the repository +is where most of the changes are submitted to, and you should either rebase or pull any +changes down to your local repository from there. This practice will ensure that any changes +that have been made to that Upstream branch are brought down where you can test your changes +with anyone other changes. + +To update from the `next` branch, from within your project directory, enter the following +commands: 1. `git fetch upstream next` 2. `git rebase upstream/next` ## Squash Commits & More Complex Rebasing -When creating a pull request in GitHub, you have the option to squash all commits, but sometimes you need to fix either the mess you made or some clashes that prevent a merge of the two branches. +Before you [create a pull request in GitHub](https://github.com/Pelican-Elegant/elegant/pulls), +you have the option to squash your commits into a single commit. This is often used to clean +up a series of commits where you were experimenting with something or just had to fiddle with +something to get it `just right`. + +To squash and rebase your commits, use the following command: -In both cases, the following command is your Swiss-army knife: +```bash +git rebase --interactive upstream/master +``` -`git rebase --interactive upstream/master` +!!! warning -For more on the interactive rebase command of Git, see [its official documentation][git_rebase]. + As with all knives, especially Swiss-army knives, please take caution. Rebasing a repository after pushing one or more commits to another repository can be troublesome. -[git_rebase]: https://git-scm.com/docs/user-manual#interactive-rebase -[elegant]: https://github.com/Pelican-Elegant/elegant +For more on the interactive rebase command of Git, see [its official documentation](https://git-scm.com/docs/user-manual#interactive-rebase) and helper articles such as +[this article](https://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit). diff --git a/documentation/content/Contributing/commitizen.md b/documentation/content/Contributing/commitizen.md index bf67c282..0c55d6fb 100644 --- a/documentation/content/Contributing/commitizen.md +++ b/documentation/content/Contributing/commitizen.md @@ -1,58 +1,63 @@ --- -Title: Use Commitizen for Git commits +Title: How To Use Commitizen for Git Commits Subtitle: Recommended -Date: 2019-07-22 14:15 Slug: use-commitizen-for-git-commits Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-22 14:15 +Summary: Elegant uses the Commitizen tool to standardize Git commit messages across the project. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -When you commit with [Commitizen](https://github.com/commitizen/cz-cli), you'll be prompted to fill out any required commit fields at commit time. +[TOC] -## Prerequisites +The [Elegant Contribution Guidelines]({filename}./contributing-to-the-project.md) require that +each commit submitted for consideration be formatted according to the +[Git Commit Guidelines]({filename}./git-commit-guidelines.md). -### Step 1: Install NodeJS and Yarn +To make this process easier, the Elegant repository is configured to support the +[Commitizen](https://github.com/commitizen/cz-cli) tool. This tool saves time by controlling +the format of the Git commit messages to a set of predefined options and patterns. This +formatting allows for our release process to be +[fully automated]({filename}./automated-release.md). -Install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) on your system. +## Prerequisites -If you are on Windows then try installing them with [scoop.sh](https://scoop.sh/). It saves time and makes update easier. +Both [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) +must be installed on your system. -### Step 2: Install Commitizen +### Install Commitizen -Run this command from your command line terminal. +From your command line terminal, go into the directory containing your fork of the Elegant +repository, then execute the following commands: ```bash yarn global add commitizen -``` - -### Step 3: Initialize the Project - -In the root of Elegant repository, run - -```bash yarn install ``` ## Use Commitizen -We have already gone through the trouble of making Elegant repository [Commitizen friendly](https://github.com/commitizen/cz-cli#making-your-repo-commitizen-friendly). +As the Elegant team has already made the repository +[Commitizen friendly](https://github.com/commitizen/cz-cli#making-your-repo-commitizen-friendly), +you can start using it for your commits by entering `git-cz` in your command shell instead +of `git commit`. Make sure the changes that you want to commit to your fork are staged. -All you have to do is to stage your changes and then run +Once invoked, Commitizen will prompt you for answers to a number of questions. As mentioned +previously, the answers to these questions are formatted according to the +[Git Commit Guidelines]({filename}./git-commit-guidelines.md) +before being placed into the message field for the commit. Commitizen then follows through and +invokes `git commit`, committing the staged changes along with the formatted message that was +crafted for you from the answers you provided. -```bash -git-cz -``` - -It will prompt you for questions. Just answer them. Commitizen will automatically format it to conform to [Elegant Git commit guidelines]({filename}./git-commit-guidelines.md). - -If your Git commit fails for some reasons, like due to [Git hooks]({filename}./pre-commit.md), then you can fix the issue and rerun Commitizen using, - -```bash -git cz --retry -``` - -When you use `--retry`, Commitizen does not prompt for answers and reuse the answers that you last submitted. +In some cases, such as a [Git pre-commit hook failure]({filename}./pre-commit.md), you may +not want to re-answer the questions again. Once you fix the issues that prevented the +commit from happening, you can use `git-cz --retry` to submit the commit again using the same +answers that were used in the failed attempt. ## Video Demonstration +For a quick video on how this process works in real life, click on the play button below. + <script id="asciicast-258540" src="https://asciinema.org/a/258540.js" async></script> diff --git a/documentation/content/Contributing/community-driven-project.md b/documentation/content/Contributing/community-driven-project.md index 22c59987..1f5706ad 100644 --- a/documentation/content/Contributing/community-driven-project.md +++ b/documentation/content/Contributing/community-driven-project.md @@ -1,13 +1,13 @@ --- Title: Elegant grows into a community-led project -Tags: project-management +Subtitle: The beginning of a beautiful friendship +Slug: community-led-project Category: Contributing +Tags: Date: 2019-01-05 19:40 -Slug: community-led-project -Subtitle: The beginning of a beautiful friendship -Summary: Elegant has grown into a community-driven project. It also got a new website and organisational structure, culminating in its biggest release yet. +Summary: Elegant has grown into a community-driven project. It also got a new website and organizational structure, culminating in its biggest release yet. Keywords: -authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje +Authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje --- [TOC] @@ -16,7 +16,9 @@ authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje [Talha Mansoor][talha131] published the first version of Elegant in 2012. It grew in popularity in a short time, due to its clean and functional style. -In November 2018, [Matija Šuklje][silverhook] called Elegant's community into a [discussion about the future of the theme][future]. Response was immense. Talha was the first to support the proposal of changing the development model from a single-developer to a community-led project. +In November 2018, +[Matija Šuklje][silverhook] <!-- yaspeller ignore --> +called Elegant's community into a [discussion about the future of the theme][future]. Response was immense. Talha was the first to support the proposal of changing the development model from a single-developer to a community-led project following the [bazaar development model](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar). [He][talha131] moved Elegant from a personal repository to a separate organization [Pelican-Elegant][elegant-org], and added active community members to the [team][team]. @@ -25,11 +27,12 @@ This way, the bus factor of the project has greatly improved. [team]: https://github.com/orgs/Pelican-Elegant/people [elegant-org]: https://github.com/Pelican-Elegant/ [pelican]: https://getpelican.com -[ashwinvis]: https://ashwinvis.github.io/ -[calfzhou]: http://gocalf.com + +[ashwinvis]: https://ashwinvis.github.io/ <!-- yaspeller ignore --> +[calfzhou]: http://gocalf.com <!-- yaspeller ignore --> [talha131]: https://www.oncrashreboot.com [iranzo]: https://iranzo.github.io/ -[silverhook]: https://matija.suklje.name +[silverhook]: https://matija.suklje.name <!-- yaspeller ignore --> [future]: https://github.com/talha131/pelican-elegant/issues/173 ## New Governance Model diff --git a/documentation/content/Contributing/contributing-license.md b/documentation/content/Contributing/contributing-license.md index a0caf9e9..45b9db53 100644 --- a/documentation/content/Contributing/contributing-license.md +++ b/documentation/content/Contributing/contributing-license.md @@ -1,15 +1,31 @@ --- Title: Contributions License -Date: 2019-07-03 22:07 +Subtitle: Slug: contribution-license Category: Contributing +Tags: +Date: 2019-07-03 22:07 +Summary: The licensing terms under which Elegant is developed. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -All contributions will be understood to be made under the same (inbound) license as the main (outbound) license of the repository it is being contributed to – so [MIT License][] for all code/theme contributions, and [CC-BY-SA-3.0][] for all documentation contributions. +[TOC] + +By submitting a change to the project, you implicitly acknowledge that you are following +the following license rules. + +## Licensing + +All contributions to the project are understood to be submitted under the same (inbound) +license as the main (outbound) license of the main Elegant repository. + +All code and theme contributions are submitted according to the +[MIT License](https://spdx.org/licenses/MIT.html). -If you are contributing code that is not yours, make sure to indicate where you got the code from (and who the author/copyright holder is) and what license you got it under. +All documentation contributions are submitted according to the +[CC-BY-SA-4.0 License](https://spdx.org/licenses/CC-BY-SA-4.0.html). -[cc-by-sa-3.0]: https://spdx.org/licenses/CC-BY-SA-3.0.html -[documentation]: https://github.com/Pelican-Elegant/documentation -[elegant]: https://github.com/Pelican-Elegant/elegant -[mit license]: https://spdx.org/licenses/MIT.html +All contributions of code where the submitter is not the owner of the submission must indicate +the source of the code, who the author or copyright holder is, and what license or licensing +terms are being used to allow the contribution in the Elegant project. diff --git a/documentation/content/Contributing/contributing-to-the-project.md b/documentation/content/Contributing/contributing-to-the-project.md new file mode 100644 index 00000000..b74a7da3 --- /dev/null +++ b/documentation/content/Contributing/contributing-to-the-project.md @@ -0,0 +1,289 @@ +--- +Title: How Do I Contribute? +Subtitle: +Slug: how-to-contribute +Category: Contributing +Tags: +Date: 2019-08-04 22:17 +Summary: This article provides a sweeping overview of the Elegant contribution workflow. +Keywords: +Authors: Jack De Winter +--- + +[TOC] + +Once you have decided to [contribute to the project]({filename}./invitation.md), we need to +go over some rules and guidelines before you can start. These rules and guidelines help us +work together as a team and give us a common set of directions that keep us all on the same +page. In the case of any disagreements on what needs to be done, we can always refer to the +guidelines to help us find our way from disagreement to consensus. + +## Before We Start + +This document strives to provide a solid path through contributing a change to Elegant, from +setting up your environment to submitting and responding to a Pull Request. + +To stay focused on that solid path, additional information that is typically needed to provide +a complete picture of the topic being discussed will be presented in other articles and linked +to from this article. + +Please take the time to familiarize yourself with the information in the attached articles, +as they will help you build a complete understanding of our entire contribution process. + +## Getting The Big Rule Out of the Way + +As the project is an open source project, anything you contribute to the project is covered by +the project's [Contributions License]({filename}./contributing-license.md). If you are not +willing or unable to abide by those licenses, we cannot have you contribute to the project. + +## Primary Goal + +The primary goal of this project is to provide a theme for Pelican that provides the +[Elegant Look and Feel]({filename}./why-look-and-feel.md) to our user's websites. To that end, +any features or changes must: + +- not negatively effect readability and reading experience +- not cause distraction for the reader +- any changes must work out of the box with sensible defaults for the user + +These are not negotiable. + +## Developing Changes Locally + +The Elegant project is [hosted in GitHub](https://github.com/Pelican-Elegant/elegant) and +requires your machine to have a local [Git Client](https://git-scm.com/downloads) to +contribute. The [Git documentation site](https://git-scm.com/doc) has good instructions and +videos on how to get started with Git, as well as numerous instructional videos on +[YouTube](https://www.youtube.com/results?search_query=git+clients) to get you going. If you +are new to Git, they are a great place to start! + +### Read The Guides + +In addition to installing Git locally, we request that you take a solid look through the +following guides. The first guide, +[Git Tips For Beginners]({filename}./beginners-guide.md), is a walk through of things that our +team has found useful in the past to help get people up and going with their contributions. +While this guide is optional, pointing people at this guide has resolved a fair number of +questions in the past. + +The second guide, our team's [Git Commit Guidelines]({filename}./git-commit-guidelines.md), +is required reading for all contributors. These guidelines document the rules we require every +contributor to follow when submitting commits for consideration. + +To make things easier for contributors, the repository includes configuration to +[use Commitizen for Git commits]({filename}./commitizen.md). Entering `git-cz` on the command +line within the repository will walk you through a series of prompts to build a commit message +that is fully compliant with our guidelines. It's usage is highly recommended to avoid issues. + +### Optional Setup + +To assist you in preparing your contributions with minimal friction, you can optionally run +one or more pieces of our automated build pipeline on your local machine. Depending on the +depth and complexity of your changes, having these present on your local machine are often a +time saver in terms of detecting bugs before you submit a +[Pull Request for your changes](#submitting-a-change-for-consideration). + +Choosing to run any of these checks locally will shorten the minimum time required to notice a +failure from 3-5 minutes for them to run on the GitHub machines to an average of 60 seconds or +less for those same checks to run on your local machine. + +#### Running Pre-Commit Hooks Locally + +Facilitating the early detecting of pre-commit hook failures, an option is to install the +[Pre-commit tool]({filename}./pre-commit.md) in your local repository. With the +Pre-commit tool installed, any commits to your local Elegant repository will be subjected +to the same verification that is performed when you submit a +[Pull Request for your changes](#submitting-a-change-for-consideration). +This tool integrates with your local repository, so once installed it is automatically +executed as part of your normal `git commit` process. + +#### Running the Spell Checker Locally + +As the dictionary in the environment that you develop changes in may be different than other +contributors, the team has elected to include a the +[yaspeller tool]({filename}./ya-spell-check.md) +as part of our build pipeline. While this does not integrate with your local repository +like the Pre-commit tool, running this locally can help shorten the cycle for ensuring that +your spelling is spot on! + +## Making Your Changes to Elegant + +With all of the required, recommended and optional setup behind us, and all of the submitting +of the changes ahead of us, it is time to focus on how to develop features for Elegant. To +ensure that this topic is given the focus it requires, the article +[Developing Features For Elegant]({filename}./development-of-features.md) +is dedicated to providing that information to contributors. + +!!! note + + While this section rightfully belongs where it is in terms of workflow, it is recommended that you continue reading this article to it's end. This will allow you to understand what comes after your changes, and may influence implementtion changes to avoid possible problems later on in the workflow. + +## Submitting a Change For Consideration + +Submitting your changes is performed using the GitHub +[Pull Request feature](https://help.github.com/en/articles/creating-a-pull-request). Before +starting the Pull Request, you must push any committed changes from your local repository to +your forked Elegant repository on GitHub. Once that has been done, go to the +[Compare Changes page](https://github.com/Pelican-Elegant/elegant/compare) and click on the +`compare across forks` text right underneath the title. + +Across the top of the page, you will see 4 selection drop downs that look like this: + +![fork drop downs]({static}/images/compare-changes.png) + +These drop downs allow you to select where to compare changes from and to. Leave the first +selection alone, and unless instructed otherwise, select `next` from the second selection. +Select the name of your repository fork from the third selection, typically your GitHub account +name followed by `/Elegant`. Finally, select the branch that your changes are in on the +forked repository in the last selection. + +!!! note + + Typically, most people synchronize the branch name of their local repository with the branch name they push to on their forked repository. If you push your local changes to a different branch on your forked repository, select the name of the branch in the last selection. + +Once you confirm that the changes that are now visible at the bottom of the page are the ones +you intend to submit, press the `Create New Pull Request` button. The edit field at the +top of the page must have a name that identifies what the change is and is important to relay +the scope of your change. However, the editor field below it is where most of the required information is. + +Currently there are 2 pre-requisites steps and 3 recommended steps as requirements of every +Pull Request. If you have satisfied these requirements, change the `[ ]` text to `[x]` +indicating that you have complied with the pre-requisite. Then proceed to the `Description` at +the bottom and add a description that provides a good amount of information about what you +changed and why. If there were any reported issues that you resolved, it doesn't hurt to +mention them in this section. + +When you are done with adding that information, double check it and press the +`Create pull request` button to submit the request. + +## Building Your Changes on the GitHub Server + +After pushing the `Create pull request` button, you are transferred to another page that is +mostly the same as any other GitHub Pull Request page. The main difference is the merge +section near the bottom, where you will see something like the following: + +![image]({static}/images/started-pull-request.png) + +If the build verifies your changes, all 6 of the current checks will either have a grey box +in front of them or a green checkmark. If any of the verifications fail, they will have a +red X in front of the verification that failed. Click on the `Details` text on the right side +to get more information on why those checks failed. + +### Build Verification Actions + +To ensure each Pull Request contains solid changes, there are 3 sets of verification actions +performed on each Pull Request. + +The first set of actions are the `Header rules`, +`Mixed content`, `Pages changed`, and `Redirect rules` which are simple checks with +pre-defined rule sets. These rules employ simple rule sets looking for changes that are +outside the scope of the rest of the project, and rarely fire if you keep to the format +of the other files in the repository. + +The next verification action is the Travis CI action that performs a complete build of the +project, represented by the `continuous-integration/travis-ci/pr` action. A complete build +of the project often takes 3-5 minutes, so this is the verification action you will be +waiting on the longest. + +It is this part of the build that puts all of the changes through strict checks to make +sure that the submitted changes are solid. + +- install pre-requisites for building +- [Pre-commit]({filename}./pre-commit.md) on the project source +- [yaspeller]({filename}./ya-spell-check.md) on the project source +- publish for the documentation site +- [w3c_validator](https://pypi.org/project/Online-W3C-Validator/) on the documentation site <!-- yaspeller ignore --> +- [html5validator](https://pypi.org/project/html5validator/) on the documentation site <!-- yaspeller ignore --> + +More information on how our team uses Travis CI is detailed +[in this article]({filename}./travis-ci-and-doc-website.md). + +#### Previewing Changes + +The final verification action is a simple build and internal deploy of the +[Elegant documentation website](https://elegant.oncrashreboot.com/), represented by the +`netlify/pelicanelegant/deploy-preview` action. Clicking on the `Details` text on the +right side of the action will redirect your browser to temporary deployment of the +documentation website deployed using [Netlify](https://www.netlify.com/). If the changes +that your are submitting are documentation changes or have an impact on the look and feel +of Elegant, you should use the preview to manually verify your changes. + +!!! note + + The documentation preview is deployed to Netlify without performing a full build as detailed above, and is not dependant on the full build step. As such, you can manually verify your changes on the preview website while the full build is ongoing. + +#### View Previews For Other Pull Requests + +This Netlify temporary deployment is also useful tool that can be used to see the effects +of any Pull Request on the documentation website. For example, if we want to look at what +the effects of [Pull Request #458](https://github.com/Pelican-Elegant/elegant/pull/458) were, +we have a solid path to view those changes. + +Each of the +[recently close Pull Requests](https://github.com/Pelican-Elegant/elegant/pulls?q=is%3Apr+is%3Aclosed) +was built with Netlify support enabled. As such, if you switch from the default +`Conversation` tab to the `Checks` tab, you can see if Netlify succeeded. If it did +succeed, there will be a `View more details on Netlify` link at the bottom of the page +which will take you to the Netlify deployment of the Pull Request. At the top of the +`Deploy Log` section is a `Preview` button that will take you to the temporary deployment +of the documentation website, as if you had clicked on the `Details` link from the +Pull Request page itself. + +### What Happens If The Build Detects Errors? + +Once you fix any errors that the build detected, go through your normal verification process +and submit the changes to your forked repository. If your Pull Request is still open, when +GitHub detects that one of the repository/branch pairings in a Pull Request has been updated, +it will execute any required checks from the beginning. At that point, you are effectively +back at the +[Building Your Changes on the GitHub Server](#building-your-changes-on-the-github-server) +section above. + +This looping will continue until one of two things happen: all errors are dealt with OR you +give up. At any point before the Pull Request is accepted and merged with the main +repository, you can push the `Close pull request` button at the bottom of the page and close +the Pull Request. This will perform a "soft close" on the Pull Request, with the option to +re-open the Pull Request at a later date. + +#### Consider Using a Draft Pull Request + +If you want to make sure that your Pull Request builds on the server before submitting it for +consideration by the team, consider using a Draft Pull Request. Instead of pressing the +`Create pull request` button in the +[Building Your Changes on the GitHub Server](#building-your-changes-on-the-github-server) +section, click on the arrow on the right side of the button and select +`Create draft pull request`. + +![draft pull request]({static}/images/draft-pull-request.png) + +A draft request is exactly like a normal Pull Request except that it is not visible to anyone +other than yourself. In this way, you can make sure the Pull Request is exactly the way +you want it before asking for it to be considered part of the project. + +Something that is often forgotten about Pull Requests, and therefore Draft Pull Requests, is +that you can edit most of the contents of the Pull Request after you have created it. Use this +to your advantage as you get your Pull Request ready! + +### What Happens If Team Members Ask For Changes? + +As we are a team, when changes are submitted for consideration, the team will offer feedback +on the changes. The feedback will generally fall into 3 categories: yes, no, or almost. + +With the "yes" category, the changes will be accepted "as is" into the project. + +Conversely, in the "no" category, the changes are rejected, usually with a decent description +of why they were rejected. Depending on the rejection reason, it may be possible to adjust +your changes according to feedback in the rejection reason and submit it as a new Pull Request +at a later date. + +In the "almost" category, the feedback will usually contain specific things that one or more of +the team members want to see changed before it can be merged. This feedback can be a simple +as a grammar error they want to see fixed, or asking for a more complete article documenting +how to use your changes. The important part to note about this category is that the team +feels that after the suggested changes have been performed, you can easily move to the "yes" +category. + +Regardless of what category the feedback for your changes falls into, please remember that we +are a team and we are at our best when we work together. If you have a disagreement, ask for +clarifications and initiate a conversation to understand where the reviewer of the Pull Request +is coming from. Work with that person to help yourself see their viewpoint. diff --git a/documentation/content/Contributing/development-of-features.md b/documentation/content/Contributing/development-of-features.md new file mode 100644 index 00000000..70f2d2ae --- /dev/null +++ b/documentation/content/Contributing/development-of-features.md @@ -0,0 +1,25 @@ +--- +Title: Developing Features For Elegant +Subtitle: +Slug: developing-for-elegant +Category: Contributing +Tags: +Date: 2019-07-22 23:17 +Summary: Elegant development is typically broken up into three concerns. This article talks about each of them. +Keywords: +Authors: Jack De Winter +--- + +!!! note + + this document is under construction + +In most cases, this default is to have any configuration variables that support +those changes have a value of `None`. There is a bit more leeway given for supporting plugins, +which are [covered below](#extending), but even Elegant enhancement to support those plugins +must follow these rules. + +- [Jinja Style]({filename}./jinja-style.md) +- [Live Reload]({filename}./live-reload.md) +- [Live Reload With Python]({filename}./live-reload-python.md) +- [Live Reload With Gulp]({filename}./live-reload-gulp.md) diff --git a/documentation/content/Contributing/documentation-status.md b/documentation/content/Contributing/documentation-status.md index ed049a8a..d8588890 100644 --- a/documentation/content/Contributing/documentation-status.md +++ b/documentation/content/Contributing/documentation-status.md @@ -40,7 +40,7 @@ Status: draft | Extra Customization | custom-404.md | Rewritten | Add A Custom 404 Error Page to Your Site | - | | Extra Customization | custom-style.md | - | Customize Style | - | | Extra Customization | customize-elegant.md | old? | How to Customize Elegant | - | -| Extra Customization | meta-data.md | - | Metadata | - | +| Extra Customization | metadata.md | - | Metadata | - | | Extra Customization | reading-time.md | Rewritten, Pending, [302](https://github.com/Pelican-Elegant/elegant/issues/302) | Add A Reading Time Estimate to Your Articles | - | | Footer | add-license.md | - | Add License to your Site | - | | Footer | hosted-on.md | - | Show Your Host Information | - | diff --git a/documentation/content/Contributing/elegant-logo.md b/documentation/content/Contributing/elegant-logo.md index 21db913a..a160126a 100644 --- a/documentation/content/Contributing/elegant-logo.md +++ b/documentation/content/Contributing/elegant-logo.md @@ -1,16 +1,24 @@ --- Title: Elegant Logo -Date: 2019-07-22 21:17 +Subtitle: Slug: elegant-logo Category: Contributing +Tags: +Date: 2019-07-22 21:17 +Summary: This article provides details on how the current Elegant logo was created. +Keywords: Authors: Talha Mansoor --- -Elegant community held a [discussion](https://github.com/Pelican-Elegant/elegant/issues/190) to decide a Logo for the project. We settled on following icon from [Pelican by Smalllike from the Noun Project](https://thenounproject.com/search/?q=pelican&i=2213839). +Elegant community held a [discussion](https://github.com/Pelican-Elegant/elegant/issues/190) to decide a Logo for the project. We settled on following icon from +[Pelican by Smalllike from the Noun Project](https://thenounproject.com/search/?q=pelican&i=2213839) <!-- yaspeller ignore --> +. -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 80" x="0px" y="0px" width="250" height="250"><g><path d="M39,25H24V20H35A11.013,11.013,0,0,0,46,9V3a1,1,0,0,0-1-1H19a5.006,5.006,0,0,0-5,5V38A11.013,11.013,0,0,0,25,49h4v7H27a3,3,0,0,0,0,6H37a3,3,0,0,0,0-6H35V49H50V36A11.013,11.013,0,0,0,39,25Zm0,2a8.953,8.953,0,0,1,5.644,2H35v2H46.478a8.962,8.962,0,0,1,1,2H39v2h8.941A8.935,8.935,0,0,1,48,36v1H44v2h4v2H29a3,3,0,0,1-3-3V27Zm-4-9H24V10H43.941A9.01,9.01,0,0,1,35,18ZM24,4H44V8H24ZM16,7a3,3,0,0,1,3-3h3V25H16ZM37,58a1,1,0,0,1,0,2H27a1,1,0,0,1,0-2Zm-4-2H31V49h2Zm15-9H25a9.01,9.01,0,0,1-9-9V27h2v7h2V27h4V38a5.006,5.006,0,0,0,5,5H48Z"/><rect x="18" y="36" width="2" height="2"/><circle cx="20.5" cy="7.5" r="1.5"/></g><text x="0" y="79" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">Created by Smalllike</text><text x="0" y="84" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">from the Noun Project</text></svg> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 80" x="0px" y="0px" width="250" height="250"><g><path d="M39,25H24V20H35A11.013,11.013,0,0,0,46,9V3a1,1,0,0,0-1-1H19a5.006,5.006,0,0,0-5,5V38A11.013,11.013,0,0,0,25,49h4v7H27a3,3,0,0,0,0,6H37a3,3,0,0,0,0-6H35V49H50V36A11.013,11.013,0,0,0,39,25Zm0,2a8.953,8.953,0,0,1,5.644,2H35v2H46.478a8.962,8.962,0,0,1,1,2H39v2h8.941A8.935,8.935,0,0,1,48,36v1H44v2h4v2H29a3,3,0,0,1-3-3V27Zm-4-9H24V10H43.941A9.01,9.01,0,0,1,35,18ZM24,4H44V8H24ZM16,7a3,3,0,0,1,3-3h3V25H16ZM37,58a1,1,0,0,1,0,2H27a1,1,0,0,1,0-2Zm-4-2H31V49h2Zm15-9H25a9.01,9.01,0,0,1-9-9V27h2v7h2V27h4V38a5.006,5.006,0,0,0,5,5H48Z"/><rect x="18" y="36" width="2" height="2"/><circle cx="20.5" cy="7.5" r="1.5"/></g><text x="0" y="79" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">Created by Smalllike</text><text x="0" y="84" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">from the Noun Project</text></svg> <!-- yaspeller ignore --> -Building on top of it, some modifications were made to it using [Inkscape](https://inkscape.org/). +Building on top of it, some modifications were made to it using +[Inkscape](https://inkscape.org/) <!-- yaspeller ignore --> +. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67 67" width="250" height="250"> <rect width="57.681" height="62.899" x="2.802" y="-11.841" ry="0" fill="none"/> @@ -28,7 +36,9 @@ Building on top of it, some modifications were made to it using [Inkscape](https <path d="M26.5 48.525c-1.283-.147-2.925-.767-4.049-1.53-1.516-1.03-2.8-2.727-3.402-4.497-.47-1.38-.478-1.525-.478-7.973V28.63h1.942v7.04H22.536v-7.04H26.5v5.846c.002 6.462-.004 6.38.519 7.404.604 1.186 1.532 2.001 2.87 2.522l.535.209 10.014.022 10.013.022V48.615l-11.672-.01c-6.42-.006-11.946-.042-12.28-.08zm-3.964-9.903v-1.011H20.513V39.634H22.536zM18.57 17.394c0-10.175-.029-9.59.525-10.425.316-.475.804-.863 1.403-1.115.329-.138.616-.163 2.18-.19l1.8-.03v1.342c0 .739-.033 1.342-.072 1.342-.04 0-.128-.087-.198-.193-.214-.326-.805-.56-1.308-.518-1.841.153-1.884 2.863-.048 3.039.513.05.9-.085 1.234-.429.148-.153.298-.279.331-.28.033 0 .06 3.75.06 8.334v8.335h-5.906z" fill="#fff" stroke="#fff" stroke-width=".08093600000000001"/> </svg> -The we cleaned it using [svgo](https://github.com/svg/svgo) tool. It reduced file size by around 50%. +The we cleaned it using +[svgo](https://github.com/svg/svgo) <!-- yaspeller ignore --> +tool. It reduced file size by around 50%. ```bash $ svgo -i elegant_logo.svg --pretty @@ -38,13 +48,17 @@ Done in 80 ms! 8.029 KiB - 52.5% = 3.815 KiB ``` -Then, we converted SVG to PNG using [svgexport](https://github.com/shakiba/svgexport). +Then, we converted SVG to PNG using +[svgexport](https://github.com/shakiba/svgexport) <!-- yaspeller ignore --> +. ```bash $ svgexport elegant_logo.svg elegant_logo.png 100% ``` -The resultant file was around 1MB is size. So we optimized it using [ImageOptim](https://imageoptim.com/mac), which reduced the file size by 98%. +The resultant file was around 1MB is size. So we optimized it using +[ImageOptim](https://imageoptim.com/mac) <!-- yaspeller ignore --> +, which reduced the file size by 98%. Your can download the files from our Git repository. diff --git a/documentation/content/Contributing/git-commit-guidelines.md b/documentation/content/Contributing/git-commit-guidelines.md index 22c4d58c..28c1027f 100644 --- a/documentation/content/Contributing/git-commit-guidelines.md +++ b/documentation/content/Contributing/git-commit-guidelines.md @@ -1,111 +1,150 @@ --- Title: Git Commit Guidelines Subtitle: Mandatory -Date: 2019-07-20 23:17 Slug: git-commit-guidelines Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-20 23:17 +Summary: Elegant has a mandatory Git commit message format that is described here. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- [TOC] -Elegant release process is [fully automated]({filename}./automated-release.md). It only works if all commit messages adhere to the set rules. +The Elegant release process is [fully automated]({filename}./automated-release.md). To make +this work, all commit message must adhere to a given set of rules. + +## Why Have Commit Message Rules? -Why? +From the [semantic-release project](https://github.com/semantic-release/semantic-release#commit-message-format): > semantic-release uses the commit messages to determine the type of changes in the codebase. Following formalized conventions for commit messages, semantic-release automatically determines the next semantic version number, generates a changelog and publishes the release. -Basically, semantic-release goes through the commit messages, parses them and on its bases makes the decisions of publishing new release and new version number. +What does that mean? It means that semantic-release parses the commit messages to arrive +at a unbiased version number for a new release, and then creates that new release. This +allows for a new release to be put together with little human involvement. + +## What are those rules? + +The Elegant development team chose to use the +[Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines) +as the baseline for the team's commit message conventions. -What are those rules? +Our conventions are largely derived from the Angular team's guidelines +[as documented here](https://gist.github.com/stephenparish/9941e89d80e2bc58a153). -Elegant development team chose to use [Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). +### Is There Something to Help Me With The Rules? -Following portion is largely derived from their [guidelines](https://gist.github.com/stephenparish/9941e89d80e2bc58a153). +Reading, understanding, and then getting used to following guidelines may take time. Even +then, if you are in a hurry, you can sometimes forget what the rules are. It's only human. -!!! Tip "Use Commitizen" +Our team has found life easier since we started using +[Commitizen for Git commits]({filename}./commitizen.md). +Our project includes configuration for Commitizen that automatically formats each commit +message to conform to our guidelines by walking you through a series of prompts. When you +finish those prompts, a new commit messages is authored for you with the information from those +prompts, following all of the rules in the following sections on the Commit Message Format. - Reading, understanding and then getting used to following guidelines may take sometime. +!!! tip - Make your life easier and [use Commitizen for Git commits]({filename}./commitizen.md). - It automatically formats the commit message to conform to our guidelines. + [Use Commitizen for Git commits]({filename}./commitizen.md). It does make life easier. It automatically formats the commit message to conform to our guidelines. ## Commit Message Format -Each commit message consists of a **header**, a **body** and a **footer**. The header has a special -format that includes a **type**, a **scope** and a **subject**: +Each line of the commit message must be shorter than 101 characters! This allows the message +to be easier to read on GitHub as well as in various git tools. + +Each commit message consists of a **header**, a **body** and a **footer**, as follows: ```text -<type>(<scope>): <subject> +<header> <BLANK LINE> <body> <BLANK LINE> <footer> ``` -The **header** is mandatory and the **scope** of the header is optional. - -Any line of the commit message cannot be longer 100 characters! This allows the message to be easier -to read on GitHub as well as in various git tools. +### Header -## Header +The header is mandatory. It has a special format that includes a required **type**, an +optional **scope** and a required **subject**: -### Revert Commits - -If the commit reverts a previous commit, it should begin with `revert:`, followed by the header -of the reverted commit. -In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit -being reverted. +```text +<type>(<scope>): <subject> +``` -### Type +#### Type -Must be one of the following: +The type must be one of the following: - **feat**: A new feature - **fix**: A bug fix - **docs**: Documentation only changes -- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing - semi-colons, etc) +- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.) - **refactor**: A code change that neither fixes a bug nor adds a feature - **perf**: A code change that improves performance <!-- yaspeller ignore --> - **test**: Adding missing or correcting existing tests -- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation - generation +- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation +- **revert**: A revert to a previous commit. See the section [Revert Commits](#revert-commits) below. + +#### Scope + +The scope is intended to provide extra context on the changes included in the commit is for. +This context should provide useful information to someone reading the commit log, including +the reading of the commit log in the release notes. -### Scope +For example, if you fix something in the +[authors blurb]({filename}../Supported Plugins/author-blurbs.md) section, a scope of `authors` would be appropriate. If you are changing something with how the +[landing page]({filename}../Components/landing-page.md) +works, a scope of `landing page` or `home` would be appropriate. -The scope could be anything specifying place of the commit change. For example, `authors` if the change is about Elegant [authors blurb]({filename}../Supported Plugins/author-blurbs.md) feature or `home` if it refers to [landing page]({filename}../Components/landing-page.md). +#### Subject -## Subject Text +The subject part of the header must follow these rules: -1. use imperative, present tense: "change" not "changed" nor "changes" not "changing" -1. don't capitalize first letter -1. no dot (.) at the end +1. always use the imperative, present tense: "change" not "changed", "changes", or "changing" +1. do not capitalize the first letter +1. no period (`.`) at the end of the line -### What is Imperative mode +##### What is Imperative mode? -[Here](https://chris.beams.io/posts/git-commit/#imperative) is a very good explanation of imperative mode. +Chris Beams, in his article on +[how to write a good commit message](https://chris.beams.io/posts/git-commit/#imperative), +gives a very good explanation of imperative mode. > Imperative mood just means "spoken or written as if giving a command or instruction". A few examples: > -> 1. Clean your room -> 1. Close the door -> 1. Take out the trash +> 1. Clean your room +> 1. Close the door +> 1. Take out the trash > > The imperative can sound a little rude; that's why we don't often use it. But it's perfect for Git commit subject lines. -## Body +#### Revert Commits -1. just as in use imperative, present tense: “change” not “changed” nor “changes” -1. includes motivation for the change and contrasts with previous behavior +If the commit reverts a previous commit, it must be specified with the `revert` type, followed +by the complete header of the reverted commit as the subject. The body of the commit must +start with the text: `This reverts commit <hash>.`, where the hash is the SHA of the commit +being reverted. + +### Body -## Footer +The body of the commit message must follow these rules: + +1. always use the imperative, present tense: "change" not "changed", "changes", or "changing" +1. include your motivation for the change and how it contrasts with the previous behavior ### Breaking changes -All breaking changes have to be mentioned in footer with the description of the change, justification and migration notes. +All breaking changes have to be mentioned in the body with the description of the change, +justification and migration notes. The body must be prefixed with the text `BREAKING CHANGE:`. -Example, +The following example is from the +[Elegant project repository](https://github.com/Pelican-Elegant/elegant/commit/9b5b2eca2a34a5d9898173a8118cb5e37621dfd5). +After the required prefix, it describes the problem it is solving, and why it was needed. +In retrospect, while it does mention that `LANDING_PAGE_ABOUT` is no longer used, it should +have gone into more detail on where to look up information on what was replacing it. ```text feat(home): write about me in markdown, reST or asciidoc @@ -118,29 +157,33 @@ your configuration. Closes #85 ``` -### Referencing issues +### Footer + +#### Referencing issues -Closed bugs should be listed on a separate line in the footer prefixed with "Closes" keyword like this: +Closed bugs should be listed on a separate line in the footer prefixed with the `Closes` +keyword. ```text Closes #234 ``` -or in case of multiple issues: +If your commit closes multiple issues, list them on the same line separated by a comma. ```text Closes #123, #245, #992 ``` -In case your commit affects an issue, use "Updates" keyword +If your commit affects an issue, but does not fix it completely, use the "Updates" keyword ```text Updates #234 ``` -## Examples +## Correct Message Format Examples -Following are few example commits that shows how Elegant has uses these guidelines. +The following are commits from our own repository that shows how Elegant has used these +guidelines. ### New Features @@ -175,7 +218,7 @@ ci(docs): add default tasks.py file refactor: move Google and Bing claims to their individual files ``` -## Examples of Incorrect Commit Messages +## Incorrect Message Format Examples This commit message starts with a capital letter and ends with a period diff --git a/documentation/content/Contributing/inviation.md b/documentation/content/Contributing/inviation.md deleted file mode 100644 index d36bd858..00000000 --- a/documentation/content/Contributing/inviation.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -Title: Invitation to participate -Date: 2019-07-03 20:07 -Slug: invitation-to-participate -Category: Contributing ---- - -Our brand new documentation website [elegant.onCrashReboot.com][elegant-home] is a great demo for the theme. - -If you like the theme and would like to contribute to Elegant, you are most welcome to do so. Even though Pelican is written in Python, no coding skills are needed to help out with Elegant, as themes consist mostly of [Jinja][] templates, CSS and HTML. It is honestly very easily to get into. - -If you want to help out, but have no idea where to start, we keep a list of [low-priority features that are just waiting for you to pick up][pr_welcome]. - -Another way to contribute is to help with the [documentation][docs]. We are keeping a list of [good first issues][docs_first] for newbies to get involved – these are easy to tackle, but in no way less helpful. - -And, of course, reporting bugs and filing feature requests to further improve Elegant (and its documentation), is also welcome. - -[jinja]: http://jinja.pocoo.org/ -[pr_welcome]: https://github.com/Pelican-Elegant/elegant/labels/pull%20request%20welcome -[docs]: https://github.com/Pelican-Elegant/elegant/tree/master/documentation -[docs_first]: https://github.com/Pelican-Elegant/elegant/issues?q=is%3Aopen+is%3Aissue+label%3A%22project+documentation%22 -[elegant-home]: https://elegant.oncrashreboot.com diff --git a/documentation/content/Contributing/invitation.md b/documentation/content/Contributing/invitation.md new file mode 100644 index 00000000..c3641631 --- /dev/null +++ b/documentation/content/Contributing/invitation.md @@ -0,0 +1,67 @@ +--- +Title: Invitation to Participate +Subtitle: +Slug: invitation-to-participate +Category: Contributing +Tags: +Date: 2019-07-03 20:07 +Summary: Elegant has a mandatory Git commit message format that is described here. +Keywords: +Authors: Talha Mansoor, Jack De Winter +--- + +[TOC] + +This website, [elegant.onCrashReboot.com](https://elegant.oncrashreboot.com), +is an excellent demonstration of the theme that all of us contributors love. While looking for +new features that add to what Elegant has to offer, we also continue to take great care that +we adhere to [Elegant's Look and Feel]({filename}./why-look-and-feel.md). + +This practice allows you, a website owner, the opportunity to give you readers a clean flow of +reading through the body of the article with minimal destructions, with no loss of +functionality. When new features are added, you can decide whether or not to adopt these +features with the confidence that those new features will be consistent with what you already +are using. This will provide the users of your website with something that is well thought out +and organized, appealing to many readers. + +To accomplish this, Elegant is proudly a +[team driven open source project]({filename}./community-driven-project.md). +While it was created in 2012 by Talha Mansoor, the change to a community driven project in +early 2019 has energized the development of the project. By asking "how can I help" or +"do you need help with...", people have slowly joined the team and enriched the theme to what +you see today. The contributions of these people has allowed the project to grow beyond the +scope of what any one of them could accomplish on their own. Their contributions, together as +a team, are responsible for the project you see here today. + +## What Can I Do? + +If using the Elegant theme and reading this invitation inspires you to contribute, we welcome +the addition of your creativity to our team. No coding skills are required to volunteer to +help with Elegant. The theme is mostly composed of templates written in +[Jinja](http://jinja.pocoo.org/) utilizing +[metadata]({filename}../Advanced Features/metadata.md) associated with each article. We are +confident that if you want to help, we can get you up and running in no time! + +## Where Do I Start? + +As you are volunteering your time and energy, we don't want you to take on a really big task +to start, scaring you away in the process. For this purpose, we keep a refined list of +[lower priority issues](https://github.com/pelican-elegant/elegant/labels/pull%20request%20welcome) +to allow you to gently ease yourself into assisting with the project. If none of those +issues appeal to you, feel free to look at all of our +[open issues](https://github.com/Pelican-Elegant/elegant/issues?q=is:open+is:issue), and see +if any of those are more attractive to you. + +If none of that appeals to you and you still want to help, don't worry! We know we are not +perfect and rely on feedback from our users to help us make the theme better for everyone. + +## How Can I Help? + +See something that isn't working properly? +[Report a bug](https://github.com/Pelican-Elegant/elegant/issues). + +See something that you think is missing? +[File a feature request](https://github.com/Pelican-Elegant/elegant/issues). + +See an article that you think could be clearer? +[File a documentation issue](https://github.com/Pelican-Elegant/elegant/issues). diff --git a/documentation/content/Contributing/jinja-style.md b/documentation/content/Contributing/jinja-style.md index e9923a71..bf7d1e1c 100644 --- a/documentation/content/Contributing/jinja-style.md +++ b/documentation/content/Contributing/jinja-style.md @@ -1,9 +1,13 @@ --- Title: Code Style for Jinja2 -Date: 2019-07-03 22:17 +Subtitle: Slug: code-style-for-jinja2 Category: Contributing -authors: Talha Mansoor +Tags: +Date: 2019-07-03 22:17 +Summary: Elegant's Jinja templates adhere to the code style described in this article. +Keywords: +Authors: Talha Mansoor --- Please make sure to follow the code style of the existing code base. diff --git a/documentation/content/Contributing/live-reload-gulp.md b/documentation/content/Contributing/live-reload-gulp.md index e74c2042..15c06508 100644 --- a/documentation/content/Contributing/live-reload-gulp.md +++ b/documentation/content/Contributing/live-reload-gulp.md @@ -1,5 +1,6 @@ --- Title: LiveReload Elegant Documentation Using Gulp.js +Tags: gulp Date: 2019-07-19 23:17 Slug: live-reload-elegant-documentation-using-gulpjs Category: Contributing @@ -12,7 +13,7 @@ Elegant has setup [gulp.js](https://gulpjs.com/) and [BrowserSync](https://www.b You need to run following steps only once, to setup the LiveReload using gulp. -### Step 1: Install NodeJS and Yarn +### Step 1: Install NodeJS and Yarn <!-- yaspeller ignore --> Install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) on your system. @@ -78,7 +79,11 @@ You can test website on a slower network connection. To access open <http://loca ## Is gulp.js necessary to use? -We have plans to use gulp.js to utilize tools like PostCSS and Autoprefixer, in future. Currently we use gulp.js to watch for file changes. +We have plans to use gulp.js to utilize tools like +PostCSS <!-- yaspeller ignore --> +and +Autoprefixer <!-- yaspeller ignore --> +, in future. Currently we use gulp.js to watch for file changes. Pelican helper scripts does not watch for file changes. BrowserSync only watches the files that it servers, i.e. HTML, CSS and JS files. This means you need an external tool like gulp.js to watch Markdown and Jinja2 files. diff --git a/documentation/content/Contributing/postcss.md b/documentation/content/Contributing/postcss.md new file mode 100644 index 00000000..eb7f2791 --- /dev/null +++ b/documentation/content/Contributing/postcss.md @@ -0,0 +1,75 @@ +Title: Use PostCSS To Compile CSS Style Sheets +Tags: postcss, gulp +Category: Contributing +Date: 2019-12-01 23:13 +Slug: use-postcss-to-compile-css-style-sheets +Subtitle: Mandatory +Authors: Talha Mansoor +Summary: +Keywords: + +Elegant uses [GulpJS](https://gulpjs.com/) and [PostCSS](https://postcss.org/) to do pre and post processing, like [adding vendor prefixes](https://github.com/postcss/autoprefixer) or [compressing the CSS file](https://cssnano.co/). + +## Why not use Pelican assets plugin? + +[Pelican's assets plugin](https://github.com/getpelican/pelican-plugins/tree/master/assets) uses [Python's webassets package](https://github.com/miracle2k/webassets). + +Unfortunately, webassets have not had a release [since early 2017](https://github.com/miracle2k/webassets/releases). Requests to revive the project have [gone unheeded](https://github.com/miracle2k/webassets/issues/505). + +I tired to install webassets from the Git repository to use its PostCSS filter but it didn't work. Instead of wasting time in wrestling the code of an unmaintained project, I decided to use PostCSS which is modern and actively maintained. + +## How to use PostCSS + +This is closely related to [LiveReload Elegant Documentation Using Gulp.js]({filename}./live-reload-gulp.md) + +### Prerequisites + +You need to run following steps only once, to setup the LiveReload using gulp. + +#### Step 1: Install NodeJS and Yarn <!-- yaspeller ignore --> + +Install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) on your system. + +If you are on Windows then try installing them with [scoop.sh](https://scoop.sh/). It saves time and makes update easier. + +#### Step 2: Install gulp + +Run this command from your command line terminal. + +```bash +yarn global add gulp-cli +``` + +#### Step 3: Install Dependencies + +In the root of the Elegant repository, run + +```bash +yarn install +``` + +`yarn` will create `node_modules` folder in the root. + +#### Step 4: Run `gulp` + +In the root of the Elegant repository, run + +```bash +gulp css +``` + +It will compile the CSS present in [`static/css`](https://github.com/Pelican-Elegant/elegant/tree/master/static/css) folder into `static/css/elegant.prod.css`. + +To live preview your changes, use + +```bash +gulp +``` + +## How does it work? + +Gulp and PostCSS, takes all the CSS files present inside `static/css` folder. It applies PostCSS plugins on it like CSS compression. + +It then writes the generated version in `static/css/elegant.prod.css` file. This is the file a Pelican blog uses when it uses Elegant theme. + +If user has enabled [`assets` plugin]({filename}../Supported Plugins/assets-plugin.md), then this file is again made to go through webassets cssmin filter. Although this step is redundant because `elegant.prod.css` is already compressed. But it is necessary in case user has decided [to customize the theme using `custom.css`]({filename}../Advanced Features/custom-style.md). In which, assets cssmin filter will combine `elegant.prod.css` and `custom.css` into one file `style.min.css`. diff --git a/documentation/content/Contributing/pre-commit.md b/documentation/content/Contributing/pre-commit.md index 676e89e2..bd8e3587 100644 --- a/documentation/content/Contributing/pre-commit.md +++ b/documentation/content/Contributing/pre-commit.md @@ -1,43 +1,119 @@ --- -Title: Use Pre-Commit Git Hooks -Date: 2019-07-22 23:17 +Title: Using Pre-Commit Git Hooks +Subtitle: Slug: use-pre-commit-git-hooks Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-22 23:17 +Summary: Elegant use the Pre-commit tool to standardize on various concepts. This article gives more information about the tool and how to run it locally. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -Since Elegant has moved to [bazar development model]({filename}./community-driven-project.md), we want to make sure all patches follow the same stylistic guidelines. +[TOC] + +When there was a single developer working on the Elegant project, there were none of the +common problems associated with team projects: different styles and different processes. After +the project was moved to the current +[bazaar development model]({filename}./community-driven-project.md), the team thought it +best that all changes should follow the same set of stylistic guidelines. + +The Git clients provide a concept called +[Git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks). Git hooks allow for +custom code to be triggered when certain actions are performed with Git. One of the most +common triggers is the pre-commit trigger, used to activate a program between a client +request to commit and the actual act of committing the change. If the program reports a +failure, the commit is aborted, hopefully with the failed program providing enough information +for the user to diagnose the issue. + +## Aren't Git Hooks Hard to Get Right? + +If you have tried to set up Git hooks before, there are usually two problems you have faced: +the concept can be hard for people to understand and Git hooks are often frustrating difficult +to debug. Add onto this the different operating systems and versions of those systems on top +of that, and you can quickly get into nightmare territory for maintaining a Git hook. + +To solve most of these problems, the team decided to use the +[Pre-Commit](https://pre-commit.com/) +Python package which provides a simple layer of abstraction over the Git hooks. The Pre-commit +package makes managing, sharing and updating the Git hooks very easy. As it installs itself as +a Git hook, once you have installed it properly, you may easily confuse it as a part of Git's +commit process. + +## Why Use Pre-commit Locally? + +Pre-commit runs Git hooks that among other things: -We leverage Git hooks to auto format all the patches. But Git hooks are hard to manage and sync. Therefore we decided to use [Pre-Commit](https://pre-commit.com/) which provides an abstraction over the Git hooks. +- Run [Prettier](https://github.com/prettier/prettier) + - applies common styling for Markdown, CSS, JS and json files +- Run [Black](https://github.com/python/black) + - applies common styling for Python files +- Removes trailing whitespace on lines +- Fixes the end of files to a common style -Pre-commit makes managing, sharing and updating the Git hooks very easy. You can set it up once and then forget about it. +Addressing any failures reported by these hooks locally will result in a smaller turn around +time in getting those issues addressed. This in turn will save time when submitting changes +in a Pull Request, as you have already dealt with any errors that this tool may report. -To install pre-commit, +## How Do I Install It? + +The package itself is installed in typical Python fashion by using the Pip command: ```bash pip install pre-commit ``` -Then in the root of your Elegant repository run, +Once installed in your environment, you can install the Git hooks for your local repository +by changing your directory to the root of that repository and executing the following command: ```bash pre-commit install ``` -That's it. You don't have to worry about it anymore. +## How Do I Use It Locally? + +Once installed, Pre-commit appears to be part of the Git commit process. When you perform +your next `git commit` command (including using the `git-cz` command for the +[Commitizen tool]({filename}./commitizen.md)), the Pre-commit package will download any tools +it requires to properly run any required hooks. These tools are cached, so you will typically +only experience a long wait on the first time the Pre-commit package is executed. + +If the hooks run by the Pre-commit package fail for some reason, they will clearly notify +you of which of the hooks failed and typically present you with a reason why the hook failed. +Note that some of the hooks, such as the `prettier` hook, may make some changes to your +files to bring them in line with the project's common style. If any changes occur, they +will not be staged to your local repository, making any changes visible using the `git status` +command. + +If the hook failed due to an error, you need to fix that error before it will allow you to +continue. If the hook failed because it made a change, make sure to verify the change that +was made for you, after making sure it will not have a negative effect on your changes. It +is then your responsibility to stage all changes to the repository before committing the +change again. -Next time when you will try to do a Git commit, pre-commit will download all the tools required for running the Git hooks. It may take sometime but this is a one time operation. Once tools are in the place, Git hooks will run before every Git commit. +!!! warning "For Windows Users" -In almost all cases, you will not have to do anything. It will run the hooks, format the files and notify you of error. You will then stage the changed files and retry your commit. + If you run these checks on Windows, the `check-executables-have-shebangs` hook will fail as Windows does not require that executable files start with a [shebang](shebang) and all files implicitly have the `execute` or `+x` permission for Linux. -## Why use pre-commit at all? + To skip this check, enter `set SKIP=check-executables-have-shebangs` on the command line before you execute the Pre-commit package, either from a Git hook as detailed above, or manually, as detail in the following section. -Pre-commit runs Git hooks that among other things, +## Can I Run The Hooks Without a Commit? + +The full set of hooks are available by entering the following command: + +```bash +pre-commit run -a +``` -1. Run [Prettier](https://github.com/prettier/prettier) on Markdown, CSS, JS and json files -1. Run [Black](https://github.com/python/black) on Python files -1. Removes trailing whitespace +This will run the full set of hooks and report any errors. It is often useful to run this +command before committing, even if you are using +[Commitizen](./commitizien.md) +for your commits as is recommended. -## Pull Requests and pre-commit +## How Does The Project Run the Hooks For Submissions? -We have setup pre-commit to run on all pull requests using Travis CI. Travis runs pre-commit and on error, reports build failure. +The Elegant team fully believes in the Git hooks and their benefit to the team. As such, the +Pre-commit package is executed on all of our team builds (using Travis CI) for any commits and +pull requests made on the Travis CI servers. For more information on how we use Travis CI to +build the project, check out the article on +[Elegant and Travis CI](./travis-ci-and-doc-website.md). diff --git a/documentation/content/Contributing/travis-ci-and-doc-website.md b/documentation/content/Contributing/travis-ci-and-doc-website.md index 15b29897..ce27140c 100644 --- a/documentation/content/Contributing/travis-ci-and-doc-website.md +++ b/documentation/content/Contributing/travis-ci-and-doc-website.md @@ -19,7 +19,9 @@ comment_id: travis-ci-and-doc-website [Elegant](https://github.com/Pelican-Elegant/elegant) theme for pelican has been undergoing a big change from individual-driven effort to community, as part of this, one of the tasks to accomplish, has been the decoupling from author blog to project site for documentation. -As we wanted this process to be both automated and allowed us to demonstrate via dogfooding that the theme works and how it looks, the idea was to automate the rendering of pelican website with new documents. +As we wanted this process to be both automated and allowed us to demonstrate via +dogfooding <!-- yaspeller ignore --> +that the theme works and how it looks, the idea was to automate the rendering of pelican website with new documents. # Under the hood diff --git a/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md b/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md index f49981e5..d2a29ad5 100644 --- a/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md +++ b/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md @@ -69,7 +69,9 @@ after_success: This installs Travis-CI utilities and runs a custom script 'trigger-build.js' with node, which in turn actually triggers Travis build. -The script, downloaded from [Kamran Ayub blog](https://kamranicus.com/posts/2015-02-26-continuous-deployment-with-travis-ci) has been edited to specify the 'repository' we will trigger and the name of the environment variable containing the token: +The script, downloaded from +[Kamran Ayub blog](https://kamranicus.com/posts/2015-02-26-continuous-deployment-with-travis-ci) <!-- yaspeller ignore --> +has been edited to specify the 'repository' we will trigger and the name of the environment variable containing the token: <!-- yaspeller ignore:start --> diff --git a/documentation/content/Contributing/why-look-and-feel.md b/documentation/content/Contributing/why-look-and-feel.md index 2a548624..54425bf2 100644 --- a/documentation/content/Contributing/why-look-and-feel.md +++ b/documentation/content/Contributing/why-look-and-feel.md @@ -1,20 +1,24 @@ --- -Authors: Jack De Winter Title: Why Does Elegant Look The Way It Does? +Subtitle: +Slug: look-and-feel +Category: Contributing Tags: design philosophy, distraction, cognitive overload, information overload Date: 2019-07-03 20:07 -Slug: look-and-feel Summary: Elegant has been purposefully crafted to follow a specific set of design principles. This article discusses those design principles. -Category: Contributing +Keywords: +Authors: Jack De Winter --- +[TOC] + ## Discussion Elegant is theme that is largely inspired by the following articles/tweets: -- [Nicholas Carr's Experiments in delinkification](http://www.roughtype.com/?p=1378) -- [Neha Narula response to Carr's Article](https://pdos.csail.mit.edu/~neha/hyperlinks/main-no.html) -- [Collection of responses to Carr's Article](https://aroundthesphere.wordpress.com/2010/06/08/give-your-blog-posts-some-ritalin/) +- [Nicholas Carr's Experiments in delinkification](http://www.roughtype.com/?p=1378) <!-- yaspeller ignore --> +- [Neha Narula response to Carr Article](https://pdos.csail.mit.edu/~neha/hyperlinks/main-no.html) <!-- yaspeller ignore --> +- [Collection of responses to Carr Article](https://aroundthesphere.wordpress.com/2010/06/08/give-your-blog-posts-some-ritalin/) <!-- yaspeller ignore --> In the first source, Nicholas makes a solid argument that embedded hyperlink tags, <a href="http://www.roughtype.com/?p=1378">such as this one</a>, break the reader's @@ -26,7 +30,9 @@ From his article: > Even if you don’t click on a link, your eyes notice it, and your frontal cortex has to fire up a bunch of neurons to decide whether to click or not. You may not notice the little extra cognitive load placed on your brain, but it’s there and it matters. People who read hypertext comprehend and learn less, studies show, than those who read the same material in printed form. The more links in a piece of writing, the bigger the hit on comprehension. Inspired by the article, the Elegant theme was created as an extension of the suggestions in -the Carr article combined with some of the concerns of the responses. Allowing the user a +the +Carr <!-- yaspeller ignore --> +article combined with some of the concerns of the responses. Allowing the user a clean flow of reading through the body of the article is considered the highest priority for Elegant theme decisions. @@ -53,5 +59,5 @@ that regularly appear in the right sidebar include: - Published time - [Reading Time]({filename}../Supported Plugins/reading-time.md) - [Series section]({filename}../Supported Plugins/multi-part-plugin.md) -- ["Stay in Touch" icons]({filename}../Connecting With Your Readers/social-profiles-sidebar-svg.md) +- ["Stay in Touch" icons]({filename}../Connecting With Your Readers/social-profiles-sidebar-svg.md) <!-- yaspeller ignore --> - Tags diff --git a/documentation/content/Contributing/ya-spell-check.md b/documentation/content/Contributing/ya-spell-check.md new file mode 100644 index 00000000..aa5f8be6 --- /dev/null +++ b/documentation/content/Contributing/ya-spell-check.md @@ -0,0 +1,157 @@ +--- +Title: Using 'yaspeller' with Elegant +Subtitle: +Slug: yaspeller-for-elegant +Category: Contributing +Tags: +Date: 2019-08-04 23:17 +Summary: Elegant use the 'yaspeller' tool to scan for spelling mistakes. This article gives more information about the tool and how to run it locally. +Keywords: +Authors: Jack De Winter +--- + +[TOC] + +Even with most code editors having a spell checker installed and active by default, there is a +need to have the Elegant builds verify spelling against a known dictionary. The spell check +tool that was decided on by the team is the +[yaspeller tool](https://github.com/hcodes/yaspeller). + +This tool is useful in that it has a number of options for altering what it considers eligible +for scanning. In its default mode, the `yaspeller` tool will scan everything in a Markdown +document except for text encapsulated within code blocks, such as: + +````text +```text +[text ommitted for breverity] +``` + +OR + +this `yaspeller` tool is cool + +```` + +While `yaspeller` is a useful tool, it is not foolproof. When scanning the documentation +files, it often requires a bit of assistance in determining how to properly handle words which +do not appear in the standard dictionary. + +## What To Do With Spelling Mistakes? + +There are typically 4 categories of spelling mistakes: an honest mistake, a word to be added +to the project dictionary, a single situational misspelling, and intentional misspellings +within a block of text. + +The way to address mistakes in the first category is simple. Fix them. If you are not 100% +sure that the word is spelled properly, consider using +[dictionary.com](https://www.dictionary.com/) to verify the spelling. If you search for a +given word and a simpler form of that word appears, scroll down to the related words section +and see if it is there. + +## Adding A Word to the Project Dictionary + +If the spelling mistake has been verified to be a properly spelled word, then the word jumps +over to the second category: a word to be added to the project dictionary. The root directory +of the project contains +[the project dictionary](https://github.com/Pelican-Elegant/elegant/blob/master/.yaspeller.json) +with a list of words that `yaspeller` should consider acceptable. Words added to the +dictionary in lower case will match upper case and lower case versions of the word, while words +added with any capitalization will force `yaspeller` to perform a case-sensitive match. + +## A Single Intentional Misspellings within a Line of Text + +For the third category, a single situational misspelling, the best example is included in the +article [Git Commit Guidelines]({filename}./git-commit-guidelines.md). +In that article, there is [a section]({filename}./git-commit-guidelines.md#type) describing the +legal values that can be associated with a commit type. While most of the values are fine, +there is one value that is the short form for "performance": + +```text +- **perf**: A code change that improves performance <!-- yaspeller ignore --> +``` + +As this is the only word in the article that is intentionally spelled the way it is, the +line ends with the `<!-- yaspeller ignore -->` suffix to tell the `yaspeller` tool to ignore +the entire line. While we could add that single word to the project dictionary, it is more +clear to ignore the word for this given situation instead of adding it to the dictionary. + +## Intentional Misspellings within a Block of Text + +The final category, intentional misspellings within a block of text, is an extension of the +previous category, but dealing with multiple intentional misspellings, instead of a single +one. A good example of that would be specifying the contents for a table to show an example +to the user, such as the following: + +<!-- yaspeller ignore:start --> + +| Key | Value | File Name | +| --- | ----- | ---------------------------- | +| abc | 1 | stat-counter.md | +| def | 2 | favicons-speed-dial-icons.md | + +<!-- yaspeller ignore:end --> + +If you look at the [Markdown for this article]({static}/Contributing/ya-spell-check.md), +notice how the table is surrounded with two HTML comments: +`<!-- yaspeller ignore:start -->` and `<!-- yaspeller ignore:end -->` with blank lines between +the comments and the block they are there to ignore. + +With those comments in place, the `yaspeller` tool does not raise any issues with the Markdown +that generates this file, as it has been told to ignore everything starting with the first +comment and ending with the second comment. If these are removed, the `yaspeller` tool will +output the following errors: + +```text +[ERR] /enlistments/elegant/documentation/content/Contributing/ya-spell-check.md 3450 ms +----- +Typos: 2 +1. def (129:3) +2. favicons (129:13) + +Capitalization: 1 +1. abc (128:3, suggest: ABC) +----- +``` + +## Why Spell Check Locally? + +Similar to the other checks that are performed on every submission, a spell check failure will +cause the build to fail. + +Addressing any failures reported locally by this tool results in a smaller turn around time in +getting any spelling mistakes addressed. This in turn will save time when submitting changes +in a Pull Request, as you have already dealt with any errors that this tool may report. + +### Prerequisites For Local Installation + +Either [Node.js](https://nodejs.org/en/download/) or +[Yarn](https://yarnpkg.com/en/docs/install) must be installed on your system. + +### How Do I Install It Locally? + +You can install the `yaspeller` package using either NPM (Node.js) or Yarn as follows: + +```bash +npm install -g yaspeller +``` + +OR + +```bash +yarn global add yaspeller +``` + +### How Do I Use It Locally? + +To invoke the `yaspeller` package for the documentation files for the Elegant project, go to +the root directory of your local repository and enter the following command: + +```bash +yaspeller --only-errors documentation/content/ *.md +``` + +When executed, the `yaspeller` tool will recursively scan all of the `*.md` files under the +`documentation/content/` directory from the root of your local repository. The `--only-errors` +flags merely restricts any of the output to any errors that occur, instead of an ongoing stream +of what files it is scanning. As omitting the `--only-errors` flag only affects the output +and not the detection of spelling mistakes, feel free to not use it when running locally. diff --git a/documentation/content/Release Notes/release-notes-2.0.0.md b/documentation/content/Release Notes/release-notes-2.0.0.md index c0d45807..03605737 100644 --- a/documentation/content/Release Notes/release-notes-2.0.0.md +++ b/documentation/content/Release Notes/release-notes-2.0.0.md @@ -47,21 +47,21 @@ Thanks to all our contributors mentioned either at Authors document <https://git [milestone-2.0]: https://github.com/Pelican-Elegant/elegant/milestone/3?closed=1 [milestone-1.3]: https://github.com/Pelican-Elegant/elegant/milestone/1?closed=1 -Up until [1.3 release][contrib_to-1.3], the only committer was [Talha Mansoor][talha131] with 357 commits. +Up until [1.3 release][contrib_to-1.3], the only person to commit was [Talha Mansoor][talha131] with 357 commits. From 1.3 release until the [2.0 release][contrib_to-2.0] there were **316 new commits in total** and divided as follows (excluding merge commits): - [Talha Mansoor – "talha131"][talha131]: 264 commits - [Pablo Iranzo Gómez – "iranzo"][iranzo]: 8 commits -- [Calf Zhou – "calfzhou"][calfzhou]: 7 commits -- [Andrew Wegner – "AWegnerGitHub"][awegnergithub]: 6 commits -- [Matija Šuklje – "silverhook"][silverhook]: 5 commits -- [Jeremy Thurgood – "jerith"][jerith]: 1 commit +- [Calf Zhou – "calfzhou"][calfzhou]: 7 commits <!-- yaspeller ignore --> +- [Andrew Wegner – "AWegnerGitHub"][awegnergithub]: 6 commits <!-- yaspeller ignore --> +- [Matija Šuklje – "silverhook"][silverhook]: 5 commits <!-- yaspeller ignore --> +- [Jeremy Thurgood – "jerith"][jerith]: 1 commit <!-- yaspeller ignore --> - [Mobile Developer – "0x8BADFOOD"][0x8badfood]: 1 commit -- [Leo Torres – "leotrs"][leotrs]: 1 commit -- [Gan Shen – "gshen42"][gshen42]: 1 commit -- [Gert van Dijk – "gertvdijk"][gertvdijk]: 1 commit -- [Miguel Lechón – "debiatan"][debiatan]: 1 commit +- [Leo Torres – "leotrs"][leotrs]: 1 commit <!-- yaspeller ignore --> +- [Gan Shen – "gshen42"][gshen42]: 1 commit <!-- yaspeller ignore --> +- [Gert van Dijk – "gertvdijk"][gertvdijk]: 1 commit <!-- yaspeller ignore --> +- [Miguel Lechón – "debiatan"][debiatan]: 1 commit <!-- yaspeller ignore --> [contrib_to-1.3]: https://github.com/Pelican-Elegant/elegant/graphs/contributors?to=2013-10-11&type=c [contrib_to-2.0]: https://github.com/Pelican-Elegant/elegant/graphs/contributors?from=2013-10-12&to=2018-12-27&type=c @@ -70,21 +70,24 @@ As we can clearly see, by any metric this is a huge milestone for Elegant. [pelican]: https://getpelican.com [awegnergithub]: https://andrewwegner.com -[ashwinvis]: https://ashwinvis.github.io/ -[calfzhou]: http://gocalf.com + +[ashwinvis]: https://ashwinvis.github.io/ <!-- yaspeller ignore --> +[calfzhou]: http://gocalf.com <!-- yaspeller ignore --> [talha131]: http://oncrashreboot.com -[iranzo]: https://iranzo.github.io/ -[silverhook]: https://matija.suklje.name -[jerith]: http://rhetoric.jerith.org/ +[iranzo]: https://iranzo.github.io/ <!-- yaspeller ignore --> +[silverhook]: https://matija.suklje.name <!-- yaspeller ignore --> +[jerith]: http://rhetoric.jerith.org/ <!-- yaspeller ignore --> [0x8badfood]: https://0x8badfood.github.io/blog/ [leotrs]: http://leotrs.com/ -[gshen42]: https://gshen42.github.io/ -[gertvdijk]: https://blog.g3rt.nl/ +[gshen42]: https://gshen42.github.io/ <!-- yaspeller ignore --> +[gertvdijk]: https://blog.g3rt.nl/ <!-- yaspeller ignore --> [debiatan]: https://blog.debiatan.net/ # Highlights -Most issues belonged to bugs and dependency updates, amongst the biggest: +Most issues belonged to bugs and dependency updates, +amongst <!-- yaspeller ignore --> +the biggest: - support for HTTPS out of the box by making the links protocol agnostic - fix for search to work again diff --git a/documentation/content/Release Notes/release-notes-2.3.0.md b/documentation/content/Release Notes/release-notes-2.3.0.md index f3e90f4b..7cc65e0e 100644 --- a/documentation/content/Release Notes/release-notes-2.3.0.md +++ b/documentation/content/Release Notes/release-notes-2.3.0.md @@ -24,7 +24,7 @@ We are also planning to automate our release process. We have made several chang ## Features -- New: FontAwesome updated to version 4.7.0 +- New: FontAwesome updated to version 4.7.0 <!-- yaspeller ignore --> - New: `Photos` plugin support for photo gallery creation - New: Lightbox support for `Photos` plugin - Fixed: Amazon One Link div is in the header @@ -40,7 +40,7 @@ We are also planning to automate our release process. We have made several chang - New: Add spell check for every pull request, and `master` and `next` branches - New: Add git hooks to format the code - New: Add commit Zen support -- New: Add html5validator, which along with w3c_validator, makes for two html validation tools in the CI +- New: Add html5validator, which along with w3c_validator, makes for two html validation tools in the CI <!-- yaspeller ignore --> - New: Improve CI build times - Remove: peru for downloading plugins and themes - New: Add pull request template diff --git a/documentation/content/Release Notes/release-notes-2.4.0.md b/documentation/content/Release Notes/release-notes-2.4.0.md index 96f94201..e58d1e0f 100644 --- a/documentation/content/Release Notes/release-notes-2.4.0.md +++ b/documentation/content/Release Notes/release-notes-2.4.0.md @@ -9,7 +9,7 @@ Summary: Improvements in footer and automate release process Category: Release Notes --- -We focused on making changes in the footer of the site. This release is our first step towards using modern CSS properties like flexbox and grid for layout. +We focused on making changes in the footer of the site. This release is our first step towards using modern CSS properties like flexbox and grid for layout. <!-- yaspeller ignore --> We have also automated the release process. This is the first of many release that is published by the release bot. @@ -22,6 +22,6 @@ We have also automated the release process. This is the first of many release th - **footer:** open exit links in new tab ([8fd9f28](https://github.com/Pelican-Elegant/elegant/commit/8fd9f28)) - **footer:** optionally show the host information ([9de2dab](https://github.com/Pelican-Elegant/elegant/commit/9de2dab)) - **footer:** powered by message is always aligned to the right ([5e47b7c](https://github.com/Pelican-Elegant/elegant/commit/5e47b7c)) -- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) -- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) +- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) <!-- yaspeller ignore --> +- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) <!-- yaspeller ignore --> - **onelink:** add Amazon Affiliate Disclosure ([cbfa6ac](https://github.com/Pelican-Elegant/elegant/commit/cbfa6ac)) diff --git a/documentation/content/Release Notes/release-notes-2.5.0.md b/documentation/content/Release Notes/release-notes-2.5.0.md index 3d9971cb..34520e0b 100644 --- a/documentation/content/Release Notes/release-notes-2.5.0.md +++ b/documentation/content/Release Notes/release-notes-2.5.0.md @@ -17,4 +17,4 @@ In this release we also resolved an issue in our automated release process. From ### Features -- **comments:** replace disqus_identifier with comment_id ([3aa4e24](https://github.com/Pelican-Elegant/elegant/commit/3aa4e24)) +- **comments:** replace disqus_identifier with comment_id ([3aa4e24](https://github.com/Pelican-Elegant/elegant/commit/3aa4e24)) <!-- yaspeller ignore --> diff --git a/documentation/content/Release Notes/release-notes-3.2.0.md b/documentation/content/Release Notes/release-notes-3.2.0.md index 5a82a8c8..dbd1d462 100644 --- a/documentation/content/Release Notes/release-notes-3.2.0.md +++ b/documentation/content/Release Notes/release-notes-3.2.0.md @@ -12,9 +12,9 @@ Category: Release Notes ### Bug Fixes -- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) -- **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) -- **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) +- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) <!-- yaspeller ignore --> +- **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) <!-- yaspeller ignore --> +- **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) <!-- yaspeller ignore --> ### Features diff --git a/documentation/content/Release Notes/release-notes-4.0.0.md b/documentation/content/Release Notes/release-notes-4.0.0.md index 1f4990ce..02598998 100644 --- a/documentation/content/Release Notes/release-notes-4.0.0.md +++ b/documentation/content/Release Notes/release-notes-4.0.0.md @@ -36,23 +36,22 @@ Category: Release Notes - **admonition:** add box shadow ([246f826](https://github.com/Pelican-Elegant/elegant/commit/246f826)) - **admonition:** border color should match the title color ([1adadbe](https://github.com/Pelican-Elegant/elegant/commit/1adadbe)) - **admonition:** increase contrast of title ([7fb82cc](https://github.com/Pelican-Elegant/elegant/commit/7fb82cc)) -- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) +- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) <!-- yaspeller ignore --> - **clean url:** support clean URL for search page ([088791e](https://github.com/Pelican-Elegant/elegant/commit/088791e)) - **comments:** add support for utterances comment system ([a2151cc](https://github.com/Pelican-Elegant/elegant/commit/a2151cc)), closes [#288](https://github.com/Pelican-Elegant/elegant/issues/288) - **quotes:** improve style and remove font-awesome for quote icon ([9ef3ac8](https://github.com/Pelican-Elegant/elegant/commit/9ef3ac8)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) - **social:** add icons for 7 more websites ([8dcf8fa](https://github.com/Pelican-Elegant/elegant/commit/8dcf8fa)), closes [#494](https://github.com/Pelican-Elegant/elegant/issues/494) -- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) +- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) <!-- yaspeller ignore --> - **table:** add style rule to make tables pop out ([6a8500b](https://github.com/Pelican-Elegant/elegant/commit/6a8500b)), closes [#440](https://github.com/Pelican-Elegant/elegant/issues/440) ### Performance Improvements -- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) +- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) <!-- yaspeller ignore --> - **requests:** remove font awesome ([7c20145](https://github.com/Pelican-Elegant/elegant/commit/7c20145)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) ### BREAKING CHANGES -- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result - in one less web request, which in turn will improve your websites performance. +- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result in one less web request, which in turn will improve your websites performance. <!-- yaspeller ignore --> - **social:** Style customization and configuration of social icons in the sidebar has changed. New icons have better colors and bigger sizes. diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index 2f3374ed..54cc9c36 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -1,3 +1,4 @@ +--- Title: How To Improve the Download Time For Your Pages Tags: pelican-theme, pelican-plugin, page-speed Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Pelican can be configured to compile multiple assets for your website into one single asset. When these assets are combined together, they are reduce to only their necessary components, and can be fetched by the browser in a single call. Keywords: Authors: Talha Mansoor, Jack De Winter +--- When a webpage is created, webpage authors and static page generators will often grab low-level asset files from a trusted location. Between Pelican and Elegant, these files will @@ -16,6 +18,12 @@ essential to the proper look and feel of a properly designed website, the overhe content being in separate files is that separate requests are made for each of them to the server. +!!! Important + + **Elegant comes with a compressed and concatenated CSS stylesheet**, so that only one request is made to fetch the CSS stylesheets. **Following instruction is redundant for most users.** + + But if you have decided to [customize the theme using `custom.css`]({filename}../Advanced Features/custom-style.md) then follow these instruction. + Pelican provides a plugin that takes the various CSS and JavaScript files and compiles each group of them into a single file. Not only does this process reduce the number of calls to retrieve files from the server, but it minifies or reduces the overall size of @@ -33,76 +41,3 @@ PLUGINS = ['assets'] !!! note The [assets plugin](https://github.com/getpelican/pelican-plugins/blob/master/assets/Readme.rst) requires the Python `webassets` and `cssmin` packages to be installed. - -## Debugging Notes - -Note that you will not see the full power of the Assets Management plugin if you are working in -debug mode, that is building the website while using `--debug` on the Pelican command line. -In debug mode, some of the files may be minified into the `style.min.css` file, but the -original files will be included in the HTML page they are referenced from. - -This will look something like the following: - -```html -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/f89ba5f14545a8fa0e81c1c6e2b5fc13_pygments.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/96b04e88b0ba11363f4f2e2f59b5fb18_tipuesearch.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/9c80344d72edcf2ebb95daecd6dfa24c_elegant.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/d8877b08872b9883b67fbef219dfdebb_admonition.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/78ddd4ea7393d1ac1fd9f91c21aa8b5f_custom.css" -/> -``` - -When the `--debug` command line option is removed, the lines described above will be -replaced with a line like: - -```html -<link - rel="stylesheet" - href="https://jackdewinter.github.io/theme/css/style.min.css?c4027515" -/> -``` - -## Improving Elegant - -If you are developing a new feature (for the theme or for your own website), you may need to -add a new CSS file to make sure that it renders properly on the webpage. Elegant ships with -the ability support minification of CSS files through the `minify_css.html` file. This file -is located in the `templates/_includes` directory of the theme and has the following -contents: - -```text -{% assets filters="cssmin", output="css/style.min.css", "css/pygments.css", "tipuesearch/tipuesearch.css","css/elegant.css", "css/admonition.css", "css/custom.css" %} -<link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> -{% endassets %} -``` - -To ensure that your new CSS file is minified, we advise you to follow one of these two -suggestions. - -If you are planning to add a new feature to your own website, consider placing the changes in -the Elegant theme's `custom.css` file. This file is also located in the `templates/_includes` -directory, and is blank in a standard Elegant theme. As the `custom.css` file is already in -the list of files to minify, no addition modifications are required. If you are not sure -whether or not the feature will be submitted as part of Elegant, this is a good place to -start at. - -If you are planning to add a new feature to Elegant and share it with others, you will be asked -to place any CSS changes for your feature in a new CSS file. This new file should be saved in -the theme's `templates/_includes` directory with the other CSS files. To ensure that the new -file is minified, a reference to it must be added to the first line of the `minify_css.html` -file, after the `css/admonition.css` file reference and before the `css/custom.css` file -reference. diff --git a/documentation/content/Supported Plugins/author-blurbs.md b/documentation/content/Supported Plugins/author-blurbs.md index 8045dfe6..9f6bc867 100644 --- a/documentation/content/Supported Plugins/author-blurbs.md +++ b/documentation/content/Supported Plugins/author-blurbs.md @@ -72,7 +72,7 @@ above example, Talha's `avatar` URL is local, while Pablo's URL is remote. While the configuration for Author Blurbs is centralized in the configuration file, enabling this feature for a given article requires that the article contains either the `author` or -`authors` [metadata]({filename}../Advanced Features/meta-data.md) field values. If neither +`authors` [metadata]({filename}../Advanced Features/metadata.md) field values. If neither of these values are provided, the `AUTHOR` configuration variable will be used as a default. ```Python diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index 994e07f8..2060959c 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -1,3 +1,4 @@ +--- Title: Displaying a Series Information for Your Multipart Articles Tags: pelican-plugin, navigation, web-design Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Elegant can be configured to provide a series section on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. Keywords: Authors: Talha Mansoor, Jack De Winter +--- When writing articles about certain topics, it is advantageous to split a single article into multiple articles. Without splitting the article up, the author would be forced to cram all @@ -46,7 +48,7 @@ SERIES_TITLE = "More In This Series" Once the configuration for Series is enabled in the configuration file, using this feature for a given set of articles requires that the article contains the `series` -[metadata]({filename}../Advanced Features/meta-data.md) field value. +[metadata]({filename}../Advanced Features/metadata.md) field value. The text assigned to the `series` metadata field is the title of the series. When the page is created, Pelican provides Elegant with a list of all pages that have the same value for the diff --git a/documentation/content/Supported Plugins/photo-gallery-advanced.md b/documentation/content/Supported Plugins/photo-gallery-advanced.md index 180262c9..a36f4176 100644 --- a/documentation/content/Supported Plugins/photo-gallery-advanced.md +++ b/documentation/content/Supported Plugins/photo-gallery-advanced.md @@ -1,3 +1,4 @@ +--- Title: Advanced Configuration for an Image Gallery Article Tags: pelican-theme, pelican-plugin, photo gallery Category: Supported Plugins @@ -6,6 +7,8 @@ Slug: how-to-use-photos-plugin-advanced Subtitle: Summary: Elegant can be configured to provide a simple display of a series of images, usually photos. Instead of asking the author to manually add a link for each photo, this feature provides basic gallery behavior at low cost to the author. Keywords: photos, gallery, photogallery +Authors: Talha Mansoor, Jack De Winter +--- [TOC] diff --git a/documentation/content/Supported Plugins/photogallery.md b/documentation/content/Supported Plugins/photogallery.md index 0df169e1..c8255434 100644 --- a/documentation/content/Supported Plugins/photogallery.md +++ b/documentation/content/Supported Plugins/photogallery.md @@ -1,3 +1,4 @@ +--- Title: Creating a Photo Gallery Article Tags: pelican-theme, pelican-plugin, photo gallery Category: Supported Plugins @@ -6,6 +7,8 @@ Slug: how-to-use-photos-plugin Subtitle: Summary: Elegant can be configured to provide a simple display of a series of images, usually photos. Instead of asking the article's author to manually add a link for each photo, this feature provides basic gallery behavior with almost no cost to the author. Keywords: photos, gallery, photogallery +Authors: Talha Mansoor, Jack De Winter +--- [TOC] @@ -66,7 +69,7 @@ thread without invoking any of the multiprocessing code. Once the configuration for Photo Gallery is enabled in the configuration file, using this feature for a given article requires that the article contains the `gallery` -[metadata]({filename}../Advanced Features/meta-data.md) field value. +[metadata]({filename}../Advanced Features/metadata.md) field value. The text assigned to the `gallery` metadata field is the location of the directory where the images to be displayed resides. This location is relative to the article in which the diff --git a/documentation/content/Supported Plugins/previous-and-next-article.md b/documentation/content/Supported Plugins/previous-and-next-article.md index b2877093..f20647c9 100644 --- a/documentation/content/Supported Plugins/previous-and-next-article.md +++ b/documentation/content/Supported Plugins/previous-and-next-article.md @@ -1,3 +1,4 @@ +--- Title: Add Previous and Next Article Links Tags: pelican-plugin, navigation, web-design Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Elegant can be configured to provide a Previous and Next article link at the bottom of your articles. This allows for easier navigation through the site if you are looking at articles in published date order. Keywords: Authors: Talha Mansoor, Jack De Winter +--- When reading a series of articles on a website, a reader often desires to view the articles in chronological order by publish date. diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index 1fc51450..6b410be8 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -1,3 +1,4 @@ +--- Title: Add Social Sharing Links Tags: pelican-theme, pelican-plugin, social-media Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links provide a simple way to share on various Social Media platforms while endeavoring to not track users in the process. Keywords: social networks, share posts, Authors: Talha Mansoor, Jack De Winter +--- No blog is complete without buttons or links that invites a reader to share your articles with the friend and colleagues on various social media sites. The problem with these buttons @@ -51,7 +53,7 @@ Once the configuration for Sharing Media Links is enabled in the configuration f this feature to provide links for your readers to share your articles on social media is completed. -The only effect any [metadata]({filename}../Advanced Features/meta-data.md) field will have +The only effect any [metadata]({filename}../Advanced Features/metadata.md) field will have on Sharing Media links is to change the text to lead into the Social Media Sharing links. As documented above, the `SHARE_POST_INTRO` can be used to provide an alternate lead in text for the Social Media Sharing links. This text can be further overridden on an diff --git a/documentation/content/images/automated-release.png b/documentation/content/images/automated-release.png new file mode 100644 index 00000000..fd98d760 Binary files /dev/null and b/documentation/content/images/automated-release.png differ diff --git a/documentation/content/images/compare-changes.png b/documentation/content/images/compare-changes.png new file mode 100644 index 00000000..7be8214e Binary files /dev/null and b/documentation/content/images/compare-changes.png differ diff --git a/documentation/content/images/draft-pull-request.png b/documentation/content/images/draft-pull-request.png new file mode 100644 index 00000000..684363f4 Binary files /dev/null and b/documentation/content/images/draft-pull-request.png differ diff --git a/documentation/content/images/elegant-theme-toc-permalinks.png b/documentation/content/images/elegant-theme-toc-permalinks.png index 3e20f00c..21003efc 100644 Binary files a/documentation/content/images/elegant-theme-toc-permalinks.png and b/documentation/content/images/elegant-theme-toc-permalinks.png differ diff --git a/documentation/content/images/github-clone-button.png b/documentation/content/images/github-clone-button.png new file mode 100644 index 00000000..6cd9834b Binary files /dev/null and b/documentation/content/images/github-clone-button.png differ diff --git a/documentation/content/images/github-fork-button.png b/documentation/content/images/github-fork-button.png new file mode 100644 index 00000000..77054000 Binary files /dev/null and b/documentation/content/images/github-fork-button.png differ diff --git a/documentation/content/images/social-profiles-sidebar-default-2019-08-12.png b/documentation/content/images/social-profiles-sidebar-default-2019-08-12.png deleted file mode 100644 index f48ae566..00000000 Binary files a/documentation/content/images/social-profiles-sidebar-default-2019-08-12.png and /dev/null differ diff --git a/documentation/content/images/social-profiles-sidebar-hover-2019-08-12.png b/documentation/content/images/social-profiles-sidebar-hover-2019-08-12.png deleted file mode 100644 index c40ce8c7..00000000 Binary files a/documentation/content/images/social-profiles-sidebar-hover-2019-08-12.png and /dev/null differ diff --git a/documentation/content/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png b/documentation/content/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png deleted file mode 100644 index ffa1d9c1..00000000 Binary files a/documentation/content/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png and /dev/null differ diff --git a/documentation/content/images/social-profiles-sidebar-svg-default.png b/documentation/content/images/social-profiles-sidebar-svg-default.png new file mode 100644 index 00000000..2d6c935c Binary files /dev/null and b/documentation/content/images/social-profiles-sidebar-svg-default.png differ diff --git a/documentation/content/images/social-profiles-sidebar-svg-hover-linkedin.png b/documentation/content/images/social-profiles-sidebar-svg-hover-linkedin.png new file mode 100644 index 00000000..e6664f82 Binary files /dev/null and b/documentation/content/images/social-profiles-sidebar-svg-hover-linkedin.png differ diff --git a/documentation/content/images/social-profiles-sidebar-svg-hover.png b/documentation/content/images/social-profiles-sidebar-svg-hover.png new file mode 100644 index 00000000..fce4d29c Binary files /dev/null and b/documentation/content/images/social-profiles-sidebar-svg-hover.png differ diff --git a/documentation/content/images/started-pull-request.png b/documentation/content/images/started-pull-request.png new file mode 100644 index 00000000..938522b4 Binary files /dev/null and b/documentation/content/images/started-pull-request.png differ diff --git a/documentation/content/pages/landing-page-about-me.md b/documentation/content/pages/landing-page-about-me.md index f351ec41..f2c7bc24 100644 --- a/documentation/content/pages/landing-page-about-me.md +++ b/documentation/content/pages/landing-page-about-me.md @@ -41,3 +41,8 @@ To top it of, it is the only theme with comprehensive documentation and an autom This site is a demonstration and documentation of Elegant theme. To try out Elegant, you don't need to install anything. Just visit different pages of this site. Try the search function. Check out our categories. What you see here is what you get. + +## Want to Contribute? + +- [Invitation to Participate]({filename}/Contributing/invitation.md) +- [How Do I Contribute?]({filename}/Contributing/contributing-to-the-project.md) diff --git a/documentation/pelicanconf.py b/documentation/pelicanconf.py index 41a4ff57..5e20c3b8 100644 --- a/documentation/pelicanconf.py +++ b/documentation/pelicanconf.py @@ -21,13 +21,12 @@ "markdown.extensions.codehilite": {"css_class": "highlight"}, "markdown.extensions.extra": {}, "markdown.extensions.meta": {}, - "markdown.extensions.toc": {"permalink": "true"}, + "markdown.extensions.toc": {"permalink": " "}, } } PLUGIN_PATHS = ["plugins"] PLUGINS = [ - "assets", "extract_toc", "just_table", "liquid_tags.img", @@ -113,7 +112,7 @@ FEATURED_IMAGE = SITEURL + "/theme/images/apple-touch-icon-152x152.png" # Legal -SITE_LICENSE = """Content licensed under <a rel="license" +SITE_LICENSE = """Content licensed under <a rel="license nofollow noopener noreferrer" href="http://creativecommons.org/licenses/by/4.0/" target="_blank"> Creative Commons Attribution 4.0 International License</a>.""" HOSTED_ON = {"name": "Netlify", "url": "https://www.netlify.com/"} diff --git a/documentation/requirements.txt b/documentation/requirements.txt index 3e8108de..3ad67fae 100644 --- a/documentation/requirements.txt +++ b/documentation/requirements.txt @@ -1,24 +1,24 @@ -beautifulsoup4==4.8.0 +beautifulsoup4==4.8.1 blinker==1.4 cssmin==0.2.0 ddt==1.2.1 docutils==0.15.2 feedgenerator==1.9 -gitdb2==2.0.5 -GitPython==3.0.1 +gitdb2==2.0.6 +GitPython==3.0.5 invoke==1.3.0 -Jinja2==2.10.1 +Jinja2==2.10.3 livereload==2.6.1 Markdown==3.1.1 MarkupSafe==1.1.1 -pelican==4.1.0 -Pygments==2.4.2 -python-dateutil==2.8.0 -pytz==2019.2 -six==1.12.0 +pelican==4.2.0 +Pygments==2.5.2 +python-dateutil==2.8.1 +pytz==2019.3 +six==1.13.0 smartypants==2.0.1 smmap2==2.0.5 -soupsieve==1.9.2 +soupsieve==1.9.5 tornado==6.0.3 typogrify==2.0.7 Unidecode==1.1.1 diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 1275a8d9..36b31aa0 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -1,15 +1,22 @@ import fs from "fs"; import path from "path"; -import { watch, parallel } from "gulp"; +import { src, dest, watch, parallel, series } from "gulp"; import { exec } from "child_process"; import { create as browserSyncCreate } from "browser-sync"; +import postcss from "gulp-postcss"; +import cssnano from "cssnano"; +import postcssPresetEnv from "postcss-preset-env"; +import concat from "gulp-concat"; + const browserSync = browserSyncCreate(); -const content_404 = fs.readFileSync( - path.join(__dirname, "documentation/output/404.html") -); +const path404 = path.join(__dirname, "documentation/output/404.html"); +const content_404 = () => + fs.existsSync(path404) ? fs.readFileSync(path404) : null; + +const cleanOutput = () => exec("cd documentation && rm -rf outout/"); -const buildAll = () => exec("cd documentation && invoke build"); +const buildContent = () => exec("cd documentation && invoke build"); const reload = cb => { browserSync.init( @@ -28,7 +35,7 @@ const reload = cb => { }, (_, bs) => { bs.addMiddleware("*", (_, res) => { - res.write(content_404); + res.write(content_404()); res.end(); }); } @@ -45,6 +52,7 @@ const watchFiles = () => { "documentation/publishconf.py", "templates/**/*.html", "static/**/*.css", + "!static/**/elegant.prod.css", "static/**/*.js" ], { ignoreInitial: false }, @@ -52,7 +60,38 @@ const watchFiles = () => { ); }; -const elegant = parallel(watchFiles, reload); +const pathProdCSS = path.join(__dirname, "static/css/elegant.prod.css"); +const rmProdCSS = cb => { + if (fs.existsSync(pathProdCSS)) { + fs.unlinkSync(pathProdCSS); + } + cb(); +}; + +const compileCSS = () => { + const plugins = [ + // postcssPresetEnv comes with autoprefixer + postcssPresetEnv({ stage: 1 }), + cssnano() + ]; + return src([ + "static/tipuesearch/tipuesearch.css", + "static/css/*.css", + "!static/css/elegant.prod.css" + ]) + .pipe(postcss(plugins)) + .pipe(concat("elegant.prod.css")) + .pipe(dest("static/css/")); +}; + +const buildAll = series(rmProdCSS, compileCSS, buildContent); +const elegant = series( + compileCSS, + cleanOutput, + buildContent, + parallel(watchFiles, reload) +); +exports.css = series(rmProdCSS, compileCSS); exports.elegant = elegant; exports.default = elegant; diff --git a/package.json b/package.json index eafc62ff..29a883a3 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,19 @@ { "name": "Pelican-Elegant", "devDependencies": { - "@semantic-release/changelog": "^3.0.4", - "@semantic-release/exec": "^3.3.5", - "@semantic-release/git": "^7.0.16", + "@semantic-release/changelog": "^3.0.6", + "@semantic-release/exec": "^3.3.8", + "@semantic-release/git": "^7.0.18", "babel-core": "^6.26.3", "babel-preset-es2015": "^6.24.1", "browser-sync": "^2.26.7", - "cz-conventional-changelog": "2.1.0", + "cssnano": "^4.1.10", + "cz-conventional-changelog": "3.0.2", "gulp": "^4.0.2", - "semantic-release": "^15.13.18" + "gulp-concat": "^2.6.1", + "gulp-postcss": "^8.0.0", + "postcss-preset-env": "^6.7.0", + "semantic-release": "^15.13.31" }, "config": { "commitizen": { @@ -20,5 +24,10 @@ "presets": [ "es2015" ] - } + }, + "dependencies": {}, + "browserslist": [ + "defaults", + "IE 10" + ] } diff --git a/static/css/admonition.css b/static/css/admonition.css index 98113406..ef8f3e6d 100644 --- a/static/css/admonition.css +++ b/static/css/admonition.css @@ -4,8 +4,8 @@ div.admonition { margin-bottom: 20px; background-color: #fcf8e3; border: 1px solid; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); } div.admonition p { @@ -17,8 +17,19 @@ div.admonition p a { color: inherit !important; } -div.admonition pre { - margin: 0.4em 1em 0.4em 1em; +div.admonition div.highlight { + margin-left: 1em; + margin-right: 1em; +} + +div.admonition table.highlighttable { + padding-left: 1em; + padding-right: 1em; +} + +div.admonition table.highlighttable div.highlight { + margin-left: 0; + margin-right: 0; } div.admonition p.admonition-title { diff --git a/static/css/blockquote.css b/static/css/blockquote.css new file mode 100644 index 00000000..87513402 --- /dev/null +++ b/static/css/blockquote.css @@ -0,0 +1,32 @@ +blockquote { + margin: 3em 0 3em 2em; + padding: 0 7px; + background: Cornsilk; + border-radius: var(--border-radius); + border-left: 5px solid goldenrod; +} +blockquote:before, +blockquote:after { + font-size: 4em; + color: dimgray; + vertical-align: top; +} +blockquote:before { + content: open-quote; + margin-left: -0.8em; + position: absolute; +} +blockquote:after { + content: close-quote; + position: relative; + right: -97%; + top: 45px; +} +blockquote p { + font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif; + font-size: inherit; + font-variant: normal; + line-height: 1.7em; + text-transform: none; + font-weight: 300; +} diff --git a/static/css/elegant.css b/static/css/elegant.css index 6afa22ac..cec38318 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -1,4 +1,7 @@ /* Base */ +:root { + --border-radius: 4px; +} html, body { height: 100%; @@ -34,37 +37,6 @@ footer div#fpowered { margin-left: auto; margin-right: unset; } -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", - Times, Serif; - font-weight: normal; -} -h1 small, -h1 a, -h1 a:hover, -h2 small, -h2 a, -h2 a:hover, -h3 small, -h3 a, -h3 a:hover, -h4 small, -h4 a, -h4 a:hover, -h5 small, -h5 a, -h5 a:hover, -h6 small, -h6 a, -h6 a:hover { - color: inherit; - text-decoration: none; -} :lang(zh) { font-family: "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", Helvetica, Arial, sans-serif; @@ -75,9 +47,6 @@ a { hr { border-width: 3px; } -small.subtitle { - font-style: italic; -} /* site title */ .site-name { font-family: "Monaco", "Inconsolata", "Andale Mono", "Lucida Console", @@ -132,19 +101,28 @@ pre { word-wrap: normal; } td.code .highlight pre { - border-radius: 0 3px 3px 0; + border-radius: 0 var(--border-radius) var(--border-radius) 0; } td.code { width: 100%; } .linenodiv pre { background-color: #eee8d5; - border-radius: 3px 0 0 3px; + border-radius: var(--border-radius) 0 0 var(--border-radius); color: #657b83; } div.highlight { margin-bottom: 20px; } +table.highlighttable { + border: none; +} +table.highlighttable td { + border: none; +} +table.highlighttable tbody > tr:nth-child(odd) > td { + background-color: transparent; +} /* Tags */ .list-of-tags { font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif; @@ -159,7 +137,7 @@ div.highlight { } .list-of-tags a { background: #eee; - border-radius: 3px; + border-radius: var(--border-radius); color: #222; margin: 2px; padding: 3px 6px; @@ -182,23 +160,6 @@ div.highlight { "Lucida Grande", "Lucida Sans", Arial, Sans-Serif; } /* Article */ -article p:not(#list-of-translations):not(#post-share-links) a, -article ol a, -blockquote a, -article - div.article-content - ul:not(.articles-timeline):not(.related-posts-list) - a { - border-bottom: thin dashed #a9a9a9; - color: #000; -} -article p a:hover, -article ol a:hover, -article div.article-content ul:not(.articles-timeline) a:hover { - border-bottom: none; - text-decoration: none; - text-shadow: none; -} .article-content, div.recent-posts p { font: 1.2em/1.6em "PT Serif", Georgia, "Times New Roman", Times, Serif; @@ -217,31 +178,6 @@ div.recent-posts p { .article-content p { margin: 20px 0; } -blockquote { - margin: 2em 0 0 2em; - padding: 0 0 0 7px; -} -blockquote:before { - content: open-quote; - vertical-align: top; - font-size: 4em; - margin-left: -0.8em; - color: #646464; - position: absolute; -} -blockquote:after { - visibility: hidden; - content: close-quote; -} -blockquote p { - display: inline; - font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif; - font-size: inherit; - font-variant: normal; - line-height: 1.7em; - text-transform: none; - font-weight: 300; -} .article-content ul:not(.related-posts-list):not(.articles-timeline) { font-size: inherit; list-style-type: disc; @@ -273,14 +209,14 @@ blockquote p { font-size: inherit; } .page-header { - border-bottom: 1px solid #8f8686; - color: #8b0000; + border-bottom: 2px solid maroon; + color: maroon; margin: 10px 10px 20px; padding: 5px; } .page-header h1 { - font-size: 3em; - font-weight: normal; + border: none; + line-height: 1em; } ul.articles-timeline { list-style: none; @@ -295,18 +231,6 @@ ul.articles-timeline .previous-article { float: left; margin: 0; } -div#sidebar-social-link a svg { - filter: saturate(0%) brightness(0.7); - height: 30px; - width: 30px; - margin-right: 4px; -} -div#sidebar-social-link a { - text-decoration: none; -} -div#sidebar-social-link a svg:hover { - filter: none; -} ul.multi-parts-list a { color: black; } @@ -332,22 +256,6 @@ ul.multi-parts-list li.active-part { p#post-share-links { text-align: right; } -/* Perma link in article */ -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - text-decoration: none; - visibility: visible; -} -a.headerlink { - color: grey; - padding-left: 0.5em; - visibility: hidden; -} /* Categories */ .list-of-categories span { font-size: 0.7em; @@ -379,7 +287,7 @@ a.list-of-categories { } a.list-of-categories:hover { background-color: #08c; - border-radius: 4px; + border-radius: var(--border-radius); color: #fff; } /* Archives */ @@ -434,14 +342,6 @@ div.recent-posts-posted { color: #8f8f8f; font: 0.9em "PT Sans", "Helvetica Neue", Arial, Sans-Serif; } -div.recent-posts-posted a { - color: inherit; - padding-left: 0.3em; -} -div.recent-posts-posted a:hover { - border-bottom: 1px dashed; - text-decoration: none; -} div.recent-posts time { font-size: inherit; } @@ -506,7 +406,7 @@ div.recent-posts-time { } #mc-embed-signup .button { background-color: #eee; - border-radius: 4px; + border-radius: var(--border-radius); border: 1px solid #d3d3d3; clear: both; color: #000; @@ -524,7 +424,7 @@ div.recent-posts-time { white-space: nowrap; width: auto; } -#mc-embed-signup.button: hover { +#mc-embed-signup.button:hover { background-color: #dfdfdf; } #mc-embed-signup .clear { @@ -547,10 +447,8 @@ a#allposts:hover { } /* reST specific rules*/ .literal { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; background-color: #f7f7f9; - border-radius: 3px; + border-radius: var(--border-radius); border: 1px solid #e1e1e8; color: #d14; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; @@ -622,9 +520,7 @@ table { border-collapse: separate; *border-collapse: collapse; border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + border-radius: var(--border-radius); } table th, @@ -639,27 +535,19 @@ table thead:first-child tr:first-child th { } table thead:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; - -moz-border-radius-topleft: 6px; + border-top-left-radius: var(--border-radius); } table thead:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; - -moz-border-radius-topright: 6px; + border-top-right-radius: var(--border-radius); } table tbody:last-child tr:last-child > td:first-child { - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; - -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: var(--border-radius); } table tbody:last-child tr:last-child > td:last-child { - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; - -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: var(--border-radius); } table tbody > tr:nth-child(odd) > td { diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css new file mode 100644 index 00000000..65c3a31c --- /dev/null +++ b/static/css/elegant.prod.css @@ -0,0 +1,11 @@ +@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} +div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>');vertical-align:-20%} +blockquote{margin:3em 0 3em 2em;padding:0 7px;background:#fff8dc;border-radius:var(--border-radius);border-left:5px solid #daa520}blockquote:after,blockquote:before{font-size:4em;color:#696969;vertical-align:top}blockquote:before{content:open-quote;margin-left:-.8em;position:absolute}blockquote:after{content:close-quote;position:relative;right:-97%;top:45px}blockquote p{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300} + +:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a:not(.ampl),article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl),blockquote a:not(.ampl){color:#000;display:inline-block;position:relative}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:after,article ol a:not(.ampl):after,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):after,blockquote a:not(.ampl):after{position:absolute;top:100%;left:0;width:100%;height:1px;background:silver;content:"";opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translateY(0);transform:translateY(0)}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:hover,article ol a:not(.ampl):hover,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):hover,blockquote a:not(.ampl):hover{color:#4169e1;text-decoration:none;-webkit-transition:color .1s;transition:color .1s}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:hover:after,article ol a:not(.ampl):hover:after,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):hover:after,blockquote a:not(.ampl):hover:after{opacity:0;-webkit-transform:translateY(5px);transform:translateY(5px)}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:focus,article ol a:not(.ampl):focus,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):focus,blockquote a:not(.ampl):focus{text-decoration:none}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts-posted a:focus{text-decoration:none}a.ampl{color:#4169e1;display:inline-block;position:relative}a.ampl:focus,a.ampl:hover{text-decoration:none}a.ampl:hover{color:#1e90ff;-webkit-transition:color .1s;transition:color .1s}a.ampl:hover:after{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}a.ampl:after{position:absolute;top:100%;left:0;width:100%;height:2px;background:#1e90ff;content:"";opacity:0;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translateY(5px);transform:translateY(5px)} +dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{opacity:1;text-decoration:none;visibility:visible}a.headerlink{content:url('data:image/svg+xml;utf8,<svg fill="darkgray" viewBox="0 0 80 80" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="m29.298 63.471-4.048 4.02c-3.509 3.478-9.216 3.481-12.723 0-1.686-1.673-2.612-3.895-2.612-6.257s.927-4.585 2.611-6.258l14.9-14.783c3.088-3.062 8.897-7.571 13.131-3.372 1.943 1.93 5.081 1.917 7.01-.025 1.93-1.942 1.918-5.081-.025-7.009-7.197-7.142-17.834-5.822-27.098 3.37l-14.901 14.784c-3.575 3.549-5.543 8.269-5.543 13.293s1.968 9.743 5.544 13.292c3.679 3.65 8.51 5.474 13.343 5.474 4.834 0 9.667-1.824 13.348-5.476l4.051-4.021c1.942-1.928 1.953-5.066.023-7.009-1.927-1.941-5.068-1.952-7.011-.023zm45.156-57.427c-7.73-7.67-18.538-8.086-25.694-.986l-5.046 5.009c-1.943 1.929-1.955 5.066-.025 7.009s5.068 1.954 7.011.025l5.044-5.006c3.707-3.681 8.561-2.155 11.727.986 1.688 1.673 2.615 3.896 2.615 6.258 0 2.363-.928 4.586-2.613 6.259l-15.897 15.77c-7.269 7.212-10.679 3.827-12.134 2.383-1.943-1.929-5.08-1.917-7.01.025s-1.918 5.081.025 7.009c3.337 3.312 7.146 4.954 11.139 4.954 4.889 0 10.053-2.462 14.963-7.337l15.897-15.77c3.574-3.549 5.544-8.27 5.544-13.294 0-5.022-1.97-9.743-5.546-13.294z"/></svg>');display:inline-block;margin-left:5px;opacity:0;-webkit-transition:visibility 0s,opacity .2s ease-in;transition:visibility 0s,opacity .2s ease-in;visibility:hidden;width:20px} +.highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} +div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} +section#article-sidebar{float:right;font-size:.9em} +:root{--heading-border-bottom-width:1px;--heading-border-bottom-style:solid;--heading-others-line-height:1.3rem;--heading-others-h4-font-size:1.1rem}h1,h2,h3,h4,h5,h6{font-family:Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;font-weight:400;margin:10px 0}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-style:italic}h1{font-size:2.5rem}h2{font-size:2.2rem}h3{font-size:2rem}h4{font-size:1.8rem}h5{font-size:1.6rem}h6{font-size:1.4rem}h1,h2,h3{line-height:1.3em;border-bottom:1px solid #d3d3d3;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #d3d3d3}h1 code,h2 code,h3 code{font-size:80%}h1 small,h2 small,h3 small{font-size:70%}h4,h5,h6{line-height:1.1em}h4 code,h4 small,h5 code,h5 small,h6 code,h6 small{font-size:80%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}div.blog-archives h2,h1#my-projects,h1#recent-posts{border:none}h1#my-projects,h1#recent-posts{font-size:2.4rem;line-height:1.3rem;line-height:var(--heading-others-line-height)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--heading-others-h4-font-size);line-height:1.3rem;line-height:var(--heading-others-line-height)} \ No newline at end of file diff --git a/static/css/links.css b/static/css/links.css new file mode 100644 index 00000000..90709aee --- /dev/null +++ b/static/css/links.css @@ -0,0 +1,75 @@ +article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl), +article ol a:not(.ampl), +blockquote a:not(.ampl), +article + div.article-content + ul:not(.articles-timeline):not(.related-posts-list) + a { + color: black; + display: inline-block; + position: relative; + &:after { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 1px; + background: silver; + content: ""; + opacity: 1; + transition: opacity 0.3s, transform 0.3s; + transform: translateY(0px); + } + &:hover { + color: royalblue; + text-decoration: none; + transition: color 0.1s; + &:after { + opacity: 0; + transform: translateY(5px); + } + } + &:focus { + text-decoration: none; + } +} +div.recent-posts-posted a { + color: inherit; + padding-left: 0.3em; + &:hover { + border-bottom: 1px dashed; + text-decoration: none; + } + &:focus { + text-decoration: none; + } +} +a.ampl { + color: royalblue; + display: inline-block; + position: relative; + &:focus { + text-decoration: none; + } + &:hover { + color: dodgerblue; + text-decoration: none; + transition: color 0.1s; + &:after { + opacity: 1; + transform: translateY(0px); + } + } + &:after { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 2px; + background: dodgerblue; + content: ""; + opacity: 0; + transition: opacity 0.3s, transform 0.3s; + transform: translateY(5px); + } +} diff --git a/static/css/permalink.css b/static/css/permalink.css new file mode 100644 index 00000000..cc644bca --- /dev/null +++ b/static/css/permalink.css @@ -0,0 +1,20 @@ +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + opacity: 1; + text-decoration: none; + visibility: visible; +} +a.headerlink { + content: url('data:image/svg+xml;utf8,<svg fill="darkgray" viewBox="0 0 80 80" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="m29.298 63.471-4.048 4.02c-3.509 3.478-9.216 3.481-12.723 0-1.686-1.673-2.612-3.895-2.612-6.257s.927-4.585 2.611-6.258l14.9-14.783c3.088-3.062 8.897-7.571 13.131-3.372 1.943 1.93 5.081 1.917 7.01-.025 1.93-1.942 1.918-5.081-.025-7.009-7.197-7.142-17.834-5.822-27.098 3.37l-14.901 14.784c-3.575 3.549-5.543 8.269-5.543 13.293s1.968 9.743 5.544 13.292c3.679 3.65 8.51 5.474 13.343 5.474 4.834 0 9.667-1.824 13.348-5.476l4.051-4.021c1.942-1.928 1.953-5.066.023-7.009-1.927-1.941-5.068-1.952-7.011-.023zm45.156-57.427c-7.73-7.67-18.538-8.086-25.694-.986l-5.046 5.009c-1.943 1.929-1.955 5.066-.025 7.009s5.068 1.954 7.011.025l5.044-5.006c3.707-3.681 8.561-2.155 11.727.986 1.688 1.673 2.615 3.896 2.615 6.258 0 2.363-.928 4.586-2.613 6.259l-15.897 15.77c-7.269 7.212-10.679 3.827-12.134 2.383-1.943-1.929-5.08-1.917-7.01.025s-1.918 5.081.025 7.009c3.337 3.312 7.146 4.954 11.139 4.954 4.889 0 10.053-2.462 14.963-7.337l15.897-15.77c3.574-3.549 5.544-8.27 5.544-13.294 0-5.022-1.97-9.743-5.546-13.294z"/></svg>'); + display: inline-block; + margin-left: 5px; + opacity: 0; + transition: visibility 0s, opacity 0.2s ease-in; + visibility: hidden; + width: 20px; +} diff --git a/static/css/sidebar-social.css b/static/css/sidebar-social.css new file mode 100644 index 00000000..b89d6e23 --- /dev/null +++ b/static/css/sidebar-social.css @@ -0,0 +1,17 @@ +div#sidebar-social-link a svg { + filter: saturate(0%) brightness(0.7); + height: 20px; + width: 20px; + margin-right: 3px; + transition: all 0.2s ease-in-out; + z-index: 0; + position: relative; +} +div#sidebar-social-link a { + text-decoration: none; +} +div#sidebar-social-link a svg:hover { + filter: none; + transform: scale(2.5); + z-index: 1; +} diff --git a/static/css/sidebar.css b/static/css/sidebar.css new file mode 100644 index 00000000..fbfb83af --- /dev/null +++ b/static/css/sidebar.css @@ -0,0 +1,4 @@ +section#article-sidebar { + float: right; + font-size: 0.9em; +} diff --git a/static/css/typography.css b/static/css/typography.css new file mode 100644 index 00000000..8b7f74f1 --- /dev/null +++ b/static/css/typography.css @@ -0,0 +1,102 @@ +:root { + --heading-border-bottom-width: 1px; + --heading-border-bottom-style: solid; + /* Headings that are not inside article. Like in sidebar are "others" */ + --heading-others-line-height: 1.3rem; + --heading-others-h4-font-size: 1.1rem; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", + Times, Serif; + font-weight: normal; + margin: 10px 0px; + & small { + font-style: italic; + } +} +h1 { + font-size: 2.5rem; +} +h2 { + font-size: 2.2rem; +} +h3 { + font-size: 2rem; +} +h4 { + font-size: 1.8rem; +} +h5 { + font-size: 1.6rem; +} +h6 { + font-size: 1.4rem; +} +h1, +h2, +h3 { + line-height: 1.3em; + border-bottom: var(--heading-border-bottom-width) + var(--heading-border-bottom-style) lightgray; + & code { + font-size: 80%; + } + & small { + font-size: 70%; + } +} +h4, +h5, +h6 { + line-height: 1.1em; + & code { + font-size: 80%; + } + & small { + font-size: 80%; + } +} +h1 small, +h1 a, +h1 a:hover, +h2 small, +h2 a, +h2 a:hover, +h3 small, +h3 a, +h3 a:hover, +h4 small, +h4 a, +h4 a:hover, +h5 small, +h5 a, +h5 a:hover, +h6 small, +h6 a, +h6 a:hover { + color: inherit; + text-decoration: none; +} +small.subtitle { + font-style: italic; +} +h1#my-projects, +h1#recent-posts, +div.blog-archives h2 { + border: none; +} +h1#my-projects, +h1#recent-posts { + font-size: 2.4rem; + line-height: var(--heading-others-line-height); +} +section#article-sidebar h4, +nav h4 { + font-size: var(--heading-others-h4-font-size); + line-height: var(--heading-others-line-height); +} diff --git a/static/magnific/magnific-popup.css b/static/magnific/magnific-popup.css index 8561e181..e5600f8c 100644 --- a/static/magnific/magnific-popup.css +++ b/static/magnific/magnific-popup.css @@ -8,7 +8,8 @@ overflow: hidden; position: fixed; background: #0b0b0b; - opacity: 0.8; } + opacity: 0.8; +} .mfp-wrap { top: 0; @@ -18,7 +19,8 @@ z-index: 1043; position: fixed; outline: none !important; - -webkit-backface-visibility: hidden; } + -webkit-backface-visibility: hidden; +} .mfp-container { text-align: center; @@ -28,16 +30,19 @@ left: 0; top: 0; padding: 0 8px; - box-sizing: border-box; } + box-sizing: border-box; +} .mfp-container:before { - content: ''; + content: ""; display: inline-block; height: 100%; - vertical-align: middle; } + vertical-align: middle; +} .mfp-align-top .mfp-container:before { - display: none; } + display: none; +} .mfp-content { position: relative; @@ -45,29 +50,36 @@ vertical-align: middle; margin: 0 auto; text-align: left; - z-index: 1045; } + z-index: 1045; +} .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { width: 100%; - cursor: auto; } + cursor: auto; +} .mfp-ajax-cur { - cursor: progress; } + cursor: progress; +} -.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { +.mfp-zoom-out-cur, +.mfp-zoom-out-cur .mfp-image-holder .mfp-close { cursor: -moz-zoom-out; cursor: -webkit-zoom-out; - cursor: zoom-out; } + cursor: zoom-out; +} .mfp-zoom { cursor: pointer; cursor: -webkit-zoom-in; cursor: -moz-zoom-in; - cursor: zoom-in; } + cursor: zoom-in; +} .mfp-auto-cursor .mfp-content { - cursor: auto; } + cursor: auto; +} .mfp-close, .mfp-arrow, @@ -75,16 +87,19 @@ .mfp-counter { -webkit-user-select: none; -moz-user-select: none; - user-select: none; } + user-select: none; +} .mfp-loading.mfp-figure { - display: none; } + display: none; +} .mfp-hide { - display: none !important; } + display: none !important; +} .mfp-preloader { - color: #CCC; + color: #ccc; position: absolute; top: 50%; width: auto; @@ -92,17 +107,22 @@ margin-top: -0.8em; left: 8px; right: 8px; - z-index: 1044; } - .mfp-preloader a { - color: #CCC; } - .mfp-preloader a:hover { - color: #FFF; } + z-index: 1044; +} +.mfp-preloader a { + color: #ccc; +} +.mfp-preloader a:hover { + color: #fff; +} .mfp-s-ready .mfp-preloader { - display: none; } + display: none; +} .mfp-s-error .mfp-content { - display: none; } + display: none; +} button.mfp-close, button.mfp-arrow { @@ -116,11 +136,13 @@ button.mfp-arrow { padding: 0; z-index: 1046; box-shadow: none; - touch-action: manipulation; } + touch-action: manipulation; +} button::-moz-focus-inner { padding: 0; - border: 0; } + border: 0; +} .mfp-close { width: 44px; @@ -133,35 +155,41 @@ button::-moz-focus-inner { text-align: center; opacity: 0.65; padding: 0 0 18px 10px; - color: #FFF; + color: #fff; font-style: normal; font-size: 28px; - font-family: Arial, Baskerville, monospace; } - .mfp-close:hover, - .mfp-close:focus { - opacity: 1; } - .mfp-close:active { - top: 1px; } + font-family: Arial, Baskerville, monospace; +} +.mfp-close:hover, +.mfp-close:focus { + opacity: 1; +} +.mfp-close:active { + top: 1px; +} .mfp-close-btn-in .mfp-close { - color: #333; } + color: #333; +} .mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close { - color: #FFF; + color: #fff; right: -6px; text-align: right; padding-right: 6px; - width: 100%; } + width: 100%; +} .mfp-counter { position: absolute; top: 0; right: 0; - color: #CCC; + color: #ccc; font-size: 12px; line-height: 18px; - white-space: nowrap; } + white-space: nowrap; +} .mfp-arrow { position: absolute; @@ -172,74 +200,91 @@ button::-moz-focus-inner { padding: 0; width: 90px; height: 110px; - -webkit-tap-highlight-color: transparent; } - .mfp-arrow:active { - margin-top: -54px; } - .mfp-arrow:hover, - .mfp-arrow:focus { - opacity: 1; } - .mfp-arrow:before, - .mfp-arrow:after { - content: ''; - display: block; - width: 0; - height: 0; - position: absolute; - left: 0; - top: 0; - margin-top: 35px; - margin-left: 35px; - border: medium inset transparent; } - .mfp-arrow:after { - border-top-width: 13px; - border-bottom-width: 13px; - top: 8px; } - .mfp-arrow:before { - border-top-width: 21px; - border-bottom-width: 21px; - opacity: 0.7; } + -webkit-tap-highlight-color: transparent; +} +.mfp-arrow:active { + margin-top: -54px; +} +.mfp-arrow:hover, +.mfp-arrow:focus { + opacity: 1; +} +.mfp-arrow:before, +.mfp-arrow:after { + content: ""; + display: block; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + margin-top: 35px; + margin-left: 35px; + border: medium inset transparent; +} +.mfp-arrow:after { + border-top-width: 13px; + border-bottom-width: 13px; + top: 8px; +} +.mfp-arrow:before { + border-top-width: 21px; + border-bottom-width: 21px; + opacity: 0.7; +} .mfp-arrow-left { - left: 0; } - .mfp-arrow-left:after { - border-right: 17px solid #FFF; - margin-left: 31px; } - .mfp-arrow-left:before { - margin-left: 25px; - border-right: 27px solid #3F3F3F; } + left: 0; +} +.mfp-arrow-left:after { + border-right: 17px solid #fff; + margin-left: 31px; +} +.mfp-arrow-left:before { + margin-left: 25px; + border-right: 27px solid #3f3f3f; +} .mfp-arrow-right { - right: 0; } - .mfp-arrow-right:after { - border-left: 17px solid #FFF; - margin-left: 39px; } - .mfp-arrow-right:before { - border-left: 27px solid #3F3F3F; } + right: 0; +} +.mfp-arrow-right:after { + border-left: 17px solid #fff; + margin-left: 39px; +} +.mfp-arrow-right:before { + border-left: 27px solid #3f3f3f; +} .mfp-iframe-holder { padding-top: 40px; - padding-bottom: 40px; } - .mfp-iframe-holder .mfp-content { - line-height: 0; - width: 100%; - max-width: 900px; } - .mfp-iframe-holder .mfp-close { - top: -40px; } + padding-bottom: 40px; +} +.mfp-iframe-holder .mfp-content { + line-height: 0; + width: 100%; + max-width: 900px; +} +.mfp-iframe-holder .mfp-close { + top: -40px; +} .mfp-iframe-scaler { width: 100%; height: 0; overflow: hidden; - padding-top: 56.25%; } - .mfp-iframe-scaler iframe { - position: absolute; - display: block; - top: 0; - left: 0; - width: 100%; - height: 100%; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); - background: #000; } + padding-top: 56.25%; +} +.mfp-iframe-scaler iframe { + position: absolute; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #000; +} /* Main image in popup */ img.mfp-img { @@ -250,31 +295,36 @@ img.mfp-img { line-height: 0; box-sizing: border-box; padding: 40px 0 40px; - margin: 0 auto; } + margin: 0 auto; +} /* The shadow behind the image */ .mfp-figure { - line-height: 0; } - .mfp-figure:after { - content: ''; - position: absolute; - left: 0; - top: 40px; - bottom: 40px; - display: block; - right: 0; - width: auto; - height: auto; - z-index: -1; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); - background: #444; } - .mfp-figure small { - color: #BDBDBD; - display: block; - font-size: 12px; - line-height: 14px; } - .mfp-figure figure { - margin: 0; } + line-height: 0; +} +.mfp-figure:after { + content: ""; + position: absolute; + left: 0; + top: 40px; + bottom: 40px; + display: block; + right: 0; + width: auto; + height: auto; + z-index: -1; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #444; +} +.mfp-figure small { + color: #bdbdbd; + display: block; + font-size: 12px; + line-height: 14px; +} +.mfp-figure figure { + margin: 0; +} .mfp-bottom-bar { margin-top: -36px; @@ -282,36 +332,45 @@ img.mfp-img { top: 100%; left: 0; width: 100%; - cursor: auto; } + cursor: auto; +} .mfp-title { text-align: left; line-height: 18px; - color: #F3F3F3; + color: #f3f3f3; word-wrap: break-word; - padding-right: 36px; } + padding-right: 36px; +} .mfp-image-holder .mfp-content { - max-width: 100%; } + max-width: 100%; +} .mfp-gallery .mfp-image-holder .mfp-figure { - cursor: pointer; } + cursor: pointer; +} -@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { +@media screen and (max-width: 800px) and (orientation: landscape), + screen and (max-height: 300px) { /** * Remove all paddings around the image on small screen */ .mfp-img-mobile .mfp-image-holder { padding-left: 0; - padding-right: 0; } + padding-right: 0; + } .mfp-img-mobile img.mfp-img { - padding: 0; } + padding: 0; + } .mfp-img-mobile .mfp-figure:after { top: 0; - bottom: 0; } + bottom: 0; + } .mfp-img-mobile .mfp-figure small { display: inline; - margin-left: 5px; } + margin-left: 5px; + } .mfp-img-mobile .mfp-bottom-bar { background: rgba(0, 0, 0, 0.6); bottom: 0; @@ -319,12 +378,15 @@ img.mfp-img { top: auto; padding: 3px 5px; position: fixed; - box-sizing: border-box; } - .mfp-img-mobile .mfp-bottom-bar:empty { - padding: 0; } + box-sizing: border-box; + } + .mfp-img-mobile .mfp-bottom-bar:empty { + padding: 0; + } .mfp-img-mobile .mfp-counter { right: 5px; - top: 3px; } + top: 3px; + } .mfp-img-mobile .mfp-close { top: 0; right: 0; @@ -334,18 +396,25 @@ img.mfp-img { background: rgba(0, 0, 0, 0.6); position: fixed; text-align: center; - padding: 0; } } + padding: 0; + } +} @media all and (max-width: 900px) { .mfp-arrow { -webkit-transform: scale(0.75); - transform: scale(0.75); } + transform: scale(0.75); + } .mfp-arrow-left { -webkit-transform-origin: 0; - transform-origin: 0; } + transform-origin: 0; + } .mfp-arrow-right { -webkit-transform-origin: 100%; - transform-origin: 100%; } + transform-origin: 100%; + } .mfp-container { padding-left: 6px; - padding-right: 6px; } } + padding-right: 6px; + } +} diff --git a/static/magnific/magnific-popup.js b/static/magnific/magnific-popup.js index 9ee4a039..4fd63da7 100644 --- a/static/magnific/magnific-popup.js +++ b/static/magnific/magnific-popup.js @@ -1,1860 +1,1874 @@ /*! Magnific Popup - v1.1.0 - 2016-02-20 -* http://dimsemenov.com/plugins/magnific-popup/ -* Copyright (c) 2016 Dmitry Semenov; */ -;(function (factory) { -if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(window.jQuery || window.Zepto); - } - }(function($) { - -/*>>core*/ -/** - * - * Magnific Popup Core JS file - * - */ - - -/** - * Private static constants - */ -var CLOSE_EVENT = 'Close', - BEFORE_CLOSE_EVENT = 'BeforeClose', - AFTER_CLOSE_EVENT = 'AfterClose', - BEFORE_APPEND_EVENT = 'BeforeAppend', - MARKUP_PARSE_EVENT = 'MarkupParse', - OPEN_EVENT = 'Open', - CHANGE_EVENT = 'Change', - NS = 'mfp', - EVENT_NS = '.' + NS, - READY_CLASS = 'mfp-ready', - REMOVING_CLASS = 'mfp-removing', - PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; - - -/** - * Private vars - */ -/*jshint -W079 */ -var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' - MagnificPopup = function(){}, - _isJQ = !!(window.jQuery), - _prevStatus, - _window = $(window), - _document, - _prevContentType, - _wrapClasses, - _currPopupType; - - -/** - * Private functions - */ -var _mfpOn = function(name, f) { - mfp.ev.on(NS + name + EVENT_NS, f); - }, - _getEl = function(className, appendTo, html, raw) { - var el = document.createElement('div'); - el.className = 'mfp-'+className; - if(html) { - el.innerHTML = html; - } - if(!raw) { - el = $(el); - if(appendTo) { - el.appendTo(appendTo); - } - } else if(appendTo) { - appendTo.appendChild(el); - } - return el; - }, - _mfpTrigger = function(e, data) { - mfp.ev.triggerHandler(NS + e, data); - - if(mfp.st.callbacks) { - // converts "mfpEventName" to "eventName" callback and triggers it if it's present - e = e.charAt(0).toLowerCase() + e.slice(1); - if(mfp.st.callbacks[e]) { - mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); - } - } - }, - _getCloseBtn = function(type) { - if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { - mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); - _currPopupType = type; - } - return mfp.currTemplate.closeBtn; - }, - // Initialize Magnific Popup only when called at least once - _checkInstance = function() { - if(!$.magnificPopup.instance) { - /*jshint -W020 */ - mfp = new MagnificPopup(); - mfp.init(); - $.magnificPopup.instance = mfp; - } - }, - // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr - supportsTransitions = function() { - var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist - v = ['ms','O','Moz','Webkit']; // 'v' for vendor - - if( s['transition'] !== undefined ) { - return true; - } - - while( v.length ) { - if( v.pop() + 'Transition' in s ) { - return true; - } - } - - return false; - }; - - - -/** - * Public functions - */ -MagnificPopup.prototype = { - - constructor: MagnificPopup, - - /** - * Initializes Magnific Popup plugin. - * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed - */ - init: function() { - var appVersion = navigator.appVersion; - mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; - mfp.isAndroid = (/android/gi).test(appVersion); - mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); - mfp.supportsTransition = supportsTransitions(); - - // We disable fixed positioned lightbox on devices that don't handle it nicely. - // If you know a better way of detecting this - let me know. - mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); - _document = $(document); - - mfp.popupsCache = {}; - }, - - /** - * Opens popup - * @param data [description] - */ - open: function(data) { - - var i; - - if(data.isObj === false) { - // convert jQuery collection to array to avoid conflicts later - mfp.items = data.items.toArray(); - - mfp.index = 0; - var items = data.items, - item; - for(i = 0; i < items.length; i++) { - item = items[i]; - if(item.parsed) { - item = item.el[0]; - } - if(item === data.el[0]) { - mfp.index = i; - break; - } - } - } else { - mfp.items = $.isArray(data.items) ? data.items : [data.items]; - mfp.index = data.index || 0; - } - - // if popup is already opened - we just update the content - if(mfp.isOpen) { - mfp.updateItemHTML(); - return; - } - - mfp.types = []; - _wrapClasses = ''; - if(data.mainEl && data.mainEl.length) { - mfp.ev = data.mainEl.eq(0); - } else { - mfp.ev = _document; - } - - if(data.key) { - if(!mfp.popupsCache[data.key]) { - mfp.popupsCache[data.key] = {}; - } - mfp.currTemplate = mfp.popupsCache[data.key]; - } else { - mfp.currTemplate = {}; - } - - - - mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); - mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; - - if(mfp.st.modal) { - mfp.st.closeOnContentClick = false; - mfp.st.closeOnBgClick = false; - mfp.st.showCloseBtn = false; - mfp.st.enableEscapeKey = false; - } - - - // Building markup - // main containers are created only once - if(!mfp.bgOverlay) { - - // Dark overlay - mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { - mfp.close(); - }); - - mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { - if(mfp._checkIfClose(e.target)) { - mfp.close(); - } - }); - - mfp.container = _getEl('container', mfp.wrap); - } - - mfp.contentContainer = _getEl('content'); - if(mfp.st.preloader) { - mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); - } - - - // Initializing modules - var modules = $.magnificPopup.modules; - for(i = 0; i < modules.length; i++) { - var n = modules[i]; - n = n.charAt(0).toUpperCase() + n.slice(1); - mfp['init'+n].call(mfp); - } - _mfpTrigger('BeforeOpen'); - - - if(mfp.st.showCloseBtn) { - // Close button - if(!mfp.st.closeBtnInside) { - mfp.wrap.append( _getCloseBtn() ); - } else { - _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { - values.close_replaceWith = _getCloseBtn(item.type); - }); - _wrapClasses += ' mfp-close-btn-in'; - } - } - - if(mfp.st.alignTop) { - _wrapClasses += ' mfp-align-top'; - } - - - - if(mfp.fixedContentPos) { - mfp.wrap.css({ - overflow: mfp.st.overflowY, - overflowX: 'hidden', - overflowY: mfp.st.overflowY - }); - } else { - mfp.wrap.css({ - top: _window.scrollTop(), - position: 'absolute' - }); - } - if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { - mfp.bgOverlay.css({ - height: _document.height(), - position: 'absolute' - }); - } - - - - if(mfp.st.enableEscapeKey) { - // Close on ESC key - _document.on('keyup' + EVENT_NS, function(e) { - if(e.keyCode === 27) { - mfp.close(); - } - }); - } - - _window.on('resize' + EVENT_NS, function() { - mfp.updateSize(); - }); - - - if(!mfp.st.closeOnContentClick) { - _wrapClasses += ' mfp-auto-cursor'; - } - - if(_wrapClasses) - mfp.wrap.addClass(_wrapClasses); - - - // this triggers recalculation of layout, so we get it once to not to trigger twice - var windowHeight = mfp.wH = _window.height(); - - - var windowStyles = {}; - - if( mfp.fixedContentPos ) { - if(mfp._hasScrollBar(windowHeight)){ - var s = mfp._getScrollbarSize(); - if(s) { - windowStyles.marginRight = s; - } + * http://dimsemenov.com/plugins/magnific-popup/ + * Copyright (c) 2016 Dmitry Semenov; */ +(function(factory) { + if (typeof define === "function" && define.amd) { + // AMD. Register as an anonymous module. + define(["jquery"], factory); + } else if (typeof exports === "object") { + // Node/CommonJS + factory(require("jquery")); + } else { + // Browser globals + factory(window.jQuery || window.Zepto); + } +})(function($) { + /*>>core*/ + /** + * + * Magnific Popup Core JS file + * + */ + + /** + * Private static constants + */ + var CLOSE_EVENT = "Close", + BEFORE_CLOSE_EVENT = "BeforeClose", + AFTER_CLOSE_EVENT = "AfterClose", + BEFORE_APPEND_EVENT = "BeforeAppend", + MARKUP_PARSE_EVENT = "MarkupParse", + OPEN_EVENT = "Open", + CHANGE_EVENT = "Change", + NS = "mfp", + EVENT_NS = "." + NS, + READY_CLASS = "mfp-ready", + REMOVING_CLASS = "mfp-removing", + PREVENT_CLOSE_CLASS = "mfp-prevent-close"; + + /** + * Private vars + */ + /*jshint -W079 */ + var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' + MagnificPopup = function() {}, + _isJQ = !!window.jQuery, + _prevStatus, + _window = $(window), + _document, + _prevContentType, + _wrapClasses, + _currPopupType; + + /** + * Private functions + */ + var _mfpOn = function(name, f) { + mfp.ev.on(NS + name + EVENT_NS, f); + }, + _getEl = function(className, appendTo, html, raw) { + var el = document.createElement("div"); + el.className = "mfp-" + className; + if (html) { + el.innerHTML = html; + } + if (!raw) { + el = $(el); + if (appendTo) { + el.appendTo(appendTo); + } + } else if (appendTo) { + appendTo.appendChild(el); + } + return el; + }, + _mfpTrigger = function(e, data) { + mfp.ev.triggerHandler(NS + e, data); + + if (mfp.st.callbacks) { + // converts "mfpEventName" to "eventName" callback and triggers it if it's present + e = e.charAt(0).toLowerCase() + e.slice(1); + if (mfp.st.callbacks[e]) { + mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); + } + } + }, + _getCloseBtn = function(type) { + if (type !== _currPopupType || !mfp.currTemplate.closeBtn) { + mfp.currTemplate.closeBtn = $( + mfp.st.closeMarkup.replace("%title%", mfp.st.tClose) + ); + _currPopupType = type; + } + return mfp.currTemplate.closeBtn; + }, + // Initialize Magnific Popup only when called at least once + _checkInstance = function() { + if (!$.magnificPopup.instance) { + /*jshint -W020 */ + mfp = new MagnificPopup(); + mfp.init(); + $.magnificPopup.instance = mfp; + } + }, + // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr + supportsTransitions = function() { + var s = document.createElement("p").style, // 's' for style. better to create an element if body yet to exist + v = ["ms", "O", "Moz", "Webkit"]; // 'v' for vendor + + if (s["transition"] !== undefined) { + return true; + } + + while (v.length) { + if (v.pop() + "Transition" in s) { + return true; + } + } + + return false; + }; + + /** + * Public functions + */ + MagnificPopup.prototype = { + constructor: MagnificPopup, + + /** + * Initializes Magnific Popup plugin. + * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed + */ + init: function() { + var appVersion = navigator.appVersion; + mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; + mfp.isAndroid = /android/gi.test(appVersion); + mfp.isIOS = /iphone|ipad|ipod/gi.test(appVersion); + mfp.supportsTransition = supportsTransitions(); + + // We disable fixed positioned lightbox on devices that don't handle it nicely. + // If you know a better way of detecting this - let me know. + mfp.probablyMobile = + mfp.isAndroid || + mfp.isIOS || + /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test( + navigator.userAgent + ); + _document = $(document); + + mfp.popupsCache = {}; + }, + + /** + * Opens popup + * @param data [description] + */ + open: function(data) { + var i; + + if (data.isObj === false) { + // convert jQuery collection to array to avoid conflicts later + mfp.items = data.items.toArray(); + + mfp.index = 0; + var items = data.items, + item; + for (i = 0; i < items.length; i++) { + item = items[i]; + if (item.parsed) { + item = item.el[0]; + } + if (item === data.el[0]) { + mfp.index = i; + break; + } + } + } else { + mfp.items = $.isArray(data.items) ? data.items : [data.items]; + mfp.index = data.index || 0; + } + + // if popup is already opened - we just update the content + if (mfp.isOpen) { + mfp.updateItemHTML(); + return; + } + + mfp.types = []; + _wrapClasses = ""; + if (data.mainEl && data.mainEl.length) { + mfp.ev = data.mainEl.eq(0); + } else { + mfp.ev = _document; + } + + if (data.key) { + if (!mfp.popupsCache[data.key]) { + mfp.popupsCache[data.key] = {}; + } + mfp.currTemplate = mfp.popupsCache[data.key]; + } else { + mfp.currTemplate = {}; + } + + mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data); + mfp.fixedContentPos = + mfp.st.fixedContentPos === "auto" + ? !mfp.probablyMobile + : mfp.st.fixedContentPos; + + if (mfp.st.modal) { + mfp.st.closeOnContentClick = false; + mfp.st.closeOnBgClick = false; + mfp.st.showCloseBtn = false; + mfp.st.enableEscapeKey = false; + } + + // Building markup + // main containers are created only once + if (!mfp.bgOverlay) { + // Dark overlay + mfp.bgOverlay = _getEl("bg").on("click" + EVENT_NS, function() { + mfp.close(); + }); + + mfp.wrap = _getEl("wrap") + .attr("tabindex", -1) + .on("click" + EVENT_NS, function(e) { + if (mfp._checkIfClose(e.target)) { + mfp.close(); } + }); + + mfp.container = _getEl("container", mfp.wrap); + } + + mfp.contentContainer = _getEl("content"); + if (mfp.st.preloader) { + mfp.preloader = _getEl("preloader", mfp.container, mfp.st.tLoading); + } + + // Initializing modules + var modules = $.magnificPopup.modules; + for (i = 0; i < modules.length; i++) { + var n = modules[i]; + n = n.charAt(0).toUpperCase() + n.slice(1); + mfp["init" + n].call(mfp); + } + _mfpTrigger("BeforeOpen"); + + if (mfp.st.showCloseBtn) { + // Close button + if (!mfp.st.closeBtnInside) { + mfp.wrap.append(_getCloseBtn()); + } else { + _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { + values.close_replaceWith = _getCloseBtn(item.type); + }); + _wrapClasses += " mfp-close-btn-in"; + } + } + + if (mfp.st.alignTop) { + _wrapClasses += " mfp-align-top"; + } + + if (mfp.fixedContentPos) { + mfp.wrap.css({ + overflow: mfp.st.overflowY, + overflowX: "hidden", + overflowY: mfp.st.overflowY + }); + } else { + mfp.wrap.css({ + top: _window.scrollTop(), + position: "absolute" + }); + } + if ( + mfp.st.fixedBgPos === false || + (mfp.st.fixedBgPos === "auto" && !mfp.fixedContentPos) + ) { + mfp.bgOverlay.css({ + height: _document.height(), + position: "absolute" + }); + } + + if (mfp.st.enableEscapeKey) { + // Close on ESC key + _document.on("keyup" + EVENT_NS, function(e) { + if (e.keyCode === 27) { + mfp.close(); + } + }); + } + + _window.on("resize" + EVENT_NS, function() { + mfp.updateSize(); + }); + + if (!mfp.st.closeOnContentClick) { + _wrapClasses += " mfp-auto-cursor"; + } + + if (_wrapClasses) mfp.wrap.addClass(_wrapClasses); + + // this triggers recalculation of layout, so we get it once to not to trigger twice + var windowHeight = (mfp.wH = _window.height()); + + var windowStyles = {}; + + if (mfp.fixedContentPos) { + if (mfp._hasScrollBar(windowHeight)) { + var s = mfp._getScrollbarSize(); + if (s) { + windowStyles.marginRight = s; + } + } + } + + if (mfp.fixedContentPos) { + if (!mfp.isIE7) { + windowStyles.overflow = "hidden"; + } else { + // ie7 double-scroll bug + $("body, html").css("overflow", "hidden"); + } + } + + var classesToadd = mfp.st.mainClass; + if (mfp.isIE7) { + classesToadd += " mfp-ie7"; + } + if (classesToadd) { + mfp._addClassToMFP(classesToadd); + } + + // add content + mfp.updateItemHTML(); + + _mfpTrigger("BuildControls"); + + // remove scrollbar, add margin e.t.c + $("html").css(windowStyles); + + // add everything to DOM + mfp.bgOverlay + .add(mfp.wrap) + .prependTo(mfp.st.prependTo || $(document.body)); + + // Save last focused element + mfp._lastFocusedEl = document.activeElement; + + // Wait for next cycle to allow CSS transition + setTimeout(function() { + if (mfp.content) { + mfp._addClassToMFP(READY_CLASS); + mfp._setFocus(); + } else { + // if content is not defined (not loaded e.t.c) we add class only for BG + mfp.bgOverlay.addClass(READY_CLASS); } - if(mfp.fixedContentPos) { - if(!mfp.isIE7) { - windowStyles.overflow = 'hidden'; - } else { - // ie7 double-scroll bug - $('body, html').css('overflow', 'hidden'); - } - } - - - - var classesToadd = mfp.st.mainClass; - if(mfp.isIE7) { - classesToadd += ' mfp-ie7'; - } - if(classesToadd) { - mfp._addClassToMFP( classesToadd ); - } - - // add content - mfp.updateItemHTML(); - - _mfpTrigger('BuildControls'); + // Trap the focus in popup + _document.on("focusin" + EVENT_NS, mfp._onFocusIn); + }, 16); + + mfp.isOpen = true; + mfp.updateSize(windowHeight); + _mfpTrigger(OPEN_EVENT); + + return data; + }, + + /** + * Closes the popup + */ + close: function() { + if (!mfp.isOpen) return; + _mfpTrigger(BEFORE_CLOSE_EVENT); + + mfp.isOpen = false; + // for CSS3 animation + if (mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition) { + mfp._addClassToMFP(REMOVING_CLASS); + setTimeout(function() { + mfp._close(); + }, mfp.st.removalDelay); + } else { + mfp._close(); + } + }, + + /** + * Helper for close() function + */ + _close: function() { + _mfpTrigger(CLOSE_EVENT); + + var classesToRemove = REMOVING_CLASS + " " + READY_CLASS + " "; + + mfp.bgOverlay.detach(); + mfp.wrap.detach(); + mfp.container.empty(); + + if (mfp.st.mainClass) { + classesToRemove += mfp.st.mainClass + " "; + } + + mfp._removeClassFromMFP(classesToRemove); + + if (mfp.fixedContentPos) { + var windowStyles = { marginRight: "" }; + if (mfp.isIE7) { + $("body, html").css("overflow", ""); + } else { + windowStyles.overflow = ""; + } + $("html").css(windowStyles); + } + + _document.off("keyup" + EVENT_NS + " focusin" + EVENT_NS); + mfp.ev.off(EVENT_NS); + + // clean up DOM elements that aren't removed + mfp.wrap.attr("class", "mfp-wrap").removeAttr("style"); + mfp.bgOverlay.attr("class", "mfp-bg"); + mfp.container.attr("class", "mfp-container"); + + // remove close button from target element + if ( + mfp.st.showCloseBtn && + (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true) + ) { + if (mfp.currTemplate.closeBtn) mfp.currTemplate.closeBtn.detach(); + } + + if (mfp.st.autoFocusLast && mfp._lastFocusedEl) { + $(mfp._lastFocusedEl).focus(); // put tab focus back + } + mfp.currItem = null; + mfp.content = null; + mfp.currTemplate = null; + mfp.prevHeight = 0; + + _mfpTrigger(AFTER_CLOSE_EVENT); + }, + + updateSize: function(winHeight) { + if (mfp.isIOS) { + // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 + var zoomLevel = + document.documentElement.clientWidth / window.innerWidth; + var height = window.innerHeight * zoomLevel; + mfp.wrap.css("height", height); + mfp.wH = height; + } else { + mfp.wH = winHeight || _window.height(); + } + // Fixes #84: popup incorrectly positioned with position:relative on body + if (!mfp.fixedContentPos) { + mfp.wrap.css("height", mfp.wH); + } + + _mfpTrigger("Resize"); + }, + + /** + * Set content of popup based on current index + */ + updateItemHTML: function() { + var item = mfp.items[mfp.index]; + + // Detach and perform modifications + mfp.contentContainer.detach(); + + if (mfp.content) mfp.content.detach(); + + if (!item.parsed) { + item = mfp.parseEl(mfp.index); + } + + var type = item.type; + + _mfpTrigger("BeforeChange", [ + mfp.currItem ? mfp.currItem.type : "", + type + ]); + // BeforeChange event works like so: + // _mfpOn('BeforeChange', function(e, prevType, newType) { }); + + mfp.currItem = item; + + if (!mfp.currTemplate[type]) { + var markup = mfp.st[type] ? mfp.st[type].markup : false; + + // allows to modify markup + _mfpTrigger("FirstMarkupParse", markup); + + if (markup) { + mfp.currTemplate[type] = $(markup); + } else { + // if there is no markup found we just define that template is parsed + mfp.currTemplate[type] = true; + } + } + + if (_prevContentType && _prevContentType !== item.type) { + mfp.container.removeClass("mfp-" + _prevContentType + "-holder"); + } + + var newContent = mfp[ + "get" + type.charAt(0).toUpperCase() + type.slice(1) + ](item, mfp.currTemplate[type]); + mfp.appendContent(newContent, type); + + item.preloaded = true; + + _mfpTrigger(CHANGE_EVENT, item); + _prevContentType = item.type; + + // Append container back after its content changed + mfp.container.prepend(mfp.contentContainer); + + _mfpTrigger("AfterChange"); + }, + + /** + * Set HTML content of popup + */ + appendContent: function(newContent, type) { + mfp.content = newContent; + + if (newContent) { + if ( + mfp.st.showCloseBtn && + mfp.st.closeBtnInside && + mfp.currTemplate[type] === true + ) { + // if there is no markup, we just append close button element inside + if (!mfp.content.find(".mfp-close").length) { + mfp.content.append(_getCloseBtn()); + } + } else { + mfp.content = newContent; + } + } else { + mfp.content = ""; + } + + _mfpTrigger(BEFORE_APPEND_EVENT); + mfp.container.addClass("mfp-" + type + "-holder"); + + mfp.contentContainer.append(mfp.content); + }, + + /** + * Creates Magnific Popup data object based on given data + * @param {int} index Index of item to parse + */ + parseEl: function(index) { + var item = mfp.items[index], + type; + + if (item.tagName) { + item = { el: $(item) }; + } else { + type = item.type; + item = { data: item, src: item.src }; + } + + if (item.el) { + var types = mfp.types; + + // check for 'mfp-TYPE' class + for (var i = 0; i < types.length; i++) { + if (item.el.hasClass("mfp-" + types[i])) { + type = types[i]; + break; + } + } - // remove scrollbar, add margin e.t.c - $('html').css(windowStyles); + item.src = item.el.attr("data-mfp-src"); + if (!item.src) { + item.src = item.el.attr("href"); + } + } + + item.type = type || mfp.st.type || "inline"; + item.index = index; + item.parsed = true; + mfp.items[index] = item; + _mfpTrigger("ElementParse", item); + + return mfp.items[index]; + }, + + /** + * Initializes single popup or a group of popups + */ + addGroup: function(el, options) { + var eHandler = function(e) { + e.mfpEl = this; + mfp._openClick(e, el, options); + }; + + if (!options) { + options = {}; + } + + var eName = "click.magnificPopup"; + options.mainEl = el; + + if (options.items) { + options.isObj = true; + el.off(eName).on(eName, eHandler); + } else { + options.isObj = false; + if (options.delegate) { + el.off(eName).on(eName, options.delegate, eHandler); + } else { + options.items = el; + el.off(eName).on(eName, eHandler); + } + } + }, + _openClick: function(e, el, options) { + var midClick = + options.midClick !== undefined + ? options.midClick + : $.magnificPopup.defaults.midClick; + + if ( + !midClick && + (e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey) + ) { + return; + } + + var disableOn = + options.disableOn !== undefined + ? options.disableOn + : $.magnificPopup.defaults.disableOn; + + if (disableOn) { + if ($.isFunction(disableOn)) { + if (!disableOn.call(mfp)) { + return true; + } + } else { + // else it's number + if (_window.width() < disableOn) { + return true; + } + } + } - // add everything to DOM - mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) ); + if (e.type) { + e.preventDefault(); - // Save last focused element - mfp._lastFocusedEl = document.activeElement; + // This will prevent popup from closing if element is inside and popup is already opened + if (mfp.isOpen) { + e.stopPropagation(); + } + } + + options.el = $(e.mfpEl); + if (options.delegate) { + options.items = el.find(options.delegate); + } + mfp.open(options); + }, + + /** + * Updates text on preloader + */ + updateStatus: function(status, text) { + if (mfp.preloader) { + if (_prevStatus !== status) { + mfp.container.removeClass("mfp-s-" + _prevStatus); + } - // Wait for next cycle to allow CSS transition - setTimeout(function() { + if (!text && status === "loading") { + text = mfp.st.tLoading; + } - if(mfp.content) { - mfp._addClassToMFP(READY_CLASS); - mfp._setFocus(); - } else { - // if content is not defined (not loaded e.t.c) we add class only for BG - mfp.bgOverlay.addClass(READY_CLASS); - } + var data = { + status: status, + text: text + }; + // allows to modify status + _mfpTrigger("UpdateStatus", data); - // Trap the focus in popup - _document.on('focusin' + EVENT_NS, mfp._onFocusIn); + status = data.status; + text = data.text; - }, 16); + mfp.preloader.html(text); - mfp.isOpen = true; - mfp.updateSize(windowHeight); - _mfpTrigger(OPEN_EVENT); + mfp.preloader.find("a").on("click", function(e) { + e.stopImmediatePropagation(); + }); - return data; - }, + mfp.container.addClass("mfp-s-" + status); + _prevStatus = status; + } + }, - /** - * Closes the popup - */ - close: function() { - if(!mfp.isOpen) return; - _mfpTrigger(BEFORE_CLOSE_EVENT); - - mfp.isOpen = false; - // for CSS3 animation - if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { - mfp._addClassToMFP(REMOVING_CLASS); - setTimeout(function() { - mfp._close(); - }, mfp.st.removalDelay); - } else { - mfp._close(); - } - }, - - /** - * Helper for close() function - */ - _close: function() { - _mfpTrigger(CLOSE_EVENT); - - var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; - - mfp.bgOverlay.detach(); - mfp.wrap.detach(); - mfp.container.empty(); - - if(mfp.st.mainClass) { - classesToRemove += mfp.st.mainClass + ' '; - } - - mfp._removeClassFromMFP(classesToRemove); - - if(mfp.fixedContentPos) { - var windowStyles = {marginRight: ''}; - if(mfp.isIE7) { - $('body, html').css('overflow', ''); - } else { - windowStyles.overflow = ''; - } - $('html').css(windowStyles); - } - - _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); - mfp.ev.off(EVENT_NS); - - // clean up DOM elements that aren't removed - mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); - mfp.bgOverlay.attr('class', 'mfp-bg'); - mfp.container.attr('class', 'mfp-container'); - - // remove close button from target element - if(mfp.st.showCloseBtn && - (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { - if(mfp.currTemplate.closeBtn) - mfp.currTemplate.closeBtn.detach(); - } - - - if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { - $(mfp._lastFocusedEl).focus(); // put tab focus back - } - mfp.currItem = null; - mfp.content = null; - mfp.currTemplate = null; - mfp.prevHeight = 0; - - _mfpTrigger(AFTER_CLOSE_EVENT); - }, - - updateSize: function(winHeight) { - - if(mfp.isIOS) { - // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 - var zoomLevel = document.documentElement.clientWidth / window.innerWidth; - var height = window.innerHeight * zoomLevel; - mfp.wrap.css('height', height); - mfp.wH = height; - } else { - mfp.wH = winHeight || _window.height(); - } - // Fixes #84: popup incorrectly positioned with position:relative on body - if(!mfp.fixedContentPos) { - mfp.wrap.css('height', mfp.wH); - } - - _mfpTrigger('Resize'); - - }, - - /** - * Set content of popup based on current index + /* + "Private" helpers that aren't private at all */ - updateItemHTML: function() { - var item = mfp.items[mfp.index]; - - // Detach and perform modifications - mfp.contentContainer.detach(); - - if(mfp.content) - mfp.content.detach(); - - if(!item.parsed) { - item = mfp.parseEl( mfp.index ); - } - - var type = item.type; - - _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); - // BeforeChange event works like so: - // _mfpOn('BeforeChange', function(e, prevType, newType) { }); - - mfp.currItem = item; + // Check to close popup or not + // "target" is an element that was clicked + _checkIfClose: function(target) { + if ($(target).hasClass(PREVENT_CLOSE_CLASS)) { + return; + } + + var closeOnContent = mfp.st.closeOnContentClick; + var closeOnBg = mfp.st.closeOnBgClick; + + if (closeOnContent && closeOnBg) { + return true; + } else { + // We close the popup if click is on close button or on preloader. Or if there is no content. + if ( + !mfp.content || + $(target).hasClass("mfp-close") || + (mfp.preloader && target === mfp.preloader[0]) + ) { + return true; + } - if(!mfp.currTemplate[type]) { - var markup = mfp.st[type] ? mfp.st[type].markup : false; + // if click is outside the content + if (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) { + if (closeOnBg) { + // last check, if the clicked element is in DOM, (in case it's removed onclick) + if ($.contains(document, target)) { + return true; + } + } + } else if (closeOnContent) { + return true; + } + } + return false; + }, + _addClassToMFP: function(cName) { + mfp.bgOverlay.addClass(cName); + mfp.wrap.addClass(cName); + }, + _removeClassFromMFP: function(cName) { + this.bgOverlay.removeClass(cName); + mfp.wrap.removeClass(cName); + }, + _hasScrollBar: function(winHeight) { + return ( + (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > + (winHeight || _window.height()) + ); + }, + _setFocus: function() { + (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); + }, + _onFocusIn: function(e) { + if (e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target)) { + mfp._setFocus(); + return false; + } + }, + _parseMarkup: function(template, values, item) { + var arr; + if (item.data) { + values = $.extend(item.data, values); + } + _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]); + + $.each(values, function(key, value) { + if (value === undefined || value === false) { + return true; + } + arr = key.split("_"); + if (arr.length > 1) { + var el = template.find(EVENT_NS + "-" + arr[0]); + + if (el.length > 0) { + var attr = arr[1]; + if (attr === "replaceWith") { + if (el[0] !== value[0]) { + el.replaceWith(value); + } + } else if (attr === "img") { + if (el.is("img")) { + el.attr("src", value); + } else { + el.replaceWith( + $("<img>") + .attr("src", value) + .attr("class", el.attr("class")) + ); + } + } else { + el.attr(arr[1], value); + } + } + } else { + template.find(EVENT_NS + "-" + key).html(value); + } + }); + }, - // allows to modify markup - _mfpTrigger('FirstMarkupParse', markup); + _getScrollbarSize: function() { + // thx David + if (mfp.scrollbarSize === undefined) { + var scrollDiv = document.createElement("div"); + scrollDiv.style.cssText = + "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;"; + document.body.appendChild(scrollDiv); + mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + } + return mfp.scrollbarSize; + } + }; /* MagnificPopup core prototype end */ - if(markup) { - mfp.currTemplate[type] = $(markup); - } else { - // if there is no markup found we just define that template is parsed - mfp.currTemplate[type] = true; - } - } + /** + * Public static functions + */ + $.magnificPopup = { + instance: null, + proto: MagnificPopup.prototype, + modules: [], - if(_prevContentType && _prevContentType !== item.type) { - mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); - } + open: function(options, index) { + _checkInstance(); - var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); - mfp.appendContent(newContent, type); + if (!options) { + options = {}; + } else { + options = $.extend(true, {}, options); + } - item.preloaded = true; + options.isObj = true; + options.index = index || 0; + return this.instance.open(options); + }, - _mfpTrigger(CHANGE_EVENT, item); - _prevContentType = item.type; + close: function() { + return $.magnificPopup.instance && $.magnificPopup.instance.close(); + }, - // Append container back after its content changed - mfp.container.prepend(mfp.contentContainer); + registerModule: function(name, module) { + if (module.options) { + $.magnificPopup.defaults[name] = module.options; + } + $.extend(this.proto, module.proto); + this.modules.push(name); + }, - _mfpTrigger('AfterChange'); - }, + defaults: { + // Info about options is in docs: + // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options + disableOn: 0, - /** - * Set HTML content of popup - */ - appendContent: function(newContent, type) { - mfp.content = newContent; - - if(newContent) { - if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && - mfp.currTemplate[type] === true) { - // if there is no markup, we just append close button element inside - if(!mfp.content.find('.mfp-close').length) { - mfp.content.append(_getCloseBtn()); - } - } else { - mfp.content = newContent; - } - } else { - mfp.content = ''; - } - - _mfpTrigger(BEFORE_APPEND_EVENT); - mfp.container.addClass('mfp-'+type+'-holder'); - - mfp.contentContainer.append(mfp.content); - }, - - - /** - * Creates Magnific Popup data object based on given data - * @param {int} index Index of item to parse - */ - parseEl: function(index) { - var item = mfp.items[index], - type; - - if(item.tagName) { - item = { el: $(item) }; - } else { - type = item.type; - item = { data: item, src: item.src }; - } - - if(item.el) { - var types = mfp.types; - - // check for 'mfp-TYPE' class - for(var i = 0; i < types.length; i++) { - if( item.el.hasClass('mfp-'+types[i]) ) { - type = types[i]; - break; - } - } - - item.src = item.el.attr('data-mfp-src'); - if(!item.src) { - item.src = item.el.attr('href'); - } - } - - item.type = type || mfp.st.type || 'inline'; - item.index = index; - item.parsed = true; - mfp.items[index] = item; - _mfpTrigger('ElementParse', item); - - return mfp.items[index]; - }, - - - /** - * Initializes single popup or a group of popups - */ - addGroup: function(el, options) { - var eHandler = function(e) { - e.mfpEl = this; - mfp._openClick(e, el, options); - }; - - if(!options) { - options = {}; - } - - var eName = 'click.magnificPopup'; - options.mainEl = el; - - if(options.items) { - options.isObj = true; - el.off(eName).on(eName, eHandler); - } else { - options.isObj = false; - if(options.delegate) { - el.off(eName).on(eName, options.delegate , eHandler); - } else { - options.items = el; - el.off(eName).on(eName, eHandler); - } - } - }, - _openClick: function(e, el, options) { - var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; - - - if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { - return; - } - - var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; - - if(disableOn) { - if($.isFunction(disableOn)) { - if( !disableOn.call(mfp) ) { - return true; - } - } else { // else it's number - if( _window.width() < disableOn ) { - return true; - } - } - } - - if(e.type) { - e.preventDefault(); - - // This will prevent popup from closing if element is inside and popup is already opened - if(mfp.isOpen) { - e.stopPropagation(); - } - } - - options.el = $(e.mfpEl); - if(options.delegate) { - options.items = el.find(options.delegate); - } - mfp.open(options); - }, - - - /** - * Updates text on preloader - */ - updateStatus: function(status, text) { + key: null, - if(mfp.preloader) { - if(_prevStatus !== status) { - mfp.container.removeClass('mfp-s-'+_prevStatus); - } + midClick: false, - if(!text && status === 'loading') { - text = mfp.st.tLoading; - } + mainClass: "", - var data = { - status: status, - text: text - }; - // allows to modify status - _mfpTrigger('UpdateStatus', data); + preloader: true, - status = data.status; - text = data.text; + focus: "", // CSS selector of input to focus after popup is opened - mfp.preloader.html(text); + closeOnContentClick: false, - mfp.preloader.find('a').on('click', function(e) { - e.stopImmediatePropagation(); - }); + closeOnBgClick: true, - mfp.container.addClass('mfp-s-'+status); - _prevStatus = status; - } - }, + closeBtnInside: true, + showCloseBtn: true, - /* - "Private" helpers that aren't private at all - */ - // Check to close popup or not - // "target" is an element that was clicked - _checkIfClose: function(target) { - - if($(target).hasClass(PREVENT_CLOSE_CLASS)) { - return; - } - - var closeOnContent = mfp.st.closeOnContentClick; - var closeOnBg = mfp.st.closeOnBgClick; - - if(closeOnContent && closeOnBg) { - return true; - } else { - - // We close the popup if click is on close button or on preloader. Or if there is no content. - if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) { - return true; - } - - // if click is outside the content - if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { - if(closeOnBg) { - // last check, if the clicked element is in DOM, (in case it's removed onclick) - if( $.contains(document, target) ) { - return true; - } - } - } else if(closeOnContent) { - return true; - } - - } - return false; - }, - _addClassToMFP: function(cName) { - mfp.bgOverlay.addClass(cName); - mfp.wrap.addClass(cName); - }, - _removeClassFromMFP: function(cName) { - this.bgOverlay.removeClass(cName); - mfp.wrap.removeClass(cName); - }, - _hasScrollBar: function(winHeight) { - return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); - }, - _setFocus: function() { - (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); - }, - _onFocusIn: function(e) { - if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { - mfp._setFocus(); - return false; - } - }, - _parseMarkup: function(template, values, item) { - var arr; - if(item.data) { - values = $.extend(item.data, values); - } - _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); - - $.each(values, function(key, value) { - if(value === undefined || value === false) { - return true; - } - arr = key.split('_'); - if(arr.length > 1) { - var el = template.find(EVENT_NS + '-'+arr[0]); - - if(el.length > 0) { - var attr = arr[1]; - if(attr === 'replaceWith') { - if(el[0] !== value[0]) { - el.replaceWith(value); - } - } else if(attr === 'img') { - if(el.is('img')) { - el.attr('src', value); - } else { - el.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) ); - } - } else { - el.attr(arr[1], value); - } - } - - } else { - template.find(EVENT_NS + '-'+key).html(value); - } - }); - }, - - _getScrollbarSize: function() { - // thx David - if(mfp.scrollbarSize === undefined) { - var scrollDiv = document.createElement("div"); - scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; - document.body.appendChild(scrollDiv); - mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - } - return mfp.scrollbarSize; - } - -}; /* MagnificPopup core prototype end */ + enableEscapeKey: true, + modal: false, + alignTop: false, + removalDelay: 0, -/** - * Public static functions - */ -$.magnificPopup = { - instance: null, - proto: MagnificPopup.prototype, - modules: [], - - open: function(options, index) { - _checkInstance(); - - if(!options) { - options = {}; - } else { - options = $.extend(true, {}, options); - } - - options.isObj = true; - options.index = index || 0; - return this.instance.open(options); - }, - - close: function() { - return $.magnificPopup.instance && $.magnificPopup.instance.close(); - }, - - registerModule: function(name, module) { - if(module.options) { - $.magnificPopup.defaults[name] = module.options; - } - $.extend(this.proto, module.proto); - this.modules.push(name); - }, - - defaults: { - - // Info about options is in docs: - // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options + prependTo: null, - disableOn: 0, + fixedContentPos: "auto", - key: null, + fixedBgPos: "auto", - midClick: false, + overflowY: "auto", - mainClass: '', + closeMarkup: + '<button title="%title%" type="button" class="mfp-close">×</button>', - preloader: true, + tClose: "Close (Esc)", - focus: '', // CSS selector of input to focus after popup is opened + tLoading: "Loading...", - closeOnContentClick: false, + autoFocusLast: true + } + }; - closeOnBgClick: true, + $.fn.magnificPopup = function(options) { + _checkInstance(); - closeBtnInside: true, + var jqEl = $(this); - showCloseBtn: true, + // We call some API method of first param is a string + if (typeof options === "string") { + if (options === "open") { + var items, + itemOpts = _isJQ ? jqEl.data("magnificPopup") : jqEl[0].magnificPopup, + index = parseInt(arguments[1], 10) || 0; - enableEscapeKey: true, - - modal: false, - - alignTop: false, - - removalDelay: 0, + if (itemOpts.items) { + items = itemOpts.items[index]; + } else { + items = jqEl; + if (itemOpts.delegate) { + items = items.find(itemOpts.delegate); + } + items = items.eq(index); + } + mfp._openClick({ mfpEl: items }, jqEl, itemOpts); + } else { + if (mfp.isOpen) + mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); + } + } else { + // clone options obj + options = $.extend(true, {}, options); + + /* + * As Zepto doesn't support .data() method for objects + * and it works only in normal browsers + * we assign "options" object directly to the DOM element. FTW! + */ + if (_isJQ) { + jqEl.data("magnificPopup", options); + } else { + jqEl[0].magnificPopup = options; + } + + mfp.addGroup(jqEl, options); + } + return jqEl; + }; + + /*>>core*/ + + /*>>inline*/ + + var INLINE_NS = "inline", + _hiddenClass, + _inlinePlaceholder, + _lastInlineElement, + _putInlineElementsBack = function() { + if (_lastInlineElement) { + _inlinePlaceholder + .after(_lastInlineElement.addClass(_hiddenClass)) + .detach(); + _lastInlineElement = null; + } + }; + + $.magnificPopup.registerModule(INLINE_NS, { + options: { + hiddenClass: "hide", // will be appended with `mfp-` prefix + markup: "", + tNotFound: "Content not found" + }, + proto: { + initInline: function() { + mfp.types.push(INLINE_NS); + + _mfpOn(CLOSE_EVENT + "." + INLINE_NS, function() { + _putInlineElementsBack(); + }); + }, + + getInline: function(item, template) { + _putInlineElementsBack(); + + if (item.src) { + var inlineSt = mfp.st.inline, + el = $(item.src); + + if (el.length) { + // If target element has parent - we replace it with placeholder and put it back after popup is closed + var parent = el[0].parentNode; + if (parent && parent.tagName) { + if (!_inlinePlaceholder) { + _hiddenClass = inlineSt.hiddenClass; + _inlinePlaceholder = _getEl(_hiddenClass); + _hiddenClass = "mfp-" + _hiddenClass; + } + // replace target inline element with placeholder + _lastInlineElement = el + .after(_inlinePlaceholder) + .detach() + .removeClass(_hiddenClass); + } - prependTo: null, + mfp.updateStatus("ready"); + } else { + mfp.updateStatus("error", inlineSt.tNotFound); + el = $("<div>"); + } - fixedContentPos: 'auto', + item.inlineElement = el; + return el; + } - fixedBgPos: 'auto', + mfp.updateStatus("ready"); + mfp._parseMarkup(template, {}, item); + return template; + } + } + }); + + /*>>inline*/ + + /*>>ajax*/ + var AJAX_NS = "ajax", + _ajaxCur, + _removeAjaxCursor = function() { + if (_ajaxCur) { + $(document.body).removeClass(_ajaxCur); + } + }, + _destroyAjaxRequest = function() { + _removeAjaxCursor(); + if (mfp.req) { + mfp.req.abort(); + } + }; + + $.magnificPopup.registerModule(AJAX_NS, { + options: { + settings: null, + cursor: "mfp-ajax-cur", + tError: '<a href="%url%">The content</a> could not be loaded.' + }, + + proto: { + initAjax: function() { + mfp.types.push(AJAX_NS); + _ajaxCur = mfp.st.ajax.cursor; + + _mfpOn(CLOSE_EVENT + "." + AJAX_NS, _destroyAjaxRequest); + _mfpOn("BeforeChange." + AJAX_NS, _destroyAjaxRequest); + }, + getAjax: function(item) { + if (_ajaxCur) { + $(document.body).addClass(_ajaxCur); + } - overflowY: 'auto', + mfp.updateStatus("loading"); - closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>', + var opts = $.extend( + { + url: item.src, + success: function(data, textStatus, jqXHR) { + var temp = { + data: data, + xhr: jqXHR + }; - tClose: 'Close (Esc)', + _mfpTrigger("ParseAjax", temp); - tLoading: 'Loading...', + mfp.appendContent($(temp.data), AJAX_NS); - autoFocusLast: true + item.finished = true; - } -}; + _removeAjaxCursor(); + mfp._setFocus(); + setTimeout(function() { + mfp.wrap.addClass(READY_CLASS); + }, 16); -$.fn.magnificPopup = function(options) { - _checkInstance(); + mfp.updateStatus("ready"); - var jqEl = $(this); + _mfpTrigger("AjaxContentAdded"); + }, + error: function() { + _removeAjaxCursor(); + item.finished = item.loadError = true; + mfp.updateStatus( + "error", + mfp.st.ajax.tError.replace("%url%", item.src) + ); + } + }, + mfp.st.ajax.settings + ); - // We call some API method of first param is a string - if (typeof options === "string" ) { + mfp.req = $.ajax(opts); - if(options === 'open') { - var items, - itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup, - index = parseInt(arguments[1], 10) || 0; + return ""; + } + } + }); - if(itemOpts.items) { - items = itemOpts.items[index]; - } else { - items = jqEl; - if(itemOpts.delegate) { - items = items.find(itemOpts.delegate); - } - items = items.eq( index ); - } - mfp._openClick({mfpEl:items}, jqEl, itemOpts); - } else { - if(mfp.isOpen) - mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); - } + /*>>ajax*/ - } else { - // clone options obj - options = $.extend(true, {}, options); + /*>>image*/ + var _imgInterval, + _getTitle = function(item) { + if (item.data && item.data.title !== undefined) return item.data.title; - /* - * As Zepto doesn't support .data() method for objects - * and it works only in normal browsers - * we assign "options" object directly to the DOM element. FTW! - */ - if(_isJQ) { - jqEl.data('magnificPopup', options); - } else { - jqEl[0].magnificPopup = options; - } + var src = mfp.st.image.titleSrc; - mfp.addGroup(jqEl, options); + if (src) { + if ($.isFunction(src)) { + return src.call(mfp, item); + } else if (item.el) { + return item.el.attr(src) || ""; + } + } + return ""; + }; + + $.magnificPopup.registerModule("image", { + options: { + markup: + '<div class="mfp-figure">' + + '<div class="mfp-close"></div>' + + "<figure>" + + '<div class="mfp-img"></div>' + + "<figcaption>" + + '<div class="mfp-bottom-bar">' + + '<div class="mfp-title"></div>' + + '<div class="mfp-counter"></div>' + + "</div>" + + "</figcaption>" + + "</figure>" + + "</div>", + cursor: "mfp-zoom-out-cur", + titleSrc: "title", + verticalFit: true, + tError: '<a href="%url%">The image</a> could not be loaded.' + }, + + proto: { + initImage: function() { + var imgSt = mfp.st.image, + ns = ".image"; + + mfp.types.push("image"); + + _mfpOn(OPEN_EVENT + ns, function() { + if (mfp.currItem.type === "image" && imgSt.cursor) { + $(document.body).addClass(imgSt.cursor); + } + }); + + _mfpOn(CLOSE_EVENT + ns, function() { + if (imgSt.cursor) { + $(document.body).removeClass(imgSt.cursor); + } + _window.off("resize" + EVENT_NS); + }); + + _mfpOn("Resize" + ns, mfp.resizeImage); + if (mfp.isLowIE) { + _mfpOn("AfterChange", mfp.resizeImage); + } + }, + resizeImage: function() { + var item = mfp.currItem; + if (!item || !item.img) return; + + if (mfp.st.image.verticalFit) { + var decr = 0; + // fix box-sizing in ie7/8 + if (mfp.isLowIE) { + decr = + parseInt(item.img.css("padding-top"), 10) + + parseInt(item.img.css("padding-bottom"), 10); + } + item.img.css("max-height", mfp.wH - decr); + } + }, + _onImageHasSize: function(item) { + if (item.img) { + item.hasSize = true; - } - return jqEl; -}; + if (_imgInterval) { + clearInterval(_imgInterval); + } -/*>>core*/ + item.isCheckingImgSize = false; -/*>>inline*/ + _mfpTrigger("ImageHasSize", item); -var INLINE_NS = 'inline', - _hiddenClass, - _inlinePlaceholder, - _lastInlineElement, - _putInlineElementsBack = function() { - if(_lastInlineElement) { - _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach(); - _lastInlineElement = null; - } - }; + if (item.imgHidden) { + if (mfp.content) mfp.content.removeClass("mfp-loading"); -$.magnificPopup.registerModule(INLINE_NS, { - options: { - hiddenClass: 'hide', // will be appended with `mfp-` prefix - markup: '', - tNotFound: 'Content not found' - }, - proto: { + item.imgHidden = false; + } + } + }, + + /** + * Function that loops until the image has size to display elements that rely on it asap + */ + findImageSize: function(item) { + var counter = 0, + img = item.img[0], + mfpSetInterval = function(delay) { + if (_imgInterval) { + clearInterval(_imgInterval); + } + // decelerating interval that checks for size of an image + _imgInterval = setInterval(function() { + if (img.naturalWidth > 0) { + mfp._onImageHasSize(item); + return; + } + + if (counter > 200) { + clearInterval(_imgInterval); + } + + counter++; + if (counter === 3) { + mfpSetInterval(10); + } else if (counter === 40) { + mfpSetInterval(50); + } else if (counter === 100) { + mfpSetInterval(500); + } + }, delay); + }; + + mfpSetInterval(1); + }, + + getImage: function(item, template) { + var guard = 0, + // image load complete handler + onLoadComplete = function() { + if (item) { + if (item.img[0].complete) { + item.img.off(".mfploader"); + + if (item === mfp.currItem) { + mfp._onImageHasSize(item); + + mfp.updateStatus("ready"); + } - initInline: function() { - mfp.types.push(INLINE_NS); + item.hasSize = true; + item.loaded = true; + + _mfpTrigger("ImageLoadComplete"); + } else { + // if image complete check fails 200 times (20 sec), we assume that there was an error. + guard++; + if (guard < 200) { + setTimeout(onLoadComplete, 100); + } else { + onLoadError(); + } + } + } + }, + // image error handler + onLoadError = function() { + if (item) { + item.img.off(".mfploader"); + if (item === mfp.currItem) { + mfp._onImageHasSize(item); + mfp.updateStatus( + "error", + imgSt.tError.replace("%url%", item.src) + ); + } + + item.hasSize = true; + item.loaded = true; + item.loadError = true; + } + }, + imgSt = mfp.st.image; + + var el = template.find(".mfp-img"); + if (el.length) { + var img = document.createElement("img"); + img.className = "mfp-img"; + if (item.el && item.el.find("img").length) { + img.alt = item.el.find("img").attr("alt"); + } + item.img = $(img) + .on("load.mfploader", onLoadComplete) + .on("error.mfploader", onLoadError); + img.src = item.src; + + // without clone() "error" event is not firing when IMG is replaced by new IMG + // TODO: find a way to avoid such cloning + if (el.is("img")) { + item.img = item.img.clone(); + } + + img = item.img[0]; + if (img.naturalWidth > 0) { + item.hasSize = true; + } else if (!img.width) { + item.hasSize = false; + } + } - _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() { - _putInlineElementsBack(); - }); - }, - - getInline: function(item, template) { - - _putInlineElementsBack(); - - if(item.src) { - var inlineSt = mfp.st.inline, - el = $(item.src); - - if(el.length) { - - // If target element has parent - we replace it with placeholder and put it back after popup is closed - var parent = el[0].parentNode; - if(parent && parent.tagName) { - if(!_inlinePlaceholder) { - _hiddenClass = inlineSt.hiddenClass; - _inlinePlaceholder = _getEl(_hiddenClass); - _hiddenClass = 'mfp-'+_hiddenClass; - } - // replace target inline element with placeholder - _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); - } - - mfp.updateStatus('ready'); - } else { - mfp.updateStatus('error', inlineSt.tNotFound); - el = $('<div>'); - } - - item.inlineElement = el; - return el; - } - - mfp.updateStatus('ready'); - mfp._parseMarkup(template, {}, item); - return template; - } - } -}); + mfp._parseMarkup( + template, + { + title: _getTitle(item), + img_replaceWith: item.img + }, + item + ); + + mfp.resizeImage(); + + if (item.hasSize) { + if (_imgInterval) clearInterval(_imgInterval); + + if (item.loadError) { + template.addClass("mfp-loading"); + mfp.updateStatus("error", imgSt.tError.replace("%url%", item.src)); + } else { + template.removeClass("mfp-loading"); + mfp.updateStatus("ready"); + } + return template; + } -/*>>inline*/ - -/*>>ajax*/ -var AJAX_NS = 'ajax', - _ajaxCur, - _removeAjaxCursor = function() { - if(_ajaxCur) { - $(document.body).removeClass(_ajaxCur); - } - }, - _destroyAjaxRequest = function() { - _removeAjaxCursor(); - if(mfp.req) { - mfp.req.abort(); - } - }; - -$.magnificPopup.registerModule(AJAX_NS, { - - options: { - settings: null, - cursor: 'mfp-ajax-cur', - tError: '<a href="%url%">The content</a> could not be loaded.' - }, - - proto: { - initAjax: function() { - mfp.types.push(AJAX_NS); - _ajaxCur = mfp.st.ajax.cursor; - - _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest); - _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest); - }, - getAjax: function(item) { - - if(_ajaxCur) { - $(document.body).addClass(_ajaxCur); - } - - mfp.updateStatus('loading'); - - var opts = $.extend({ - url: item.src, - success: function(data, textStatus, jqXHR) { - var temp = { - data:data, - xhr:jqXHR - }; - - _mfpTrigger('ParseAjax', temp); - - mfp.appendContent( $(temp.data), AJAX_NS ); - - item.finished = true; - - _removeAjaxCursor(); - - mfp._setFocus(); - - setTimeout(function() { - mfp.wrap.addClass(READY_CLASS); - }, 16); - - mfp.updateStatus('ready'); - - _mfpTrigger('AjaxContentAdded'); - }, - error: function() { - _removeAjaxCursor(); - item.finished = item.loadError = true; - mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src)); - } - }, mfp.st.ajax.settings); - - mfp.req = $.ajax(opts); - - return ''; - } - } -}); + mfp.updateStatus("loading"); + item.loading = true; -/*>>ajax*/ - -/*>>image*/ -var _imgInterval, - _getTitle = function(item) { - if(item.data && item.data.title !== undefined) - return item.data.title; - - var src = mfp.st.image.titleSrc; - - if(src) { - if($.isFunction(src)) { - return src.call(mfp, item); - } else if(item.el) { - return item.el.attr(src) || ''; - } - } - return ''; - }; - -$.magnificPopup.registerModule('image', { - - options: { - markup: '<div class="mfp-figure">'+ - '<div class="mfp-close"></div>'+ - '<figure>'+ - '<div class="mfp-img"></div>'+ - '<figcaption>'+ - '<div class="mfp-bottom-bar">'+ - '<div class="mfp-title"></div>'+ - '<div class="mfp-counter"></div>'+ - '</div>'+ - '</figcaption>'+ - '</figure>'+ - '</div>', - cursor: 'mfp-zoom-out-cur', - titleSrc: 'title', - verticalFit: true, - tError: '<a href="%url%">The image</a> could not be loaded.' - }, - - proto: { - initImage: function() { - var imgSt = mfp.st.image, - ns = '.image'; - - mfp.types.push('image'); - - _mfpOn(OPEN_EVENT+ns, function() { - if(mfp.currItem.type === 'image' && imgSt.cursor) { - $(document.body).addClass(imgSt.cursor); - } - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(imgSt.cursor) { - $(document.body).removeClass(imgSt.cursor); - } - _window.off('resize' + EVENT_NS); - }); - - _mfpOn('Resize'+ns, mfp.resizeImage); - if(mfp.isLowIE) { - _mfpOn('AfterChange', mfp.resizeImage); - } - }, - resizeImage: function() { - var item = mfp.currItem; - if(!item || !item.img) return; - - if(mfp.st.image.verticalFit) { - var decr = 0; - // fix box-sizing in ie7/8 - if(mfp.isLowIE) { - decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10); - } - item.img.css('max-height', mfp.wH-decr); - } - }, - _onImageHasSize: function(item) { - if(item.img) { - - item.hasSize = true; - - if(_imgInterval) { - clearInterval(_imgInterval); - } - - item.isCheckingImgSize = false; - - _mfpTrigger('ImageHasSize', item); - - if(item.imgHidden) { - if(mfp.content) - mfp.content.removeClass('mfp-loading'); - - item.imgHidden = false; - } - - } - }, - - /** - * Function that loops until the image has size to display elements that rely on it asap - */ - findImageSize: function(item) { - - var counter = 0, - img = item.img[0], - mfpSetInterval = function(delay) { - - if(_imgInterval) { - clearInterval(_imgInterval); - } - // decelerating interval that checks for size of an image - _imgInterval = setInterval(function() { - if(img.naturalWidth > 0) { - mfp._onImageHasSize(item); - return; - } - - if(counter > 200) { - clearInterval(_imgInterval); - } - - counter++; - if(counter === 3) { - mfpSetInterval(10); - } else if(counter === 40) { - mfpSetInterval(50); - } else if(counter === 100) { - mfpSetInterval(500); - } - }, delay); - }; - - mfpSetInterval(1); - }, - - getImage: function(item, template) { - - var guard = 0, - - // image load complete handler - onLoadComplete = function() { - if(item) { - if (item.img[0].complete) { - item.img.off('.mfploader'); - - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - - mfp.updateStatus('ready'); - } - - item.hasSize = true; - item.loaded = true; - - _mfpTrigger('ImageLoadComplete'); - - } - else { - // if image complete check fails 200 times (20 sec), we assume that there was an error. - guard++; - if(guard < 200) { - setTimeout(onLoadComplete,100); - } else { - onLoadError(); - } - } - } - }, - - // image error handler - onLoadError = function() { - if(item) { - item.img.off('.mfploader'); - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } - - item.hasSize = true; - item.loaded = true; - item.loadError = true; - } - }, - imgSt = mfp.st.image; - - - var el = template.find('.mfp-img'); - if(el.length) { - var img = document.createElement('img'); - img.className = 'mfp-img'; - if(item.el && item.el.find('img').length) { - img.alt = item.el.find('img').attr('alt'); - } - item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError); - img.src = item.src; - - // without clone() "error" event is not firing when IMG is replaced by new IMG - // TODO: find a way to avoid such cloning - if(el.is('img')) { - item.img = item.img.clone(); - } - - img = item.img[0]; - if(img.naturalWidth > 0) { - item.hasSize = true; - } else if(!img.width) { - item.hasSize = false; - } - } - - mfp._parseMarkup(template, { - title: _getTitle(item), - img_replaceWith: item.img - }, item); - - mfp.resizeImage(); - - if(item.hasSize) { - if(_imgInterval) clearInterval(_imgInterval); - - if(item.loadError) { - template.addClass('mfp-loading'); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } else { - template.removeClass('mfp-loading'); - mfp.updateStatus('ready'); - } - return template; - } - - mfp.updateStatus('loading'); - item.loading = true; - - if(!item.hasSize) { - item.imgHidden = true; - template.addClass('mfp-loading'); - mfp.findImageSize(item); - } - - return template; - } - } -}); + if (!item.hasSize) { + item.imgHidden = true; + template.addClass("mfp-loading"); + mfp.findImageSize(item); + } -/*>>image*/ + return template; + } + } + }); + + /*>>image*/ + + /*>>zoom*/ + var hasMozTransform, + getHasMozTransform = function() { + if (hasMozTransform === undefined) { + hasMozTransform = + document.createElement("p").style.MozTransform !== undefined; + } + return hasMozTransform; + }; + + $.magnificPopup.registerModule("zoom", { + options: { + enabled: false, + easing: "ease-in-out", + duration: 300, + opener: function(element) { + return element.is("img") ? element : element.find("img"); + } + }, + + proto: { + initZoom: function() { + var zoomSt = mfp.st.zoom, + ns = ".zoom", + image; + + if (!zoomSt.enabled || !mfp.supportsTransition) { + return; + } -/*>>zoom*/ -var hasMozTransform, - getHasMozTransform = function() { - if(hasMozTransform === undefined) { - hasMozTransform = document.createElement('p').style.MozTransform !== undefined; - } - return hasMozTransform; - }; + var duration = zoomSt.duration, + getElToAnimate = function(image) { + var newImg = image + .clone() + .removeAttr("style") + .removeAttr("class") + .addClass("mfp-animated-image"), + transition = + "all " + zoomSt.duration / 1000 + "s " + zoomSt.easing, + cssObj = { + position: "fixed", + zIndex: 9999, + left: 0, + top: 0, + "-webkit-backface-visibility": "hidden" + }, + t = "transition"; + + cssObj["-webkit-" + t] = cssObj["-moz-" + t] = cssObj[ + "-o-" + t + ] = cssObj[t] = transition; + + newImg.css(cssObj); + return newImg; + }, + showMainContent = function() { + mfp.content.css("visibility", "visible"); + }, + openTimeout, + animatedImg; + + _mfpOn("BuildControls" + ns, function() { + if (mfp._allowZoom()) { + clearTimeout(openTimeout); + mfp.content.css("visibility", "hidden"); + + // Basically, all code below does is clones existing image, puts in on top of the current one and animated it + + image = mfp._getItemToZoom(); + + if (!image) { + showMainContent(); + return; + } -$.magnificPopup.registerModule('zoom', { + animatedImg = getElToAnimate(image); - options: { - enabled: false, - easing: 'ease-in-out', - duration: 300, - opener: function(element) { - return element.is('img') ? element : element.find('img'); - } - }, + animatedImg.css(mfp._getOffset()); - proto: { + mfp.wrap.append(animatedImg); - initZoom: function() { - var zoomSt = mfp.st.zoom, - ns = '.zoom', - image; + openTimeout = setTimeout(function() { + animatedImg.css(mfp._getOffset(true)); + openTimeout = setTimeout(function() { + showMainContent(); - if(!zoomSt.enabled || !mfp.supportsTransition) { - return; - } - - var duration = zoomSt.duration, - getElToAnimate = function(image) { - var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'), - transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing, - cssObj = { - position: 'fixed', - zIndex: 9999, - left: 0, - top: 0, - '-webkit-backface-visibility': 'hidden' - }, - t = 'transition'; - - cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition; - - newImg.css(cssObj); - return newImg; - }, - showMainContent = function() { - mfp.content.css('visibility', 'visible'); - }, - openTimeout, - animatedImg; - - _mfpOn('BuildControls'+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - mfp.content.css('visibility', 'hidden'); - - // Basically, all code below does is clones existing image, puts in on top of the current one and animated it - - image = mfp._getItemToZoom(); - - if(!image) { - showMainContent(); - return; - } - - animatedImg = getElToAnimate(image); - - animatedImg.css( mfp._getOffset() ); - - mfp.wrap.append(animatedImg); - - openTimeout = setTimeout(function() { - animatedImg.css( mfp._getOffset( true ) ); - openTimeout = setTimeout(function() { - - showMainContent(); - - setTimeout(function() { - animatedImg.remove(); - image = animatedImg = null; - _mfpTrigger('ZoomAnimationEnded'); - }, 16); // avoid blink when switching images - - }, duration); // this timeout equals animation duration - - }, 16); // by adding this timeout we avoid short glitch at the beginning of animation - - - // Lots of timeouts... - } - }); - _mfpOn(BEFORE_CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - - mfp.st.removalDelay = duration; - - if(!image) { - image = mfp._getItemToZoom(); - if(!image) { - return; - } - animatedImg = getElToAnimate(image); - } - - animatedImg.css( mfp._getOffset(true) ); - mfp.wrap.append(animatedImg); - mfp.content.css('visibility', 'hidden'); - - setTimeout(function() { - animatedImg.css( mfp._getOffset() ); - }, 16); - } + setTimeout(function() { + animatedImg.remove(); + image = animatedImg = null; + _mfpTrigger("ZoomAnimationEnded"); + }, 16); // avoid blink when switching images + }, duration); // this timeout equals animation duration + }, 16); // by adding this timeout we avoid short glitch at the beginning of animation - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - showMainContent(); - if(animatedImg) { - animatedImg.remove(); - } - image = null; - } - }); - }, - - _allowZoom: function() { - return mfp.currItem.type === 'image'; - }, + // Lots of timeouts... + } + }); + _mfpOn(BEFORE_CLOSE_EVENT + ns, function() { + if (mfp._allowZoom()) { + clearTimeout(openTimeout); - _getItemToZoom: function() { - if(mfp.currItem.hasSize) { - return mfp.currItem.img; - } else { - return false; - } - }, + mfp.st.removalDelay = duration; - // Get element postion relative to viewport - _getOffset: function(isLarge) { - var el; - if(isLarge) { - el = mfp.currItem.img; - } else { - el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); - } + if (!image) { + image = mfp._getItemToZoom(); + if (!image) { + return; + } + animatedImg = getElToAnimate(image); + } - var offset = el.offset(); - var paddingTop = parseInt(el.css('padding-top'),10); - var paddingBottom = parseInt(el.css('padding-bottom'),10); - offset.top -= ( $(window).scrollTop() - paddingTop ); + animatedImg.css(mfp._getOffset(true)); + mfp.wrap.append(animatedImg); + mfp.content.css("visibility", "hidden"); + + setTimeout(function() { + animatedImg.css(mfp._getOffset()); + }, 16); + } + }); + + _mfpOn(CLOSE_EVENT + ns, function() { + if (mfp._allowZoom()) { + showMainContent(); + if (animatedImg) { + animatedImg.remove(); + } + image = null; + } + }); + }, + + _allowZoom: function() { + return mfp.currItem.type === "image"; + }, + + _getItemToZoom: function() { + if (mfp.currItem.hasSize) { + return mfp.currItem.img; + } else { + return false; + } + }, + + // Get element postion relative to viewport + _getOffset: function(isLarge) { + var el; + if (isLarge) { + el = mfp.currItem.img; + } else { + el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); + } + var offset = el.offset(); + var paddingTop = parseInt(el.css("padding-top"), 10); + var paddingBottom = parseInt(el.css("padding-bottom"), 10); + offset.top -= $(window).scrollTop() - paddingTop; - /* + /* Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. */ - var obj = { - width: el.width(), - // fix Zepto height+padding issue - height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop - }; - - // I hate to do this, but there is no another option - if( getHasMozTransform() ) { - obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)'; - } else { - obj.left = offset.left; - obj.top = offset.top; - } - return obj; - } - - } -}); - - + var obj = { + width: el.width(), + // fix Zepto height+padding issue + height: + (_isJQ ? el.innerHeight() : el[0].offsetHeight) - + paddingBottom - + paddingTop + }; + + // I hate to do this, but there is no another option + if (getHasMozTransform()) { + obj["-moz-transform"] = obj["transform"] = + "translate(" + offset.left + "px," + offset.top + "px)"; + } else { + obj.left = offset.left; + obj.top = offset.top; + } + return obj; + } + } + }); + + /*>>zoom*/ + + /*>>iframe*/ + + var IFRAME_NS = "iframe", + _emptyPage = "//about:blank", + _fixIframeBugs = function(isShowing) { + if (mfp.currTemplate[IFRAME_NS]) { + var el = mfp.currTemplate[IFRAME_NS].find("iframe"); + if (el.length) { + // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug + if (!isShowing) { + el[0].src = _emptyPage; + } + + // IE8 black screen bug fix + if (mfp.isIE8) { + el.css("display", isShowing ? "block" : "none"); + } + } + } + }; + + $.magnificPopup.registerModule(IFRAME_NS, { + options: { + markup: + '<div class="mfp-iframe-scaler">' + + '<div class="mfp-close"></div>' + + '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>' + + "</div>", + + srcAction: "iframe_src", + + // we don't care and support only one default type of URL by default + patterns: { + youtube: { + index: "youtube.com", + id: "v=", + src: "//www.youtube.com/embed/%id%?autoplay=1" + }, + vimeo: { + index: "vimeo.com/", + id: "/", + src: "//player.vimeo.com/video/%id%?autoplay=1" + }, + gmaps: { + index: "//maps.google.", + src: "%id%&output=embed" + } + } + }, + + proto: { + initIframe: function() { + mfp.types.push(IFRAME_NS); + + _mfpOn("BeforeChange", function(e, prevType, newType) { + if (prevType !== newType) { + if (prevType === IFRAME_NS) { + _fixIframeBugs(); // iframe if removed + } else if (newType === IFRAME_NS) { + _fixIframeBugs(true); // iframe is showing + } + } // else { + // iframe source is switched, don't do anything + //} + }); + + _mfpOn(CLOSE_EVENT + "." + IFRAME_NS, function() { + _fixIframeBugs(); + }); + }, + + getIframe: function(item, template) { + var embedSrc = item.src; + var iframeSt = mfp.st.iframe; + + $.each(iframeSt.patterns, function() { + if (embedSrc.indexOf(this.index) > -1) { + if (this.id) { + if (typeof this.id === "string") { + embedSrc = embedSrc.substr( + embedSrc.lastIndexOf(this.id) + this.id.length, + embedSrc.length + ); + } else { + embedSrc = this.id.call(this, embedSrc); + } + } + embedSrc = this.src.replace("%id%", embedSrc); + return false; // break; + } + }); + + var dataObj = {}; + if (iframeSt.srcAction) { + dataObj[iframeSt.srcAction] = embedSrc; + } + mfp._parseMarkup(template, dataObj, item); + + mfp.updateStatus("ready"); + + return template; + } + } + }); + + /*>>iframe*/ + + /*>>gallery*/ + /** + * Get looped index depending on number of slides + */ + var _getLoopedId = function(index) { + var numSlides = mfp.items.length; + if (index > numSlides - 1) { + return index - numSlides; + } else if (index < 0) { + return numSlides + index; + } + return index; + }, + _replaceCurrTotal = function(text, curr, total) { + return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); + }; + + $.magnificPopup.registerModule("gallery", { + options: { + enabled: false, + arrowMarkup: + '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', + preload: [0, 2], + navigateByImgClick: true, + arrows: true, + + tPrev: "Previous (Left arrow key)", + tNext: "Next (Right arrow key)", + tCounter: "%curr% of %total%" + }, + + proto: { + initGallery: function() { + var gSt = mfp.st.gallery, + ns = ".mfp-gallery"; + + mfp.direction = true; // true - next, false - prev + + if (!gSt || !gSt.enabled) return false; + + _wrapClasses += " mfp-gallery"; + + _mfpOn(OPEN_EVENT + ns, function() { + if (gSt.navigateByImgClick) { + mfp.wrap.on("click" + ns, ".mfp-img", function() { + if (mfp.items.length > 1) { + mfp.next(); + return false; + } + }); + } + + _document.on("keydown" + ns, function(e) { + if (e.keyCode === 37) { + mfp.prev(); + } else if (e.keyCode === 39) { + mfp.next(); + } + }); + }); + + _mfpOn("UpdateStatus" + ns, function(e, data) { + if (data.text) { + data.text = _replaceCurrTotal( + data.text, + mfp.currItem.index, + mfp.items.length + ); + } + }); + + _mfpOn(MARKUP_PARSE_EVENT + ns, function(e, element, values, item) { + var l = mfp.items.length; + values.counter = + l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ""; + }); + + _mfpOn("BuildControls" + ns, function() { + if (mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { + var markup = gSt.arrowMarkup, + arrowLeft = (mfp.arrowLeft = $( + markup + .replace(/%title%/gi, gSt.tPrev) + .replace(/%dir%/gi, "left") + ).addClass(PREVENT_CLOSE_CLASS)), + arrowRight = (mfp.arrowRight = $( + markup + .replace(/%title%/gi, gSt.tNext) + .replace(/%dir%/gi, "right") + ).addClass(PREVENT_CLOSE_CLASS)); + + arrowLeft.click(function() { + mfp.prev(); + }); + arrowRight.click(function() { + mfp.next(); + }); + + mfp.container.append(arrowLeft.add(arrowRight)); + } + }); + + _mfpOn(CHANGE_EVENT + ns, function() { + if (mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); + + mfp._preloadTimeout = setTimeout(function() { + mfp.preloadNearbyImages(); + mfp._preloadTimeout = null; + }, 16); + }); + + _mfpOn(CLOSE_EVENT + ns, function() { + _document.off(ns); + mfp.wrap.off("click" + ns); + mfp.arrowRight = mfp.arrowLeft = null; + }); + }, + next: function() { + mfp.direction = true; + mfp.index = _getLoopedId(mfp.index + 1); + mfp.updateItemHTML(); + }, + prev: function() { + mfp.direction = false; + mfp.index = _getLoopedId(mfp.index - 1); + mfp.updateItemHTML(); + }, + goTo: function(newIndex) { + mfp.direction = newIndex >= mfp.index; + mfp.index = newIndex; + mfp.updateItemHTML(); + }, + preloadNearbyImages: function() { + var p = mfp.st.gallery.preload, + preloadBefore = Math.min(p[0], mfp.items.length), + preloadAfter = Math.min(p[1], mfp.items.length), + i; + + for (i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { + mfp._preloadItem(mfp.index + i); + } + for (i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { + mfp._preloadItem(mfp.index - i); + } + }, + _preloadItem: function(index) { + index = _getLoopedId(index); -/*>>zoom*/ - -/*>>iframe*/ - -var IFRAME_NS = 'iframe', - _emptyPage = '//about:blank', - - _fixIframeBugs = function(isShowing) { - if(mfp.currTemplate[IFRAME_NS]) { - var el = mfp.currTemplate[IFRAME_NS].find('iframe'); - if(el.length) { - // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug - if(!isShowing) { - el[0].src = _emptyPage; - } - - // IE8 black screen bug fix - if(mfp.isIE8) { - el.css('display', isShowing ? 'block' : 'none'); - } - } - } - }; - -$.magnificPopup.registerModule(IFRAME_NS, { - - options: { - markup: '<div class="mfp-iframe-scaler">'+ - '<div class="mfp-close"></div>'+ - '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+ - '</div>', - - srcAction: 'iframe_src', - - // we don't care and support only one default type of URL by default - patterns: { - youtube: { - index: 'youtube.com', - id: 'v=', - src: '//www.youtube.com/embed/%id%?autoplay=1' - }, - vimeo: { - index: 'vimeo.com/', - id: '/', - src: '//player.vimeo.com/video/%id%?autoplay=1' - }, - gmaps: { - index: '//maps.google.', - src: '%id%&output=embed' - } - } - }, - - proto: { - initIframe: function() { - mfp.types.push(IFRAME_NS); - - _mfpOn('BeforeChange', function(e, prevType, newType) { - if(prevType !== newType) { - if(prevType === IFRAME_NS) { - _fixIframeBugs(); // iframe if removed - } else if(newType === IFRAME_NS) { - _fixIframeBugs(true); // iframe is showing - } - }// else { - // iframe source is switched, don't do anything - //} - }); - - _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() { - _fixIframeBugs(); - }); - }, - - getIframe: function(item, template) { - var embedSrc = item.src; - var iframeSt = mfp.st.iframe; - - $.each(iframeSt.patterns, function() { - if(embedSrc.indexOf( this.index ) > -1) { - if(this.id) { - if(typeof this.id === 'string') { - embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length); - } else { - embedSrc = this.id.call( this, embedSrc ); - } - } - embedSrc = this.src.replace('%id%', embedSrc ); - return false; // break; - } - }); - - var dataObj = {}; - if(iframeSt.srcAction) { - dataObj[iframeSt.srcAction] = embedSrc; - } - mfp._parseMarkup(template, dataObj, item); - - mfp.updateStatus('ready'); - - return template; - } - } -}); + if (mfp.items[index].preloaded) { + return; + } + var item = mfp.items[index]; + if (!item.parsed) { + item = mfp.parseEl(index); + } + _mfpTrigger("LazyLoad", item); + + if (item.type === "image") { + item.img = $('<img class="mfp-img" />') + .on("load.mfploader", function() { + item.hasSize = true; + }) + .on("error.mfploader", function() { + item.hasSize = true; + item.loadError = true; + _mfpTrigger("LazyLoadError", item); + }) + .attr("src", item.src); + } -/*>>iframe*/ - -/*>>gallery*/ -/** - * Get looped index depending on number of slides - */ -var _getLoopedId = function(index) { - var numSlides = mfp.items.length; - if(index > numSlides - 1) { - return index - numSlides; - } else if(index < 0) { - return numSlides + index; - } - return index; - }, - _replaceCurrTotal = function(text, curr, total) { - return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); - }; - -$.magnificPopup.registerModule('gallery', { - - options: { - enabled: false, - arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', - preload: [0,2], - navigateByImgClick: true, - arrows: true, - - tPrev: 'Previous (Left arrow key)', - tNext: 'Next (Right arrow key)', - tCounter: '%curr% of %total%' - }, - - proto: { - initGallery: function() { - - var gSt = mfp.st.gallery, - ns = '.mfp-gallery'; - - mfp.direction = true; // true - next, false - prev - - if(!gSt || !gSt.enabled ) return false; - - _wrapClasses += ' mfp-gallery'; - - _mfpOn(OPEN_EVENT+ns, function() { - - if(gSt.navigateByImgClick) { - mfp.wrap.on('click'+ns, '.mfp-img', function() { - if(mfp.items.length > 1) { - mfp.next(); - return false; - } - }); - } - - _document.on('keydown'+ns, function(e) { - if (e.keyCode === 37) { - mfp.prev(); - } else if (e.keyCode === 39) { - mfp.next(); - } - }); - }); - - _mfpOn('UpdateStatus'+ns, function(e, data) { - if(data.text) { - data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); - } - }); - - _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) { - var l = mfp.items.length; - values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ''; - }); - - _mfpOn('BuildControls' + ns, function() { - if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { - var markup = gSt.arrowMarkup, - arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), - arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS); - - arrowLeft.click(function() { - mfp.prev(); - }); - arrowRight.click(function() { - mfp.next(); - }); - - mfp.container.append(arrowLeft.add(arrowRight)); - } - }); - - _mfpOn(CHANGE_EVENT+ns, function() { - if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); - - mfp._preloadTimeout = setTimeout(function() { - mfp.preloadNearbyImages(); - mfp._preloadTimeout = null; - }, 16); - }); - - - _mfpOn(CLOSE_EVENT+ns, function() { - _document.off(ns); - mfp.wrap.off('click'+ns); - mfp.arrowRight = mfp.arrowLeft = null; - }); - - }, - next: function() { - mfp.direction = true; - mfp.index = _getLoopedId(mfp.index + 1); - mfp.updateItemHTML(); - }, - prev: function() { - mfp.direction = false; - mfp.index = _getLoopedId(mfp.index - 1); - mfp.updateItemHTML(); - }, - goTo: function(newIndex) { - mfp.direction = (newIndex >= mfp.index); - mfp.index = newIndex; - mfp.updateItemHTML(); - }, - preloadNearbyImages: function() { - var p = mfp.st.gallery.preload, - preloadBefore = Math.min(p[0], mfp.items.length), - preloadAfter = Math.min(p[1], mfp.items.length), - i; - - for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { - mfp._preloadItem(mfp.index+i); - } - for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { - mfp._preloadItem(mfp.index-i); - } - }, - _preloadItem: function(index) { - index = _getLoopedId(index); - - if(mfp.items[index].preloaded) { - return; - } - - var item = mfp.items[index]; - if(!item.parsed) { - item = mfp.parseEl( index ); - } - - _mfpTrigger('LazyLoad', item); - - if(item.type === 'image') { - item.img = $('<img class="mfp-img" />').on('load.mfploader', function() { - item.hasSize = true; - }).on('error.mfploader', function() { - item.hasSize = true; - item.loadError = true; - _mfpTrigger('LazyLoadError', item); - }).attr('src', item.src); - } - - - item.preloaded = true; - } - } -}); + item.preloaded = true; + } + } + }); + + /*>>gallery*/ + + /*>>retina*/ + + var RETINA_NS = "retina"; + + $.magnificPopup.registerModule(RETINA_NS, { + options: { + replaceSrc: function(item) { + return item.src.replace(/\.\w+$/, function(m) { + return "@2x" + m; + }); + }, + ratio: 1 // Function or number. Set to 1 to disable. + }, + proto: { + initRetina: function() { + if (window.devicePixelRatio > 1) { + var st = mfp.st.retina, + ratio = st.ratio; + + ratio = !isNaN(ratio) ? ratio : ratio(); + + if (ratio > 1) { + _mfpOn("ImageHasSize" + "." + RETINA_NS, function(e, item) { + item.img.css({ + "max-width": item.img[0].naturalWidth / ratio, + width: "100%" + }); + }); + _mfpOn("ElementParse" + "." + RETINA_NS, function(e, item) { + item.src = st.replaceSrc(item, ratio); + }); + } + } + } + } + }); -/*>>gallery*/ - -/*>>retina*/ - -var RETINA_NS = 'retina'; - -$.magnificPopup.registerModule(RETINA_NS, { - options: { - replaceSrc: function(item) { - return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; }); - }, - ratio: 1 // Function or number. Set to 1 to disable. - }, - proto: { - initRetina: function() { - if(window.devicePixelRatio > 1) { - - var st = mfp.st.retina, - ratio = st.ratio; - - ratio = !isNaN(ratio) ? ratio : ratio(); - - if(ratio > 1) { - _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) { - item.img.css({ - 'max-width': item.img[0].naturalWidth / ratio, - 'width': '100%' - }); - }); - _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) { - item.src = st.replaceSrc(item, ratio); - }); - } - } - - } - } + /*>>retina*/ + _checkInstance(); }); - -/*>>retina*/ - _checkInstance(); })); diff --git a/static/tipuesearch/tipuesearch.css b/static/tipuesearch/tipuesearch.css index fe7a4aae..67964c6b 100644 --- a/static/tipuesearch/tipuesearch.css +++ b/static/tipuesearch/tipuesearch.css @@ -1,5 +1,4 @@ -@import url('https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro'); - +@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro"); /* Tipue Search 7.1 @@ -8,265 +7,234 @@ Tipue Search is released under the MIT License http://www.tipue.com/search */ - /* search box */ - #tipue_search_input:-webkit-autofill, #tipue_search_input:-webkit-autofill:hover, -#tipue_search_input:-webkit-autofill:focus -{ - -webkit-box-shadow: 0 0 0px 1000px #f3f3f3 inset; -} -.tipue_search_button -{ - position: relative; - float: left; - width: 49px; - height: 56px; - margin-left: -3px; - background-color: #f3f3f3; - border: none; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - box-sizing: border-box; - cursor: pointer; - outline: 0; -} -.tipue_search_icon -{ - float: left; - font: 24px/1 'Open Sans', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #333; - transform: rotate(-45deg); - -moz-appearance: none; - -webkit-appearance: none; - box-sizing: border-box; - box-shadow: none; - outline: 0; - margin: -1px 0 0 16px; -} -.tipue_search_group:after -{ - content: ""; - display: table; - clear: both; +#tipue_search_input:-webkit-autofill:focus { + -webkit-box-shadow: 0 0 0px 1000px #f3f3f3 inset; +} +.tipue_search_button { + position: relative; + float: left; + width: 49px; + height: 56px; + margin-left: -3px; + background-color: #f3f3f3; + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + box-sizing: border-box; + cursor: pointer; + outline: 0; +} +.tipue_search_icon { + float: left; + font: 24px/1 "Open Sans", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #333; + transform: rotate(-45deg); + -moz-appearance: none; + -webkit-appearance: none; + box-sizing: border-box; + box-shadow: none; + outline: 0; + margin: -1px 0 0 16px; +} +.tipue_search_group:after { + content: ""; + display: table; + clear: both; } - /* search results */ - -#tipue_search_content -{ - max-width: 100%; - margin: 0; -} -.tipue_search_content_title -{ - font: 300 31.5px/40px Baskerville,Garamond,Georgia,'DejaVu Serif','Times New Roman',Times,Serif; - color: #111; -} -.tipue_search_content_title a -{ - color: #111; - text-decoration: none; -} -.tipue_search_content_title a:hover -{ - border-bottom: 1px solid #333; -} -.tipue_search_result -{ - padding-top: 27px; -} -#tipue_search_results_count, .tipue_search_content_debug -{ - font: 13px/1.5 'Source Code Pro', monospace; - text-transform: uppercase; - color: #999; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -#tipue_search_results_count -{ - padding-top: 9px; -} -.tipue_search_content_url, .tipue_search_note, .tipue_search_related, #tipue_search_error, #tipue_search_replace -{ - font: 300 16px/1.4 Merriweather, serif; - color: #666; - padding-top: 7px; - word-wrap: break-word; - hyphens: auto; -} -.tipue_search_content_url a, .tipue_search_note a, .tipue_search_related a, #tipue_search_replace a, #tipue_search_replace a:hover -{ - text-decoration: none; -} -.tipue_search_content_url a:hover, .tipue_search_note a:hover, .tipue_search_related a:hover -{ - color: #666; -} -#tipue_search_replace, .tipue_search_related -{ - margin-top: 7px; -} -#tipue_search_error -{ - color: #333; - margin-top: 17px; -} -.tipue_search_content_text -{ - font: 1.2em/1.6em 'PT Serif',Georgia,'Times New Roman',Times,Serif; - color: #333; - word-wrap: break-word; - hyphens: auto; - margin-top: 9px; -} -.tipue_search_content_bold -{ - font-weight: 400; - font-family: 'Open Sans', sans-serif; - color: #333; -} -.tipue_search_content_debug -{ - margin: 7px 0 2px 0; +#tipue_search_content { + max-width: 100%; + margin: 0; +} +.tipue_search_content_title { + font: 300 31.5px/40px Baskerville, Garamond, Georgia, "DejaVu Serif", + "Times New Roman", Times, Serif; + color: #111; +} +.tipue_search_content_title a { + color: #111; + text-decoration: none; +} +.tipue_search_content_title a:hover { + border-bottom: 1px solid #333; +} +.tipue_search_result { + padding-top: 27px; +} +#tipue_search_results_count, +.tipue_search_content_debug { + font: 13px/1.5 "Source Code Pro", monospace; + text-transform: uppercase; + color: #999; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +#tipue_search_results_count { + padding-top: 9px; +} +.tipue_search_content_url, +.tipue_search_note, +.tipue_search_related, +#tipue_search_error, +#tipue_search_replace { + font: 300 16px/1.4 Merriweather, serif; + color: #666; + padding-top: 7px; + word-wrap: break-word; + hyphens: auto; +} +.tipue_search_content_url a, +.tipue_search_note a, +.tipue_search_related a, +#tipue_search_replace a, +#tipue_search_replace a:hover { + text-decoration: none; +} +.tipue_search_content_url a:hover, +.tipue_search_note a:hover, +.tipue_search_related a:hover { + color: #666; +} +#tipue_search_replace, +.tipue_search_related { + margin-top: 7px; +} +#tipue_search_error { + color: #333; + margin-top: 17px; +} +.tipue_search_content_text { + font: 1.2em/1.6em "PT Serif", Georgia, "Times New Roman", Times, Serif; + color: #333; + word-wrap: break-word; + hyphens: auto; + margin-top: 9px; +} +.tipue_search_content_bold { + font-weight: 400; + font-family: "Open Sans", sans-serif; + color: #333; +} +.tipue_search_content_debug { + margin: 7px 0 2px 0; } - /* images */ - -.tipue_search_image -{ - padding: 17px 0 6px 0; -} -.tipue_search_img -{ - width: 100%; - max-width: 330px; - height: auto; - transition: 0.5s; - border-radius: 2px; -} -.tipue_search_img:hover -{ - opacity: 0.9; -} -#tipue_search_zoom_text -{ - font: 12px/1.7 'Source Code Pro', monospace; - color: #ccc; - text-transform: uppercase; - letter-spacing: 1px; - padding-top: 9px; -} -#tipue_search_zoom_text a -{ - color: #ccc; - text-decoration: none; - border-bottom: 2px solid #f7f7f7; -} -#tipue_search_zoom_text a:hover -{ - border: 0; -} -.tipue_search_image_zoom -{ - cursor: pointer; -} -#tipue_search_image_modal -{ - display: none; - position: fixed; - z-index: 1000; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - background-color: rgba(0, 0, 0, 0.9); -} -.tipue_search_image_close -{ - position: absolute; - top: 0; - right: 0; - font: 22px/1 'Source Code Pro', monospace; - color: #ccc; - padding: 25px 30px; - cursor: pointer; -} -.tipue_search_image_block -{ - margin: 0 auto; - max-width: 900px; - padding: 73px 30px 30px 30px; - box-sizing: border-box; - color: #fff; -} -#tipue_search_zoom_img -{ - max-width: 100%; - height: auto; -} - -#tipue_search_zoom_text, .tipue_search_zoom_options -{ - padding-top: 9px; +.tipue_search_image { + padding: 17px 0 6px 0; +} +.tipue_search_img { + width: 100%; + max-width: 330px; + height: auto; + transition: 0.5s; + border-radius: 2px; +} +.tipue_search_img:hover { + opacity: 0.9; +} +#tipue_search_zoom_text { + font: 12px/1.7 "Source Code Pro", monospace; + color: #ccc; + text-transform: uppercase; + letter-spacing: 1px; + padding-top: 9px; +} +#tipue_search_zoom_text a { + color: #ccc; + text-decoration: none; + border-bottom: 2px solid #f7f7f7; +} +#tipue_search_zoom_text a:hover { + border: 0; +} +.tipue_search_image_zoom { + cursor: pointer; +} +#tipue_search_image_modal { + display: none; + position: fixed; + z-index: 1000; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgba(0, 0, 0, 0.9); +} +.tipue_search_image_close { + position: absolute; + top: 0; + right: 0; + font: 22px/1 "Source Code Pro", monospace; + color: #ccc; + padding: 25px 30px; + cursor: pointer; +} +.tipue_search_image_block { + margin: 0 auto; + max-width: 900px; + padding: 73px 30px 30px 30px; + box-sizing: border-box; + color: #fff; +} +#tipue_search_zoom_img { + max-width: 100%; + height: auto; +} + +#tipue_search_zoom_text, +.tipue_search_zoom_options { + padding-top: 9px; } - /* footer */ - -#tipue_search_foot -{ - margin: 51px 0 21px 0; -} -#tipue_search_foot_boxes -{ - font: 14px 'Source Code Pro', sans-serif; - text-transform: uppercase; - color: #333; - padding: 0; - margin: 0; - cursor: pointer; -} -#tipue_search_foot_boxes li -{ - display: inline; - list-style: none; - margin: 0; - padding: 0; -} -#tipue_search_foot_boxes li a -{ - background-color: #f7f7f7; - color: #666; - padding: 10px 17px 11px 17px; - border-radius: 3px; - margin-right: 7px; - text-decoration: none; - text-align: center; - transition: 0.3s; -} -#tipue_search_foot_boxes li.current -{ - background: #252525; - color: #ccc; - padding: 10px 17px 11px 17px; - border-radius: 3px; - margin-right: 7px; - text-align: center; -} -#tipue_search_foot_boxes li a:hover -{ - background: #252525; - color: #ccc; +#tipue_search_foot { + margin: 51px 0 21px 0; +} +#tipue_search_foot_boxes { + font: 14px "Source Code Pro", sans-serif; + text-transform: uppercase; + color: #333; + padding: 0; + margin: 0; + cursor: pointer; +} +#tipue_search_foot_boxes li { + display: inline; + list-style: none; + margin: 0; + padding: 0; +} +#tipue_search_foot_boxes li a { + background-color: #f7f7f7; + color: #666; + padding: 10px 17px 11px 17px; + border-radius: 3px; + margin-right: 7px; + text-decoration: none; + text-align: center; + transition: 0.3s; +} +#tipue_search_foot_boxes li.current { + background: #252525; + color: #ccc; + padding: 10px 17px 11px 17px; + border-radius: 3px; + margin-right: 7px; + text-align: center; +} +#tipue_search_foot_boxes li a:hover { + background: #252525; + color: #ccc; } diff --git a/static/tipuesearch/tipuesearch.js b/static/tipuesearch/tipuesearch.js index 156e51a8..953b1c16 100644 --- a/static/tipuesearch/tipuesearch.js +++ b/static/tipuesearch/tipuesearch.js @@ -1,4 +1,3 @@ - /* Tipue Search 7.1 Copyright (c) 2019 Tipue @@ -6,606 +5,621 @@ Tipue Search is released under the MIT License http://www.tipue.com/search */ - (function($) { - - $.fn.tipuesearch = function(options) { - - var set = $.extend( { - - 'contextBuffer' : 60, - 'contextLength' : 60, - 'contextStart' : 90, - 'debug' : false, - 'descriptiveWords' : 25, - 'footerPages' : 3, - 'highlightTerms' : true, - 'imageZoom' : true, - 'minimumLength' : 3, - 'newWindow' : false, - 'show' : 10, - 'showContext' : true, - 'showRelated' : true, - 'showTime' : true, - 'showTitleCount' : true, - 'showURL' : true, - 'wholeWords' : true - }, options); - - return this.each(function() { - - var tipuesearch_t_c = 0; - - var tipue_search_w = ''; - if (set.newWindow) - { - tipue_search_w = ' target="_blank"'; - } - - function getURLP(name) - { - var locSearch = location.search; - var splitted = (new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(locSearch)||[,""]); - var searchString = splitted[1].replace(/\+/g, '%20'); - try - { - searchString = decodeURIComponent(searchString); - } - catch(e) - { - searchString = unescape(searchString); - } - return searchString || null; - } - - if (getURLP('q')) - { - $('#tipue_search_input').val(getURLP('q')); - getTipueSearch(0, true); - } - - $(this).keyup(function(event) - { - if(event.keyCode == '13') - { - getTipueSearch(0, true); - } - }); - - - function getTipueSearch(start, replace) - { - window.scrollTo(0, 0); - - var out = ''; - var show_replace = false; - var show_stop = false; - var standard = true; - var c = 0; - var found = []; - - var d_o = $('#tipue_search_input').val(); - d_o = d_o.replace(/\+/g, ' ').replace(/\s\s+/g, ' '); - - d_o = $.trim(d_o); - var d = d_o.toLowerCase(); - - if ((d.match("^\"") && d.match("\"$")) || (d.match("^'") && d.match("'$"))) - { - standard = false; + $.fn.tipuesearch = function(options) { + var set = $.extend( + { + contextBuffer: 60, + contextLength: 60, + contextStart: 90, + debug: false, + descriptiveWords: 25, + footerPages: 3, + highlightTerms: true, + imageZoom: true, + minimumLength: 3, + newWindow: false, + show: 10, + showContext: true, + showRelated: true, + showTime: true, + showTitleCount: true, + showURL: true, + wholeWords: true + }, + options + ); + + return this.each(function() { + var tipuesearch_t_c = 0; + + var tipue_search_w = ""; + if (set.newWindow) { + tipue_search_w = ' target="_blank"'; + } + + function getURLP(name) { + var locSearch = location.search; + var splitted = new RegExp( + "[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)" + ).exec(locSearch) || [, ""]; + var searchString = splitted[1].replace(/\+/g, "%20"); + try { + searchString = decodeURIComponent(searchString); + } catch (e) { + searchString = unescape(searchString); + } + return searchString || null; + } + + if (getURLP("q")) { + $("#tipue_search_input").val(getURLP("q")); + getTipueSearch(0, true); + } + + $(this).keyup(function(event) { + if (event.keyCode == "13") { + getTipueSearch(0, true); + } + }); + + function getTipueSearch(start, replace) { + window.scrollTo(0, 0); + + var out = ""; + var show_replace = false; + var show_stop = false; + var standard = true; + var c = 0; + var found = []; + + var d_o = $("#tipue_search_input").val(); + d_o = d_o.replace(/\+/g, " ").replace(/\s\s+/g, " "); + + d_o = $.trim(d_o); + var d = d_o.toLowerCase(); + + if ( + (d.match('^"') && d.match('"$')) || + (d.match("^'") && d.match("'$")) + ) { + standard = false; + } + + var d_w = d.split(" "); + + if (standard) { + d = ""; + for (var i = 0; i < d_w.length; i++) { + var a_w = true; + for (var f = 0; f < tipuesearch_stop_words.length; f++) { + if (d_w[i] == tipuesearch_stop_words[f]) { + a_w = false; + show_stop = true; + } + } + if (a_w) { + d = d + " " + d_w[i]; + } + } + d = $.trim(d); + d_w = d.split(" "); + } else { + d = d.substring(1, d.length - 1); + } + + if (d.length >= set.minimumLength) { + if (standard) { + if (replace) { + var d_r = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_replace.words.length; f++) { + if (d_w[i] == tipuesearch_replace.words[f].word) { + d = d.replace( + d_w[i], + tipuesearch_replace.words[f].replace_with + ); + show_replace = true; + } + } + } + d_w = d.split(" "); + } + + var d_t = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_stem.words.length; f++) { + if (d_w[i] == tipuesearch_stem.words[f].word) { + d_t = d_t + " " + tipuesearch_stem.words[f].stem; + } + } + } + d_w = d_t.split(" "); + + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + for (var f = 0; f < d_w.length; f++) { + if (set.wholeWords) { + var pat = new RegExp("\\b" + d_w[f] + "\\b", "gi"); + } else { + var pat = new RegExp(d_w[f], "gi"); + } + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == + tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; } - - var d_w = d.split(' '); - - if (standard) - { - d = ''; - for (var i = 0; i < d_w.length; i++) - { - var a_w = true; - for (var f = 0; f < tipuesearch_stop_words.length; f++) - { - if (d_w[i] == tipuesearch_stop_words[f]) - { - a_w = false; - show_stop = true; - } - } - if (a_w) - { - d = d + ' ' + d_w[i]; - } - } - d = $.trim(d); - d_w = d.split(' '); + } + } + + if (d_w[f].match("^-")) { + pat = new RegExp(d_w[f].substring(1), "i"); + if ( + tipuesearch.pages[i].title.search(pat) != -1 || + tipuesearch.pages[i].text.search(pat) != -1 || + tipuesearch.pages[i].tags.search(pat) != -1 + ) { + score = 0; + } + } + } + + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } else { + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + var pat = new RegExp(d, "gi"); + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; + } + } + } + + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } + + if (c != 0) { + if (set.showTitleCount && tipuesearch_t_c == 0) { + var title = document.title; + document.title = "(" + c + ") " + title; + tipuesearch_t_c++; + } + + if (c == 1) { + out += + '<div id="tipue_search_results_count">' + tipuesearch_string_4; + } else { + var c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + out += + '<div id="tipue_search_results_count">' + + c_c + + " " + + tipuesearch_string_5; + } + if (set.showTime) { + var endTimer = new Date().getTime(); + var time = (endTimer - startTimer) / 1000; + out += " (" + time.toFixed(2) + " " + tipuesearch_string_14 + ")"; + set.showTime = false; + } + out += "</div>"; + + if (set.showRelated && standard) { + var ront = ""; + f = 0; + for (var i = 0; i < tipuesearch_related.Related.length; i++) { + if (d == tipuesearch_related.Related[i].search) { + if (!f) { + out += + '<div class="tipue_search_related">' + + tipuesearch_string_10 + + ": "; + } + if (show_replace) { + d_o = d; + } + + if (tipuesearch_related.Related[i].include) { + var r_d = + d_o + " " + tipuesearch_related.Related[i].related; + } else { + var r_d = tipuesearch_related.Related[i].related; + } + + ront += + '<a class="tipue_search_related_btn" id="' + + r_d + + '">' + + tipuesearch_related.Related[i].related + + "</a>, "; + f++; + } + } + if (f) { + ront = ront.slice(0, -2); + ront += ".</div>"; + out += ront; + } + } + + if (show_replace) { + out += + '<div id="tipue_search_replace">' + + tipuesearch_string_2 + + " " + + d + + ". " + + tipuesearch_string_3 + + ' <a id="tipue_search_replaced">' + + d_r + + "</a></div>"; + } + + found.sort(function(a, b) { + return b.score - a.score; + }); + + var l_o = 0; + + if (set.imageZoom) { + out += + '<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>'; + } + + for (var i = 0; i < found.length; i++) { + if (l_o >= start && l_o < set.show + start) { + out += '<div class="tipue_search_result">'; + + out += + '<div class="tipue_search_content_title"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + found[i].title + + "</a></div>"; + + if (set.debug) { + out += + '<div class="tipue_search_content_debug">Score: ' + + found[i].score + + "</div>"; + } + + if (set.showURL) { + var s_u = found[i].url.toLowerCase(); + if (s_u.indexOf("http://") == 0) { + s_u = s_u.slice(7); + } + out += + '<div class="tipue_search_content_url"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + s_u + + "</a></div>"; + } + + if (found[i].img) { + if (set.imageZoom) { + out += + '<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="' + + found[i].img + + '" alt="' + + found[i].title + + '" data-url="' + + found[i].url + + '"></div>'; + } else { + out += + '<div class="tipue_search_image"><a href="' + + found[i].url + + '"' + + tipue_search_w + + '><img class="tipue_search_img" src="' + + found[i].img + + '" alt="' + + found[i].title + + '"></a></div>'; + } + } + + if (found[i].desc) { + var t = found[i].desc; + + if (set.showContext) { + d_w = d.split(" "); + var s_1 = found[i].desc.toLowerCase().indexOf(d_w[0]); + if (s_1 > set.contextStart) { + var t_1 = t.substr(s_1 - set.contextBuffer); + var s_2 = t_1.indexOf(" "); + t_1 = t.substr(s_1 - set.contextBuffer + s_2); + t_1 = $.trim(t_1); + + if (t_1.length > set.contextLength) { + t = "... " + t_1; + } } - else - { - d = d.substring(1, d.length - 1); + } + + if (standard) { + d_w = d.split(" "); + for (var f = 0; f < d_w.length; f++) { + if (set.highlightTerms) { + var patr = new RegExp("(" + d_w[f] + ")", "gi"); + t = t.replace(patr, "<h0011>$1<h0012>"); + } } - - if (d.length >= set.minimumLength) - { - if (standard) - { - if (replace) - { - var d_r = d; - for (var i = 0; i < d_w.length; i++) - { - for (var f = 0; f < tipuesearch_replace.words.length; f++) - { - if (d_w[i] == tipuesearch_replace.words[f].word) - { - d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with); - show_replace = true; - } - } - } - d_w = d.split(' '); - } - - var d_t = d; - for (var i = 0; i < d_w.length; i++) - { - for (var f = 0; f < tipuesearch_stem.words.length; f++) - { - if (d_w[i] == tipuesearch_stem.words[f].word) - { - d_t = d_t + ' ' + tipuesearch_stem.words[f].stem; - } - } - } - d_w = d_t.split(' '); - - for (var i = 0; i < tipuesearch.pages.length; i++) - { - var score = 0; - var s_t = tipuesearch.pages[i].text; - for (var f = 0; f < d_w.length; f++) - { - if (set.wholeWords) - { - var pat = new RegExp('\\b' + d_w[f] + '\\b', 'gi'); - } - else - { - var pat = new RegExp(d_w[f], 'gi'); - } - if (tipuesearch.pages[i].title.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].title.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].text.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].text.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].tags) - { - if (tipuesearch.pages[i].tags.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].tags.match(pat).length; - score += (10 * m_c); - } - } - if (tipuesearch.pages[i].url.search(pat) != -1) - { - score += 20; - } - - if (score != 0) - { - for (var e = 0; e < tipuesearch_weight.weight.length; e++) - { - if (tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url) - { - score += tipuesearch_weight.weight[e].score; - } - } - } - - if (d_w[f].match('^-')) - { - pat = new RegExp(d_w[f].substring(1), 'i'); - if (tipuesearch.pages[i].title.search(pat) != -1 || tipuesearch.pages[i].text.search(pat) != -1 || tipuesearch.pages[i].tags.search(pat) != -1) - { - score = 0; - } - } - } - - if (score != 0) - { - found.push( - { - "score": score, - "title": tipuesearch.pages[i].title, - "desc": s_t, - "img": tipuesearch.pages[i].img, - "url": tipuesearch.pages[i].url, - "note": tipuesearch.pages[i].note - }); - c++; - } - } - } - else - { - for (var i = 0; i < tipuesearch.pages.length; i++) - { - var score = 0; - var s_t = tipuesearch.pages[i].text; - var pat = new RegExp(d, 'gi'); - if (tipuesearch.pages[i].title.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].title.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].text.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].text.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].tags) - { - if (tipuesearch.pages[i].tags.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].tags.match(pat).length; - score += (10 * m_c); - } - } - if (tipuesearch.pages[i].url.search(pat) != -1) - { - score += 20; - } - - if (score != 0) - { - for (var e = 0; e < tipuesearch_weight.weight.length; e++) - { - if (tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url) - { - score += tipuesearch_weight.weight[e].score; - } - } - } - - if (score != 0) - { - found.push( - { - "score": score, - "title": tipuesearch.pages[i].title, - "desc": s_t, - "img": tipuesearch.pages[i].img, - "url": tipuesearch.pages[i].url, - "note": tipuesearch.pages[i].note - }); - c++; - } - } - } - - if (c != 0) - { - if (set.showTitleCount && tipuesearch_t_c == 0) - { - var title = document.title; - document.title = '(' + c + ') ' + title; - tipuesearch_t_c++; - } - - if (c == 1) - { - out += '<div id="tipue_search_results_count">' + tipuesearch_string_4; - } - else - { - var c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - out += '<div id="tipue_search_results_count">' + c_c + ' ' + tipuesearch_string_5; - } - if (set.showTime) - { - var endTimer = new Date().getTime(); - var time = (endTimer - startTimer) / 1000; - out += ' (' + time.toFixed(2) + ' ' + tipuesearch_string_14 + ')'; - set.showTime = false; - } - out += '</div>'; - - if (set.showRelated && standard) - { - var ront = ''; - f = 0; - for (var i = 0; i < tipuesearch_related.Related.length; i++) - { - if (d == tipuesearch_related.Related[i].search) - { - if (!f) - { - out += '<div class="tipue_search_related">' + tipuesearch_string_10 + ': '; - } - if (show_replace) - { - d_o = d; - } - - if (tipuesearch_related.Related[i].include) - { - var r_d = d_o + ' ' + tipuesearch_related.Related[i].related; - } - else - { - var r_d = tipuesearch_related.Related[i].related; - } - - ront += '<a class="tipue_search_related_btn" id="' + r_d + '">' + tipuesearch_related.Related[i].related + '</a>, '; - f++; - } - } - if (f) - { - ront = ront.slice(0, -2); - ront += '.</div>'; - out += ront; - } - } - - if (show_replace) - { - out += '<div id="tipue_search_replace">' + tipuesearch_string_2 + ' ' + d + '. ' + tipuesearch_string_3 + ' <a id="tipue_search_replaced">' + d_r + '</a></div>'; - } - - found.sort(function(a, b) { return b.score - a.score } ); - - var l_o = 0; - - if (set.imageZoom) - { - out += '<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>'; - } - - for (var i = 0; i < found.length; i++) - { - if (l_o >= start && l_o < set.show + start) - { - out += '<div class="tipue_search_result">'; - - out += '<div class="tipue_search_content_title"><a href="' + found[i].url + '"' + tipue_search_w + '>' + found[i].title + '</a></div>'; - - if (set.debug) - { - out += '<div class="tipue_search_content_debug">Score: ' + found[i].score + '</div>'; - } - - if (set.showURL) - { - var s_u = found[i].url.toLowerCase(); - if (s_u.indexOf('http://') == 0) - { - s_u = s_u.slice(7); - } - out += '<div class="tipue_search_content_url"><a href="' + found[i].url + '"' + tipue_search_w + '>' + s_u + '</a></div>'; - } - - if (found[i].img) - { - if (set.imageZoom) - { - out += '<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="' + found[i].img + '" alt="' + found[i].title + '" data-url="' + found[i].url + '"></div>'; - } - else - { - out += '<div class="tipue_search_image"><a href="' + found[i].url + '"' + tipue_search_w + '><img class="tipue_search_img" src="' + found[i].img + '" alt="' + found[i].title + '"></a></div>'; - } - } - - if (found[i].desc) - { - var t = found[i].desc; - - if (set.showContext) - { - d_w = d.split(' '); - var s_1 = found[i].desc.toLowerCase().indexOf(d_w[0]); - if (s_1 > set.contextStart) - { - var t_1 = t.substr(s_1 - set.contextBuffer); - var s_2 = t_1.indexOf(' '); - t_1 = t.substr(s_1 - set.contextBuffer + s_2); - t_1 = $.trim(t_1); - - if (t_1.length > set.contextLength) - { - t = '... ' + t_1; - } - } - } - - if (standard) - { - d_w = d.split(' '); - for (var f = 0; f < d_w.length; f++) - { - if (set.highlightTerms) - { - var patr = new RegExp('(' + d_w[f] + ')', 'gi'); - t = t.replace(patr, "<h0011>$1<h0012>"); - } - } - } - else if (set.highlightTerms) - { - var patr = new RegExp('(' + d + ')', 'gi'); - t = t.replace(patr, "<span class=\"tipue_search_content_bold\">$1</span>"); - } - - var t_d = ''; - var t_w = t.split(' '); - if (t_w.length < set.descriptiveWords) - { - t_d = t; - } - else - { - for (var f = 0; f < set.descriptiveWords; f++) - { - t_d += t_w[f] + ' '; - } - } - t_d = $.trim(t_d); - if (t_d.charAt(t_d.length - 1) != '.') - { - t_d += ' ...'; - } - - t_d = t_d.replace(/h0011/g, 'span class=\"tipue_search_content_bold\"'); - t_d = t_d.replace(/h0012/g, '/span'); - - out += '<div class="tipue_search_content_text">' + t_d + '</div>'; - } - - if (found[i].note) - { - out += '<div class="tipue_search_note">' + found[i].note + '</div>'; - } - - out += '</div>'; - } - l_o++; - } - - if (c > set.show) - { - var pages = Math.ceil(c / set.show); - var page = (start / set.show); - if (set.footerPages < 3) - { - set.footerPages = 3; - } - - out += '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; - - if (start > 0) - { - out += '<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="' + (start - set.show) + '_' + replace + '">' + tipuesearch_string_6 + '</a></li>'; - } - - if (page <= 2) - { - var p_b = pages; - if (pages > set.footerPages) - { - p_b = set.footerPages; - } - for (var f = 0; f < p_b; f++) - { - if (f == page) - { - out += '<li class="current" role="navigation">' + (f + 1) + '</li>'; - } - else - { - out += '<li role="navigation"><a class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>'; - } - } - } - else - { - var p_b = page + set.footerPages - 1; - if (p_b > pages) - { - p_b = pages; - } - for (var f = page - 1; f < p_b; f++) - { - if (f == page) - { - out += '<li class="current" role="navigation">' + (f + 1) + '</li>'; - } - else - { - out += '<li role="navigation"><a class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>'; - } - } - } - - if (page + 1 != pages) - { - out += '<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="' + (start + set.show) + '_' + replace + '">' + tipuesearch_string_7 + '</a></li>'; - } - - out += '</ul></div>'; - } - - } - else - { - out += '<div id="tipue_search_error">' + tipuesearch_string_8 + '</div>'; - } + } else if (set.highlightTerms) { + var patr = new RegExp("(" + d + ")", "gi"); + t = t.replace( + patr, + '<span class="tipue_search_content_bold">$1</span>' + ); + } + + var t_d = ""; + var t_w = t.split(" "); + if (t_w.length < set.descriptiveWords) { + t_d = t; + } else { + for (var f = 0; f < set.descriptiveWords; f++) { + t_d += t_w[f] + " "; } - else - { - if (show_stop) - { - out += '<div id="tipue_search_error">' + tipuesearch_string_8 + ' ' + tipuesearch_string_9 + '</div>'; - } - else - { - if (set.minimumLength == 1) - { - out += '<div id="tipue_search_error">' + tipuesearch_string_11 + '</div>'; - } - else - { - out += '<div id="tipue_search_error">' + tipuesearch_string_12 + ' ' + set.minimumLength + ' ' + tipuesearch_string_13 + '</div>'; - } - } - } - - $('#tipue_search_content').hide().html(out).slideDown(200); - - $('#tipue_search_replaced').click(function() - { - getTipueSearch(0, false); - }); - - $('.tipue_search_related_btn').click(function() - { - $('#tipue_search_input').val($(this).attr('id')); - getTipueSearch(0, true); - }); - - $('.tipue_search_image_zoom').click(function() - { - $('#tipue_search_image_modal').fadeIn(300); - $('#tipue_search_zoom_img').attr('src', this.src); - - var z_u = $(this).attr('data-url'); - $('#tipue_search_zoom_url').attr('href', z_u); - - var z_o = this.alt + '<div class="tipue_search_zoom_options"><a href="' + this.src + '" target="_blank">' + tipuesearch_string_15 + '</a>  <a href="' + z_u + '">' + tipuesearch_string_16 + '</a></div>'; - - $('#tipue_search_zoom_text').html(z_o); - }); - - $('.tipue_search_image_close').click(function() - { - $('#tipue_search_image_modal').fadeOut(300); - }); - - $('.tipue_search_foot_box').click(function() - { - var id_v = $(this).attr('id'); - var id_a = id_v.split('_'); - - getTipueSearch(parseInt(id_a[0]), id_a[1]); - }); - } - - }); - }; - + } + t_d = $.trim(t_d); + if (t_d.charAt(t_d.length - 1) != ".") { + t_d += " ..."; + } + + t_d = t_d.replace( + /h0011/g, + 'span class="tipue_search_content_bold"' + ); + t_d = t_d.replace(/h0012/g, "/span"); + + out += + '<div class="tipue_search_content_text">' + t_d + "</div>"; + } + + if (found[i].note) { + out += + '<div class="tipue_search_note">' + + found[i].note + + "</div>"; + } + + out += "</div>"; + } + l_o++; + } + + if (c > set.show) { + var pages = Math.ceil(c / set.show); + var page = start / set.show; + if (set.footerPages < 3) { + set.footerPages = 3; + } + + out += + '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; + + if (start > 0) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="' + + (start - set.show) + + "_" + + replace + + '">' + + tipuesearch_string_6 + + "</a></li>"; + } + + if (page <= 2) { + var p_b = pages; + if (pages > set.footerPages) { + p_b = set.footerPages; + } + for (var f = 0; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } else { + var p_b = page + set.footerPages - 1; + if (p_b > pages) { + p_b = pages; + } + for (var f = page - 1; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } + + if (page + 1 != pages) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="' + + (start + set.show) + + "_" + + replace + + '">' + + tipuesearch_string_7 + + "</a></li>"; + } + + out += "</ul></div>"; + } + } else { + out += + '<div id="tipue_search_error">' + tipuesearch_string_8 + "</div>"; + } + } else { + if (show_stop) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_8 + + " " + + tipuesearch_string_9 + + "</div>"; + } else { + if (set.minimumLength == 1) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_11 + + "</div>"; + } else { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_12 + + " " + + set.minimumLength + + " " + + tipuesearch_string_13 + + "</div>"; + } + } + } + + $("#tipue_search_content") + .hide() + .html(out) + .slideDown(200); + + $("#tipue_search_replaced").click(function() { + getTipueSearch(0, false); + }); + + $(".tipue_search_related_btn").click(function() { + $("#tipue_search_input").val($(this).attr("id")); + getTipueSearch(0, true); + }); + + $(".tipue_search_image_zoom").click(function() { + $("#tipue_search_image_modal").fadeIn(300); + $("#tipue_search_zoom_img").attr("src", this.src); + + var z_u = $(this).attr("data-url"); + $("#tipue_search_zoom_url").attr("href", z_u); + + var z_o = + this.alt + + '<div class="tipue_search_zoom_options"><a href="' + + this.src + + '" target="_blank">' + + tipuesearch_string_15 + + '</a>  <a href="' + + z_u + + '">' + + tipuesearch_string_16 + + "</a></div>"; + + $("#tipue_search_zoom_text").html(z_o); + }); + + $(".tipue_search_image_close").click(function() { + $("#tipue_search_image_modal").fadeOut(300); + }); + + $(".tipue_search_foot_box").click(function() { + var id_v = $(this).attr("id"); + var id_a = id_v.split("_"); + + getTipueSearch(parseInt(id_a[0]), id_a[1]); + }); + } + }); + }; })(jQuery); diff --git a/static/tipuesearch/tipuesearch.min.js b/static/tipuesearch/tipuesearch.min.js index 555524a5..0fefce4a 100644 --- a/static/tipuesearch/tipuesearch.min.js +++ b/static/tipuesearch/tipuesearch.min.js @@ -1,181 +1,559 @@ -(function($){$.fn.tipuesearch=function(options){var set=$.extend({'contextBuffer':60,'contextLength':60,'contextStart':90,'debug':false,'descriptiveWords':25,'footerPages':3,'highlightTerms':true,'imageZoom':true,'minimumLength':3,'newWindow':false,'show':10,'showContext':true,'showRelated':true,'showTime':true,'showTitleCount':true,'showURL':true,'wholeWords':true},options);return this.each(function(){var tipuesearch_t_c=0;var tipue_search_w='';if(set.newWindow) -{tipue_search_w=' target="_blank"';} -function getURLP(name) -{var locSearch=location.search;var splitted=(new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(locSearch)||[,""]);var searchString=splitted[1].replace(/\+/g,'%20');try -{searchString=decodeURIComponent(searchString);} -catch(e) -{searchString=unescape(searchString);} -return searchString||null;} -if(getURLP('q')) -{$('#tipue_search_input').val(getURLP('q'));getTipueSearch(0,true);} -$(this).keyup(function(event) -{if(event.keyCode=='13') -{getTipueSearch(0,true);}});function getTipueSearch(start,replace) -{window.scrollTo(0,0);var out='';var show_replace=false;var show_stop=false;var standard=true;var c=0;var found=[];var d_o=$('#tipue_search_input').val();d_o=d_o.replace(/\+/g,' ').replace(/\s\s+/g,' ');d_o=$.trim(d_o);var d=d_o.toLowerCase();if((d.match("^\"")&&d.match("\"$"))||(d.match("^'")&&d.match("'$"))) -{standard=false;} -var d_w=d.split(' ');if(standard) -{d='';for(var i=0;i<d_w.length;i++) -{var a_w=true;for(var f=0;f<tipuesearch_stop_words.length;f++) -{if(d_w[i]==tipuesearch_stop_words[f]) -{a_w=false;show_stop=true;}} -if(a_w) -{d=d+' '+d_w[i];}} -d=$.trim(d);d_w=d.split(' ');} -else -{d=d.substring(1,d.length-1);} -if(d.length>=set.minimumLength) -{if(standard) -{if(replace) -{var d_r=d;for(var i=0;i<d_w.length;i++) -{for(var f=0;f<tipuesearch_replace.words.length;f++) -{if(d_w[i]==tipuesearch_replace.words[f].word) -{d=d.replace(d_w[i],tipuesearch_replace.words[f].replace_with);show_replace=true;}}} -d_w=d.split(' ');} -var d_t=d;for(var i=0;i<d_w.length;i++) -{for(var f=0;f<tipuesearch_stem.words.length;f++) -{if(d_w[i]==tipuesearch_stem.words[f].word) -{d_t=d_t+' '+tipuesearch_stem.words[f].stem;}}} -d_w=d_t.split(' ');for(var i=0;i<tipuesearch.pages.length;i++) -{var score=0;var s_t=tipuesearch.pages[i].text;for(var f=0;f<d_w.length;f++) -{if(set.wholeWords) -{var pat=new RegExp('\\b'+d_w[f]+'\\b','gi');} -else -{var pat=new RegExp(d_w[f],'gi');} -if(tipuesearch.pages[i].title.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].title.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].text.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].text.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].tags) -{if(tipuesearch.pages[i].tags.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].tags.match(pat).length;score+=(10*m_c);}} -if(tipuesearch.pages[i].url.search(pat)!=-1) -{score+=20;} -if(score!=0) -{for(var e=0;e<tipuesearch_weight.weight.length;e++) -{if(tipuesearch.pages[i].url==tipuesearch_weight.weight[e].url) -{score+=tipuesearch_weight.weight[e].score;}}} -if(d_w[f].match('^-')) -{pat=new RegExp(d_w[f].substring(1),'i');if(tipuesearch.pages[i].title.search(pat)!=-1||tipuesearch.pages[i].text.search(pat)!=-1||tipuesearch.pages[i].tags.search(pat)!=-1) -{score=0;}}} -if(score!=0) -{found.push({"score":score,"title":tipuesearch.pages[i].title,"desc":s_t,"img":tipuesearch.pages[i].img,"url":tipuesearch.pages[i].url,"note":tipuesearch.pages[i].note});c++;}}} -else -{for(var i=0;i<tipuesearch.pages.length;i++) -{var score=0;var s_t=tipuesearch.pages[i].text;var pat=new RegExp(d,'gi');if(tipuesearch.pages[i].title.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].title.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].text.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].text.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].tags) -{if(tipuesearch.pages[i].tags.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].tags.match(pat).length;score+=(10*m_c);}} -if(tipuesearch.pages[i].url.search(pat)!=-1) -{score+=20;} -if(score!=0) -{for(var e=0;e<tipuesearch_weight.weight.length;e++) -{if(tipuesearch.pages[i].url==tipuesearch_weight.weight[e].url) -{score+=tipuesearch_weight.weight[e].score;}}} -if(score!=0) -{found.push({"score":score,"title":tipuesearch.pages[i].title,"desc":s_t,"img":tipuesearch.pages[i].img,"url":tipuesearch.pages[i].url,"note":tipuesearch.pages[i].note});c++;}}} -if(c!=0) -{if(set.showTitleCount&&tipuesearch_t_c==0) -{var title=document.title;document.title='('+c+') '+title;tipuesearch_t_c++;} -if(c==1) -{out+='<div id="tipue_search_results_count">'+tipuesearch_string_4;} -else -{var c_c=c.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");out+='<div id="tipue_search_results_count">'+c_c+' '+tipuesearch_string_5;} -if(set.showTime) -{var endTimer=new Date().getTime();var time=(endTimer-startTimer)/ 1000;out+=' ('+time.toFixed(2)+' '+tipuesearch_string_14+')';set.showTime=false;} -out+='</div>';if(set.showRelated&&standard) -{var ront='';f=0;for(var i=0;i<tipuesearch_related.Related.length;i++) -{if(d==tipuesearch_related.Related[i].search) -{if(!f) -{out+='<div class="tipue_search_related">'+tipuesearch_string_10+': ';} -if(show_replace) -{d_o=d;} -if(tipuesearch_related.Related[i].include) -{var r_d=d_o+' '+tipuesearch_related.Related[i].related;} -else -{var r_d=tipuesearch_related.Related[i].related;} -ront+='<a class="tipue_search_related_btn" id="'+r_d+'">'+tipuesearch_related.Related[i].related+'</a>, ';f++;}} -if(f) -{ront=ront.slice(0,-2);ront+='.</div>';out+=ront;}} -if(show_replace) -{out+='<div id="tipue_search_replace">'+tipuesearch_string_2+' '+d+'. '+tipuesearch_string_3+' <a id="tipue_search_replaced">'+d_r+'</a></div>';} -found.sort(function(a,b){return b.score-a.score});var l_o=0;if(set.imageZoom) -{out+='<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>';} -for(var i=0;i<found.length;i++) -{if(l_o>=start&&l_o<set.show+start) -{out+='<div class="tipue_search_result">';out+='<div class="tipue_search_content_title"><a href="'+found[i].url+'"'+tipue_search_w+'>'+found[i].title+'</a></div>';if(set.debug) -{out+='<div class="tipue_search_content_debug">Score: '+found[i].score+'</div>';} -if(set.showURL) -{var s_u=found[i].url.toLowerCase();if(s_u.indexOf('http://')==0) -{s_u=s_u.slice(7);} -out+='<div class="tipue_search_content_url"><a href="'+found[i].url+'"'+tipue_search_w+'>'+s_u+'</a></div>';} -if(found[i].img) -{if(set.imageZoom) -{out+='<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="'+found[i].img+'" alt="'+found[i].title+'" data-url="'+found[i].url+'"></div>';} -else -{out+='<div class="tipue_search_image"><a href="'+found[i].url+'"'+tipue_search_w+'><img class="tipue_search_img" src="'+found[i].img+'" alt="'+found[i].title+'"></a></div>';}} -if(found[i].desc) -{var t=found[i].desc;if(set.showContext) -{d_w=d.split(' ');var s_1=found[i].desc.toLowerCase().indexOf(d_w[0]);if(s_1>set.contextStart) -{var t_1=t.substr(s_1-set.contextBuffer);var s_2=t_1.indexOf(' ');t_1=t.substr(s_1-set.contextBuffer+s_2);t_1=$.trim(t_1);if(t_1.length>set.contextLength) -{t='... '+t_1;}}} -if(standard) -{d_w=d.split(' ');for(var f=0;f<d_w.length;f++) -{if(set.highlightTerms) -{var patr=new RegExp('('+d_w[f]+')','gi');t=t.replace(patr,"<h0011>$1<h0012>");}}} -else if(set.highlightTerms) -{var patr=new RegExp('('+d+')','gi');t=t.replace(patr,"<span class=\"tipue_search_content_bold\">$1</span>");} -var t_d='';var t_w=t.split(' ');if(t_w.length<set.descriptiveWords) -{t_d=t;} -else -{for(var f=0;f<set.descriptiveWords;f++) -{t_d+=t_w[f]+' ';}} -t_d=$.trim(t_d);if(t_d.charAt(t_d.length-1)!='.') -{t_d+=' ...';} -t_d=t_d.replace(/h0011/g,'span class=\"tipue_search_content_bold\"');t_d=t_d.replace(/h0012/g,'/span');out+='<div class="tipue_search_content_text">'+t_d+'</div>';} -if(found[i].note) -{out+='<div class="tipue_search_note">'+found[i].note+'</div>';} -out+='</div>';} -l_o++;} -if(c>set.show) -{var pages=Math.ceil(c / set.show);var page=(start / set.show);if(set.footerPages<3) -{set.footerPages=3;} -out+='<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">';if(start>0) -{out+='<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="'+(start-set.show)+'_'+replace+'">'+tipuesearch_string_6+'</a></li>';} -if(page<=2) -{var p_b=pages;if(pages>set.footerPages) -{p_b=set.footerPages;} -for(var f=0;f<p_b;f++) -{if(f==page) -{out+='<li class="current" role="navigation">'+(f+1)+'</li>';} -else -{out+='<li role="navigation"><a class="tipue_search_foot_box" id="'+(f*set.show)+'_'+replace+'">'+(f+1)+'</a></li>';}}} -else -{var p_b=page+set.footerPages-1;if(p_b>pages) -{p_b=pages;} -for(var f=page-1;f<p_b;f++) -{if(f==page) -{out+='<li class="current" role="navigation">'+(f+1)+'</li>';} -else -{out+='<li role="navigation"><a class="tipue_search_foot_box" id="'+(f*set.show)+'_'+replace+'">'+(f+1)+'</a></li>';}}} -if(page+1!=pages) -{out+='<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="'+(start+set.show)+'_'+replace+'">'+tipuesearch_string_7+'</a></li>';} -out+='</ul></div>';}} -else -{out+='<div id="tipue_search_error">'+tipuesearch_string_8+'</div>';}} -else -{if(show_stop) -{out+='<div id="tipue_search_error">'+tipuesearch_string_8+' '+tipuesearch_string_9+'</div>';} -else -{if(set.minimumLength==1) -{out+='<div id="tipue_search_error">'+tipuesearch_string_11+'</div>';} -else -{out+='<div id="tipue_search_error">'+tipuesearch_string_12+' '+set.minimumLength+' '+tipuesearch_string_13+'</div>';}}} -$('#tipue_search_content').hide().html(out).slideDown(200);$('#tipue_search_replaced').click(function() -{getTipueSearch(0,false);});$('.tipue_search_related_btn').click(function() -{$('#tipue_search_input').val($(this).attr('id'));getTipueSearch(0,true);});$('.tipue_search_image_zoom').click(function() -{$('#tipue_search_image_modal').fadeIn(300);$('#tipue_search_zoom_img').attr('src',this.src);var z_u=$(this).attr('data-url');$('#tipue_search_zoom_url').attr('href',z_u);var z_o=this.alt+'<div class="tipue_search_zoom_options"><a href="'+this.src+'" target="_blank">'+tipuesearch_string_15+'</a>  <a href="'+z_u+'">'+tipuesearch_string_16+'</a></div>';$('#tipue_search_zoom_text').html(z_o);});$('.tipue_search_image_close').click(function() -{$('#tipue_search_image_modal').fadeOut(300);});$('.tipue_search_foot_box').click(function() -{var id_v=$(this).attr('id');var id_a=id_v.split('_');getTipueSearch(parseInt(id_a[0]),id_a[1]);});}});};})(jQuery); +(function($) { + $.fn.tipuesearch = function(options) { + var set = $.extend( + { + contextBuffer: 60, + contextLength: 60, + contextStart: 90, + debug: false, + descriptiveWords: 25, + footerPages: 3, + highlightTerms: true, + imageZoom: true, + minimumLength: 3, + newWindow: false, + show: 10, + showContext: true, + showRelated: true, + showTime: true, + showTitleCount: true, + showURL: true, + wholeWords: true + }, + options + ); + return this.each(function() { + var tipuesearch_t_c = 0; + var tipue_search_w = ""; + if (set.newWindow) { + tipue_search_w = ' target="_blank"'; + } + function getURLP(name) { + var locSearch = location.search; + var splitted = new RegExp( + "[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)" + ).exec(locSearch) || [, ""]; + var searchString = splitted[1].replace(/\+/g, "%20"); + try { + searchString = decodeURIComponent(searchString); + } catch (e) { + searchString = unescape(searchString); + } + return searchString || null; + } + if (getURLP("q")) { + $("#tipue_search_input").val(getURLP("q")); + getTipueSearch(0, true); + } + $(this).keyup(function(event) { + if (event.keyCode == "13") { + getTipueSearch(0, true); + } + }); + function getTipueSearch(start, replace) { + window.scrollTo(0, 0); + var out = ""; + var show_replace = false; + var show_stop = false; + var standard = true; + var c = 0; + var found = []; + var d_o = $("#tipue_search_input").val(); + d_o = d_o.replace(/\+/g, " ").replace(/\s\s+/g, " "); + d_o = $.trim(d_o); + var d = d_o.toLowerCase(); + if ( + (d.match('^"') && d.match('"$')) || + (d.match("^'") && d.match("'$")) + ) { + standard = false; + } + var d_w = d.split(" "); + if (standard) { + d = ""; + for (var i = 0; i < d_w.length; i++) { + var a_w = true; + for (var f = 0; f < tipuesearch_stop_words.length; f++) { + if (d_w[i] == tipuesearch_stop_words[f]) { + a_w = false; + show_stop = true; + } + } + if (a_w) { + d = d + " " + d_w[i]; + } + } + d = $.trim(d); + d_w = d.split(" "); + } else { + d = d.substring(1, d.length - 1); + } + if (d.length >= set.minimumLength) { + if (standard) { + if (replace) { + var d_r = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_replace.words.length; f++) { + if (d_w[i] == tipuesearch_replace.words[f].word) { + d = d.replace( + d_w[i], + tipuesearch_replace.words[f].replace_with + ); + show_replace = true; + } + } + } + d_w = d.split(" "); + } + var d_t = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_stem.words.length; f++) { + if (d_w[i] == tipuesearch_stem.words[f].word) { + d_t = d_t + " " + tipuesearch_stem.words[f].stem; + } + } + } + d_w = d_t.split(" "); + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + for (var f = 0; f < d_w.length; f++) { + if (set.wholeWords) { + var pat = new RegExp("\\b" + d_w[f] + "\\b", "gi"); + } else { + var pat = new RegExp(d_w[f], "gi"); + } + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == + tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; + } + } + } + if (d_w[f].match("^-")) { + pat = new RegExp(d_w[f].substring(1), "i"); + if ( + tipuesearch.pages[i].title.search(pat) != -1 || + tipuesearch.pages[i].text.search(pat) != -1 || + tipuesearch.pages[i].tags.search(pat) != -1 + ) { + score = 0; + } + } + } + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } else { + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + var pat = new RegExp(d, "gi"); + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; + } + } + } + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } + if (c != 0) { + if (set.showTitleCount && tipuesearch_t_c == 0) { + var title = document.title; + document.title = "(" + c + ") " + title; + tipuesearch_t_c++; + } + if (c == 1) { + out += + '<div id="tipue_search_results_count">' + tipuesearch_string_4; + } else { + var c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + out += + '<div id="tipue_search_results_count">' + + c_c + + " " + + tipuesearch_string_5; + } + if (set.showTime) { + var endTimer = new Date().getTime(); + var time = (endTimer - startTimer) / 1000; + out += " (" + time.toFixed(2) + " " + tipuesearch_string_14 + ")"; + set.showTime = false; + } + out += "</div>"; + if (set.showRelated && standard) { + var ront = ""; + f = 0; + for (var i = 0; i < tipuesearch_related.Related.length; i++) { + if (d == tipuesearch_related.Related[i].search) { + if (!f) { + out += + '<div class="tipue_search_related">' + + tipuesearch_string_10 + + ": "; + } + if (show_replace) { + d_o = d; + } + if (tipuesearch_related.Related[i].include) { + var r_d = + d_o + " " + tipuesearch_related.Related[i].related; + } else { + var r_d = tipuesearch_related.Related[i].related; + } + ront += + '<a class="tipue_search_related_btn" id="' + + r_d + + '">' + + tipuesearch_related.Related[i].related + + "</a>, "; + f++; + } + } + if (f) { + ront = ront.slice(0, -2); + ront += ".</div>"; + out += ront; + } + } + if (show_replace) { + out += + '<div id="tipue_search_replace">' + + tipuesearch_string_2 + + " " + + d + + ". " + + tipuesearch_string_3 + + ' <a id="tipue_search_replaced">' + + d_r + + "</a></div>"; + } + found.sort(function(a, b) { + return b.score - a.score; + }); + var l_o = 0; + if (set.imageZoom) { + out += + '<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>'; + } + for (var i = 0; i < found.length; i++) { + if (l_o >= start && l_o < set.show + start) { + out += '<div class="tipue_search_result">'; + out += + '<div class="tipue_search_content_title"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + found[i].title + + "</a></div>"; + if (set.debug) { + out += + '<div class="tipue_search_content_debug">Score: ' + + found[i].score + + "</div>"; + } + if (set.showURL) { + var s_u = found[i].url.toLowerCase(); + if (s_u.indexOf("http://") == 0) { + s_u = s_u.slice(7); + } + out += + '<div class="tipue_search_content_url"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + s_u + + "</a></div>"; + } + if (found[i].img) { + if (set.imageZoom) { + out += + '<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="' + + found[i].img + + '" alt="' + + found[i].title + + '" data-url="' + + found[i].url + + '"></div>'; + } else { + out += + '<div class="tipue_search_image"><a href="' + + found[i].url + + '"' + + tipue_search_w + + '><img class="tipue_search_img" src="' + + found[i].img + + '" alt="' + + found[i].title + + '"></a></div>'; + } + } + if (found[i].desc) { + var t = found[i].desc; + if (set.showContext) { + d_w = d.split(" "); + var s_1 = found[i].desc.toLowerCase().indexOf(d_w[0]); + if (s_1 > set.contextStart) { + var t_1 = t.substr(s_1 - set.contextBuffer); + var s_2 = t_1.indexOf(" "); + t_1 = t.substr(s_1 - set.contextBuffer + s_2); + t_1 = $.trim(t_1); + if (t_1.length > set.contextLength) { + t = "... " + t_1; + } + } + } + if (standard) { + d_w = d.split(" "); + for (var f = 0; f < d_w.length; f++) { + if (set.highlightTerms) { + var patr = new RegExp("(" + d_w[f] + ")", "gi"); + t = t.replace(patr, "<h0011>$1<h0012>"); + } + } + } else if (set.highlightTerms) { + var patr = new RegExp("(" + d + ")", "gi"); + t = t.replace( + patr, + '<span class="tipue_search_content_bold">$1</span>' + ); + } + var t_d = ""; + var t_w = t.split(" "); + if (t_w.length < set.descriptiveWords) { + t_d = t; + } else { + for (var f = 0; f < set.descriptiveWords; f++) { + t_d += t_w[f] + " "; + } + } + t_d = $.trim(t_d); + if (t_d.charAt(t_d.length - 1) != ".") { + t_d += " ..."; + } + t_d = t_d.replace( + /h0011/g, + 'span class="tipue_search_content_bold"' + ); + t_d = t_d.replace(/h0012/g, "/span"); + out += + '<div class="tipue_search_content_text">' + t_d + "</div>"; + } + if (found[i].note) { + out += + '<div class="tipue_search_note">' + + found[i].note + + "</div>"; + } + out += "</div>"; + } + l_o++; + } + if (c > set.show) { + var pages = Math.ceil(c / set.show); + var page = start / set.show; + if (set.footerPages < 3) { + set.footerPages = 3; + } + out += + '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; + if (start > 0) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="' + + (start - set.show) + + "_" + + replace + + '">' + + tipuesearch_string_6 + + "</a></li>"; + } + if (page <= 2) { + var p_b = pages; + if (pages > set.footerPages) { + p_b = set.footerPages; + } + for (var f = 0; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } else { + var p_b = page + set.footerPages - 1; + if (p_b > pages) { + p_b = pages; + } + for (var f = page - 1; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } + if (page + 1 != pages) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="' + + (start + set.show) + + "_" + + replace + + '">' + + tipuesearch_string_7 + + "</a></li>"; + } + out += "</ul></div>"; + } + } else { + out += + '<div id="tipue_search_error">' + tipuesearch_string_8 + "</div>"; + } + } else { + if (show_stop) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_8 + + " " + + tipuesearch_string_9 + + "</div>"; + } else { + if (set.minimumLength == 1) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_11 + + "</div>"; + } else { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_12 + + " " + + set.minimumLength + + " " + + tipuesearch_string_13 + + "</div>"; + } + } + } + $("#tipue_search_content") + .hide() + .html(out) + .slideDown(200); + $("#tipue_search_replaced").click(function() { + getTipueSearch(0, false); + }); + $(".tipue_search_related_btn").click(function() { + $("#tipue_search_input").val($(this).attr("id")); + getTipueSearch(0, true); + }); + $(".tipue_search_image_zoom").click(function() { + $("#tipue_search_image_modal").fadeIn(300); + $("#tipue_search_zoom_img").attr("src", this.src); + var z_u = $(this).attr("data-url"); + $("#tipue_search_zoom_url").attr("href", z_u); + var z_o = + this.alt + + '<div class="tipue_search_zoom_options"><a href="' + + this.src + + '" target="_blank">' + + tipuesearch_string_15 + + '</a>  <a href="' + + z_u + + '">' + + tipuesearch_string_16 + + "</a></div>"; + $("#tipue_search_zoom_text").html(z_o); + }); + $(".tipue_search_image_close").click(function() { + $("#tipue_search_image_modal").fadeOut(300); + }); + $(".tipue_search_foot_box").click(function() { + var id_v = $(this).attr("id"); + var id_a = id_v.split("_"); + getTipueSearch(parseInt(id_a[0]), id_a[1]); + }); + } + }); + }; +})(jQuery); diff --git a/static/tipuesearch/tipuesearch_content.js b/static/tipuesearch/tipuesearch_content.js index bdf01e21..414c7093 100644 --- a/static/tipuesearch/tipuesearch_content.js +++ b/static/tipuesearch/tipuesearch_content.js @@ -1,17 +1,107 @@ - -var tipuesearch = {"pages": [ - {"title": "Tipue", "text": "Tipue is a small web development studio based in North London.", "url": "http://www.tipue.com"}, - {"title": "Tipue Search", "text": "Tipue Search. A site search jQuery plugin. It's free, open source and fast. Tipue Search only needs a browser that supports jQuery. It doesn't need MySQL or similar, Tipue Search uses a JavaScript object for content.", "tags": "JavaScript", "url": "http://www.tipue.com/search"}, - {"title": "Tipue Slide", "text": "Tipue Slide is a sliding panel site search jQuery plugin. It's free, open source and fast.", "url": "http://www.tipue.com/slide"}, - {"title": "About Tipue", "text": "Tipue is a small web development studio based in North London, founded in 2001. We design innovative and original JavaScript and jQuery plugins, which we connect to servers and MySQL databases with fast, heavy-duty Perl.", "url": "http://www.tipue.com/is"}, - {"title": "Tipr", "text": "Tipr. A small and simple jQuery tooltip plugin. It's free and open source. Small, simple, flat, cool. Tipr is a jQuery tooltip plugin. It works on almost any element, and reacts to the size of the viewport. Tipr is free and open source.", "tags": "JavaScript", "url": "http://www.tipue.com/tipr"}, - {"title": "Tipue Support", "text": "Tipue support. We offer a range of flexible support plans for our products, services and jQuery plugins, including free.", "url": "http://www.tipue.com/support"}, - {"title": "Playing with CSS Sticky Positioning", "text": "While the fixed and sticky position elements seems rather similar, the sticky element maintains its position only within its containing block. Sticky is relative, which allows all sorts of potential creativity.", "img": "http://www.tipue.com/img/sony.jpg", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css-sticky"}, - {"title": "The Complete Guide to Centering a Div", "text": "Every developer inevitably finds that centering a div isn't as obvious as you'd expect. Centering what's inside a div horizontally is easy but then things tend to get a bit sticky. When you get to centering a div vertically, you can end up in a world of CSS hurt.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/center-a-div"}, - {"title": "Cool CSS Radio Buttons and Checkboxes", "text": "Hip and easy radio button and checkbox form elements styled with CSS.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/radio-checkbox"}, - {"title": "Hacking CSS Writing Mode", "text": "The writing-mode CSS property sets horizontal and vertical text direction. While meant for multilingual purposes, it can be exploited for design.", "img": "http://www.tipue.com/img/tran.jpg", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css-writing-mode"}, - {"title": "Using Vw and Vh", "text": "Viewport width (vw) and viewport height (vh) are viewport-percentage values introduced in CSS3. Given how powerful they are, and with almost complete browser support, they should be everywhere.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css3-vw-vh"}, - {"title": "Using CSS Feature Queries", "text": "CSS feature queries are now supported everywhere. They allow you to use cutting edge CSS with subtle and precise feature detection.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/feature-queries"}, - {"title": "A Very Simple CSS Background Zoom", "text": "A really easy method of creating a CSS background image zoom. Not only is this simple, it comes with wide browser support.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css-background-zoom"}, - {"title": "Using Z-index", "text": "The CSS z-index property often trips up both new and experienced developers. The aim of this article is to boil down a somewhat-complex specification to three major points, which should ease most z-index pain.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/z-index"} -]}; +var tipuesearch = { + pages: [ + { + title: "Tipue", + text: "Tipue is a small web development studio based in North London.", + url: "http://www.tipue.com" + }, + { + title: "Tipue Search", + text: + "Tipue Search. A site search jQuery plugin. It's free, open source and fast. Tipue Search only needs a browser that supports jQuery. It doesn't need MySQL or similar, Tipue Search uses a JavaScript object for content.", + tags: "JavaScript", + url: "http://www.tipue.com/search" + }, + { + title: "Tipue Slide", + text: + "Tipue Slide is a sliding panel site search jQuery plugin. It's free, open source and fast.", + url: "http://www.tipue.com/slide" + }, + { + title: "About Tipue", + text: + "Tipue is a small web development studio based in North London, founded in 2001. We design innovative and original JavaScript and jQuery plugins, which we connect to servers and MySQL databases with fast, heavy-duty Perl.", + url: "http://www.tipue.com/is" + }, + { + title: "Tipr", + text: + "Tipr. A small and simple jQuery tooltip plugin. It's free and open source. Small, simple, flat, cool. Tipr is a jQuery tooltip plugin. It works on almost any element, and reacts to the size of the viewport. Tipr is free and open source.", + tags: "JavaScript", + url: "http://www.tipue.com/tipr" + }, + { + title: "Tipue Support", + text: + "Tipue support. We offer a range of flexible support plans for our products, services and jQuery plugins, including free.", + url: "http://www.tipue.com/support" + }, + { + title: "Playing with CSS Sticky Positioning", + text: + "While the fixed and sticky position elements seems rather similar, the sticky element maintains its position only within its containing block. Sticky is relative, which allows all sorts of potential creativity.", + img: "http://www.tipue.com/img/sony.jpg", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css-sticky" + }, + { + title: "The Complete Guide to Centering a Div", + text: + "Every developer inevitably finds that centering a div isn't as obvious as you'd expect. Centering what's inside a div horizontally is easy but then things tend to get a bit sticky. When you get to centering a div vertically, you can end up in a world of CSS hurt.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/center-a-div" + }, + { + title: "Cool CSS Radio Buttons and Checkboxes", + text: + "Hip and easy radio button and checkbox form elements styled with CSS.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/radio-checkbox" + }, + { + title: "Hacking CSS Writing Mode", + text: + "The writing-mode CSS property sets horizontal and vertical text direction. While meant for multilingual purposes, it can be exploited for design.", + img: "http://www.tipue.com/img/tran.jpg", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css-writing-mode" + }, + { + title: "Using Vw and Vh", + text: + "Viewport width (vw) and viewport height (vh) are viewport-percentage values introduced in CSS3. Given how powerful they are, and with almost complete browser support, they should be everywhere.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css3-vw-vh" + }, + { + title: "Using CSS Feature Queries", + text: + "CSS feature queries are now supported everywhere. They allow you to use cutting edge CSS with subtle and precise feature detection.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/feature-queries" + }, + { + title: "A Very Simple CSS Background Zoom", + text: + "A really easy method of creating a CSS background image zoom. Not only is this simple, it comes with wide browser support.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css-background-zoom" + }, + { + title: "Using Z-index", + text: + "The CSS z-index property often trips up both new and experienced developers. The aim of this article is to boil down a somewhat-complex specification to three major points, which should ease most z-index pain.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/z-index" + } + ] +}; diff --git a/static/tipuesearch/tipuesearch_set.js b/static/tipuesearch/tipuesearch_set.js index a76216f5..a4e86f74 100644 --- a/static/tipuesearch/tipuesearch_set.js +++ b/static/tipuesearch/tipuesearch_set.js @@ -1,4 +1,3 @@ - /* Tipue Search 7.1 Copyright (c) 2019 Tipue @@ -6,78 +5,252 @@ Tipue Search is released under the MIT License http://www.tipue.com/search */ - /* Stop words Stop words list from http://www.ranks.nl/stopwords */ -var tipuesearch_stop_words = ["a", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]; - +var tipuesearch_stop_words = [ + "a", + "above", + "after", + "again", + "against", + "all", + "am", + "an", + "and", + "any", + "are", + "aren't", + "as", + "at", + "be", + "because", + "been", + "before", + "being", + "below", + "between", + "both", + "but", + "by", + "can't", + "cannot", + "could", + "couldn't", + "did", + "didn't", + "do", + "does", + "doesn't", + "doing", + "don't", + "down", + "during", + "each", + "few", + "for", + "from", + "further", + "had", + "hadn't", + "has", + "hasn't", + "have", + "haven't", + "having", + "he", + "he'd", + "he'll", + "he's", + "her", + "here", + "here's", + "hers", + "herself", + "him", + "himself", + "his", + "how", + "how's", + "i", + "i'd", + "i'll", + "i'm", + "i've", + "if", + "in", + "into", + "is", + "isn't", + "it", + "it's", + "its", + "itself", + "let's", + "me", + "more", + "most", + "mustn't", + "my", + "myself", + "no", + "nor", + "not", + "of", + "off", + "on", + "once", + "only", + "or", + "other", + "ought", + "our", + "ours", + "ourselves", + "out", + "over", + "own", + "same", + "shan't", + "she", + "she'd", + "she'll", + "she's", + "should", + "shouldn't", + "so", + "some", + "such", + "than", + "that", + "that's", + "the", + "their", + "theirs", + "them", + "themselves", + "then", + "there", + "there's", + "these", + "they", + "they'd", + "they'll", + "they're", + "they've", + "this", + "those", + "through", + "to", + "too", + "under", + "until", + "up", + "very", + "was", + "wasn't", + "we", + "we'd", + "we'll", + "we're", + "we've", + "were", + "weren't", + "what", + "what's", + "when", + "when's", + "where", + "where's", + "which", + "while", + "who", + "who's", + "whom", + "why", + "why's", + "with", + "won't", + "would", + "wouldn't", + "you", + "you'd", + "you'll", + "you're", + "you've", + "your", + "yours", + "yourself", + "yourselves" +]; // Word replace -var tipuesearch_replace = {'words': [ - {'word': 'tip', 'replace_with': 'tipue'}, - {'word': 'javscript', 'replace_with': 'javascript'}, - {'word': 'jqeury', 'replace_with': 'jquery'} -]}; - +var tipuesearch_replace = { + words: [ + { word: "tip", replace_with: "tipue" }, + { word: "javscript", replace_with: "javascript" }, + { word: "jqeury", replace_with: "jquery" } + ] +}; // Weighting -var tipuesearch_weight = {'weight': [ - {'url': 'http://www.tipue.com', 'score': 60}, - {'url': 'http://www.tipue.com/search', 'score': 60}, - {'url': 'http://www.tipue.com/tipr', 'score': 30}, - {'url': 'http://www.tipue.com/support', 'score': 20} -]}; - +var tipuesearch_weight = { + weight: [ + { url: "http://www.tipue.com", score: 60 }, + { url: "http://www.tipue.com/search", score: 60 }, + { url: "http://www.tipue.com/tipr", score: 30 }, + { url: "http://www.tipue.com/support", score: 20 } + ] +}; // Illogical stemming -var tipuesearch_stem = {'words': [ - {'word': 'e-mail', 'stem': 'email'}, - {'word': 'javascript', 'stem': 'jquery'}, - {'word': 'javascript', 'stem': 'js'} -]}; - +var tipuesearch_stem = { + words: [ + { word: "e-mail", stem: "email" }, + { word: "javascript", stem: "jquery" }, + { word: "javascript", stem: "js" } + ] +}; // Related -var tipuesearch_related = {'Related': [ - {'search': 'tipue', 'related': 'Search', 'include': 1}, - {'search': 'tipue', 'related': 'jQuery'}, - {'search': 'tipue', 'related': 'Blog'}, - {'search': 'tipue', 'related': 'Support'}, - {'search': 'tipue search', 'related': 'Demo', 'include': 1}, - {'search': 'tipue search', 'related': 'Support'} -]}; - +var tipuesearch_related = { + Related: [ + { search: "tipue", related: "Search", include: 1 }, + { search: "tipue", related: "jQuery" }, + { search: "tipue", related: "Blog" }, + { search: "tipue", related: "Support" }, + { search: "tipue search", related: "Demo", include: 1 }, + { search: "tipue search", related: "Support" } + ] +}; // Internal strings -var tipuesearch_string_1 = 'No title'; -var tipuesearch_string_2 = 'Showing results for'; -var tipuesearch_string_3 = 'Search instead for'; -var tipuesearch_string_4 = '1 result'; -var tipuesearch_string_5 = 'results'; -var tipuesearch_string_6 = '<'; -var tipuesearch_string_7 = '>'; -var tipuesearch_string_8 = 'Nothing found.'; -var tipuesearch_string_9 = 'Common words are largely ignored.'; -var tipuesearch_string_10 = 'Related'; -var tipuesearch_string_11 = 'Search should be one character or more.'; -var tipuesearch_string_12 = 'Search should be'; -var tipuesearch_string_13 = 'characters or more.'; -var tipuesearch_string_14 = 'seconds'; -var tipuesearch_string_15 = 'Open Image'; -var tipuesearch_string_16 = 'Goto Page'; - +var tipuesearch_string_1 = "No title"; +var tipuesearch_string_2 = "Showing results for"; +var tipuesearch_string_3 = "Search instead for"; +var tipuesearch_string_4 = "1 result"; +var tipuesearch_string_5 = "results"; +var tipuesearch_string_6 = "<"; +var tipuesearch_string_7 = ">"; +var tipuesearch_string_8 = "Nothing found."; +var tipuesearch_string_9 = "Common words are largely ignored."; +var tipuesearch_string_10 = "Related"; +var tipuesearch_string_11 = "Search should be one character or more."; +var tipuesearch_string_12 = "Search should be"; +var tipuesearch_string_13 = "characters or more."; +var tipuesearch_string_14 = "seconds"; +var tipuesearch_string_15 = "Open Image"; +var tipuesearch_string_16 = "Goto Page"; // Internals - // Timer for showTime var startTimer = new Date().getTime(); diff --git a/templates/_includes/article_author.html b/templates/_includes/article_author.html index 86ab027a..5567ff96 100644 --- a/templates/_includes/article_author.html +++ b/templates/_includes/article_author.html @@ -9,7 +9,7 @@ {% endif %} {% set auth = AUTHORS.get(author|string) %} <div class="author_blurb"> - <a href="{{ auth.url }}" target="_blank" rel="nofollow"> + <a href="{{ auth.url }}" target="_blank" rel="nofollow noopener noreferrer"> {% if AUTHORS.get(author|string).avatar %} <img src={{auth.avatar}} alt="{{author}} Avatar" title="{{author}}"> {% endif %} diff --git a/templates/_includes/footer.html b/templates/_includes/footer.html index 1d1d9f02..57b36955 100644 --- a/templates/_includes/footer.html +++ b/templates/_includes/footer.html @@ -25,12 +25,12 @@ {% endif %} <div id="fpowered"> - Powered by: <a href="http://getpelican.com/" title="Pelican Home Page" target="_blank" rel="nofollow">Pelican</a> - Theme: <a href="https://elegant.oncrashreboot.com/" title="Theme Elegant Home Page" target="_blank" rel="nofollow">Elegant</a> + Powered by: <a href="http://getpelican.com/" title="Pelican Home Page" target="_blank" rel="nofollow noopener noreferrer">Pelican</a> + Theme: <a href="https://elegant.oncrashreboot.com/" title="Theme Elegant Home Page" target="_blank" rel="nofollow noopener noreferrer">Elegant</a> {% if HOSTED_ON and HOSTED_ON.name %} Hosted on: {% if HOSTED_ON.url %} - <a href={{HOSTED_ON.url}} target="_blank" rel="nofollow"> + <a href={{HOSTED_ON.url}} target="_blank" rel="nofollow noopener noreferrer"> {{HOSTED_ON.name}} </a> {% else %} diff --git a/templates/_includes/minify_css.html b/templates/_includes/minify_css.html index 1d162f60..6d70e508 100644 --- a/templates/_includes/minify_css.html +++ b/templates/_includes/minify_css.html @@ -1,3 +1,5 @@ -{% assets filters="cssmin", output="css/style.min.css", "css/pygments.css", "tipuesearch/tipuesearch.css","css/elegant.css", "css/admonition.css", "css/custom.css" %} +{% assets filters="cssmin", output="css/style.min.css", +"css/elegant.prod.css", +"css/custom.css" %} <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> {% endassets %} diff --git a/templates/_includes/share_links.html b/templates/_includes/share_links.html index 3092cb5e..6f01846c 100644 --- a/templates/_includes/share_links.html +++ b/templates/_includes/share_links.html @@ -7,11 +7,11 @@ {% from '_includes/_defaults.html' import SHARE_POST_INTRO with context %} {{ SHARE_POST_INTRO }} {% endif %} - <a href="{{article.share_post['twitter']}}" target="_blank" title="Share on Twitter">Twitter</a> + <a href="{{article.share_post['twitter']}}" target="_blank" rel="nofollow noopener noreferrer" title="Share on Twitter">Twitter</a> ❄ - <a href="{{article.share_post['facebook']}}" target="_blank" title="Share on Facebook">Facebook</a> + <a href="{{article.share_post['facebook']}}" target="_blank" rel="nofollow noopener noreferrer" title="Share on Facebook">Facebook</a> ❄ - <a href="{{article.share_post['email']}}" target="_blank" title="Share via Email">Email</a> + <a href="{{article.share_post['email']}}" target="_blank" rel="nofollow noopener noreferrer" title="Share via Email">Email</a> </p> {% endif %} {% endmacro %} diff --git a/templates/_includes/social_links.html b/templates/_includes/social_links.html index 1e66eb3b..71fe8d7b 100644 --- a/templates/_includes/social_links.html +++ b/templates/_includes/social_links.html @@ -4,108 +4,108 @@ <h4>{{ SOCIAL_PROFILE_LABEL }}</h4> <div id="sidebar-social-link"> {% for entry in SOCIAL %} {% if entry[0]|lower == 'email' %} - <a href="mailto:{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="mailto:{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Mail" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#328cff"/><path d="m250 186c-46 0-69 35-69 74 0 44 29 72 68 72 43 0 73-32 73-75 0-44-34-71-72-71zm-1-37c30 0 57 13 77 33 0-22 35-22 35 1v150c-1 10 10 16 16 9 25-25 54-128-14-187-64-56-149-47-195-15-48 33-79 107-49 175 33 76 126 99 182 76 28-12 41 26 12 39-45 19-168 17-225-82-38-68-36-185 67-248 78-46 182-33 244 32 66 69 62 197-2 246-28 23-71 1-71-32v-11c-20 20-47 32-77 32-57 0-108-51-108-108 0-58 51-110 108-110" fill="#fff"/></svg> </a> {% endif %} {% if entry[0]|lower == 'github' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="GitHub" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#1B1817"/><path fill="#fff" d="M335 499c14 0 12 17 12 17H165s-2-17 12-17c13 0 16-6 16-12l-1-50c-71 16-86-28-86-28-12-30-28-37-28-37-24-16 1-16 1-16 26 2 40 26 40 26 22 39 59 28 74 22 2-17 9-28 16-35-57-6-116-28-116-126 0-28 10-51 26-69-3-6-11-32 3-67 0 0 21-7 70 26 42-12 86-12 128 0 49-33 70-26 70-26 14 35 6 61 3 67 16 18 26 41 26 69 0 98-60 120-117 126 10 8 18 24 18 48l-1 70c0 6 3 12 16 12z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'rss' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="RSS" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f80"/><circle cx="145" cy="367" r="35" fill="#fff"/><path fill="none" stroke="#fff" stroke-width="60" d="M109 241c89 0 162 73 162 162M109 127c152 0 276 124 276 276"/></svg> </a> {% endif %} {% if entry[0]|lower == 'facebook' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Facebook" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#1877f2"/><path d="M355.6 330l11.4-74h-71v-48c0-20.2 9.9-40 41.7-40H370v-63s-29.3-5-57.3-5c-58.5 0-96.7 35.4-96.7 99.6V256h-65v74h65v182h80V330h59.6z" fill="#fff"/></svg> </a> {% endif %} {% if entry[0]|lower == 'twitter' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Twitter" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#1da1f3"/><path fill="#fff" d="M437 152a72 72 0 0 1-40 12 72 72 0 0 0 32-40 72 72 0 0 1-45 17 72 72 0 0 0-122 65 200 200 0 0 1-145-74 72 72 0 0 0 22 94 72 72 0 0 1-32-7 72 72 0 0 0 56 69 72 72 0 0 1-32 1 72 72 0 0 0 67 50 200 200 0 0 1-105 29 200 200 0 0 0 309-179 200 200 0 0 0 35-37"/></svg> </a> {% endif %} {% if entry[0]|lower == 'linkedin' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="LinkedIn" role="img" viewBox="0 0 512 512" fill="#fff"><rect width="512" height="512" rx="15%" fill="#0077b5"/><circle cx="142" cy="138" r="37"/><path stroke="#fff" stroke-width="66" d="M244 194v198M142 194v198"/><path d="M276 282c0-20 13-40 36-40 24 0 33 18 33 45v105h66V279c0-61-32-89-76-89-34 0-51 19-59 32"/></svg> </a> {% endif %} {% if entry[0]|lower == 'instagram' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Instagram" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#d43377"/><g fill="none" stroke="#fff" stroke-width="29"><rect height="296" rx="78" width="296" x="108" y="108"/><circle cx="256" cy="256" r="69"/></g><circle cx="343" cy="169" fill="#fff" r="19"/></svg> </a> {% endif %} {% if entry[0]|lower == 'reddit' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Reddit" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f40"/><g fill="#fff"><ellipse cx="256" cy="307" rx="166" ry="117"/><circle cx="106" cy="256" r="42"/><circle cx="407" cy="256" r="42"/><circle cx="375" cy="114" r="32"/></g><g stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="m256 196 23-101 73 15" stroke="#fff" stroke-width="16"/><path d="m191 359c33 25 97 26 130 0" stroke="#f40" stroke-width="13"/></g><g fill="#f40"><circle cx="191" cy="287" r="31"/><circle cx="321" cy="287" r="31"/></g></svg> </a> {% endif %} {% if entry[0]|lower == 'youtube' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="YouTube" role="img" viewBox="0 0 512 512" fill="#ed1d24"><rect width="512" height="512" rx="15%"/><path d="m427 169c-4-15-17-27-32-31-34-9-239-10-278 0-15 4-28 16-32 31-9 38-10 135 0 174 4 15 17 27 32 31 36 10 241 10 278 0 15-4 28-16 32-31 9-36 9-137 0-174" fill="#fff"/><path d="m220 203v106l93-53"/></svg> </a> {% endif %} {% if entry[0]|lower == 'gmail' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Gmail" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><rect width="362" height="272" x="75" y="120" fill="#f2f2f2" rx="8%"/><path fill="#d54c3f" d="M120 392H97c-12 0-22-10-22-23V143h45z"/><path fill="#b63524" d="M392 392h23c12 0 22-10 22-23V143h-45z"/><path fill-opacity=".05" d="M256 286L120 392V187z"/><path fill-opacity=".08" d="M82 159l235 233h75V159z"/><path stroke-linecap="round" fill="none" stroke="#de5145" stroke-width="45" d="M97 143l159 115 159-115"/><path fill="#f2f2f2" d="M415 120c-5 0-10 2-13 4L256 230 110 124c-3-2-8-4-13-4z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'stackoverflow' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Stack Overflow" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f58025"/><path stroke="#fff" stroke-width="30" fill="none" d="M293 89l90 120zm-53 50l115 97zm-41 65l136 64zm-23 69l148 31zm-6 68h150zm-45-44v105h241V297"/></svg> </a> {% endif %} {% if entry[0]|lower == 'hackernews' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Hacker News" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f60"/><path fill="#fff" d="M124 91h51l81 162 81-164h51L276 293v136h-40V293z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'gitlab' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="GitLab" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#30353e"/><path fill="#e24329" d="M84 215l43-133c2-7 12-7 14 0l115 353L371 82c2-7 12-7 14 0l43 133"/><path fill="#fc6d26" d="M256 435L84 215h100.4zm71.7-220H428L256 435l71.6-220z"/><path fill="#fca326" d="M84 215l-22 67c-2 6 0 13 6 16l188 137zm344 0l22 67c2 6 0 13-6 16L256 435z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'calendar' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg onload="w()" xmlns="http://www.w3.org/2000/svg" aria-label="Calendar" role="img" viewBox="0 0 512 512" font-family="monospace" text-anchor="middle" fill="#667777"><script type="text/ecmascript"><![CDATA[w=()=>{c=0;for (i in e={weekday:"long",month:"short",day:'numeric'}) document.getElementsByTagName('text')[c++].textContent=(new Date).toLocaleString(undefined,{[i]:e[i]})}]]></script><defs><clipPath id="c"><rect width="512" height="512" rx="15%"/></clipPath></defs><g clip-path="url(#c)"><rect width="512" height="512" fill="#dee"/><rect width="512" height="180" fill="#d34"/></g><g id="b"><circle fill="#eab" cx="384" cy="100" r="14" id="a"/><use x="43"/><use x="86"/></g><use y="43"/><text font-size="64" x="256" y="480" id="w">Sunday</text><text fill="#fff" font-size="140" x="140" y="164" id="m">FEB</text><text font-size="256" x="256" y="400" id="d">29</text></svg> </a> {% endif %} {% if entry[0]|lower == 'wire' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Wire" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><path fill="none" stroke="#000" stroke-width="19" d="M99 127v163a1 1 0 0 0 186 0V157a1 1 0 0 0-58 0v133a1 1 0 0 0 186 0V127"/></svg> </a> {% endif %} {% if entry[0]|lower == 'telegram' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Telegram" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#37aee2"/><path fill="#c8daea" d="M199 404c-11 0-10-4-13-14l-32-105 245-144"/><path fill="#a9c9dd" d="M199 404c7 0 11-4 16-8l45-43-56-34"/><path fill="#f6fbfe" d="M204 319l135 99c14 9 26 4 30-14l55-258c5-22-9-32-24-25L79 245c-21 8-21 21-4 26l83 26 190-121c9-5 17-3 11 4"/></svg> </a> {% endif %} {% if entry[0]|lower == 'spotify' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Spotify" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#3bd75f"/><circle cx="256" cy="256" fill="#fff" r="192"/><g fill="none" stroke="#3bd75f" stroke-linecap="round"><path d="m141 195c75-20 164-15 238 24" stroke-width="36"/><path d="m152 257c61-17 144-13 203 24" stroke-width="31"/><path d="m156 315c54-12 116-17 178 20" stroke-width="24"/></g></svg> </a> {% endif %} {% if entry[0]|lower == 'twitch' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Twitch" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><path d="m115 101-22 56v228h78v42h44l41-42h63l85-85v-199zm260 185-48 48h-78l-42 42v-42h-65v-204h233zm-48-100v85h-30v-85zm-78 0v85h-29v-85z" fill="#6441a4"/></svg> </a> {% endif %} {% if entry[0]|lower == 'mastodon' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Mastodon" role="img" viewBox="0 0 512 512" fill="#fff"><rect width="512" height="512" rx="15%"/><path d="m409 290c-5 24-43 50-85 56-86 11-137-6-137-6 3 13-4 54 70 52 31 0 58-7 58-7l2 27c-51 24-107 15-140 6-67-17-79-90-81-162v-59c0-74 49-96 49-96 50-24 180-22 222 0 0 0 49 22 49 96 0 0 1 55-7 93" fill="#3088d4"/><path d="m358 202v91h-35v-88c0-18-8-27-23-27-18 0-27 11-27 33v47h-34v-47c0-22-9-33-27-33-15 0-23 9-23 27v88h-35v-91c0-18 5-60 52-60 39 0 50 37 50 37s10-37 50-37c45 0 52 42 52 60"/></svg> </a> {% endif %} {% if entry[0]|lower == 'keybase' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Keybase" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><g fill="#282828"><path d="m201 80 22-31 18 10c-9 18-8 24-8 26 8-3 81 10 59 80 0 0 44 12 76 57 29 39 11 104-57 84-58-17-111-13-177 40l32-81-79 102c-3-99 10-140 79-190-23-1-41-18-40-38l2-27c1-19 17-35 37-34 1-1 36 1 36 2zm36 96c-5-6-15 1-9 7l21 25-10 8c-2 2-3 5-1 7l2 3c3 3 6 0 6 0l10-9 10 10-22 17c-2 2-2 5-1 7l9 11c2 2 5 2 7 1l22-17 6 7c5 6 14-1 9-7zm-50-70-21-2c-5 0-10 4-11 9l-1 27c0 6 4 10 9 10l16 1c-1-6 4-36 8-45z"/><circle cx="215" cy="348" r="14"/><circle cx="298" cy="348" r="14"/></g></svg> </a> {% endif %} {% if entry[0]|lower == 'goodreads' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><rect fill="#EAE6CF" height="512" rx="64" width="512"/><path d="m254.92444 336.92444c43.2889-.36 74.07112-22.01333 92.33334-64.95111h.95556v65.48889c0 4.88-.32 12.44889-.95556 22.73333-1.30222 10.64445-4.78222 22.10223-10.42666 34.36889-5.65778 11.54667-14.79112 21.38667-27.37778 29.49778-12.44889 8.84-29.81778 13.44-52.12001 13.80444-21.48444 0-39.65333-5.59555-54.52444-16.77777-15.2-11.00889-24.08001-28.87111-26.65778-53.58667h-18.89778c1.93778 32.11111 12.18667 55.02667 30.76444 68.74222 18.08889 13.16445 41.04001 19.75556 68.83556 19.75556 27.45778 0 48.87112-5.14223 64.21778-15.43111 15.18223-9.92 26.08445-22.28445 32.71556-37.08 6.62222-14.79111 10.58222-28.86667 11.86667-42.21334.98222-13.35555 1.45778-22.91555 1.45778-28.68889v-270.088875h-18.90667v59.537775h-.95556c-7.27555-21.82667-19.30666-38.333335-36.12-49.524445-16.96-11.00445-35.70222-16.51111-56.21333-16.51111-35.72001.72444-62.85779 14.52444-81.43112 41.40889-19.07111 26.697775-28.59556 59.631105-28.59556 98.782195 0 40.23557 9.04445 73.52001 27.13334 99.86224 18.27555 26.88889 45.89778 40.51111 82.90222 40.87111zm-68.34222-224.89777c14.85333-24.359995 37.63111-36.986665 68.34222-37.888885 31.50223.90666 54.83556 13.17333 70.03556 36.808885 15.18223 23.64 22.77778 52.05331 22.77778 85.25331s-7.59555 61.43112-22.77778 84.70668c-15.2 24.72444-38.53333 37.34667-70.03556 37.88889-29.72889-.54667-52.36-12.81778-67.86222-36.80889-15.67556-23.27556-23.50667-51.87112-23.50667-85.79112-.004-31.75556 7.67111-59.81332 23.02667-84.16887z" fill="#743901"/></svg> </a> {% endif %} diff --git a/templates/_includes/stat_counter.html b/templates/_includes/stat_counter.html index 58716eb9..08c9f630 100644 --- a/templates/_includes/stat_counter.html +++ b/templates/_includes/stat_counter.html @@ -11,7 +11,7 @@ "statcounter.com/counter/counter.js'></"+"script>"); </script> <noscript><div class="statcounter"><a title="web analytics" -href="http://statcounter.com/" target="_blank"><img +href="http://statcounter.com/" target="_blank" rel="nofollow noopener noreferrer"><img class="statcounter" src="//c.statcounter.com/{{ STAT_COUNTER_PROJECT }}/0/{{ STAT_COUNTER_SECURITY }}/1/" alt="web analytics"></a></div></noscript> diff --git a/templates/article.html b/templates/article.html index 9e31d187..e40d6edd 100644 --- a/templates/article.html +++ b/templates/article.html @@ -108,8 +108,7 @@ <h1>{{ title }}</h1> </aside> {% endif %} </div> - <section> - <div class="span2" style="float:right;font-size:0.9em;"> + <section id="article-sidebar" class="span2"> {% include '_includes/post_stats.html' %} {% if article.date %} <h4>Published</h4> @@ -140,7 +139,6 @@ <h4>Tags</h4> {{ mailchimp(article) }} {% from '_includes/freelists.html' import freelists with context %} {{ freelists(article) }} - </div> </section> </div> </article> diff --git a/templates/base.html b/templates/base.html index c9f032fb..887965e5 100644 --- a/templates/base.html +++ b/templates/base.html @@ -37,10 +37,7 @@ {% if 'assets' in PLUGINS %} {% include '_includes/minify_css.html' with context %} {% else %} - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/pygments.css" media="screen"> - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/tipuesearch/tipuesearch.css" media="screen"> - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/elegant.css" media="screen"> - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/admonition.css" media="screen"> + <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/elegant.prod.css" media="screen"> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/custom.css" media="screen"> {% endif %} {% endblock head_links %} diff --git a/templates/page.html b/templates/page.html index d286783a..223177e8 100644 --- a/templates/page.html +++ b/templates/page.html @@ -45,13 +45,6 @@ <h4>Contents</h4> {% from '_includes/comments.html' import comments_section with context %} {{ comments_section(page) }} </div> - <section> - <div class="span2" style="float:right;font-size:0.9em;"> - {% include '_includes/social_links.html' %} - {% include '_includes/mailchimp.html' %} - {% include '_includes/freelists.html' %} - </div> - </section> </div> </article> {% endblock content %} diff --git a/yarn.lock b/yarn.lock index 4f85d6f7..f109d3af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" @@ -18,64 +18,106 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@nodelib/fs.scandir@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb" - integrity sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg== +"@babel/runtime@^7.6.3": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" + integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== + dependencies: + regenerator-runtime "^0.13.2" + +"@commitlint/execute-rule@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-8.2.0.tgz#aefb3744e22613660adefb7ebcccaa60bd24e78d" + integrity sha512-9MBRthHaulbWTa8ReG2Oii2qc117NuvzhZdnkuKuYLhker7sUXGFcVhLanuWUKGyfyI2o9zVr/NHsNbCCsTzAA== + +"@commitlint/load@>6.1.1": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-8.2.0.tgz#9ca53a0c795e4f63d796b4d42279e856549add1a" + integrity sha512-EV6PfAY/p83QynNd1llHxJiNxKmp43g8+7dZbyfHFbsGOdokrCnoelAVZ+WGgktXwLN/uXyfkcIAxwac015UYw== + dependencies: + "@commitlint/execute-rule" "^8.2.0" + "@commitlint/resolve-extends" "^8.2.0" + babel-runtime "^6.23.0" + chalk "2.4.2" + cosmiconfig "^5.2.0" + lodash "4.17.14" + resolve-from "^5.0.0" + +"@commitlint/resolve-extends@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-8.2.0.tgz#b7f2f0c71c10f24b98a199ed11d2c14cfd7a318f" + integrity sha512-cwi0HUsDcD502HBP8huXfTkVuWmeo1Fiz3GKxNwMBBsJV4+bKa7QrtxbNpXhVuarX7QjWfNTvmW6KmFS7YK9uw== + dependencies: + "@types/node" "^12.0.2" + import-fresh "^3.0.0" + lodash "4.17.14" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - "@nodelib/fs.stat" "2.0.1" + "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.1", "@nodelib/fs.stat@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz#814f71b1167390cfcb6a6b3d9cdeb0951a192c14" - integrity sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw== +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== -"@nodelib/fs.walk@^1.2.1": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz#6a6450c5e17012abd81450eb74949a4d970d2807" - integrity sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: - "@nodelib/fs.scandir" "2.1.1" + "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@octokit/endpoint@^5.1.0": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.2.2.tgz#8fbb2e99ae0d8e6b30099f73063801e64467e761" - integrity sha512-VhKxM4CQanIUZDffExqpdpgqu3heF51qbY1wazoNtvIKXAAVoFjqLq2BOhesXkTqxXMO1Ze1XbS8DkIjUxAB+g== +"@octokit/endpoint@^5.5.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.5.1.tgz#2eea81e110ca754ff2de11c79154ccab4ae16b3f" + integrity sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg== dependencies: - deepmerge "4.0.0" + "@octokit/types" "^2.0.0" is-plain-object "^3.0.0" - universal-user-agent "^3.0.0" - url-template "^2.0.8" + universal-user-agent "^4.0.0" "@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.0.4.tgz#15e1dc22123ba4a9a4391914d80ec1e5303a23be" - integrity sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig== + version "1.2.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.0.tgz#a64d2a9d7a13555570cd79722de4a4d76371baaa" + integrity sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg== dependencies: + "@octokit/types" "^2.0.0" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.0.1.tgz#6705c9a883db0ac0f58cee717e806b6575d4a199" - integrity sha512-SHOk/APYpfrzV1RNf7Ux8SZi+vZXhMIB2dBr4TQR6ExMX8R4jcy/0gHw26HLe1dWV7Wxe9WzYyDSEC0XwnoCSQ== +"@octokit/request@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.1.tgz#3a1ace45e6f88b1be4749c5da963b3a3b4a2f120" + integrity sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg== dependencies: - "@octokit/endpoint" "^5.1.0" + "@octokit/endpoint" "^5.5.0" "@octokit/request-error" "^1.0.1" + "@octokit/types" "^2.0.0" deprecation "^2.0.0" is-plain-object "^3.0.0" node-fetch "^2.3.0" once "^1.4.0" - universal-user-agent "^3.0.0" + universal-user-agent "^4.0.0" "@octokit/rest@^16.27.0": - version "16.28.4" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.28.4.tgz#2f8ef08305033bc91256530d6a3c98eada700660" - integrity sha512-ZBsfD46t3VNkwealxm5zloVgQta8d8o4KYBR/hMAZ582IgjmSDKZdkjyv5w37IUCM3tcPZWKUT+kml9pEIC2GA== + version "16.35.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.35.0.tgz#7ccc1f802f407d5b8eb21768c6deca44e7b4c0d8" + integrity sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w== dependencies: - "@octokit/request" "^5.0.0" + "@octokit/request" "^5.2.0" "@octokit/request-error" "^1.0.2" atob-lite "^2.0.0" before-after-hook "^2.0.0" @@ -86,13 +128,19 @@ lodash.uniq "^4.5.0" octokit-pagination-methods "^1.1.0" once "^1.4.0" - universal-user-agent "^3.0.0" - url-template "^2.0.8" + universal-user-agent "^4.0.0" -"@semantic-release/changelog@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-3.0.4.tgz#8fc578b76bca5b23c3000694277c38e0fa835edd" - integrity sha512-UqEPahcZSW0IKtzOglyjeEZCN99ku6Wb/yH/iOKEBJ7Vkw0/+Fc3VRiGoXTkMfHSFUJk+4UkoQKTlYuwf61C2w== +"@octokit/types@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.0.2.tgz#0888497f5a664e28b0449731d5e88e19b2a74f90" + integrity sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ== + dependencies: + "@types/node" ">= 8" + +"@semantic-release/changelog@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-3.0.6.tgz#9d68d68bf732cbba1034c028bb6720091f783b2a" + integrity sha512-9TqPL/VarLLj6WkUqbIqFiY3nwPmLuKFHy9fe/LamAW5s4MEW/ig9zW9vzYGOUVtWdErGJ1J62E3Edkamh3xaQ== dependencies: "@semantic-release/error" "^2.1.0" aggregate-error "^3.0.0" @@ -100,13 +148,13 @@ lodash "^4.17.4" "@semantic-release/commit-analyzer@^6.1.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.2.0.tgz#5cd25ce67ba9ba5b46e47457505e63629e186695" - integrity sha512-oUtPydYcbtJsEY6WCPi4wynTgRecK5zCkKaGmHi+9Xl7d6jGf7LomnJCg++6dNF1tyavrbGMSdXTCPH6Dx9LbA== + version "6.3.3" + resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.3.tgz#885f7e46e2f0aef23a23be0904dbf18d6ece45ca" + integrity sha512-Pyv1ZL2u5AIOY4YbxFCAB5J1PEh5yON8ylbfiPiriDGGW6Uu1U3Y8lysMtWu+FUD5x7tSnyIzhqx0+fxPxqbgw== dependencies: conventional-changelog-angular "^5.0.0" conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.0" + conventional-commits-parser "^3.0.7" debug "^4.0.0" import-from "^3.0.0" lodash "^4.17.4" @@ -116,28 +164,28 @@ resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" integrity sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg== -"@semantic-release/exec@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@semantic-release/exec/-/exec-3.3.5.tgz#19fa9d6852ff77a70966a972510c4ad0c4ae3147" - integrity sha512-P4/IUL5SY6l9av0VCZEc1GjKG0LJshigvvpL/gxIUCTgGNahi+ZtP2Um9RXOc/3elekg1SDEXFUKlTEu2+JTyQ== +"@semantic-release/exec@^3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@semantic-release/exec/-/exec-3.3.8.tgz#4e759818c47bdb36e0199d8fad0f5343421f6d8f" + integrity sha512-GH1v5BwXRIUAnvrXjil+R+9DjI+ELgk2NMdQUAnp2/qZ6YItZt6KI8HrY3zAFDrG0YGaOwC9XxuUNKeldsOK7A== dependencies: "@semantic-release/error" "^2.1.0" aggregate-error "^3.0.0" debug "^4.0.0" - execa "^1.0.0" + execa "^3.2.0" lodash "^4.17.4" - parse-json "^4.0.0" + parse-json "^5.0.0" -"@semantic-release/git@^7.0.16": - version "7.0.16" - resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-7.0.16.tgz#19921d2fdc75d712ae1706330dba8ebec8ced52d" - integrity sha512-Bw/npxTVTeFPnQZmuczWRGRdxqJpWOOFZENx38ykyp42InwDFm4n72bfcCwmP/J4WqkPmMR4p+IracWruz/RUw== +"@semantic-release/git@^7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-7.0.18.tgz#f37c076bc094762cb343dab49ab893d31de961e8" + integrity sha512-VwnsGUXpNdvPcsq05BQyLBZxGUlEiJCMKNi8ttLvZZAhjI1mAp9dwypOeyxSJ5eFQ+iGMBLdoKF1LL0pmA/d0A== dependencies: "@semantic-release/error" "^2.1.0" aggregate-error "^3.0.0" debug "^4.0.0" dir-glob "^3.0.0" - execa "^1.0.0" + execa "^3.2.0" fs-extra "^8.0.0" globby "^10.0.0" lodash "^4.17.4" @@ -145,9 +193,9 @@ p-reduce "^2.0.0" "@semantic-release/github@^5.1.0": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.4.2.tgz#1dbde876228c03ff9a000893a18aff5c6ab2cd61" - integrity sha512-8gkOa5tED/+sjAPwZRYsLaGr6VuAGLZinSvLsuF9/l4qLeYV8gvj7fhjFJepGu6y31t7PR2J9SWzmsqsBAyyKQ== + version "5.5.5" + resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.5.5.tgz#4666367f16d8ad91fd1d3c71a7238498de14ec38" + integrity sha512-Wo9OIULMRydbq+HpFh9yiLvra1XyEULPro9Tp4T5MQJ0WZyAQ3YQm74IdT8Pe/UmVDq2nfpT1oHrWkwOc4loHg== dependencies: "@octokit/rest" "^16.27.0" "@semantic-release/error" "^2.2.0" @@ -158,36 +206,36 @@ fs-extra "^8.0.0" globby "^10.0.0" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - issue-parser "^4.0.0" + https-proxy-agent "^3.0.0" + issue-parser "^5.0.0" lodash "^4.17.4" mime "^2.4.3" p-filter "^2.0.0" p-retry "^4.0.0" - parse-github-url "^1.0.1" url-join "^4.0.0" "@semantic-release/npm@^5.0.5": - version "5.1.13" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.1.13.tgz#7b06d62b4d9c8336ae5a5c85eede26fb89f19e3b" - integrity sha512-pONvpoEtGH1nd6Wj3SryACNJ/YXXsvSSekE9Pdk6mnaRv7lGhXdaeJJr6Lr4L8WK98oZv4aJOr68vTac2Oc+dA== + version "5.3.4" + resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.3.4.tgz#2998cd9455aaedf278334d4a5b56f8e0b715919d" + integrity sha512-XjITNRA/oOpJ7BfHk/WaOHs1WniYBszTde/bwADjjk1Luacpxg87jbDQVVt/oA3Zlx+MelxACRIEuRiPC5gu8g== dependencies: "@semantic-release/error" "^2.2.0" aggregate-error "^3.0.0" - execa "^1.0.0" + execa "^3.2.0" fs-extra "^8.0.0" - lodash "^4.17.4" + lodash "^4.17.15" nerf-dart "^1.0.0" normalize-url "^4.0.0" - npm "^6.8.0" + npm "^6.10.3" rc "^1.2.8" read-pkg "^5.0.0" registry-auth-token "^4.0.0" + tempy "^0.3.0" "@semantic-release/release-notes-generator@^7.1.2": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.2.1.tgz#2c0c340e7be2a3d27c28cb869b6737a70f2862fe" - integrity sha512-TdlYgYH6amhE80i9L9HPcTwYzk4Rma7qM1g7XJEEfip7dNXWgmrBeibN4DJmTg/qrUFDd4GD86lFDcYXNZDNow== + version "7.3.5" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.3.5.tgz#ed0941d5b594f18fa1d2667493c03e811f97c0ff" + integrity sha512-LGjgPBGjjmjap/76O0Md3wc04Y7IlLnzZceLsAkcYRwGQdRPTTFUJKqDQTuieWTs7zfHzQoZqsqPfFxEN+g2+Q== dependencies: conventional-changelog-angular "^5.0.0" conventional-changelog-writer "^4.0.0" @@ -198,7 +246,12 @@ import-from "^3.0.0" into-stream "^5.0.0" lodash "^4.17.4" - read-pkg-up "^6.0.0" + read-pkg-up "^7.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/events@*": version "3.0.0" @@ -219,16 +272,26 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*": - version "12.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.2.tgz#a5ccec6abb6060d5f20d256fb03ed743e9774999" - integrity sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== +"@types/node@*", "@types/node@>= 8", "@types/node@^12.0.2": + version "12.12.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.14.tgz#1c1d6e3c75dba466e0326948d56e8bd72a1903d2" + integrity sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA== "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + "@types/retry@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -282,12 +345,12 @@ agentkeepalive@^3.4.1: humanize-ms "^1.2.1" aggregate-error@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.0.tgz#5b5a3c95e9095f311c9ab16c19fb4f3527cd3f79" - integrity sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== dependencies: clean-stack "^2.0.0" - indent-string "^3.2.0" + indent-string "^4.0.0" ajv@^6.5.5: version "6.10.2" @@ -299,6 +362,11 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -313,7 +381,7 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" -ansi-escapes@^3.1.0: +ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -340,18 +408,31 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172" + integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -495,11 +576,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.1.0.tgz#46603d5e28e79bfd02b046fcc1d77c6820bd8e98" - integrity sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -558,9 +634,9 @@ async-each@^1.0.1: integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-settle@^1.0.0: version "1.0.0" @@ -589,15 +665,28 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^9.6.1: + version "9.7.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" + integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== + dependencies: + browserslist "^4.8.0" + caniuse-lite "^1.0.30001012" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.23" + postcss-value-parser "^4.0.2" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" + integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== axios@0.19.0: version "0.19.0" @@ -1001,7 +1090,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -1122,15 +1211,15 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -bin-links@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" - integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg== +bin-links@^1.1.2, bin-links@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.3.tgz#702fd59552703727313bc624bdbc4c0d3431c2ca" + integrity sha512-TEwmH4PHU/D009stP+fkkazMJgkBNCv60z01lQ/Mn8E6+ThHoD03svMnBVuCowwXo2nP2qKyKZxKxp58OHRzxw== dependencies: - bluebird "^3.5.0" - cmd-shim "^2.0.2" - gentle-fs "^2.0.0" - graceful-fs "^4.1.11" + bluebird "^3.5.3" + cmd-shim "^3.0.0" + gentle-fs "^2.0.1" + graceful-fs "^4.1.15" write-file-atomic "^2.3.0" binary-extensions@^1.0.0: @@ -1143,15 +1232,20 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= bottleneck@^2.18.1: - version "2.19.2" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.2.tgz#a84d2709288ef6527aee3d228067e180493b657a" - integrity sha512-19LN3Gz1m26S/M4aFyaGfMLIUoVsVDSW3H2anKvR/ijh2c6/3lRzhXn3xUPnPlqVsEwfvhMbMoqz9BpawJcXsg== + version "2.19.5" + resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" + integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== boxen@^1.2.1: version "1.3.0" @@ -1255,6 +1349,15 @@ browser-sync@^2.26.7: ua-parser-js "0.7.17" yargs "6.4.0" +browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.0.tgz#6f06b0f974a7cc3a84babc2ccc56493668e3c789" + integrity sha512-HYnxc/oLRWvJ3TsGegR0SRL/UDnknGq2s/a8dYYEO+kOQ9m9apKoS5oiathLKZdh/e9uE+/J3j92qPlGD/vTqA== + dependencies: + caniuse-lite "^1.0.30001012" + electron-to-chromium "^1.3.317" + node-releases "^1.1.41" + bs-recipes@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" @@ -1300,16 +1403,17 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.3.2, cacache@^11.3.3: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" glob "^7.1.4" graceful-fs "^4.1.15" + infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" @@ -1335,6 +1439,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cachedir@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" + integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ== + call-limit@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4" @@ -1364,6 +1473,11 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" @@ -1388,6 +1502,21 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001012: + version "1.0.30001012" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001012.tgz#653ec635e815b9e0fb801890923b0c2079eb34ec" + integrity sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg== + capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" @@ -1406,6 +1535,15 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -1417,19 +1555,15 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^2.0.0, chokidar@^2.0.4: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1445,10 +1579,10 @@ chokidar@^2.0.0, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== ci-info@^1.5.0: version "1.6.0" @@ -1478,9 +1612,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-stack@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.1.0.tgz#9e7fec7f3f8340a2ab4f127c80273085e8fbbdd0" - integrity sha512-uQWrpRm+iZZUCAp7ZZJQbd4Za9I3AjR/3YTjmcnAtkauaIm/T5CT6U8zVI6e60T6OANqBFAzuR9/HB3NzuZCRA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^1.0.0: version "1.0.0" @@ -1495,6 +1629,13 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-table3@^0.5.0, cli-table3@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" @@ -1512,6 +1653,11 @@ cli-table@^0.3.1: dependencies: colors "1.0.3" +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -1530,14 +1676,14 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" clone-buffer@^1.0.0: version "1.0.0" @@ -1568,14 +1714,23 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -cmd-shim@^2.0.2, cmd-shim@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" - integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= +cmd-shim@^3.0.0, cmd-shim@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" + integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA== dependencies: graceful-fs "^4.1.2" mkdirp "~0.5.0" +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1598,32 +1753,60 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== columnify@~1.5.4: version "1.5.4" @@ -1640,10 +1823,31 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.2.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.2.0, commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commitizen@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.0.3.tgz#c19a4213257d0525b85139e2f36db7cc3b4f6dae" + integrity sha512-lxu0F/Iq4dudoFeIl5pY3h3CQJzkmQuh3ygnaOvqhAD8Wu2pYBI17ofqSuPHNsBTEOh1r1AVa9kR4Hp0FAHKcQ== + dependencies: + cachedir "2.2.0" + cz-conventional-changelog "3.0.1" + dedent "0.7.0" + detect-indent "6.0.0" + find-node-modules "2.0.0" + find-root "1.1.0" + fs-extra "8.1.0" + glob "7.1.4" + inquirer "6.5.0" + is-utf8 "^0.2.1" + lodash "4.17.15" + minimist "1.2.0" + shelljs "0.7.6" + strip-bom "4.0.0" + strip-json-comments "3.0.1" compare-func@^1.3.1: version "1.3.2" @@ -1688,6 +1892,13 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-with-sourcemaps@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + config-chain@^1.1.12: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" @@ -1729,59 +1940,59 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= conventional-changelog-angular@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" - integrity sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA== + version "5.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" + integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA== dependencies: compare-func "^1.3.1" q "^1.5.1" conventional-changelog-writer@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz#916a2b302d0bb5ef18efd236a034c13fb273cde1" - integrity sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA== + version "4.0.11" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" + integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== dependencies: compare-func "^1.3.1" - conventional-commits-filter "^2.0.1" + conventional-commits-filter "^2.0.2" dateformat "^3.0.0" - handlebars "^4.1.0" + handlebars "^4.4.0" json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" - semver "^5.5.0" + lodash "^4.17.15" + meow "^5.0.0" + semver "^6.0.0" split "^1.0.0" - through2 "^2.0.0" + through2 "^3.0.0" conventional-commit-types@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.1.1.tgz#352eb53f56fbc7c1a6c1ba059c2b6670c90b2a8a" - integrity sha512-0Ts+fEdmjqYDOQ1yZ+LNgdSPO335XZw9qC10M7CxtLP3nIMGmeMhmkM8Taffa4+MXN13bRPlp0CtH+QfOzKTzw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz#bc3c8ebba0a9e4b3ecc548f1d0674e251ab8be22" + integrity sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ== -conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3" - integrity sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A== +conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" + integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== dependencies: - is-subset "^0.1.1" + lodash.ismatch "^4.4.0" modify-values "^1.0.0" -conventional-commits-parser@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#fe1c49753df3f98edb2285a5e485e11ffa7f2e4c" - integrity sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg== +conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" + integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== dependencies: JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^4.0.0" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^5.0.0" split2 "^2.0.0" - through2 "^2.0.0" + through2 "^3.0.0" trim-off-newlines "^1.0.0" convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -1816,16 +2027,16 @@ copy-props@^2.0.1: is-plain-object "^2.0.1" core-js@^2.4.0, core-js@^2.5.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + version "2.6.10" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -1835,6 +2046,17 @@ cosmiconfig@^5.0.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -1862,11 +2084,173 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -1874,23 +2258,41 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cz-conventional-changelog@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz#2f4bc7390e3244e4df293e6ba351e4c740a7c764" - integrity sha1-L0vHOQ4yROTfKT5ro1Hkx0Cnx2Q= +cz-conventional-changelog@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.0.1.tgz#b1f207ae050355e7ada65aad5c52e9de3d0c8e5b" + integrity sha512-7KASIwB8/ClEyCRvQrCPbN7WkQnUSjSSVNyPM+gDJ0jskLi8h8N2hrdpyeCk7fIqKMRzziqVSOBTB8yyLTMHGQ== + dependencies: + chalk "^2.4.1" + conventional-commit-types "^2.0.0" + lodash.map "^4.5.1" + longest "^2.0.1" + right-pad "^1.0.1" + word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" + +cz-conventional-changelog@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.0.2.tgz#f6b9a406177ab07f9a3a087e06103a045b376260" + integrity sha512-MPxERbtQyVp0nnpCBiwzKGKmMBSswmCV3Jpef3Axqd5f3c/SOc6VFiSUlclOyZXBn3Xtf4snzt4O15hBTRb2gA== dependencies: + chalk "^2.4.1" + commitizen "^4.0.3" conventional-commit-types "^2.0.0" lodash.map "^4.5.1" - longest "^1.0.1" + longest "^2.0.1" right-pad "^1.0.1" word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" -d@1: +d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== @@ -1924,7 +2326,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@4.1.1, debug@^4.0.0: +debug@4.1.1, debug@^4.0.0, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1961,16 +2363,16 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +dedent@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.0.0.tgz#3e3110ca29205f120d7cb064960a39c3d2087c09" - integrity sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww== - default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" @@ -1990,7 +2392,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -2049,6 +2451,11 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-indent@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -2091,6 +2498,32 @@ dir-glob@^3.0.0, dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -2098,7 +2531,7 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" -dot-prop@^4.1.0: +dot-prop@^4.1.0, dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== @@ -2172,10 +2605,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +electron-to-chromium@^1.3.317: + version "1.3.319" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.319.tgz#b7d59a93b6959fcf50a526f50ef637d045ebcb19" + integrity sha512-t/lYNZPwS9jLJ9SBLGd6ERYtCtsYPAXzsE1VYLshrUWpQCTAswO1pERZV4iOZipW2uVsGQrJtm2iWiYVp1zTZw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" @@ -2190,9 +2628,9 @@ encoding@^0.1.11: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -2213,15 +2651,15 @@ engine.io-client@~3.2.0: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-client@~3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.3.2.tgz#04e068798d75beda14375a264bb3d742d7bc33aa" - integrity sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ== +engine.io-client@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" + integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" has-cors "1.1.0" indexof "0.0.1" parseqs "0.0.5" @@ -2241,6 +2679,17 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.5" has-binary2 "~1.0.2" +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + engine.io@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" @@ -2253,12 +2702,17 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + env-ci@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.1.1.tgz#b8438fc7258a0dc7a4f4c4816de730767946a718" - integrity sha512-eTgpkALDeYRGNhYM2fO9LKsWDifoUgKL7hxpPZqFMP2IU7f+r89DtKqCmk3yQB/jxS8CmZTfKnWO5TiIDFs9Hw== + version "4.5.1" + resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.5.1.tgz#2ef014dcb974728b46d1244e491e9e6ccc1923ef" + integrity sha512-Xtmr+ordf8POu3NcNzx3eOa2zHyfD4h3fPHX5fLklkWa86ck35n1c9oZmyUnVPUl9zHnpZWdWtCUBPSWEagjCQ== dependencies: - execa "^1.0.0" + execa "^3.2.0" java-properties "^1.0.0" env-paths@^1.0.0: @@ -2285,35 +2739,39 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +es-abstract@^1.12.0, es-abstract@^1.5.1: + version "1.16.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" + integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" + has-symbols "^1.0.1" is-callable "^1.1.4" is-regex "^1.0.4" - object-keys "^1.0.12" + object-inspect "^1.7.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.1.0" + string.prototype.trimright "^2.1.0" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.50" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" - integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" + es6-symbol "~3.1.3" + next-tick "~1.0.0" es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" @@ -2336,13 +2794,13 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: - d "1" - es5-ext "~0.10.14" + d "^1.0.1" + ext "^1.1.2" es6-weak-map@^2.0.1: version "2.0.3" @@ -2370,9 +2828,9 @@ esprima@^4.0.0, esprima@~4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@1.8.1, etag@^1.8.1, etag@~1.8.1: version "1.8.1" @@ -2410,6 +2868,22 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2430,6 +2904,13 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2450,6 +2931,15 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -2490,15 +2980,14 @@ fast-deep-equal@^2.0.1: integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-glob@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.0.4.tgz#d484a41005cb6faeb399b951fd1bd70ddaebb602" - integrity sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" + integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== dependencies: - "@nodelib/fs.stat" "^2.0.1" - "@nodelib/fs.walk" "^1.2.1" - glob-parent "^5.0.0" - is-glob "^4.0.1" - merge2 "^1.2.3" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" micromatch "^4.0.2" fast-json-stable-stringify@^2.0.0: @@ -2526,9 +3015,9 @@ figures@^2.0.0: escape-string-regexp "^1.0.5" figures@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" - integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== dependencies: escape-string-regexp "^1.0.5" @@ -2562,11 +3051,24 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" +find-node-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" + integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== + dependencies: + findup-sync "^3.0.0" + merge "^1.2.1" + find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== +find-root@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2589,7 +3091,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2598,11 +3100,10 @@ find-up@^4.0.0: path-exists "^4.0.0" find-versions@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.1.0.tgz#10161f29cf3eb4350dec10a29bdde75bff0df32d" - integrity sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== dependencies: - array-uniq "^2.1.0" semver-regex "^2.0.0" findup-sync@^2.0.0: @@ -2641,6 +3142,11 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -2719,7 +3225,7 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-extra@^8.0.0: +fs-extra@8.1.0, fs-extra@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -2729,11 +3235,11 @@ fs-extra@^8.0.0: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" - integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - minipass "^2.2.1" + minipass "^2.6.0" fs-mkdirp-stream@^1.0.0: version "1.0.0" @@ -2799,15 +3305,17 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== -gentle-fs@^2.0.0, gentle-fs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" - integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew== +gentle-fs@^2.0.1, gentle-fs@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.2.1.tgz#1f38df4b4ead685566257201fd526de401ebb215" + integrity sha512-e7dRgUM5fsS+7wm2oggZpgcRx6sEvJHXujPH5RzgQ1ziQY4+HuVBYsnUzJwJ+C7mjOJN27DjiFy1TaL+TNltow== dependencies: aproba "^1.1.2" + chownr "^1.1.2" fs-vacuum "^1.2.10" graceful-fs "^4.1.11" iferr "^0.1.5" + infer-owner "^1.0.4" mkdirp "^0.5.1" path-is-inside "^1.0.2" read-cmd-shim "^1.0.1" @@ -2874,10 +3382,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== +glob-parent@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" @@ -2909,7 +3417,7 @@ glob-watcher@^5.0.3: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: +glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -2921,7 +3429,19 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0, global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= @@ -2991,10 +3511,10 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== gulp-cli@^2.2.0: version "2.2.0" @@ -3020,6 +3540,26 @@ gulp-cli@^2.2.0: v8flags "^3.0.1" yargs "^7.1.0" +gulp-concat@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-postcss@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-8.0.0.tgz#8d3772cd4d27bca55ec8cb4c8e576e3bde4dc550" + integrity sha512-Wtl6vH7a+8IS/fU5W9IbOpcaLqKxd5L1DUOzaPmlnCbX1CrG0aWdwVnC3Spn8th0m8D59YbysV5zPUe1n/GJYg== + dependencies: + fancy-log "^1.3.2" + plugin-error "^1.0.1" + postcss "^7.0.2" + postcss-load-config "^2.0.0" + vinyl-sourcemaps-apply "^0.2.1" + gulp@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" @@ -3037,10 +3577,10 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== +handlebars@^4.4.0: + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -3090,10 +3630,10 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-unicode@^2.0.0, has-unicode@~2.0.1: version "2.0.1" @@ -3131,13 +3671,18 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3158,10 +3703,32 @@ hook-std@^2.0.0: resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + +hosted-git-info@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz#8b7e3bd114b59b51786f8bade0f39ddc80275a97" + integrity sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw== + dependencies: + lru-cache "^5.1.1" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== http-cache-semantics@^3.8.1: version "3.8.1" @@ -3214,14 +3781,27 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" - integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +https-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" + integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== dependencies: agent-base "^4.3.0" debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -3229,7 +3809,7 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3247,22 +3827,29 @@ iferr@^1.0.2: integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" ignore@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" - integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== immutable@^3: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -3271,6 +3858,21 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" @@ -3288,16 +3890,31 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0, indent-string@^3.2.0: +indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3335,18 +3952,37 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" -interpret@^1.1.0: +inquirer@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" + integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +interpret@^1.0.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== into-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.0.tgz#b05f37d8fed05c06a0b43b556d74e53e5af23878" - integrity sha512-cbDhb8qlxKMxPBk/QxTtYg1DQ4CwXmadu7quG3B7nrJsgSncEreF2kwWKZFdnjc/lSNNIkFPsjI7SM0Cx/QXPw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8" + integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA== dependencies: from2 "^2.3.0" - p-is-promise "^2.0.0" + p-is-promise "^3.0.0" invariant@^2.2.2: version "2.2.4" @@ -3370,11 +4006,16 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.5: +ip@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -3402,6 +4043,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -3415,9 +4061,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== is-callable@^1.1.4: version "1.1.4" @@ -3432,12 +4078,24 @@ is-ci@^1.0.10: ci-info "^1.5.0" is-cidr@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.0.0.tgz#1acf35c9e881063cd5f696d48959b30fed3eed56" - integrity sha512-8Xnnbjsb0x462VoYiGlhEi+drY8SFwrHiSYuzc/CEwco55vkehTaxAyIjEdpi3EMvLPPJAJi9FlzP+h+03gp0Q== + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f" + integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g== dependencies: cidr-regex "^2.0.10" +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -3516,6 +4174,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -3603,6 +4266,11 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -3622,29 +4290,41 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-retry-allowed@^1.0.0: +is-resolvable@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" -is-text-path@^1.0.0: +is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= @@ -3725,10 +4405,10 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -issue-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-4.0.0.tgz#397817323abbb70c7c29cea2ff62448cf83b686c" - integrity sha512-1RmmAXHl5+cqTZ9dRr861xWy0Gkc9TWTEklgjKv+nhlB1dY1NmGBV8b20jTWRL5cPGpOIXkz84kEcDBM8Nc0cw== +issue-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-5.0.0.tgz#0e22a40bc275b6c7da6ddf4a9b979e8ca9faf0d4" + integrity sha512-q/16W7EPHRL0FKVz9NU++TUsoygXGj6JOi88oulyAcQG+IEZ0T6teVdE+VLbe19OfL/tbV8Wi3Dfo0HedeHW0Q== dependencies: lodash.capitalize "^4.2.1" lodash.escaperegexp "^4.1.2" @@ -3910,10 +4590,10 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" -libcipm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.0.tgz#30053bee09b0b1f4df855137d631a6d27f5d59de" - integrity sha512-5IIamvUIqWYjfNscYdirKisXyaTMw7Mf7yuGrjHH2isz7xBZDCUOIdujZxNk2g6lBBs8AGxYW6lHpNnnt92bww== +libcipm@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz#76cd675c98bdaae64db88b782b01b804b6d02c8a" + integrity sha512-fTq33otU3PNXxxCTCYCYe7V96o59v/o7bvtspmbORXpgFk+wcWrGf5x6tBgui5gCed/45/wtPomBsZBYm5KbIw== dependencies: bin-links "^1.1.2" bluebird "^3.5.1" @@ -3931,41 +4611,41 @@ libcipm@^4.0.0: rimraf "^2.6.2" worker-farm "^1.6.0" -libnpm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.0.tgz#9a4b5e1b1d4af68c168c9cbfbc4364529cb0a8dc" - integrity sha512-H8N3GiytH6rtrBSIyWIL9/kOK5eGp3y8uKvoB8m/fR0UUzRpmJasTkQ4c/E/wwI5adL9l49rf/K7cUctcTHmRw== +libnpm@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2" + integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ== dependencies: bin-links "^1.1.2" bluebird "^3.5.3" find-npm-prefix "^1.0.2" - libnpmaccess "^3.0.1" + libnpmaccess "^3.0.2" libnpmconfig "^1.2.1" - libnpmhook "^5.0.2" - libnpmorg "^1.0.0" - libnpmpublish "^1.1.0" - libnpmsearch "^2.0.0" - libnpmteam "^1.0.1" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmpublish "^1.1.2" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" lock-verify "^2.0.2" npm-lifecycle "^3.0.0" npm-logical-tree "^1.2.1" npm-package-arg "^6.1.0" - npm-profile "^4.0.1" - npm-registry-fetch "^3.8.0" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.0" npmlog "^4.1.2" - pacote "^9.2.3" + pacote "^9.5.3" read-package-json "^2.0.13" stringify-package "^1.0.0" -libnpmaccess@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" - integrity sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA== +libnpmaccess@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" + integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== dependencies: aproba "^2.0.0" get-stream "^4.0.0" npm-package-arg "^6.1.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" libnpmconfig@^1.2.1: version "1.2.1" @@ -3976,30 +4656,30 @@ libnpmconfig@^1.2.1: find-up "^3.0.0" ini "^1.3.5" -libnpmhook@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.2.tgz#d12817b0fb893f36f1d5be20017f2aea25825d94" - integrity sha512-vLenmdFWhRfnnZiNFPNMog6CK7Ujofy2TWiM2CrpZUjBRIhHkJeDaAbJdYCT6W4lcHtyrJR8yXW8KFyq6UAp1g== +libnpmhook@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7" + integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -libnpmorg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.0.tgz#979b868c48ba28c5820e3bb9d9e73c883c16a232" - integrity sha512-o+4eVJBoDGMgRwh2lJY0a8pRV2c/tQM/SxlqXezjcAg26Qe9jigYVs+Xk0vvlYDWCDhP0g74J8UwWeAgsB7gGw== +libnpmorg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087" + integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -libnpmpublish@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.1.tgz#ff0c6bb0b4ad2bda2ad1f5fba6760a4af37125f0" - integrity sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g== +libnpmpublish@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" + integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== dependencies: aproba "^2.0.0" figgy-pudding "^3.5.1" @@ -4007,28 +4687,28 @@ libnpmpublish@^1.1.0: lodash.clonedeep "^4.5.0" normalize-package-data "^2.4.0" npm-package-arg "^6.1.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" semver "^5.5.1" ssri "^6.0.1" -libnpmsearch@^2.0.0, libnpmsearch@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.1.tgz#eccc73a8fbf267d765d18082b85daa2512501f96" - integrity sha512-K0yXyut9MHHCAH+DOiglQCpmBKPZXSUu76+BE2maSEfQN15OwNaA/Aiioe9lRFlVFOr7WcuJCY+VSl+gLi9NTA== +libnpmsearch@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf" + integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg== dependencies: figgy-pudding "^3.5.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -libnpmteam@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.1.tgz#ff704b1b6c06ea674b3b1101ac3e305f5114f213" - integrity sha512-gDdrflKFCX7TNwOMX1snWojCoDE5LoRWcfOC0C/fqF7mBq8Uz9zWAX4B2RllYETNO7pBupBaSyBDkTAC15cAMg== +libnpmteam@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820" + integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" libnpx@^10.2.0: version "10.2.0" @@ -4150,6 +4830,11 @@ lodash._createset@~4.0.0: resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" @@ -4180,6 +4865,11 @@ lodash.isfinite@^3.3.2: resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -4195,11 +4885,31 @@ lodash.map@^4.5.1: resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -4225,20 +4935,20 @@ lodash.without@~4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@^4.17.10: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.4, lodash@^4.2.1: +lodash@4.17.14: version "4.17.14" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= +lodash@4.17.15, lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +longest@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" + integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= loose-envify@^1.0.0: version "1.4.0" @@ -4287,16 +4997,16 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-fetch-happen@^4.0.1, make-fetch-happen@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" - integrity sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== dependencies: agentkeepalive "^3.4.1" - cacache "^11.3.3" + cacache "^12.0.0" http-cache-semantics "^3.8.1" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" + https-proxy-agent "^2.2.3" lru-cache "^5.1.1" mississippi "^3.0.0" node-fetch-npm "^2.0.2" @@ -4341,9 +5051,9 @@ map-visit@^1.0.0: object-visit "^1.0.0" marked-terminal@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.2.0.tgz#3fc91d54569332bcf096292af178d82219000474" - integrity sha512-Yr1yVS0BbDG55vx7be1D0mdv+jGs9AW563o/Tt/7FTsId2J0yqhrTeXAqq/Q0DyyXltIn6CSxzesQuFqXgafjQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" + integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== dependencies: ansi-escapes "^3.1.0" cardinal "^2.1.1" @@ -4352,10 +5062,10 @@ marked-terminal@^3.2.0: node-emoji "^1.4.1" supports-hyperlinks "^1.0.1" -marked@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.3.tgz#79babad78af638ba4d522a9e715cdfdd2429e946" - integrity sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ== +marked@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== matchdep@^2.0.0: version "2.0.0" @@ -4367,18 +5077,16 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + meant@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -4388,25 +5096,35 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== dependencies: camelcase-keys "^4.0.0" decamelize-keys "^1.0.0" loud-rejection "^1.0.0" - minimist "^1.1.3" minimist-options "^3.0.1" normalize-package-data "^2.3.4" read-pkg-up "^3.0.0" redent "^2.0.0" trim-newlines "^2.0.0" + yargs-parser "^10.0.0" -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +merge@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -4435,17 +5153,17 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.42.0: + version "1.42.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" + integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.25" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" + integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== dependencies: - mime-db "1.40.0" + mime-db "1.42.0" mime@1.4.1: version "1.4.1" @@ -4462,7 +5180,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -4487,7 +5205,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -4497,20 +5215,20 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -4529,9 +5247,9 @@ mississippi@^3.0.0: through2 "^2.0.0" mitt@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" - integrity sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== mixin-deep@^1.2.0: version "1.3.2" @@ -4580,6 +5298,11 @@ mute-stdout@^1.0.0: resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -4631,7 +5354,7 @@ nerf-dart@^1.0.0: resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" integrity sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo= -next-tick@^1.0.0: +next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -4662,10 +5385,10 @@ node-fetch@^2.3.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-gyp@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.2.tgz#422f7b7550d2c37952ac184e2a5a2d9fe49a8b77" - integrity sha512-sNcb5O7eJ9XiNAhWZ/UE2bWsBJn3Jb7rayMqMP4wjenlr1DwzZxUmbtmIrl04EU0p5fN2rU9WIDV+u0EbsI8oQ== +node-gyp@^5.0.2, node-gyp@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.5.tgz#f6cf1da246eb8c42b097d7cd4d6c3ce23a4163af" + integrity sha512-WABl9s4/mqQdZneZHVWVG4TVr6QQJZUC6PAx47ITSk9lreZ1n+7Z9mMAIbA3vnO4J9W20P7LhCxtzfWsAD/KDw== dependencies: env-paths "^1.0.0" glob "^7.0.3" @@ -4676,7 +5399,7 @@ node-gyp@^5.0.2: request "^2.87.0" rimraf "2" semver "~5.3.0" - tar "^4.4.8" + tar "^4.4.12" which "1" node-pre-gyp@^0.12.0: @@ -4695,6 +5418,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.41: + version "1.1.41" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.41.tgz#57674a82a37f812d18e3b26118aefaf53a00afed" + integrity sha512-+IctMa7wIs8Cfsa8iYzeaLTFwv5Y4r5jZud+4AnfymzeEXKBCavFX0KBgzVaPVqf0ywa6PrO8/b+bPqdwjGBSg== + dependencies: + semver "^6.3.0" + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -4732,10 +5462,20 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + normalize-url@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" - integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== now-and-later@^2.0.0: version "2.0.1" @@ -4762,17 +5502,17 @@ npm-cache-filename@~1.0.2: resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= -npm-install-checks@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" - integrity sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc= +npm-install-checks@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9" + integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg== dependencies: semver "^2.3.0 || 3.x || 4 || 5" -npm-lifecycle@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.0.0.tgz#a3018cb8f1bc5e63a7f85d79f58f7701b2699ac2" - integrity sha512-/x/8zxo5Tn3qWj1eSUXgyr2pLBnEoFkpJQE/8pRwrEpJI4irZM0+YSp7W8NGDLzN6SaBOGOPaJV9O2dhY1IWwQ== +npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c" + integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A== dependencies: byline "^5.0.0" graceful-fs "^4.1.15" @@ -4788,53 +5528,54 @@ npm-logical-tree@^1.2.1: resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== dependencies: - hosted-git-info "^2.6.0" + hosted-git-info "^2.7.1" osenv "^0.1.5" - semver "^5.5.0" + semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" - integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== +npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.6: + version "1.4.6" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" + integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-pick-manifest@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" - integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== +npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== dependencies: figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" semver "^5.4.1" -npm-profile@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.1.tgz#d350f7a5e6b60691c7168fbb8392c3603583f5aa" - integrity sha512-NQ1I/1Q7YRtHZXkcuU1/IyHeLy6pd+ScKg4+DQHdfsm769TGq6HPrkbuNJVJS4zwE+0mvvmeULzQdWn2L2EsVA== +npm-profile@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.2.tgz#8272a71c19634d0dce9c35a5daf8ee589cbb0f52" + integrity sha512-VRsC04pvRH+9cF+PoVh2nTmJjiG21yu59IHpsBpkxk+jaGAV8lxx96G4SDc0jOHAkfWLXbc6kIph3dGAuRnotQ== dependencies: aproba "^1.1.2 || 2" figgy-pudding "^3.4.1" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -npm-registry-fetch@^3.8.0, npm-registry-fetch@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz#00ff6e4e35d3f75a172b332440b53e93f4cb67de" - integrity sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q== +npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" + integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" figgy-pudding "^3.4.1" lru-cache "^5.1.1" - make-fetch-happen "^4.0.2" + make-fetch-happen "^5.0.0" npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" npm-run-path@^2.0.0: version "2.0.2" @@ -4843,15 +5584,22 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.0.tgz#d644ec1bd0569187d2a52909971023a0a58e8438" + integrity sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ== + dependencies: + path-key "^3.0.0" + npm-user-validate@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= -npm@^6.8.0: - version "6.10.1" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.10.1.tgz#2ee87146028d4f2bfa0bbae56c5f188c5099dfe9" - integrity sha512-ejR83c5aPTip5hPhziypqkJu06vb5tDIugCXx1c5+04RbMjtZeMA6BfsuGnV9EBdEwzKoaHkQ9sJWQAq+LjHYw== +npm@^6.10.3: + version "6.13.1" + resolved "https://registry.yarnpkg.com/npm/-/npm-6.13.1.tgz#6a2658392b70aa1266ddfe256ef21d0de2f4d8dc" + integrity sha512-2awiDZ9JuV/UoF4oXGhekCURC2X+eLLRz9/e58AGrPDlpzyn7e4oCaZmkzyEaisxM7jSoFKNnZhzB4xbmbM0Yw== dependencies: JSONStream "^1.3.5" abbrev "~1.1.1" @@ -4859,16 +5607,16 @@ npm@^6.8.0: ansistyles "~0.1.3" aproba "^2.0.0" archy "~1.0.0" - bin-links "^1.1.2" + bin-links "^1.1.3" bluebird "^3.5.5" byte-size "^5.0.1" - cacache "^11.3.3" + cacache "^12.0.3" call-limit "^1.1.1" - chownr "^1.1.2" + chownr "^1.1.3" ci-info "^2.0.0" cli-columns "^3.1.2" cli-table3 "^0.5.1" - cmd-shim "~2.0.2" + cmd-shim "^3.0.3" columnify "~1.5.4" config-chain "^1.1.12" detect-indent "~5.0.0" @@ -4879,12 +5627,13 @@ npm@^6.8.0: find-npm-prefix "^1.0.2" fs-vacuum "~1.2.10" fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.0.1" + gentle-fs "^2.2.1" glob "^7.1.4" - graceful-fs "^4.2.0" + graceful-fs "^4.2.3" has-unicode "~2.0.1" - hosted-git-info "^2.7.1" + hosted-git-info "^2.8.5" iferr "^1.0.2" + infer-owner "^1.0.4" inflight "~1.0.6" inherits "^2.0.4" ini "^1.3.5" @@ -4892,10 +5641,13 @@ npm@^6.8.0: is-cidr "^3.0.0" json-parse-better-errors "^1.0.2" lazy-property "~1.0.0" - libcipm "^4.0.0" - libnpm "^3.0.0" - libnpmhook "^5.0.2" - libnpmsearch "^2.0.1" + libcipm "^4.0.7" + libnpm "^3.0.1" + libnpmaccess "^3.0.2" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" libnpx "^10.2.0" lock-verify "^2.1.0" lockfile "^1.0.4" @@ -4909,32 +5661,33 @@ npm@^6.8.0: mississippi "^3.0.0" mkdirp "~0.5.1" move-concurrently "^1.0.1" - node-gyp "^5.0.2" + node-gyp "^5.0.5" nopt "~4.0.1" normalize-package-data "^2.5.0" npm-audit-report "^1.3.2" npm-cache-filename "~1.0.2" - npm-install-checks "~3.0.0" - npm-lifecycle "^3.0.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.4.4" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.9.1" + npm-install-checks "^3.0.2" + npm-lifecycle "^3.1.4" + npm-package-arg "^6.1.1" + npm-packlist "^1.4.6" + npm-pick-manifest "^3.0.2" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.2" npm-user-validate "~1.0.0" npmlog "~4.1.2" once "~1.4.0" opener "^1.5.1" osenv "^0.1.5" - pacote "^9.5.1" + pacote "^9.5.9" path-is-inside "~1.0.2" promise-inflight "~1.0.1" qrcode-terminal "^0.12.0" - query-string "^6.8.1" + query-string "^6.8.2" qw "~1.0.1" read "~1.0.7" - read-cmd-shim "~1.0.1" + read-cmd-shim "^1.0.5" read-installed "~4.0.3" - read-package-json "^2.0.13" + read-package-json "^2.1.0" read-package-tree "^5.3.1" readable-stream "^3.4.0" readdir-scoped-modules "^1.1.0" @@ -4942,14 +5695,14 @@ npm@^6.8.0: retry "^0.12.0" rimraf "^2.6.3" safe-buffer "^5.1.2" - semver "^5.7.0" + semver "^5.7.1" sha "^3.0.0" slide "~1.1.6" sorted-object "~2.0.1" sorted-union-stream "~2.1.3" ssri "^6.0.1" - stringify-package "^1.0.0" - tar "^4.4.10" + stringify-package "^1.0.1" + tar "^4.4.13" text-table "~0.2.0" tiny-relative-date "^1.3.0" uid-number "0.0.6" @@ -4957,7 +5710,7 @@ npm@^6.8.0: unique-filename "^1.1.1" unpipe "~1.0.0" update-notifier "^2.5.0" - uuid "^3.3.2" + uuid "^3.3.3" validate-npm-package-license "^3.0.4" validate-npm-package-name "~3.0.0" which "^1.3.1" @@ -4974,6 +5727,18 @@ npm@^6.8.0: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5003,7 +5768,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.11, object-keys@^1.0.12: +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -5071,6 +5841,16 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -5090,6 +5870,20 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0, once@~1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" @@ -5134,15 +5928,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -5152,7 +5937,7 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-name@^3.0.0: +os-name@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== @@ -5160,7 +5945,7 @@ os-name@^3.0.0: macos-release "^2.2.0" windows-release "^3.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -5190,11 +5975,21 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +p-is-promise@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" + integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -5203,9 +5998,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== dependencies: p-try "^2.0.0" @@ -5241,9 +6036,9 @@ p-reduce@^2.0.0: integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-retry@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.1.0.tgz#9ce7cef2069e84bf590df3b8ec18d740109338d6" - integrity sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.2.0.tgz#ea9066c6b44f23cab4cd42f6147cdbbc6604da5d" + integrity sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA== dependencies: "@types/retry" "^0.12.0" retry "^0.12.0" @@ -5268,18 +6063,20 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.1: - version "9.5.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.2.tgz#6132afe7a53bb6fa189df72572c87bb03ab2cc5f" - integrity sha512-KVxalD57jaHnWIBQKPeU/eFU4UoMqUOj3h5AXvVMp9oJd8BZvIdTm8qmazy4jpYBf7RX9xCFmeFcU3ebvrUSZQ== +pacote@^9.1.0, pacote@^9.5.3, pacote@^9.5.9: + version "9.5.9" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.9.tgz#fa3a08629c9390b2b99769c55b2cc137e1a24df3" + integrity sha512-S1nYW9ly+3btn3VmwRAk2LG3TEh8mkrFdY+psbnHSk8oPODbZ28uG0Z0d3yI0EpqcpLR6BukoVRf3H4IbGCkPQ== dependencies: bluebird "^3.5.3" - cacache "^11.3.2" + cacache "^12.0.2" + chownr "^1.1.2" figgy-pudding "^3.5.1" get-stream "^4.1.0" glob "^7.1.3" + infer-owner "^1.0.4" lru-cache "^5.1.1" - make-fetch-happen "^4.0.1" + make-fetch-happen "^5.0.0" minimatch "^3.0.4" minipass "^2.3.5" mississippi "^3.0.0" @@ -5287,8 +6084,8 @@ pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.1: normalize-package-data "^2.4.0" npm-package-arg "^6.1.0" npm-packlist "^1.1.12" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.8.0" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" osenv "^0.1.5" promise-inflight "^1.0.1" promise-retry "^1.1.1" @@ -5297,19 +6094,26 @@ pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.1: safe-buffer "^5.1.2" semver "^5.6.0" ssri "^6.0.1" - tar "^4.4.8" + tar "^4.4.10" unique-filename "^1.1.1" which "^1.3.1" parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - cyclist "~0.2.2" + cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-filepath@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -5319,11 +6123,6 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" -parse-github-url@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" - integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -5420,6 +6219,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -5464,9 +6268,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" - integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" + integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== pify@^2.0.0: version "2.3.0" @@ -5498,6 +6302,16 @@ pkg-conf@^2.1.0: find-up "^2.0.0" load-json-file "^4.0.0" +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + portscanner@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" @@ -5511,6 +6325,575 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz#b2a721a0d279c2f9103a36331c88981526428cc7" + integrity sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0" + +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.23.tgz#9f9759fad661b15964f3cfc3140f66f1e05eadc1" + integrity sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -5574,9 +6957,9 @@ pseudomap@^1.0.2: integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24: - version "1.2.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" - integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.5.0.tgz#47fd1292def7fdb1e138cd78afa8814cebcf7b13" + integrity sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA== pump@^2.0.0: version "2.0.1" @@ -5613,7 +6996,7 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.5.1: +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -5633,10 +7016,10 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^6.8.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.8.1.tgz#62c54a7ef37d01b538c8fd56f95740c81d438a26" - integrity sha512-g6y0Lbq10a5pPQpjlFuojfMfV1Pd2Jw9h75ypiYPPia3Gcq2rgkKiIwbkS6JxH7c5f5u/B/sB+d13PU+g1eu4Q== +query-string@^6.8.2: + version "6.9.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd" + integrity sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" @@ -5677,10 +7060,10 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" - integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= +read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== dependencies: graceful-fs "^4.1.2" @@ -5698,10 +7081,10 @@ read-installed@~4.0.3: optionalDependencies: graceful-fs "^4.1.2" -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" - integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.0.tgz#e3d42e6c35ea5ae820d9a03ab0c7291217fc51d5" + integrity sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" @@ -5735,14 +7118,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-6.0.0.tgz#da75ce72762f2fa1f20c5a40d4dd80c77db969e3" - integrity sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw== +read-pkg-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.0.tgz#3f3e53858ec5ae5e6fe14bc479da0a7c98f85ff3" + integrity sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w== dependencies: - find-up "^4.0.0" - read-pkg "^5.1.1" - type-fest "^0.5.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" read-pkg@^1.0.0: version "1.1.0" @@ -5762,7 +7145,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.0.0, read-pkg@^5.1.1: +read-pkg@^5.0.0, read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -5792,7 +7175,7 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0: +"readable-stream@2 || 3", readable-stream@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== @@ -5862,6 +7245,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -6045,6 +7433,13 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" + resolve-options@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" @@ -6058,9 +7453,9 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + version "1.13.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" + integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== dependencies: path-parse "^1.0.6" @@ -6072,6 +7467,14 @@ resp-modifier@6.0.2: debug "^2.2.0" minimatch "^3.0.2" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -6092,18 +7495,35 @@ reusify@^1.0.0: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + right-pad@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" integrity sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA= rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" @@ -6128,7 +7548,14 @@ rxjs@^5.5.6: dependencies: symbol-observable "1.0.1" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: +rxjs@^6.4.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" + integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -6150,15 +7577,15 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -semantic-release@^15.13.18: - version "15.13.18" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.13.18.tgz#72e284c6f7cb7817e1aaaa0a9d73600a9447d146" - integrity sha512-JtfdrhF1zRm91nJH/Rg3taftbWGwktJqqrJJdbmZGKYx63cfC4PoaS0jxRifGJUdmmgW/Kxz8f5bhtB+p1bu8A== +semantic-release@^15.13.31: + version "15.13.31" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.13.31.tgz#75560e61562b5b7aa3e66256fd3454683c6508a6" + integrity sha512-mrtYkH4p0FvXIRFCsr2r5il/A+Uj7oeeq+dgyojAbr4Tzywv9AlCYHeE3A8U3eE4bMJPiBV4YnQRsk1QS8yDDw== dependencies: "@semantic-release/commit-analyzer" "^6.1.0" "@semantic-release/error" "^2.2.0" @@ -6166,26 +7593,26 @@ semantic-release@^15.13.18: "@semantic-release/npm" "^5.0.5" "@semantic-release/release-notes-generator" "^7.1.2" aggregate-error "^3.0.0" - cosmiconfig "^5.0.1" + cosmiconfig "^6.0.0" debug "^4.0.0" env-ci "^4.0.0" - execa "^1.0.0" + execa "^3.2.0" figures "^3.0.0" find-versions "^3.0.0" get-stream "^5.0.0" git-log-parser "^1.2.0" hook-std "^2.0.0" - hosted-git-info "^2.7.1" - lodash "^4.17.4" - marked "^0.6.0" + hosted-git-info "^3.0.0" + lodash "^4.17.15" + marked "^0.7.0" marked-terminal "^3.2.0" p-locate "^4.0.0" p-reduce "^2.0.0" - read-pkg-up "^6.0.0" + read-pkg-up "^7.0.0" resolve-from "^5.0.0" semver "^6.0.0" signale "^1.2.1" - yargs "^13.1.0" + yargs "^15.0.1" semver-diff@^2.0.0: version "2.1.0" @@ -6206,15 +7633,15 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@~5.3.0: version "5.3.0" @@ -6307,11 +7734,32 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" + integrity sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0= + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6326,6 +7774,13 @@ signale@^1.2.1: figures "^2.0.0" pkg-conf "^2.1.0" +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -6341,10 +7796,10 @@ slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" - integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== snapdragon-node@^2.0.1: version "2.1.1" @@ -6377,9 +7832,9 @@ snapdragon@^0.8.1: use "^3.1.0" socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== socket.io-client@2.1.1: version "2.1.1" @@ -6402,16 +7857,16 @@ socket.io-client@2.1.1: to-array "0.1.4" socket.io-client@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.2.0.tgz#84e73ee3c43d5020ccc1a258faeeb9aec2723af7" - integrity sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.3.1" + debug "~4.1.0" + engine.io-client "~3.4.0" has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" @@ -6460,12 +7915,12 @@ socks-proxy-agent@^4.0.0: socks "~2.3.2" socks@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" - integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== dependencies: - ip "^1.1.5" - smart-buffer "4.0.2" + ip "1.1.5" + smart-buffer "^4.1.0" sorted-object@~2.0.1: version "2.0.1" @@ -6503,7 +7958,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -6609,6 +8064,11 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -6693,7 +8153,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6701,21 +8161,37 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimleft@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~0.10.x: version "0.10.31" @@ -6729,10 +8205,10 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-package@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" - integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g== +stringify-package@^1.0.0, stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -6748,13 +8224,25 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -6772,16 +8260,35 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +strip-json-comments@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6794,6 +8301,13 @@ supports-color@^5.0.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" @@ -6810,24 +8324,57 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -tar@^4, tar@^4.4.10, tar@^4.4.8: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== +tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.3" +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6869,7 +8416,14 @@ through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3": +through2@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + +through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -6884,11 +8438,23 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -6979,6 +8545,11 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -6991,20 +8562,30 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-fest@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" - integrity sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== typedarray@^0.0.6: version "0.0.6" @@ -7017,11 +8598,11 @@ ua-parser-js@0.7.17: integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + version "3.7.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.1.tgz#35c7de17971a4aa7689cd2eae0a5b39bb838c0c5" + integrity sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g== dependencies: - commander "~2.20.0" + commander "~2.20.3" source-map "~0.6.1" uid-number@0.0.6: @@ -7074,6 +8655,16 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -7103,12 +8694,12 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -universal-user-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-3.0.0.tgz#4cc88d68097bffd7ac42e3b7c903e7481424b4b9" - integrity sha512-T3siHThqoj5X0benA5H0qcDnrKGXzU8TKoX15x/tQHw1hQBvIEBHjxQ2klizYsqBOO/Q+WuxoQUihadeeqDnoA== +universal-user-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16" + integrity sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA== dependencies: - os-name "^3.0.0" + os-name "^3.1.0" universalify@^0.1.0: version "0.1.2" @@ -7120,6 +8711,11 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -7134,9 +8730,9 @@ unzip-response@^2.0.1: integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" @@ -7178,11 +8774,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -7205,15 +8796,23 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.3.2, uuid@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== v8flags@^3.0.1: version "3.1.3" @@ -7242,6 +8841,11 @@ value-or-function@^3.0.0: resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= +vendors@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -7287,6 +8891,13 @@ vinyl-sourcemap@^1.1.0: remove-bom-buffer "^3.0.0" vinyl "^2.0.0" +vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= + dependencies: + source-map "^0.5.1" + vinyl@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" @@ -7323,6 +8934,13 @@ which@1, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -7374,14 +8992,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -7444,14 +9062,28 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -7517,15 +9149,15 @@ yargs@6.6.0: yargs-parser "^4.2.0" yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" + integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== dependencies: cliui "^4.0.0" decamelize "^1.1.1" find-up "^2.1.0" get-caller-file "^1.0.1" - os-locale "^2.0.0" + os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" @@ -7534,22 +9166,22 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^13.1.0: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== +yargs@^15.0.1: + version "15.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.0.2.tgz#4248bf218ef050385c4f7e14ebdf425653d13bd3" + integrity sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.0" + yargs-parser "^16.1.0" yargs@^7.1.0: version "7.1.0"