From 8601f36ce07c9c8133ac7878f9f648069fda1c13 Mon Sep 17 00:00:00 2001 From: Kai Cataldo Date: Sat, 30 Nov 2019 15:44:10 -0500 Subject: [PATCH] Chore: switch from Jekyll to Eleventy (#649) * Switch from Jekyll to Eleventy * Add blog posts * Calculate deploy URLs * Fix index/404 pages * Fix 404 page * Switch to relative URLs * Move filters into separate module * Fix rules * Fix rules * Build in Node 12 in CI * Fix broken fixable link * Fix titles * Set engines to Node >=12.0.0 * Rename fix script * Run fix script * Update .eleventyignore * Copy over public files * Add syntax highlighting to markdown * Refactor * Fix RSS feed * Fix date formatting for luxon library * Update README.md * Fix RSS feed * Minify HTML/XML * Remove unnecessary comments * Fix linting issue * Add back webpack command directions * Do not minify XML * Fix directory structure to get rid of trailing slashes in URLs * Add server for local dev to match Netlify's "Pretty URLs" feature * Run webpack as a child process using dev server * Fix up URLs * Update README.md * Watch styles in local dev * Fix blog directory structure * Update blog post links * Rebase and update package-lock.json * Add custom route handler to mimic to work around express.static() issue * Rebase and update _data/rules.json * Remove trailing slashes from non-directory URLs * Add HTTP logging and document dev-server.js * Fix RSS feed links (currently broken in production in Jekyll as well * Remove language from nodejs.org link * Convert YAML data files to JSON * Update pretty URLs in head metadata * Update post.url as a pretty link * Update log in yaml-to-json.js * Fix build for Windows 10 --- .eleventy.js | 24 + .eleventyignore | 7 + .gitignore | 8 +- .travis.yml | 11 +- Gemfile | 3 - README.md | 33 +- _11ty/filters/date-format.js | 7 + _11ty/filters/index.js | 7 + _11ty/filters/number-of-words.js | 37 + _11ty/filters/xml-escape.js | 7 + _11ty/index.js | 29 + _11ty/plugins/index.js | 5 + _11ty/plugins/syntax-highlighting.js | 26 + _11ty/transforms/index.js | 5 + _11ty/transforms/minify-html.js | 15 + _config.dev.yml | 31 - _config.yml | 24 - _data/site.js | 21 + _includes/footer.html | 21 - _includes/footer.liquid | 18 + _includes/head.liquid | 36 + _includes/header.html | 40 - _includes/jumbotron.html | 8 - _includes/jumbotron.liquid | 8 + _includes/menu.html | 99 - _includes/menu.liquid | 92 + .../{redirect.html => content-only.liquid} | 0 _layouts/default.html | 9 - _layouts/default.liquid | 14 + _layouts/demo.html | 6 - _layouts/demo.liquid | 11 + _layouts/doc.html | 22 - _layouts/doc.liquid | 27 + _layouts/post.html | 30 - _layouts/post.liquid | 35 + _layouts/rule.html | 20 - _layouts/rule.liquid | 25 + _layouts/rules.html | 11 - _layouts/rules.liquid | 16 + _pages/404.liquid | 16 + _pages/404.md | 12 - _pages/_pages.json | 3 + _pages/blog.html | 16 - _pages/blog.liquid | 17 + _pages/cla.md | 3 +- _pages/{demo.html => demo.liquid} | 4 +- _pages/feed.liquid | 23 + _pages/{index.html => index.liquid} | 22 +- _pages/{parser.html => parser.liquid} | 5 +- _pages/team.liquid | 62 + _pages/team.md | 88 - _pages/users.liquid | 19 + _pages/users.md | 24 - _plugins/config_url.rb | 14 - .../2014-01-19-breaking-change-formatter.md | 2 - .../2014-01-20-breaking-change-config-file.md | 1 - _posts/2014-01-20-eslint-0.3.0-released.md | 1 - _posts/2014-02-12-eslint-0.4.0-released.md | 1 - _posts/2014-03-03-eslint-0.4.2-released.md | 1 - _posts/2014-03-18-eslint-0.4.3-released.md | 1 - _posts/2014-03-25-eslint-0.4.4-released.md | 1 - _posts/2014-03-29-eslint-0.4.5-released.md | 1 - _posts/2014-04-10-eslint-0.5.0-released.md | 1 - _posts/2014-04-17-eslint-0.5.1-released.md | 1 - _posts/2014-05-17-eslint-0.6.0-released.md | 1 - _posts/2014-05-17-eslint-0.6.1-released.md | 1 - _posts/2014-05-23-eslint-0.6.2-released.md | 1 - .../2014-06-21-formatter-breaking-change.md | 1 - _posts/2014-07-07-eslint-0.7.1-released.md | 1 - _posts/2014-07-08-eslint-0.7.2-released.md | 1 - _posts/2014-07-09-eslint-0.7.3-released.md | 1 - _posts/2014-07-10-eslint-0.7.4-released.md | 1 - _posts/2014-09-05-eslint-0.8.0-released.md | 1 - _posts/2014-09-09-eslint-0.8.1-released.md | 1 - _posts/2014-09-20-eslint-0.8.2-released.md | 1 - _posts/2014-10-24-eslint-0.9.0-released.md | 2 - _posts/2014-10-25-eslint-0.9.1-released.md | 1 - _posts/2014-11-01-eslint-0.9.2-released.md | 1 - _posts/2014-11-15-es6-jsx-support.md | 1 - _posts/2014-11-27-eslint-0.10.0-released.md | 1 - _posts/2014-12-06-eslint-0.10.1-released.md | 1 - _posts/2014-12-12-eslint-0.10.2-released.md | 1 - _posts/2014-12-24-espree-esprima.md | 1 - _posts/2014-12-30-eslint-0.11.0-released.md | 1 - _posts/2015-01-17-eslint-0.12.0-released.md | 12 - _posts/2015-01-24-eslint-0.13.0-released.md | 1 - _posts/2015-02-07-eslint-0.14.0-released.md | 1 - _posts/2015-02-08-eslint-0.14.1-released.md | 1 - _posts/2015-02-21-eslint-0.15.0-released.md | 1 - _posts/2015-02-26-eslint-0.15.1-released.md | 1 - _posts/2015-03-07-eslint-0.16.0-released.md | 1 - _posts/2015-03-08-eslint-0.16.1-released.md | 1 - _posts/2015-03-10-eslint-0.16.2-released.md | 4 - _posts/2015-03-14-eslint-0.17.0-released.md | 1 - _posts/2015-03-17-eslint-0.17.1-released.md | 1 - _posts/2015-03-28-eslint-0.18.0-released.md | 3 - _posts/2015-04-11-eslint-0.19.0-released.md | 9 - _posts/2015-04-24-eslint-0.20.0-released.md | 1 - _posts/2015-05-09-eslint-0.21.0-released.md | 1 - _posts/2015-05-15-eslint-0.21.1-released.md | 1 - _posts/2015-05-18-eslint-0.21.2-released.md | 2 - _posts/2015-05-30-eslint-0.22.0-released.md | 1 - _posts/2015-05-30-eslint-0.22.1-released.md | 1 - _posts/2015-06-14-eslint-0.23.0-released.md | 1 - _posts/2015-06-26-eslint-0.24.0-released.md | 1 - _posts/2015-06-26-preparing-for-1.0.0.md | 1 - _posts/2015-07-10-eslint-0.24.1-released.md | 1 - .../2015-07-15-eslint-1.0.0-rc-1-released.md | 1 - .../2015-07-23-eslint-1.0.0-rc-2-released.md | 1 - .../2015-07-24-eslint-1.0.0-rc-3-released.md | 1 - _posts/2015-07-31-eslint-1.0.0-released.md | 1 - _posts/2015-08-07-eslint-1.1.0-released.md | 1 - _posts/2015-08-18-eslint-1.2.0-released.md | 1 - _posts/2015-08-20-eslint-1.2.1-released.md | 1 - _posts/2015-08-28-eslint-v1.3.0-released.md | 3 - _posts/2015-08-29-eslint-v1.3.1-released.md | 9 - _posts/2015-09-11-eslint-v1.4.0-released.md | 3 - _posts/2015-09-11-eslint-v1.4.1-released.md | 7 - _posts/2015-09-15-eslint-v1.4.2-released.md | 3 - _posts/2015-09-15-eslint-v1.4.3-released.md | 3 - _posts/2015-09-18-eslint-v1.5.0-released.md | 3 - _posts/2015-09-22-eslint-v1.5.1-released.md | 3 - _posts/2015-10-02-eslint-v1.6.0-released.md | 3 - _posts/2015-10-16-eslint-v1.7.0-released.md | 3 - _posts/2015-10-16-eslint-v1.7.1-released.md | 9 - _posts/2015-10-19-eslint-v1.7.2-released.md | 9 - _posts/2015-10-21-eslint-v1.7.3-released.md | 7 - _posts/2015-10-30-eslint-v1.8.0-released.md | 3 - _posts/2015-11-06-eslint-v1.9.0-released.md | 3 - _posts/2015-11-20-eslint-v1.10.0-released.md | 7 - _posts/2015-11-20-eslint-v1.10.1-released.md | 9 - _posts/2015-11-27-eslint-v1.10.2-released.md | 3 - _posts/2015-12-01-eslint-v1.10.3-released.md | 7 - .../2015-12-01-espree-3-alpha-1-released.md | 1 - .../2015-12-09-espree-3-alpha-2-released.md | 1 - ...15-12-11-eslint-v2.0.0-alpha-1-released.md | 3 - ...15-12-23-eslint-v2.0.0-alpha-2-released.md | 3 - ...016-01-11-eslint-v2.0.0-beta.1-released.md | 3 - ...016-01-22-eslint-v2.0.0-beta.2-released.md | 4 - ...016-01-29-eslint-v2.0.0-beta.3-released.md | 4 - .../2016-02-02-eslint-v2.0.0-rc.0-released.md | 4 - .../2016-02-09-eslint-v2.0.0-rc.1-released.md | 4 - _posts/2016-02-12-eslint-v2.0.0-released.md | 7 - _posts/2016-02-15-eslint-v2.1.0-released.md | 5 +- _posts/2016-02-19-eslint-v2.2.0-released.md | 9 +- _posts/2016-03-04-eslint-v2.3.0-released.md | 3 - _posts/2016-03-11-eslint-v2.4.0-released.md | 7 - _posts/2016-03-25-eslint-v2.5.0-released.md | 3 - _posts/2016-03-28-eslint-v2.5.3-released.md | 3 - _posts/2016-03-30-updated-rule-policy.md | 1 - _posts/2016-04-01-eslint-v2.6.0-released.md | 5 +- _posts/2016-04-04-eslint-v2.7.0-released.md | 7 - _posts/2016-04-14-welcoming-jscs-to-eslint.md | 1 - _posts/2016-04-15-eslint-v2.8.0-released.md | 9 +- ...4-19-eslint-joins-the-jquery-foundation.md | 1 - _posts/2016-04-29-eslint-v2.9.0-released.md | 3 - _posts/2016-05-13-eslint-v2.10.0-released.md | 3 - _posts/2016-05-14-eslint-v2.10.1-released.md | 13 +- _posts/2016-05-16-eslint-v2.10.2-released.md | 7 +- _posts/2016-05-27-eslint-v2.11.0-released.md | 7 - _posts/2016-05-30-eslint-v2.11.1-released.md | 1 - _posts/2016-06-10-eslint-v2.12.0-released.md | 3 - _posts/2016-06-17-eslint-v2.13.0-released.md | 3 - _posts/2016-06-20-eslint-v2.13.1-released.md | 11 +- _posts/2016-07-01-eslint-new-rule-format.md | 4 - _posts/2016-07-01-eslint-v3.0.0-released.md | 3 - _posts/2016-07-05-eslint-v3.0.1-released.md | 5 +- _posts/2016-07-15-eslint-v3.1.0-released.md | 5 +- _posts/2016-07-15-jscs-end-of-life.md | 1 - _posts/2016-07-18-eslint-v3.1.1-released.md | 5 +- _posts/2016-07-29-eslint-v3.2.0-released.md | 5 +- _posts/2016-08-01-eslint-v3.2.1-released.md | 7 +- _posts/2016-08-01-eslint-v3.2.2-released.md | 9 +- _posts/2016-08-12-eslint-v3.3.0-released.md | 3 - _posts/2016-08-15-eslint-v3.3.1-released.md | 5 +- _posts/2016-08-26-eslint-v3.4.0-released.md | 3 - _posts/2016-09-09-eslint-v3.5.0-released.md | 1 - ...09-15-changes-to-issues-and-pr-policies.md | 1 - _posts/2016-09-23-eslint-v3.6.0-released.md | 3 - _posts/2016-09-26-eslint-v3.6.1-released.md | 5 +- _posts/2016-09-30-eslint-v3.7.0-released.md | 3 - _posts/2016-10-03-eslint-v3.7.1-released.md | 5 +- _posts/2016-10-14-eslint-v3.8.0-released.md | 3 - _posts/2016-10-17-eslint-v3.8.1-released.md | 11 +- _posts/2016-10-28-eslint-v3.9.0-released.md | 1 - _posts/2016-10-31-eslint-v3.9.1-released.md | 7 +- _posts/2016-11-11-eslint-v3.10.0-released.md | 3 - _posts/2016-11-14-eslint-v3.10.1-released.md | 13 +- _posts/2016-11-15-eslint-v3.10.2-released.md | 11 +- _posts/2016-11-25-eslint-v3.11.0-released.md | 1 - _posts/2016-11-28-eslint-v3.11.1-released.md | 9 - _posts/2016-12-09-eslint-v3.12.0-released.md | 1 - _posts/2016-12-12-eslint-v3.12.1-released.md | 7 +- _posts/2016-12-14-eslint-v3.12.2-released.md | 7 +- _posts/2017-01-06-eslint-v3.13.0-released.md | 5 +- _posts/2017-01-09-eslint-v3.13.1-released.md | 13 +- _posts/2017-01-20-eslint-v3.14.0-released.md | 1 - _posts/2017-01-25-eslint-v3.14.1-released.md | 5 +- _posts/2017-02-03-eslint-v3.15.0-released.md | 5 +- _posts/2017-02-20-eslint-v3.16.0-released.md | 3 - _posts/2017-02-22-eslint-v3.16.1-released.md | 5 +- _posts/2017-03-03-eslint-v3.17.0-released.md | 5 +- _posts/2017-03-06-eslint-v3.17.1-released.md | 5 +- _posts/2017-03-17-eslint-v3.18.0-released.md | 1 - _posts/2017-03-31-eslint-v3.19.0-released.md | 5 +- ...17-04-07-eslint-v4.0.0-alpha.0-released.md | 5 +- ...17-04-21-eslint-v4.0.0-alpha.1-released.md | 5 +- ...17-05-05-eslint-v4.0.0-alpha.2-released.md | 5 +- ...017-05-19-eslint-v4.0.0-beta.0-released.md | 1 - .../2017-06-02-eslint-v4.0.0-rc.0-released.md | 1 - _posts/2017-06-11-eslint-v4.0.0-released.md | 1 - _posts/2017-06-23-eslint-v4.1.0-released.md | 1 - _posts/2017-06-25-eslint-v4.1.1-released.md | 5 +- _posts/2017-07-08-eslint-v4.2.0-released.md | 1 - _posts/2017-07-21-eslint-v4.3.0-released.md | 5 +- _posts/2017-08-05-eslint-v4.4.0-released.md | 7 +- _posts/2017-08-07-eslint-v4.4.1-released.md | 13 +- _posts/2017-08-18-eslint-v4.5.0-released.md | 3 - _posts/2017-09-01-eslint-v4.6.0-released.md | 3 - _posts/2017-09-03-eslint-v4.6.1-released.md | 7 +- _posts/2017-09-15-eslint-v4.7.0-released.md | 1 - _posts/2017-09-18-eslint-v4.7.1-released.md | 13 +- _posts/2017-09-21-eslint-v4.7.2-released.md | 13 +- _posts/2017-09-29-eslint-v4.8.0-released.md | 3 - _posts/2017-10-14-eslint-v4.9.0-released.md | 5 +- _posts/2017-10-27-eslint-v4.10.0-released.md | 5 +- _posts/2017-11-10-eslint-v4.11.0-released.md | 5 +- _posts/2017-11-25-eslint-v4.12.0-released.md | 9 +- _posts/2017-11-30-eslint-v4.12.1-released.md | 16 +- _posts/2017-12-08-eslint-v4.13.0-released.md | 5 +- _posts/2017-12-11-eslint-v4.13.1-released.md | 5 +- _posts/2017-12-23-eslint-v4.14.0-released.md | 5 +- _posts/2018-01-06-eslint-v4.15.0-released.md | 9 - _posts/2018-01-19-eslint-v4.16.0-released.md | 3 - _posts/2018-02-02-eslint-v4.17.0-released.md | 5 +- _posts/2018-02-16-eslint-v4.18.0-released.md | 5 +- _posts/2018-02-20-eslint-v4.18.1-released.md | 11 +- _posts/2018-03-02-eslint-v4.18.2-released.md | 5 +- _posts/2018-03-16-eslint-v4.19.0-released.md | 3 - _posts/2018-03-21-eslint-v4.19.1-released.md | 5 +- ...18-03-30-eslint-v5.0.0-alpha.0-released.md | 3 - ...18-04-13-eslint-v5.0.0-alpha.1-released.md | 1 - ...18-04-27-eslint-v5.0.0-alpha.2-released.md | 3 - ...18-05-11-eslint-v5.0.0-alpha.3-released.md | 3 - ...18-05-28-eslint-v5.0.0-alpha.4-released.md | 1 - .../2018-06-09-eslint-v5.0.0-rc.0-released.md | 3 - _posts/2018-06-22-eslint-v5.0.0-released.md | 7 - _posts/2018-06-25-eslint-v5.0.1-released.md | 9 - _posts/2018-07-08-eslint-v5.1.0-released.md | 3 - ...tmortem-for-malicious-package-publishes.md | 3 +- _posts/2018-07-20-eslint-v5.2.0-released.md | 3 - _posts/2018-08-03-eslint-v5.3.0-released.md | 3 - _posts/2018-08-17-eslint-v5.4.0-released.md | 3 - _posts/2018-08-31-eslint-v5.5.0-released.md | 3 - _posts/2018-09-14-eslint-v5.6.0-released.md | 3 - _posts/2018-09-28-eslint-v5.6.1-released.md | 3 - _posts/2018-10-12-eslint-v5.7.0-released.md | 1 - _posts/2018-10-26-eslint-v5.8.0-released.md | 3 - _posts/2018-11-09-eslint-v5.9.0-released.md | 3 - _posts/2018-11-27-jsdoc-end-of-life.md | 3 +- _posts/2018-12-08-eslint-v5.10.0-released.md | 1 - _posts/2018-12-22-eslint-v5.11.0-released.md | 9 - _posts/2018-12-26-eslint-v5.11.1-released.md | 11 - _posts/2019-01-04-eslint-v5.12.0-released.md | 5 - _posts/2019-01-18-eslint-v5.12.1-released.md | 3 - _posts/2019-01-18-future-typescript-eslint.md | 1 - _posts/2019-02-01-eslint-v5.13.0-released.md | 1 - _posts/2019-02-12-funding-eslint-future.md | 1 - _posts/2019-02-15-eslint-v5.14.0-released.md | 3 - _posts/2019-02-18-eslint-v5.14.1-released.md | 11 - _posts/2019-03-01-eslint-v5.15.0-released.md | 3 - _posts/2019-03-04-eslint-v5.15.1-released.md | 5 - _posts/2019-03-15-eslint-v5.15.2-released.md | 3 - _posts/2019-03-18-eslint-v5.15.3-released.md | 3 - _posts/2019-03-29-eslint-v5.16.0-released.md | 1 - ...19-04-12-eslint-v6.0.0-alpha.0-released.md | 3 - _posts/2019-05-01-funding-update.md | 3 +- ...19-05-10-eslint-v6.0.0-alpha.1-released.md | 3 - ...19-05-25-eslint-v6.0.0-alpha.2-released.md | 3 - .../2019-06-09-eslint-v6.0.0-rc.0-released.md | 1 - _posts/2019-06-21-eslint-v6.0.0-released.md | 3 - _posts/2019-06-24-eslint-v6.0.1-released.md | 9 - _posts/2019-07-20-eslint-v6.1.0-released.md | 3 - _posts/2019-08-18-eslint-v6.2.0-released.md | 3 - _posts/2019-08-20-eslint-v6.2.1-released.md | 7 - _posts/2019-08-23-eslint-v6.2.2-released.md | 7 - _posts/2019-08-30-eslint-v6.3.0-released.md | 1 - ...19-09-09-indeed-donates-10000-to-eslint.md | 1 - _posts/2019-09-13-eslint-v6.4.0-released.md | 9 - _posts/2019-09-29-eslint-v6.5.0-released.md | 3 - _posts/2019-09-30-eslint-v6.5.1-released.md | 9 - _posts/2019-10-25-eslint-v6.6.0-released.md | 3 +- _posts/2019-11-07-funding-update.md | 9 +- _posts/_posts.json | 4 + _tools/dev-server.js | 171 + _tools/yaml-to-json.js | 49 + docs/0.24.1/command-line-interface/index.html | 2 +- docs/0.24.1/configuring/index.html | 2 +- docs/0.24.1/user-guide/rules.md | 2 +- docs/1.0.0/command-line-interface/index.html | 2 +- docs/1.0.0/configuring/index.html | 2 +- docs/1.0.0/user-guide/rules.md | 2 +- docs/1.10.3/command-line-interface/index.html | 2 +- docs/1.10.3/configuring/index.html | 2 +- docs/1.10.3/user-guide/rules.md | 2 +- docs/2.0.0/command-line-interface/index.html | 2 +- docs/2.0.0/configuring/index.html | 2 +- docs/2.0.0/user-guide/rules.md | 2 +- docs/2.13.1/command-line-interface/index.html | 2 +- docs/2.13.1/configuring/index.html | 2 +- .../developer-guide/code-path-analysis.md | 557 -- docs/2.13.1/user-guide/rules.md | 2 +- .../developer-guide/code-path-analysis.md | 557 -- docs/3.0.0/rules/index.liquid | 107 + docs/3.0.0/rules/index.md | 117 - docs/3.0.0/user-guide/rules.md | 2 +- .../developer-guide/code-path-analysis.md | 557 -- docs/4.0.0/rules/index.liquid | 108 + docs/4.0.0/rules/index.md | 117 - .../developer-guide/code-path-analysis.md | 558 -- docs/6.0.0/developer-guide/architecture.md | 100 - .../developer-guide/code-path-analysis.md | 559 -- docs/developer-guide/architecture.md | 100 - docs/developer-guide/architecture/index.md | 2 +- docs/developer-guide/code-path-analysis.md | 559 -- .../code-path-analysis/index.md | 2 +- docs/docs.json | 3 + docs/rules/index.liquid | 105 + docs/rules/index.md | 117 - docs/user-guide/rules.md | 2 +- feed.xml | 21 - package-lock.json | 4790 ++++++++++++++++- package.json | 53 +- _redirects => public/_redirects | 0 manifest.json => public/manifest.json | 0 src/styles/lib/bootstrap.less | 2 +- src/styles/lib/bootstrap_variables.less | 2 +- src/styles/lib/rouge.less | 231 - src/styles/lib/syntax_highlighting.less | 5 + src/styles/main.less | 2 +- webpack.config.js | 2 +- 341 files changed, 5935 insertions(+), 5754 deletions(-) create mode 100644 .eleventy.js create mode 100644 .eleventyignore delete mode 100644 Gemfile create mode 100644 _11ty/filters/date-format.js create mode 100644 _11ty/filters/index.js create mode 100644 _11ty/filters/number-of-words.js create mode 100644 _11ty/filters/xml-escape.js create mode 100644 _11ty/index.js create mode 100644 _11ty/plugins/index.js create mode 100644 _11ty/plugins/syntax-highlighting.js create mode 100644 _11ty/transforms/index.js create mode 100644 _11ty/transforms/minify-html.js delete mode 100644 _config.dev.yml delete mode 100644 _config.yml create mode 100644 _data/site.js delete mode 100644 _includes/footer.html create mode 100644 _includes/footer.liquid create mode 100644 _includes/head.liquid delete mode 100644 _includes/header.html delete mode 100644 _includes/jumbotron.html create mode 100644 _includes/jumbotron.liquid delete mode 100644 _includes/menu.html create mode 100644 _includes/menu.liquid rename _layouts/{redirect.html => content-only.liquid} (100%) delete mode 100644 _layouts/default.html create mode 100644 _layouts/default.liquid delete mode 100644 _layouts/demo.html create mode 100644 _layouts/demo.liquid delete mode 100644 _layouts/doc.html create mode 100644 _layouts/doc.liquid delete mode 100644 _layouts/post.html create mode 100644 _layouts/post.liquid delete mode 100644 _layouts/rule.html create mode 100644 _layouts/rule.liquid delete mode 100644 _layouts/rules.html create mode 100644 _layouts/rules.liquid create mode 100644 _pages/404.liquid delete mode 100644 _pages/404.md create mode 100644 _pages/_pages.json delete mode 100644 _pages/blog.html create mode 100644 _pages/blog.liquid rename _pages/{demo.html => demo.liquid} (72%) create mode 100644 _pages/feed.liquid rename _pages/{index.html => index.liquid} (76%) rename _pages/{parser.html => parser.liquid} (95%) create mode 100644 _pages/team.liquid delete mode 100644 _pages/team.md create mode 100644 _pages/users.liquid delete mode 100644 _pages/users.md delete mode 100644 _plugins/config_url.rb create mode 100644 _posts/_posts.json create mode 100644 _tools/dev-server.js create mode 100644 _tools/yaml-to-json.js delete mode 100644 docs/2.13.1/developer-guide/code-path-analysis.md delete mode 100644 docs/3.0.0/developer-guide/code-path-analysis.md create mode 100644 docs/3.0.0/rules/index.liquid delete mode 100644 docs/3.0.0/rules/index.md delete mode 100644 docs/4.0.0/developer-guide/code-path-analysis.md create mode 100644 docs/4.0.0/rules/index.liquid delete mode 100644 docs/4.0.0/rules/index.md delete mode 100644 docs/5.0.0/developer-guide/code-path-analysis.md delete mode 100644 docs/6.0.0/developer-guide/architecture.md delete mode 100644 docs/6.0.0/developer-guide/code-path-analysis.md delete mode 100644 docs/developer-guide/architecture.md delete mode 100644 docs/developer-guide/code-path-analysis.md create mode 100644 docs/docs.json create mode 100644 docs/rules/index.liquid delete mode 100644 docs/rules/index.md delete mode 100644 feed.xml rename _redirects => public/_redirects (100%) rename manifest.json => public/manifest.json (100%) delete mode 100644 src/styles/lib/rouge.less create mode 100644 src/styles/lib/syntax_highlighting.less diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 0000000000..630f4ffb5a --- /dev/null +++ b/.eleventy.js @@ -0,0 +1,24 @@ +"use strict"; + +const { addPlugins, addFilters, addTransforms } = require("./_11ty"); + +module.exports = function(eleventyConfig) { + addPlugins(eleventyConfig); + addFilters(eleventyConfig); + addTransforms(eleventyConfig); + + // Add collection of blog posts. + eleventyConfig.addCollection("posts", collection => collection.getFilteredByGlob("_posts/*.md").reverse()); + + // Copy over static assets. + eleventyConfig.addPassthroughCopy("assets"); + eleventyConfig.addPassthroughCopy({ "public/*": "." }); + eleventyConfig.addPassthroughCopy("docs/**/*.svg"); + + return { + dir: { + includes: "_includes", + layouts: "_layouts" + } + }; +}; diff --git a/.eleventyignore b/.eleventyignore new file mode 100644 index 0000000000..c6ececca86 --- /dev/null +++ b/.eleventyignore @@ -0,0 +1,7 @@ +node_modules +src +LICENSE +package-lock.json +package.json +README.md +webpack.config.js diff --git a/.gitignore b/.gitignore index 6ac7bd9681..7452622c29 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ node_modules/ _site/ -assets/build -Gemfile.lock -.jekyll-metadata npm-debug.log -main/*.css.map +assets/build .idea +_data/logos.json +_data/rules.json +_data/rules4.json diff --git a/.travis.yml b/.travis.yml index 438c84fb71..a24a12d06d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,9 @@ -language: ruby -rvm: - - 2.5 -cache: bundler +sudo: false +language: node_js +node_js: + - "12" branches: only: - master -before_install: - - nvm install 8 - - npm install script: - npm run lint && npm run build diff --git a/Gemfile b/Gemfile deleted file mode 100644 index f1b369d2ef..0000000000 --- a/Gemfile +++ /dev/null @@ -1,3 +0,0 @@ -source 'https://rubygems.org' - -gem 'github-pages', group: :jekyll_plugins diff --git a/README.md b/README.md index 2a879fc0ca..0eeacc4f9f 100644 --- a/README.md +++ b/README.md @@ -20,41 +20,30 @@ Please note that all HTML documentation is split between this repository and the ## Developer Setup -This website is built with [Jekyll](https://jekyllrb.com) and is hosted on [Netlify](https://www.netlify.com). +This website is built with [Eleventy](https://www.11ty.io) and is hosted on [Netlify](https://www.netlify.com). ### Local development -To set up a local development environment, please follow [GitHub's instructions](https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll) (be sure to follow the instructions for your platform). - -Once you have set up a local environment, you can run a copy of the website locally using this command: +To set up a local development environment, install [Node.js](https://nodejs.org/) (be sure to follow the instructions for your platform) and follow the steps below: ```sh -$ npm start -``` +# Clone the repository +git clone git@github.com:eslint/website.git eslint-website -### Development using Docker +# Navigate to the root directory +cd eslint-website -If you have [Docker](https://www.docker.com) installed, you can run the following: - -```sh -$ npm run start:docker +# Install dependencies +npm install ``` -This will run the following command, creating a temporary container that builds and serves the site and watches for local changes: +Once you have set up your environment, you can run a copy of the website locally using this command: ```sh -$ docker run --rm \ - -v `pwd`:/srv/jekyll \ - -p 4000:4000 \ - -it jekyll/jekyll:3.8 \ - jekyll serve -V --config _config.yml,_config.dev.yml +$ npm start ``` -To run webpack to bundle the JavaScript and style assets, you can run the following: - -``` -$ npm run start:webpack -``` +This will watch for changes to the source code and rebuild the website, which will be hosted at `http://localhost:8080/`. ## License diff --git a/_11ty/filters/date-format.js b/_11ty/filters/date-format.js new file mode 100644 index 0000000000..29871eb89b --- /dev/null +++ b/_11ty/filters/date-format.js @@ -0,0 +1,7 @@ +"use strict"; + +const { DateTime } = require("luxon"); + +module.exports = function dateFormat(date, format) { + return DateTime.fromJSDate(date, { zone: "utc" }).toFormat(format); +}; diff --git a/_11ty/filters/index.js b/_11ty/filters/index.js new file mode 100644 index 0000000000..01085d0cad --- /dev/null +++ b/_11ty/filters/index.js @@ -0,0 +1,7 @@ +"use strict"; + +module.exports = { + dateFormat: require("./date-format"), + numberOfWords: require("./number-of-words"), + xmlEscape: require("./xml-escape") +}; diff --git a/_11ty/filters/number-of-words.js b/_11ty/filters/number-of-words.js new file mode 100644 index 0000000000..2bfcdaf7a0 --- /dev/null +++ b/_11ty/filters/number-of-words.js @@ -0,0 +1,37 @@ +"use strict"; + +const htmlparser2 = require("htmlparser2"); + +module.exports = function numberOfWords(templateContent) { + let htmlTextContent = ""; + let isInCodeBlock = false; + + const parser = new htmlparser2.Parser( + { + onopentag(tagName) { + if (tagName !== "pre") { + return; + } + isInCodeBlock = true; + }, + ontext(text) { + + // Ignore code examples and filter out punctuation. + if (isInCodeBlock || !/[\w\d]/.test(text)) { + return; + } + htmlTextContent += ` ${text.trim()}`; + }, + onclosetag(tagName) { + if (tagName !== "pre") { + return; + } + isInCodeBlock = false; + } + }, + { decodeEntities: true } + ); + + parser.parseComplete(templateContent); + return htmlTextContent.trim().split(/\s+/).length; +}; diff --git a/_11ty/filters/xml-escape.js b/_11ty/filters/xml-escape.js new file mode 100644 index 0000000000..106aafaecc --- /dev/null +++ b/_11ty/filters/xml-escape.js @@ -0,0 +1,7 @@ +"use strict"; + +const { XmlEntities } = require("html-entities"); + +module.exports = function xmlEscape(text) { + return new XmlEntities().encode(text); +}; diff --git a/_11ty/index.js b/_11ty/index.js new file mode 100644 index 0000000000..8d21ef7374 --- /dev/null +++ b/_11ty/index.js @@ -0,0 +1,29 @@ +"use strict"; + +const plugins = require("./plugins"); +const filters = require("./filters"); +const transforms = require("./transforms"); + +function addPlugins(eleventyConfig) { + for (const plugin of Object.values(plugins)) { + eleventyConfig.addPlugin(plugin); + } +} + +function addFilters(eleventyConfig) { + for (const [name, filter] of Object.entries(filters)) { + eleventyConfig.addFilter(name, filter); + } +} + +function addTransforms(eleventyConfig) { + for (const [name, transform] of Object.entries(transforms)) { + eleventyConfig.addTransform(name, transform); + } +} + +module.exports = { + addPlugins, + addFilters, + addTransforms +}; diff --git a/_11ty/plugins/index.js b/_11ty/plugins/index.js new file mode 100644 index 0000000000..058eee6592 --- /dev/null +++ b/_11ty/plugins/index.js @@ -0,0 +1,5 @@ +"use strict"; + +module.exports = { + syntaxHighlighting: require("./syntax-highlighting") +}; diff --git a/_11ty/plugins/syntax-highlighting.js b/_11ty/plugins/syntax-highlighting.js new file mode 100644 index 0000000000..c485f1db63 --- /dev/null +++ b/_11ty/plugins/syntax-highlighting.js @@ -0,0 +1,26 @@ +"use strict"; + +const markdownIt = require("markdown-it"); +const highlightJS = require("highlight.js"); + +module.exports = function syntaxHighlighting(eleventyConfig) { + const md = markdownIt({ + + // https://github.com/markdown-it/markdown-it#syntax-highlighting + highlight(text, lang = null) { + if (lang && highlightJS.getLanguage(lang)) { + try { + return `
${highlightJS.highlight(lang, text, true).value}
`; + } catch (err) { + + // Default to escaping HTML if highlighting throws an error. + } + } + + return `
${md.utils.escapeHtml(text)}
`; + }, + html: true + }); + + eleventyConfig.setLibrary("md", md); +}; diff --git a/_11ty/transforms/index.js b/_11ty/transforms/index.js new file mode 100644 index 0000000000..15293a9d99 --- /dev/null +++ b/_11ty/transforms/index.js @@ -0,0 +1,5 @@ +"use strict"; + +module.exports = { + minifyHtml: require("./minify-html") +}; diff --git a/_11ty/transforms/minify-html.js b/_11ty/transforms/minify-html.js new file mode 100644 index 0000000000..8a834e9b9a --- /dev/null +++ b/_11ty/transforms/minify-html.js @@ -0,0 +1,15 @@ +"use strict"; + +const htmlmin = require("html-minifier"); + +module.exports = function minifyHtml(content, outputPath) { + if (outputPath.endsWith(".html")) { + return htmlmin.minify(content, { + useShortDoctype: true, + removeComments: true, + collapseWhitespace: true + }); + } + + return content; +}; diff --git a/_config.dev.yml b/_config.dev.yml deleted file mode 100644 index a06497772b..0000000000 --- a/_config.dev.yml +++ /dev/null @@ -1,31 +0,0 @@ -# only generate a subset of posts -limit_posts: 10 - -# watch for changes and regenerate -incremental: true - -# show unpublished posts -future: true - -# Don't generate this stuff -exclude: - - node_modules - - src - - Gemfile - - Gemfile.lock - - LICENSE - - Makefile - - package-lock.json - - package.json - - README.md - - webpack.config.js - - sitemap.xml - - feed.xml - - docs/0.24.1 - - docs/1.0.0 - - docs/1.10.3 - - docs/2.0.0 - - docs/2.13.1 - - docs/3.0.0 - - docs/4.0.0 - - docs/5.0.0 diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 0981141b04..0000000000 --- a/_config.yml +++ /dev/null @@ -1,24 +0,0 @@ -title: "ESLint - Pluggable JavaScript linter" -repository: "eslint/eslint.github.io" -description: "A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease." -include: - - _redirects - - _pages -exclude: - - node_modules - - src - - vendor - - Gemfile - - Gemfile.lock - - LICENSE - - Makefile - - package-lock.json - - package.json - - README.md - - webpack.config.js -permalink: /blog/:year/:month/:title -plugins: - - jekyll-sitemap -kramdown: - input: GFM - toc_levels: 2..3 diff --git a/_data/site.js b/_data/site.js new file mode 100644 index 0000000000..8ff573444e --- /dev/null +++ b/_data/site.js @@ -0,0 +1,21 @@ +"use strict"; + +const PORT = process.env.DEV_PORT || 8080; + +function calculateUrl() { + if (process.env.NODE_ENV === "development") { + return `localhost:${PORT}`; + } + + /* + * Netlify sets the following environment variables + * https://www.netlify.com/docs/continuous-deployment/#environment-variables + */ + return process.env.CONTEXT === "production" ? process.env.URL : process.env.DEPLOY_PRIME_URL; +} + +module.exports = { + title: "ESLint - Pluggable JavaScript linter", + description: "A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.", + url: calculateUrl() +}; diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index 8510334052..0000000000 --- a/_includes/footer.html +++ /dev/null @@ -1,21 +0,0 @@ - -
-
- -
- - - diff --git a/_includes/footer.liquid b/_includes/footer.liquid new file mode 100644 index 0000000000..5f5369c669 --- /dev/null +++ b/_includes/footer.liquid @@ -0,0 +1,18 @@ +
+
+ +
+ diff --git a/_includes/head.liquid b/_includes/head.liquid new file mode 100644 index 0000000000..162ca90bc0 --- /dev/null +++ b/_includes/head.liquid @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + {% if title != site.title %} + {% if title != "ESLint" %} + {{ title }} - {{ site.title }} + {% else %} + {{ site.title }} + {% endif %} + {% else %} + {{ site.title }} + {% endif %} + + + + + + + + + diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index eb46a3c399..0000000000 --- a/_includes/header.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -{% if page.title != site.title %} - {% if page.title != "ESLint" %} - {{ page.title }} - {{ site.title }} - {% else %} - {{ site.title }} - {% endif %} -{% else %} - {{ site.title }} -{% endif %} - - - - - - - - - - diff --git a/_includes/jumbotron.html b/_includes/jumbotron.html deleted file mode 100644 index 9affc5691c..0000000000 --- a/_includes/jumbotron.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
-

ESLint

-

Find and fix problems in your JavaScript code

- Get Started » -
-
- \ No newline at end of file diff --git a/_includes/jumbotron.liquid b/_includes/jumbotron.liquid new file mode 100644 index 0000000000..60b9f92e1b --- /dev/null +++ b/_includes/jumbotron.liquid @@ -0,0 +1,8 @@ +
+
+

ESLint

+

Find and fix problems in your JavaScript code

+ Get Started » +
+
+ diff --git a/_includes/menu.html b/_includes/menu.html deleted file mode 100644 index 1e96b3648e..0000000000 --- a/_includes/menu.html +++ /dev/null @@ -1,99 +0,0 @@ - - diff --git a/_includes/menu.liquid b/_includes/menu.liquid new file mode 100644 index 0000000000..81bc9e53bc --- /dev/null +++ b/_includes/menu.liquid @@ -0,0 +1,92 @@ + + diff --git a/_layouts/redirect.html b/_layouts/content-only.liquid similarity index 100% rename from _layouts/redirect.html rename to _layouts/content-only.liquid diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index d7e26f75ac..0000000000 --- a/_layouts/default.html +++ /dev/null @@ -1,9 +0,0 @@ -{% include header.html %} -
-{% include menu.html %} - {% include jumbotron.html %} -
- {{ content }} -
-
-{% include footer.html %} diff --git a/_layouts/default.liquid b/_layouts/default.liquid new file mode 100644 index 0000000000..fc2decfd8c --- /dev/null +++ b/_layouts/default.liquid @@ -0,0 +1,14 @@ + + +{% include head %} + +
+ {% include menu %} + {% include jumbotron %} +
+ {{ content }} +
+
+ {% include footer %} + + diff --git a/_layouts/demo.html b/_layouts/demo.html deleted file mode 100644 index 70fc0831ca..0000000000 --- a/_layouts/demo.html +++ /dev/null @@ -1,6 +0,0 @@ -{% include header.html %} -{% include menu.html %} -
- {{ content }} -
-{% include footer.html %} diff --git a/_layouts/demo.liquid b/_layouts/demo.liquid new file mode 100644 index 0000000000..f2b6d3d5e5 --- /dev/null +++ b/_layouts/demo.liquid @@ -0,0 +1,11 @@ + + +{% include head %} + + {% include menu %} +
+ {{ content }} +
+ {% include footer %} + + diff --git a/_layouts/doc.html b/_layouts/doc.html deleted file mode 100644 index c70f5d7ef6..0000000000 --- a/_layouts/doc.html +++ /dev/null @@ -1,22 +0,0 @@ -{% include header.html %} -{% include menu.html %} -
-
- {{ content - | replace: '

Examples of incorrect code', '

Examples of incorrect code' - | replace: '

Example of incorrect code', '

Example of incorrect code' - | replace: '

Examples of additional incorrect code', '

Examples of additional incorrect code' - | replace: '

Example of additional incorrect code', '

Example of additional incorrect code' - | replace: '

Examples of correct code', '

Examples of correct code' - | replace: '

Example of correct code', '

Example of correct code' - | replace: '

Examples of additional correct code', '

Examples of additional correct code' - | replace: '

Example of additional correct code', '

Example of additional correct code' - | replace: '

(recommended) ', '

(removed) ', '

' - | replace: '

(fixable) ', '

' - | replace: '(recommended)', '' - | replace: '(fixable)', '' - }} -

-
-{% include footer.html %} diff --git a/_layouts/doc.liquid b/_layouts/doc.liquid new file mode 100644 index 0000000000..67457a41e5 --- /dev/null +++ b/_layouts/doc.liquid @@ -0,0 +1,27 @@ + + +{% include head %} + + {% include menu %} +
+
+ {{ content + | replace: '

Examples of incorrect code', '

Examples of incorrect code' + | replace: '

Example of incorrect code', '

Example of incorrect code' + | replace: '

Examples of additional incorrect code', '

Examples of additional incorrect code' + | replace: '

Example of additional incorrect code', '

Example of additional incorrect code' + | replace: '

Examples of correct code', '

Examples of correct code' + | replace: '

Example of correct code', '

Example of correct code' + | replace: '

Examples of additional correct code', '

Examples of additional correct code' + | replace: '

Example of additional correct code', '

Example of additional correct code' + | replace: '

(recommended) ', '

(removed) ', '

' + | replace: '

(fixable) ', '

' + | replace: '(recommended)', '' + | replace: '(fixable)', '' + }} +

+
+ {% include footer %} + + diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index f68e9fcfe6..0000000000 --- a/_layouts/post.html +++ /dev/null @@ -1,30 +0,0 @@ -{% include header.html %} -{% include menu.html %} -
-
-
-
-
- {{ content }} -
-

ESLint depends on the support of individuals and companies. Become a Sponsor

-
-
-
-
- -
-
-{% include footer.html %} diff --git a/_layouts/post.liquid b/_layouts/post.liquid new file mode 100644 index 0000000000..06acf91742 --- /dev/null +++ b/_layouts/post.liquid @@ -0,0 +1,35 @@ + + +{% include head %} + + {% include menu %} +
+
+
+
+
+ {{ content }} +
+

ESLint depends on the support of individuals and companies. Become a Sponsor

+
+
+
+
+ +
+
+ {% include footer %} + + diff --git a/_layouts/rule.html b/_layouts/rule.html deleted file mode 100644 index 92aff60515..0000000000 --- a/_layouts/rule.html +++ /dev/null @@ -1,20 +0,0 @@ -{% include header.html %} -{% include menu.html %} -
-
- {{ content - | replace: '

Examples of incorrect code', '

Examples of incorrect code' - | replace: '

Example of incorrect code', '

Example of incorrect code' - | replace: '

Examples of additional incorrect code', '

Examples of additional incorrect code' - | replace: '

Example of additional incorrect code', '

Example of additional incorrect code' - | replace: '

Examples of correct code', '

Examples of correct code' - | replace: '

Example of correct code', '

Example of correct code' - | replace: '

Examples of additional correct code', '

Examples of additional correct code' - | replace: '

Example of additional correct code', '

Example of additional correct code' - | replace: '

(removed) ', '

' - | replace: '

(recommended) ', '

(fixable) ', '

' - }} -

-
-{% include footer.html %} diff --git a/_layouts/rule.liquid b/_layouts/rule.liquid new file mode 100644 index 0000000000..9370d26fe5 --- /dev/null +++ b/_layouts/rule.liquid @@ -0,0 +1,25 @@ + + +{% include head %} + + {% include menu %} +
+
+ {{ content + | replace: '

Examples of incorrect code', '

Examples of incorrect code' + | replace: '

Example of incorrect code', '

Example of incorrect code' + | replace: '

Examples of additional incorrect code', '

Examples of additional incorrect code' + | replace: '

Example of additional incorrect code', '

Example of additional incorrect code' + | replace: '

Examples of correct code', '

Examples of correct code' + | replace: '

Example of correct code', '

Example of correct code' + | replace: '

Examples of additional correct code', '

Examples of additional correct code' + | replace: '

Example of additional correct code', '

Example of additional correct code' + | replace: '

(removed) ', '

' + | replace: '

(recommended) ', '

(fixable) ', '

' + }} +

+
+ {% include footer %} + + diff --git a/_layouts/rules.html b/_layouts/rules.html deleted file mode 100644 index a2c02d01a7..0000000000 --- a/_layouts/rules.html +++ /dev/null @@ -1,11 +0,0 @@ -{% include header.html %} -{% include menu.html %} -
-
- {{ content - | replace: '(recommended)', '' - | replace: '(fixable)', '' - }} -
-
-{% include footer.html %} diff --git a/_layouts/rules.liquid b/_layouts/rules.liquid new file mode 100644 index 0000000000..87f6359cf6 --- /dev/null +++ b/_layouts/rules.liquid @@ -0,0 +1,16 @@ + + +{% include head %} + + {% include menu %} +
+
+ {{ content + | replace: '(recommended)', '' + | replace: '(fixable)', '' + }} +
+
+ {% include footer %} + + diff --git a/_pages/404.liquid b/_pages/404.liquid new file mode 100644 index 0000000000..9a1cdc970d --- /dev/null +++ b/_pages/404.liquid @@ -0,0 +1,16 @@ +--- +title: 404 +layout: doc +edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/404.md +--- + +

+ 4ESLint Logo4 +

+

Something’s missing

+

+ Go home or check out the rules? +

+ + Get Started with ESLint » + diff --git a/_pages/404.md b/_pages/404.md deleted file mode 100644 index 9c1f9165f3..0000000000 --- a/_pages/404.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 404 -layout: doc -permalink: /404.html -edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/404.md ---- - -# 4![0](/assets/img/logo.svg)4 -{:.four-oh-four-header} -## Something’s missing -### [Go home](/) or [check out the rules](/docs/rules)? -[Get Started with ESLint »](/docs/user-guide/getting-started){:.btn.btn-default.btn-lg.btn-block.btn-getting-started role="button"} diff --git a/_pages/_pages.json b/_pages/_pages.json new file mode 100644 index 0000000000..5555d91935 --- /dev/null +++ b/_pages/_pages.json @@ -0,0 +1,3 @@ +{ + "permalink": "{{ page.fileSlug }}.html" +} diff --git a/_pages/blog.html b/_pages/blog.html deleted file mode 100644 index ef434be325..0000000000 --- a/_pages/blog.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: ESLint Blog -layout: doc -permalink: /blog -edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/blog.html ---- -
- diff --git a/_pages/blog.liquid b/_pages/blog.liquid new file mode 100644 index 0000000000..38a29a0538 --- /dev/null +++ b/_pages/blog.liquid @@ -0,0 +1,17 @@ +--- +title: ESLint Blog +layout: doc +permalink: blog/index.html +edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/blog.html +--- + +
+ diff --git a/_pages/cla.md b/_pages/cla.md index 87195f66a7..60b0920e81 100644 --- a/_pages/cla.md +++ b/_pages/cla.md @@ -1,6 +1,5 @@ --- title: ESLint Contributor License Agreement -layout: redirect -permalink: /cla +layout: content-only edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/cla.md --- diff --git a/_pages/demo.html b/_pages/demo.liquid similarity index 72% rename from _pages/demo.html rename to _pages/demo.liquid index 5ae016e811..b03a889f40 100644 --- a/_pages/demo.html +++ b/_pages/demo.liquid @@ -1,12 +1,12 @@ --- title: ESLint Demo layout: demo -permalink: /demo edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/demo.html --- +
Loading...
- + diff --git a/_pages/feed.liquid b/_pages/feed.liquid new file mode 100644 index 0000000000..22db568f6d --- /dev/null +++ b/_pages/feed.liquid @@ -0,0 +1,23 @@ +--- +layout: content-only +permalink: feed.xml +--- + + + + {{ site.title | xmlEscape }} + {{ site.description | xmlEscape }} + {{ site.url }} + + {% for post in collections.posts limit:10 %} + + {{ post.data.title | xmlEscape }} + {{ post.templateContent | xmlEscape }} + {% comment %} https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string {% endcomment %} + {{ post.date | dateFormat: "yyyy-LL-dd" }} + {{ site.url }}{{ post.url | replace: '.html', '' }} + {{ site.url }}{{ post.url | replace: '.html', '' }} + + {% endfor %} + + diff --git a/_pages/index.html b/_pages/index.liquid similarity index 76% rename from _pages/index.html rename to _pages/index.liquid index 4c532997d7..110f70e443 100644 --- a/_pages/index.html +++ b/_pages/index.liquid @@ -1,7 +1,7 @@ --- title: ESLint - Pluggable JavaScript linter layout: default -permalink: /index.html +permalink: index.html homepage: true --- @@ -25,8 +25,8 @@

Customize

{% assign monthlyTotal = 0 %} {% assign supportersCount = 0 %} {% for tier in tiers %} - {% if site.data.sponsors[tier].size > 0 %} - {% for sponsor in site.data.sponsors[tier] %} + {% if sponsors[tier].size > 0 %} + {% for sponsor in sponsors[tier] %} {% assign supportersCount = supportersCount | plus: 1 %} {% assign monthlyTotal = monthlyTotal | plus: sponsor.monthlyDonation %} {% endfor %} @@ -40,14 +40,14 @@

Sponsors

{{ supportersCount }} companies, organizations, and individuals are currently contributing ${{ monthlyTotal }} each month to support ESLint's ongoing maintenance and development.

{% assign tiers = "gold,silver,bronze" | split: "," %} {% for tier in tiers %} - {% if site.data.sponsors[tier].size > 0 %} -

{{ tier | capitalize }} Sponsors

-
- {% for sponsor in site.data.sponsors[tier] %} - {{ sponsor.name }} - {% endfor %} -
-

Become a Sponsor

+ {% if sponsors[tier].size > 0 %} +

{{ tier | capitalize }} Sponsors

+
+ {% for sponsor in sponsors[tier] %} + {{ sponsor.name }} + {% endfor %} +
+

Become a Sponsor

{% endif %} {% endfor %}

Hosting

diff --git a/_pages/parser.html b/_pages/parser.liquid similarity index 95% rename from _pages/parser.html rename to _pages/parser.liquid index 6d9c5abab1..0d9ed67eca 100644 --- a/_pages/parser.html +++ b/_pages/parser.liquid @@ -1,9 +1,9 @@ --- title: ESLint Parser Demo layout: demo -permalink: /parser edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/parser.html --- +
@@ -53,5 +53,4 @@

Options

- - + diff --git a/_pages/team.liquid b/_pages/team.liquid new file mode 100644 index 0000000000..bc95b83243 --- /dev/null +++ b/_pages/team.liquid @@ -0,0 +1,62 @@ +--- +title: Team +layout: doc +edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/team.md +--- + +

Team

+

These are the people who build and maintain ESLint.

+

Technical Steering Committee

+

The people who manage releases, review feature requests, and meet regularly to ensure ESLint is properly maintained.

+
+
+ {% for person in team.tsc %} +
+
+ {{ person.name }}
@{{ person.username }} +
+ {% endfor %} +
+
+{% if team.reviewers.size > 0 %} +

Reviewers

+

The people who review and implement new features.

+
+
+ {% for person in team.reviewers %} +
+
+ {{ person.name }}
@{{ person.username }} +
+ {% endfor %} +
+
+{% endif %} +{% if team.committers.size > 0 %} +

Committers

+

The people who review and fix bugs and help triage issues.

+
+
+ {% for person in team.committers %} +
+
+ {{ person.name }}
@{{ person.username }} +
+ {% endfor %} +
+
+{% endif %} +{% if team.alumni.size > 0 %} +

Alumni

+

Former TSC members and committers who previously helped maintain ESLint.

+
+
+ {% for person in team.alumni %} +
+
+ {{ person.name }}
@{{ person.username }} +
+ {% endfor %} +
+
+{% endif %} diff --git a/_pages/team.md b/_pages/team.md deleted file mode 100644 index 650f1464b4..0000000000 --- a/_pages/team.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Team -layout: doc -permalink: /team -edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/team.md ---- - -# Team - -These are the people who build and maintain ESLint. - -## Technical Steering Committee - -The people who manage releases, review feature requests, and meet regularly to ensure ESLint is properly maintained. - -
-
- -{% assign tsc = site.data.team.tsc %} -{% for person in tsc %} -
-
- {{ person.name }}
@{{ person.username }} -
-{% endfor %} - -
-
- -{% assign reviewers = site.data.team.reviewers %} -{% if reviewers.size > 0 %} -## Reviewers - -The people who review and implement new features. - -
-
- -{% for person in reviewers %} -
-
- {{ person.name }}
@{{ person.username }} -
-{% endfor %} - -
-
-{% endif %} - - - -{% assign committers = site.data.team.committers %} -{% if committers.size > 0 %} -## Committers - -The people who review and fix bugs and help triage issues. - -
-
- -{% for person in committers %} -
-
- {{ person.name }}
@{{ person.username }} -
-{% endfor %} - -
-
-{% endif %} - -## Alumni - -Former TSC members and committers who previously helped maintain ESLint. - -
-
- -{% assign alumni = site.data.team.alumni %} -{% for person in alumni %} -
-
- {{ person.name }}
@{{ person.username }} -
-{% endfor %} - -
-
diff --git a/_pages/users.liquid b/_pages/users.liquid new file mode 100644 index 0000000000..3a5023fc9d --- /dev/null +++ b/_pages/users.liquid @@ -0,0 +1,19 @@ +--- +title: "Who's Using ESLint?" +layout: doc +edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/users.md +--- + +

Who's Using ESLint?

+

These are the companies and organizations who use ESLint to keep their JavaScript code lint-free!

+
+ {% for logo in logos %} +
+
+ + {{ logo.name }} + +
+
+ {% endfor %} +
diff --git a/_pages/users.md b/_pages/users.md deleted file mode 100644 index 4ee3ed8476..0000000000 --- a/_pages/users.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Who's Using ESLint?" -layout: doc -permalink: /users -edit_link: https://github.com/eslint/eslint.github.io/edit/master/_pages/users.md ---- - -# Who's Using ESLint? - -These are the companies and organizations who use ESLint to keep their JavaScript code lint-free! - - -
-{% assign logos = site.data.logos %} -{% for logo in logos %} -
-
- - {{ logo.name }} - -
-
-{% endfor %} -
diff --git a/_plugins/config_url.rb b/_plugins/config_url.rb deleted file mode 100644 index c0add696f4..0000000000 --- a/_plugins/config_url.rb +++ /dev/null @@ -1,14 +0,0 @@ -# Netlify sets the following environment variables -# https://www.netlify.com/docs/continuous-deployment/#environment-variables -DEPLOY_URL = (ENV['CONTEXT'].eql? 'production') ? ENV['URL'] : ENV['DEPLOY_PRIME_URL'] - -# This is for backwards compatibility for the version currently deployed with GitHub Pages -DEFAULT_URL = 'https://eslint.org' - -module Jekyll - class EnvironmentVariablesGenerator < Generator - def generate(site) - site.config['url'] = DEPLOY_URL || DEFAULT_URL - end - end -end diff --git a/_posts/2014-01-19-breaking-change-formatter.md b/_posts/2014-01-19-breaking-change-formatter.md index 332ff3b894..40858edc54 100644 --- a/_posts/2014-01-19-breaking-change-formatter.md +++ b/_posts/2014-01-19-breaking-change-formatter.md @@ -1,5 +1,4 @@ --- -layout: post title: Breaking change to ESLint default formatter tags: - breaking change @@ -38,4 +37,3 @@ eslint -f compact foo.js This works equally well with older and new versions of ESLint, and will continue to work going forward. In general, it is always best to specify the formatter that you want when processing output, rather than relying on the default (which may change, as in this case). The current set of formatters is considered stable and none of them will be removed in the future, so it's safe to rely on them. - diff --git a/_posts/2014-01-20-breaking-change-config-file.md b/_posts/2014-01-20-breaking-change-config-file.md index ee26cc03c4..f2def51e72 100644 --- a/_posts/2014-01-20-breaking-change-config-file.md +++ b/_posts/2014-01-20-breaking-change-config-file.md @@ -1,5 +1,4 @@ --- -layout: post title: Breaking change to ESLint config files tags: - breaking change diff --git a/_posts/2014-01-20-eslint-0.3.0-released.md b/_posts/2014-01-20-eslint-0.3.0-released.md index be6fdbcd38..3fc88fe3e2 100644 --- a/_posts/2014-01-20-eslint-0.3.0-released.md +++ b/_posts/2014-01-20-eslint-0.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.3.0 released tags: - breaking change diff --git a/_posts/2014-02-12-eslint-0.4.0-released.md b/_posts/2014-02-12-eslint-0.4.0-released.md index d0d75fe22e..5772ffcb76 100644 --- a/_posts/2014-02-12-eslint-0.4.0-released.md +++ b/_posts/2014-02-12-eslint-0.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.4.0 released tags: - breaking change diff --git a/_posts/2014-03-03-eslint-0.4.2-released.md b/_posts/2014-03-03-eslint-0.4.2-released.md index f06a2fe8a1..71421ee938 100644 --- a/_posts/2014-03-03-eslint-0.4.2-released.md +++ b/_posts/2014-03-03-eslint-0.4.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.4.2 released tags: - breaking change diff --git a/_posts/2014-03-18-eslint-0.4.3-released.md b/_posts/2014-03-18-eslint-0.4.3-released.md index 5cc34647e7..b733b602d0 100644 --- a/_posts/2014-03-18-eslint-0.4.3-released.md +++ b/_posts/2014-03-18-eslint-0.4.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.4.3 released tags: - breaking change diff --git a/_posts/2014-03-25-eslint-0.4.4-released.md b/_posts/2014-03-25-eslint-0.4.4-released.md index 13b7024499..1706a73f5a 100644 --- a/_posts/2014-03-25-eslint-0.4.4-released.md +++ b/_posts/2014-03-25-eslint-0.4.4-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.4.4 released tags: - breaking change diff --git a/_posts/2014-03-29-eslint-0.4.5-released.md b/_posts/2014-03-29-eslint-0.4.5-released.md index 87fa5afd58..5d9d8a6606 100644 --- a/_posts/2014-03-29-eslint-0.4.5-released.md +++ b/_posts/2014-03-29-eslint-0.4.5-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.4.5 released tags: - breaking change diff --git a/_posts/2014-04-10-eslint-0.5.0-released.md b/_posts/2014-04-10-eslint-0.5.0-released.md index 03b302f983..27c257f618 100644 --- a/_posts/2014-04-10-eslint-0.5.0-released.md +++ b/_posts/2014-04-10-eslint-0.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.5.0 released tags: - breaking change diff --git a/_posts/2014-04-17-eslint-0.5.1-released.md b/_posts/2014-04-17-eslint-0.5.1-released.md index 487a254ed6..f54cdc19b2 100644 --- a/_posts/2014-04-17-eslint-0.5.1-released.md +++ b/_posts/2014-04-17-eslint-0.5.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.5.1 released tags: - release diff --git a/_posts/2014-05-17-eslint-0.6.0-released.md b/_posts/2014-05-17-eslint-0.6.0-released.md index 9b9cd1331e..e487d38c3c 100644 --- a/_posts/2014-05-17-eslint-0.6.0-released.md +++ b/_posts/2014-05-17-eslint-0.6.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.6.0 released tags: - breaking change diff --git a/_posts/2014-05-17-eslint-0.6.1-released.md b/_posts/2014-05-17-eslint-0.6.1-released.md index 6176283d72..168d519480 100644 --- a/_posts/2014-05-17-eslint-0.6.1-released.md +++ b/_posts/2014-05-17-eslint-0.6.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.6.1 released tags: - release diff --git a/_posts/2014-05-23-eslint-0.6.2-released.md b/_posts/2014-05-23-eslint-0.6.2-released.md index 0b17bdf0ab..9d16c3dd3e 100644 --- a/_posts/2014-05-23-eslint-0.6.2-released.md +++ b/_posts/2014-05-23-eslint-0.6.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.6.2 released tags: - release diff --git a/_posts/2014-06-21-formatter-breaking-change.md b/_posts/2014-06-21-formatter-breaking-change.md index 459b91fef4..24916c8b88 100644 --- a/_posts/2014-06-21-formatter-breaking-change.md +++ b/_posts/2014-06-21-formatter-breaking-change.md @@ -1,5 +1,4 @@ --- -layout: post title: Formatter Breaking Change tags: - breaking change diff --git a/_posts/2014-07-07-eslint-0.7.1-released.md b/_posts/2014-07-07-eslint-0.7.1-released.md index fb5531e377..b79eb93701 100644 --- a/_posts/2014-07-07-eslint-0.7.1-released.md +++ b/_posts/2014-07-07-eslint-0.7.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.7.1 released tags: - release diff --git a/_posts/2014-07-08-eslint-0.7.2-released.md b/_posts/2014-07-08-eslint-0.7.2-released.md index 804cda76b2..c13f0e8c54 100644 --- a/_posts/2014-07-08-eslint-0.7.2-released.md +++ b/_posts/2014-07-08-eslint-0.7.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.7.2 released tags: - release diff --git a/_posts/2014-07-09-eslint-0.7.3-released.md b/_posts/2014-07-09-eslint-0.7.3-released.md index a3bd2e1cb5..88f3fe1d42 100644 --- a/_posts/2014-07-09-eslint-0.7.3-released.md +++ b/_posts/2014-07-09-eslint-0.7.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.7.3 released tags: - release diff --git a/_posts/2014-07-10-eslint-0.7.4-released.md b/_posts/2014-07-10-eslint-0.7.4-released.md index cf5b55438a..e2e8128ec9 100644 --- a/_posts/2014-07-10-eslint-0.7.4-released.md +++ b/_posts/2014-07-10-eslint-0.7.4-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.7.4 released tags: - release diff --git a/_posts/2014-09-05-eslint-0.8.0-released.md b/_posts/2014-09-05-eslint-0.8.0-released.md index 05937db85c..416159fc68 100644 --- a/_posts/2014-09-05-eslint-0.8.0-released.md +++ b/_posts/2014-09-05-eslint-0.8.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.8.0 released tags: - release diff --git a/_posts/2014-09-09-eslint-0.8.1-released.md b/_posts/2014-09-09-eslint-0.8.1-released.md index a8f3ca1ae6..57394e3690 100644 --- a/_posts/2014-09-09-eslint-0.8.1-released.md +++ b/_posts/2014-09-09-eslint-0.8.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.8.1 released tags: - release diff --git a/_posts/2014-09-20-eslint-0.8.2-released.md b/_posts/2014-09-20-eslint-0.8.2-released.md index cf593c4f79..0e03520e98 100644 --- a/_posts/2014-09-20-eslint-0.8.2-released.md +++ b/_posts/2014-09-20-eslint-0.8.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.8.2 released tags: - release diff --git a/_posts/2014-10-24-eslint-0.9.0-released.md b/_posts/2014-10-24-eslint-0.9.0-released.md index c33a7d35e1..70190e34b2 100644 --- a/_posts/2014-10-24-eslint-0.9.0-released.md +++ b/_posts/2014-10-24-eslint-0.9.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.9.0 released tags: - release @@ -94,4 +93,3 @@ With this release, we're introducing the [ESLint Governance Model](https://eslin * Build: add version numbers to docs (fixes [#1170](https://github.com/eslint/eslint/issues/1170)) (Mathias Schreck) * Build: separate site publishing form generation (fixes [#1356](https://github.com/eslint/eslint/issues/1356)) (Mathias Schreck) - diff --git a/_posts/2014-10-25-eslint-0.9.1-released.md b/_posts/2014-10-25-eslint-0.9.1-released.md index cf2efeec8d..516493a6b6 100644 --- a/_posts/2014-10-25-eslint-0.9.1-released.md +++ b/_posts/2014-10-25-eslint-0.9.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.9.1 released tags: - release diff --git a/_posts/2014-11-01-eslint-0.9.2-released.md b/_posts/2014-11-01-eslint-0.9.2-released.md index f5459b5425..efabba5d95 100644 --- a/_posts/2014-11-01-eslint-0.9.2-released.md +++ b/_posts/2014-11-01-eslint-0.9.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.9.2 released tags: - release diff --git a/_posts/2014-11-15-es6-jsx-support.md b/_posts/2014-11-15-es6-jsx-support.md index b2c6489284..4ed3f21c78 100644 --- a/_posts/2014-11-15-es6-jsx-support.md +++ b/_posts/2014-11-15-es6-jsx-support.md @@ -1,5 +1,4 @@ --- -layout: post title: Announcing ES6 and JSX Support tags: - ES6 diff --git a/_posts/2014-11-27-eslint-0.10.0-released.md b/_posts/2014-11-27-eslint-0.10.0-released.md index e74b4b1ec5..2fa5b56775 100644 --- a/_posts/2014-11-27-eslint-0.10.0-released.md +++ b/_posts/2014-11-27-eslint-0.10.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.10.0 released tags: - release diff --git a/_posts/2014-12-06-eslint-0.10.1-released.md b/_posts/2014-12-06-eslint-0.10.1-released.md index be5f817aea..3eaebe8a5a 100644 --- a/_posts/2014-12-06-eslint-0.10.1-released.md +++ b/_posts/2014-12-06-eslint-0.10.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.10.1 released tags: - release diff --git a/_posts/2014-12-12-eslint-0.10.2-released.md b/_posts/2014-12-12-eslint-0.10.2-released.md index 087e60304e..85cd99ef77 100644 --- a/_posts/2014-12-12-eslint-0.10.2-released.md +++ b/_posts/2014-12-12-eslint-0.10.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.10.2 released tags: - release diff --git a/_posts/2014-12-24-espree-esprima.md b/_posts/2014-12-24-espree-esprima.md index 0c19ef6223..556c679402 100644 --- a/_posts/2014-12-24-espree-esprima.md +++ b/_posts/2014-12-24-espree-esprima.md @@ -1,5 +1,4 @@ --- -layout: post title: Introducing Espree, an Esprima alternative tags: - ES6 diff --git a/_posts/2014-12-30-eslint-0.11.0-released.md b/_posts/2014-12-30-eslint-0.11.0-released.md index 4072a3b477..9a76c041e0 100644 --- a/_posts/2014-12-30-eslint-0.11.0-released.md +++ b/_posts/2014-12-30-eslint-0.11.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.11.0 released tags: - release diff --git a/_posts/2015-01-17-eslint-0.12.0-released.md b/_posts/2015-01-17-eslint-0.12.0-released.md index 9f84854ad2..640534db52 100644 --- a/_posts/2015-01-17-eslint-0.12.0-released.md +++ b/_posts/2015-01-17-eslint-0.12.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.12.0 released tags: - release @@ -83,14 +82,3 @@ The `es6jsx` branch is now considered obsolete and changes will continue to be m * Docs: Document ecmaFeatures (Nicholas C. Zakas) * Docs: Remove illegal code fence (Nicholas C. Zakas) * Docs: Remove references to Esprima (Nicholas C. Zakas) - - - - - - - - - - - diff --git a/_posts/2015-01-24-eslint-0.13.0-released.md b/_posts/2015-01-24-eslint-0.13.0-released.md index e2a2ea2ce0..ae28c69a8a 100644 --- a/_posts/2015-01-24-eslint-0.13.0-released.md +++ b/_posts/2015-01-24-eslint-0.13.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.13.0 released tags: - release diff --git a/_posts/2015-02-07-eslint-0.14.0-released.md b/_posts/2015-02-07-eslint-0.14.0-released.md index 5234963232..0b6e5a077c 100644 --- a/_posts/2015-02-07-eslint-0.14.0-released.md +++ b/_posts/2015-02-07-eslint-0.14.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.14.0 released tags: - release diff --git a/_posts/2015-02-08-eslint-0.14.1-released.md b/_posts/2015-02-08-eslint-0.14.1-released.md index f33a0bbf55..ca543bf4d9 100644 --- a/_posts/2015-02-08-eslint-0.14.1-released.md +++ b/_posts/2015-02-08-eslint-0.14.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.14.1 released tags: - release diff --git a/_posts/2015-02-21-eslint-0.15.0-released.md b/_posts/2015-02-21-eslint-0.15.0-released.md index 29e993aa5a..8697fe8035 100644 --- a/_posts/2015-02-21-eslint-0.15.0-released.md +++ b/_posts/2015-02-21-eslint-0.15.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.15.0 released tags: - release diff --git a/_posts/2015-02-26-eslint-0.15.1-released.md b/_posts/2015-02-26-eslint-0.15.1-released.md index 743e4bb3da..f840958697 100644 --- a/_posts/2015-02-26-eslint-0.15.1-released.md +++ b/_posts/2015-02-26-eslint-0.15.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.15.1 released tags: - release diff --git a/_posts/2015-03-07-eslint-0.16.0-released.md b/_posts/2015-03-07-eslint-0.16.0-released.md index de9e856fb3..b7ce357f38 100644 --- a/_posts/2015-03-07-eslint-0.16.0-released.md +++ b/_posts/2015-03-07-eslint-0.16.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.16.0 released tags: - release diff --git a/_posts/2015-03-08-eslint-0.16.1-released.md b/_posts/2015-03-08-eslint-0.16.1-released.md index 46db15418b..57beae7d14 100644 --- a/_posts/2015-03-08-eslint-0.16.1-released.md +++ b/_posts/2015-03-08-eslint-0.16.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.16.1 released tags: - release diff --git a/_posts/2015-03-10-eslint-0.16.2-released.md b/_posts/2015-03-10-eslint-0.16.2-released.md index c0dfaea5b8..32bf724d95 100644 --- a/_posts/2015-03-10-eslint-0.16.2-released.md +++ b/_posts/2015-03-10-eslint-0.16.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.16.2 released tags: - release @@ -24,6 +23,3 @@ We just pushed ESLint 0.16.2, which is a patch update to fix bugs discovered in ## Documentation * Docs: Update descriptive text for --no-ignore option. (David Anson) - - - diff --git a/_posts/2015-03-14-eslint-0.17.0-released.md b/_posts/2015-03-14-eslint-0.17.0-released.md index 5ce88b9fea..55f8143fb3 100644 --- a/_posts/2015-03-14-eslint-0.17.0-released.md +++ b/_posts/2015-03-14-eslint-0.17.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.17.0 released tags: - release diff --git a/_posts/2015-03-17-eslint-0.17.1-released.md b/_posts/2015-03-17-eslint-0.17.1-released.md index 9e54ae900a..93d5b5b68f 100644 --- a/_posts/2015-03-17-eslint-0.17.1-released.md +++ b/_posts/2015-03-17-eslint-0.17.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.17.1 released tags: - release diff --git a/_posts/2015-03-28-eslint-0.18.0-released.md b/_posts/2015-03-28-eslint-0.18.0-released.md index a6023f0f2b..73b94ff256 100644 --- a/_posts/2015-03-28-eslint-0.18.0-released.md +++ b/_posts/2015-03-28-eslint-0.18.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.18.0 released tags: - release @@ -78,5 +77,3 @@ We are preparing a list of breaking changes that will be coming in v1.0.0 and ar * Docs: Fixing broken links (Ilya Volodin) * Docs: Moving documentation out of the repository and modifying build scripts (Ilya Volodin) * Docs: Update link to Documentation (Kate Lizogubova) - - diff --git a/_posts/2015-04-11-eslint-0.19.0-released.md b/_posts/2015-04-11-eslint-0.19.0-released.md index 7ae0ed9c3e..795ab3bec2 100644 --- a/_posts/2015-04-11-eslint-0.19.0-released.md +++ b/_posts/2015-04-11-eslint-0.19.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.19.0 released tags: - release @@ -88,11 +87,3 @@ Reminder: we are preparing a list of breaking changes that will be coming in v1. * Docs: Update one-var documentation (fixes [#2210](https://github.com/eslint/eslint/issues/2210)) (Nicholas C. Zakas) * Docs: Update processors description (Nicholas C. Zakas) * Docs: Update URL in no-wrap-func.md to resolve 404 (Nate Eagleson) - - - - - - - - diff --git a/_posts/2015-04-24-eslint-0.20.0-released.md b/_posts/2015-04-24-eslint-0.20.0-released.md index 43fcf3fbfe..8f216a4a84 100644 --- a/_posts/2015-04-24-eslint-0.20.0-released.md +++ b/_posts/2015-04-24-eslint-0.20.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.20.0 released tags: - release diff --git a/_posts/2015-05-09-eslint-0.21.0-released.md b/_posts/2015-05-09-eslint-0.21.0-released.md index 128b7450a3..b414ab0251 100644 --- a/_posts/2015-05-09-eslint-0.21.0-released.md +++ b/_posts/2015-05-09-eslint-0.21.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.21.0 released tags: - release diff --git a/_posts/2015-05-15-eslint-0.21.1-released.md b/_posts/2015-05-15-eslint-0.21.1-released.md index 44e730674c..41b6799157 100644 --- a/_posts/2015-05-15-eslint-0.21.1-released.md +++ b/_posts/2015-05-15-eslint-0.21.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.21.1 released tags: - release diff --git a/_posts/2015-05-18-eslint-0.21.2-released.md b/_posts/2015-05-18-eslint-0.21.2-released.md index 574ba2d47f..6ca70d84fc 100644 --- a/_posts/2015-05-18-eslint-0.21.2-released.md +++ b/_posts/2015-05-18-eslint-0.21.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.21.2 released tags: - release @@ -19,4 +18,3 @@ We just pushed ESLint 0.21.2, which is a patch release upgrade. This release inc * Docs: Add chatroom to FAQ (Nicholas C. Zakas) * Docs: Move Gitter badge (Nicholas C. Zakas) - diff --git a/_posts/2015-05-30-eslint-0.22.0-released.md b/_posts/2015-05-30-eslint-0.22.0-released.md index 404109640d..923cb62fd7 100644 --- a/_posts/2015-05-30-eslint-0.22.0-released.md +++ b/_posts/2015-05-30-eslint-0.22.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.22.0 released tags: - release diff --git a/_posts/2015-05-30-eslint-0.22.1-released.md b/_posts/2015-05-30-eslint-0.22.1-released.md index 97f72ce230..94903a81f8 100644 --- a/_posts/2015-05-30-eslint-0.22.1-released.md +++ b/_posts/2015-05-30-eslint-0.22.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.22.1 released tags: - release diff --git a/_posts/2015-06-14-eslint-0.23.0-released.md b/_posts/2015-06-14-eslint-0.23.0-released.md index 043de8527c..3845248cdc 100644 --- a/_posts/2015-06-14-eslint-0.23.0-released.md +++ b/_posts/2015-06-14-eslint-0.23.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.23.0 released tags: - release diff --git a/_posts/2015-06-26-eslint-0.24.0-released.md b/_posts/2015-06-26-eslint-0.24.0-released.md index 38492da16c..daf7a2bec0 100644 --- a/_posts/2015-06-26-eslint-0.24.0-released.md +++ b/_posts/2015-06-26-eslint-0.24.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.24.0 released tags: - release diff --git a/_posts/2015-06-26-preparing-for-1.0.0.md b/_posts/2015-06-26-preparing-for-1.0.0.md index 9ecce0a82f..dba34fd637 100644 --- a/_posts/2015-06-26-preparing-for-1.0.0.md +++ b/_posts/2015-06-26-preparing-for-1.0.0.md @@ -1,5 +1,4 @@ --- -layout: post title: Preparing for 1.0.0 tags: - release diff --git a/_posts/2015-07-10-eslint-0.24.1-released.md b/_posts/2015-07-10-eslint-0.24.1-released.md index 2cf171fc76..aab5bb77e0 100644 --- a/_posts/2015-07-10-eslint-0.24.1-released.md +++ b/_posts/2015-07-10-eslint-0.24.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 0.24.1 released tags: - release diff --git a/_posts/2015-07-15-eslint-1.0.0-rc-1-released.md b/_posts/2015-07-15-eslint-1.0.0-rc-1-released.md index b459c197e2..0636471069 100644 --- a/_posts/2015-07-15-eslint-1.0.0-rc-1-released.md +++ b/_posts/2015-07-15-eslint-1.0.0-rc-1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.0.0-rc-1 released tags: - release diff --git a/_posts/2015-07-23-eslint-1.0.0-rc-2-released.md b/_posts/2015-07-23-eslint-1.0.0-rc-2-released.md index c7b55c865f..9335ce415f 100644 --- a/_posts/2015-07-23-eslint-1.0.0-rc-2-released.md +++ b/_posts/2015-07-23-eslint-1.0.0-rc-2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.0.0-rc-2 released tags: - release diff --git a/_posts/2015-07-24-eslint-1.0.0-rc-3-released.md b/_posts/2015-07-24-eslint-1.0.0-rc-3-released.md index 5d85c2c2b4..cc641f5a7c 100644 --- a/_posts/2015-07-24-eslint-1.0.0-rc-3-released.md +++ b/_posts/2015-07-24-eslint-1.0.0-rc-3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.0.0-rc-3 released tags: - release diff --git a/_posts/2015-07-31-eslint-1.0.0-released.md b/_posts/2015-07-31-eslint-1.0.0-released.md index d982f5b758..469c103e59 100644 --- a/_posts/2015-07-31-eslint-1.0.0-released.md +++ b/_posts/2015-07-31-eslint-1.0.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.0.0 released tags: - release diff --git a/_posts/2015-08-07-eslint-1.1.0-released.md b/_posts/2015-08-07-eslint-1.1.0-released.md index e04f29ebc7..9803cb6f91 100644 --- a/_posts/2015-08-07-eslint-1.1.0-released.md +++ b/_posts/2015-08-07-eslint-1.1.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.1.0 released tags: - release diff --git a/_posts/2015-08-18-eslint-1.2.0-released.md b/_posts/2015-08-18-eslint-1.2.0-released.md index 0d2271e4e1..81aa676dff 100644 --- a/_posts/2015-08-18-eslint-1.2.0-released.md +++ b/_posts/2015-08-18-eslint-1.2.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.2.0 released tags: - release diff --git a/_posts/2015-08-20-eslint-1.2.1-released.md b/_posts/2015-08-20-eslint-1.2.1-released.md index fb65e5fe2c..335a0ce435 100644 --- a/_posts/2015-08-20-eslint-1.2.1-released.md +++ b/_posts/2015-08-20-eslint-1.2.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint 1.2.1 released tags: - release diff --git a/_posts/2015-08-28-eslint-v1.3.0-released.md b/_posts/2015-08-28-eslint-v1.3.0-released.md index a065de91f1..26d4168384 100644 --- a/_posts/2015-08-28-eslint-v1.3.0-released.md +++ b/_posts/2015-08-28-eslint-v1.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.3.0 released tags: - release @@ -113,5 +112,3 @@ An exciting addition from Julian Laval, who contributed an [HTML formatter](http * Build: Autogenerate release blog post (fixes [#3562](https://github.com/eslint/eslint/issues/3562)) (Nicholas C. Zakas) - - diff --git a/_posts/2015-08-29-eslint-v1.3.1-released.md b/_posts/2015-08-29-eslint-v1.3.1-released.md index d7cc8481e0..1d1753e344 100644 --- a/_posts/2015-08-29-eslint-v1.3.1-released.md +++ b/_posts/2015-08-29-eslint-v1.3.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.3.1 released tags: - release @@ -23,11 +22,3 @@ We just pushed ESLint v1.3.1, which is a patch release upgrade of ESLint. This r * Fix: `indent` to not crash on empty files (fixes [#3570](https://github.com/eslint/eslint/issues/3570)) (Gyandeep Singh) * Fix: Remove unused config file (fixes [#2227](https://github.com/eslint/eslint/issues/2227)) (Gyandeep Singh) - - - - - - - - diff --git a/_posts/2015-09-11-eslint-v1.4.0-released.md b/_posts/2015-09-11-eslint-v1.4.0-released.md index 14110c34d9..cf6f09a7ae 100644 --- a/_posts/2015-09-11-eslint-v1.4.0-released.md +++ b/_posts/2015-09-11-eslint-v1.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.4.0 released tags: - release @@ -144,5 +143,3 @@ This release features several new rules: * Build: check-commit now checks commit message length. (fixes [#3706](https://github.com/eslint/eslint/issues/3706)) (Kevin Partington) * Build: Increase mocha timeout (fixes [#3692](https://github.com/eslint/eslint/issues/3692)) (Nicholas C. Zakas) - - diff --git a/_posts/2015-09-11-eslint-v1.4.1-released.md b/_posts/2015-09-11-eslint-v1.4.1-released.md index 6507523738..008726175d 100644 --- a/_posts/2015-09-11-eslint-v1.4.1-released.md +++ b/_posts/2015-09-11-eslint-v1.4.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.4.1 released tags: - release @@ -32,9 +31,3 @@ We just pushed ESLint v1.4.1, which is a patch release upgrade of ESLint. This r * Docs: Shorten and simplify autocomment for new issues (Nicholas C. Zakas) - - - - - - diff --git a/_posts/2015-09-15-eslint-v1.4.2-released.md b/_posts/2015-09-15-eslint-v1.4.2-released.md index 7b4313c8d0..2439ebc44e 100644 --- a/_posts/2015-09-15-eslint-v1.4.2-released.md +++ b/_posts/2015-09-15-eslint-v1.4.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.4.2 released tags: - release @@ -22,5 +21,3 @@ We just pushed ESLint v1.4.2, which is a patch release upgrade of ESLint. This r * Fix: Ensure **/node_modules works in ignore files (fixes [#3788](https://github.com/eslint/eslint/issues/3788)) (Nicholas C. Zakas) * Fix: Ensure ./ works correctly with CLI (fixes [#3792](https://github.com/eslint/eslint/issues/3792)) (Nicholas C. Zakas) - - diff --git a/_posts/2015-09-15-eslint-v1.4.3-released.md b/_posts/2015-09-15-eslint-v1.4.3-released.md index 97536b9128..d1d534b048 100644 --- a/_posts/2015-09-15-eslint-v1.4.3-released.md +++ b/_posts/2015-09-15-eslint-v1.4.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.4.3 released tags: - release @@ -22,5 +21,3 @@ We just pushed ESLint v1.4.3, which is a patch release upgrade of ESLint. This r * Fix: Directory ignoring should work (fixes [#3812](https://github.com/eslint/eslint/issues/3812)) (Nicholas C. Zakas) * Fix: jsx-quotes exception for attributes without value (fixes [#3793](https://github.com/eslint/eslint/issues/3793)) (Mathias Schreck) - - diff --git a/_posts/2015-09-18-eslint-v1.5.0-released.md b/_posts/2015-09-18-eslint-v1.5.0-released.md index a7236c83ab..e8a0a02e23 100644 --- a/_posts/2015-09-18-eslint-v1.5.0-released.md +++ b/_posts/2015-09-18-eslint-v1.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.5.0 released tags: - release @@ -106,5 +105,3 @@ Sometimes ESLint doesn't do what it's supposed to do, and in that case, the new ## Build Related * Build: Generate formatter example docs (fixes [#3560](https://github.com/eslint/eslint/issues/3560)) (Ian VanSchooten) - - diff --git a/_posts/2015-09-22-eslint-v1.5.1-released.md b/_posts/2015-09-22-eslint-v1.5.1-released.md index 3db59eed71..4d89474ae6 100644 --- a/_posts/2015-09-22-eslint-v1.5.1-released.md +++ b/_posts/2015-09-22-eslint-v1.5.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.5.1 released tags: - release @@ -55,5 +54,3 @@ We just pushed ESLint v1.5.1, which is a patch release upgrade of ESLint. This r * Build: Fix broken .gitattributes generation (fixes [#3566](https://github.com/eslint/eslint/issues/3566)) (Nicholas C. Zakas) * Build: Fix formatter docs generation (fixes [#3847](https://github.com/eslint/eslint/issues/3847)) (Nicholas C. Zakas) - - diff --git a/_posts/2015-10-02-eslint-v1.6.0-released.md b/_posts/2015-10-02-eslint-v1.6.0-released.md index be70da002e..1fd5efbdbc 100644 --- a/_posts/2015-10-02-eslint-v1.6.0-released.md +++ b/_posts/2015-10-02-eslint-v1.6.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.6.0 released tags: - release @@ -111,5 +110,3 @@ This feature is still considered experimental but is backed up by a lot of unit * Build: Add load performance check inside perf function (fixes [#3994](https://github.com/eslint/eslint/issues/3994)) (Gyandeep Singh) * Build: Update markdownlint dependency (fixes [#3954](https://github.com/eslint/eslint/issues/3954)) (David Anson) - - diff --git a/_posts/2015-10-16-eslint-v1.7.0-released.md b/_posts/2015-10-16-eslint-v1.7.0-released.md index 8281f77c3b..4fdfaa268d 100644 --- a/_posts/2015-10-16-eslint-v1.7.0-released.md +++ b/_posts/2015-10-16-eslint-v1.7.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.7.0 released tags: - release @@ -103,5 +102,3 @@ You've always been able to use npm packages in the `extends` field of your confi * Build: Enable CodeClimate (fixes [#4068](https://github.com/eslint/eslint/issues/4068)) (Nicholas C. Zakas) * Build: Performance perf to not ignore jshint file (refs [#3765](https://github.com/eslint/eslint/issues/3765)) (Gyandeep Singh) * Build: Add `.eslintignore` file for the project (fixes [#3765](https://github.com/eslint/eslint/issues/3765)) (Gyandeep Singh) - - diff --git a/_posts/2015-10-16-eslint-v1.7.1-released.md b/_posts/2015-10-16-eslint-v1.7.1-released.md index bd61603f24..05cfbc27a5 100644 --- a/_posts/2015-10-16-eslint-v1.7.1-released.md +++ b/_posts/2015-10-16-eslint-v1.7.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.7.1 released tags: - release @@ -24,11 +23,3 @@ We just pushed ESLint v1.7.1, which is a patch release upgrade of ESLint. This r * Fix: id-match schema (fixes [#4155](https://github.com/eslint/eslint/issues/4155)) (Nicholas C. Zakas) * Fix: no-magic-numbers should ignore parseInt (fixes [#4167](https://github.com/eslint/eslint/issues/4167)) (Nicholas C. Zakas) * Fix: `indent` param function fix (fixes [#4165](https://github.com/eslint/eslint/issues/4165), fixes [#4164](https://github.com/eslint/eslint/issues/4164)) (Gyandeep Singh) - - - - - - - - diff --git a/_posts/2015-10-19-eslint-v1.7.2-released.md b/_posts/2015-10-19-eslint-v1.7.2-released.md index cf0f70ff92..a3d7c6a351 100644 --- a/_posts/2015-10-19-eslint-v1.7.2-released.md +++ b/_posts/2015-10-19-eslint-v1.7.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.7.2 released tags: - release @@ -25,11 +24,3 @@ We just pushed ESLint v1.7.2, which is a patch release upgrade of ESLint. This r * Fix: no-mixed-spaces-and-tabs (fixes [#4189](https://github.com/eslint/eslint/issues/4189), fixes [#4190](https://github.com/eslint/eslint/issues/4190)) (alberto) * Fix: no-extend-native disallow using Object.properties (fixes [#4180](https://github.com/eslint/eslint/issues/4180)) (Nathan Woltman) * Fix: no-magic-numbers should ignore Number.parseInt (fixes [#4167](https://github.com/eslint/eslint/issues/4167)) (Henry Zhu) - - - - - - - - diff --git a/_posts/2015-10-21-eslint-v1.7.3-released.md b/_posts/2015-10-21-eslint-v1.7.3-released.md index ada3113640..eef8fe8680 100644 --- a/_posts/2015-10-21-eslint-v1.7.3-released.md +++ b/_posts/2015-10-21-eslint-v1.7.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.7.3 released tags: - release @@ -38,9 +37,3 @@ We just pushed ESLint v1.7.3, which is a patch release upgrade of ESLint. This r * Docs: Add missing single-quote (Kevin Lamping) - - - - - - diff --git a/_posts/2015-10-30-eslint-v1.8.0-released.md b/_posts/2015-10-30-eslint-v1.8.0-released.md index ddab68e486..f1c9f135d8 100644 --- a/_posts/2015-10-30-eslint-v1.8.0-released.md +++ b/_posts/2015-10-30-eslint-v1.8.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.8.0 released tags: - release @@ -92,5 +91,3 @@ The `RuleTester` just got a bit smarter. It will now verify that the AST was not * Build: Do not stub console in testing (fixes [#1328](https://github.com/eslint/eslint/issues/1328)) (Gyandeep Singh) - - diff --git a/_posts/2015-11-06-eslint-v1.9.0-released.md b/_posts/2015-11-06-eslint-v1.9.0-released.md index a9da183d74..5c7eda0129 100644 --- a/_posts/2015-11-06-eslint-v1.9.0-released.md +++ b/_posts/2015-11-06-eslint-v1.9.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.9.0 released tags: - release @@ -77,5 +76,3 @@ Due to the changes in dependency management in npm 3, some users were getting er * Build: Clarify commit-check messages (fixes [#4256](https://github.com/eslint/eslint/issues/4256)) (Ian VanSchooten) * Build: Add node 5 to travis build (fixes [#4310](https://github.com/eslint/eslint/issues/4310)) (Gyandeep Singh) - - diff --git a/_posts/2015-11-20-eslint-v1.10.0-released.md b/_posts/2015-11-20-eslint-v1.10.0-released.md index 3427cd8c4e..69742314b2 100644 --- a/_posts/2015-11-20-eslint-v1.10.0-released.md +++ b/_posts/2015-11-20-eslint-v1.10.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.10.0 released tags: - release @@ -93,9 +92,3 @@ The new [`--no-inline-config`](https://eslint.org/docs/user-guide/command-line-i * Docs: Replace link to deprecated rule with newer rule (Andrew Marshall) * Docs: missing close rbracket in example (@storkme) * Docs: Document semi-spacing behaviour (fixes [#4404](https://github.com/eslint/eslint/issues/4404)) (alberto) - - - - - - diff --git a/_posts/2015-11-20-eslint-v1.10.1-released.md b/_posts/2015-11-20-eslint-v1.10.1-released.md index 6950410f93..22224d8562 100644 --- a/_posts/2015-11-20-eslint-v1.10.1-released.md +++ b/_posts/2015-11-20-eslint-v1.10.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.10.1 released tags: - release @@ -22,11 +21,3 @@ We just pushed ESLint v1.10.1, which is a patch release upgrade of ESLint. This * Fix: Revert freezing context object (refs [#4495](https://github.com/eslint/eslint/issues/4495)) (Nicholas C. Zakas) - - - - - - - - diff --git a/_posts/2015-11-27-eslint-v1.10.2-released.md b/_posts/2015-11-27-eslint-v1.10.2-released.md index ef51cf8a4e..2a07363f20 100644 --- a/_posts/2015-11-27-eslint-v1.10.2-released.md +++ b/_posts/2015-11-27-eslint-v1.10.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.10.2 released tags: - release @@ -57,5 +56,3 @@ We just pushed ESLint v1.10.2, which is a patch release upgrade of ESLint. This * Build: Add branch update during release process (fixes [#4491](https://github.com/eslint/eslint/issues/4491)) (Gyandeep Singh) * Build: Allow revert commits in commit messages (fixes [#4452](https://github.com/eslint/eslint/issues/4452)) (alberto) * Build: Update eslint bot messages (fixes [#4497](https://github.com/eslint/eslint/issues/4497)) (Nicholas C. Zakas) - - diff --git a/_posts/2015-12-01-eslint-v1.10.3-released.md b/_posts/2015-12-01-eslint-v1.10.3-released.md index 75a7007a88..ddd1fc950c 100644 --- a/_posts/2015-12-01-eslint-v1.10.3-released.md +++ b/_posts/2015-12-01-eslint-v1.10.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v1.10.3 released tags: - release @@ -32,9 +31,3 @@ We just pushed ESLint v1.10.3, which is a patch release upgrade of ESLint. This * Docs: Update strict rule docs (fixes [#4583](https://github.com/eslint/eslint/issues/4583)) (Nicholas C. Zakas) * Docs: Reference .eslintrc.* in contributing docs (fixes [#4532](https://github.com/eslint/eslint/issues/4532)) (Kai Cataldo) - - - - - - diff --git a/_posts/2015-12-01-espree-3-alpha-1-released.md b/_posts/2015-12-01-espree-3-alpha-1-released.md index 6461867ec6..cf6903efbf 100644 --- a/_posts/2015-12-01-espree-3-alpha-1-released.md +++ b/_posts/2015-12-01-espree-3-alpha-1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: Espree v3.0.0 Alpha 1 released tags: - release diff --git a/_posts/2015-12-09-espree-3-alpha-2-released.md b/_posts/2015-12-09-espree-3-alpha-2-released.md index 0ad40a9272..a6ff18907e 100644 --- a/_posts/2015-12-09-espree-3-alpha-2-released.md +++ b/_posts/2015-12-09-espree-3-alpha-2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: Espree v3.0.0 Alpha 2 released tags: - release diff --git a/_posts/2015-12-11-eslint-v2.0.0-alpha-1-released.md b/_posts/2015-12-11-eslint-v2.0.0-alpha-1-released.md index dbf9a6da34..9c6e79d4db 100644 --- a/_posts/2015-12-11-eslint-v2.0.0-alpha-1-released.md +++ b/_posts/2015-12-11-eslint-v2.0.0-alpha-1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-alpha-1 released tags: - release @@ -160,5 +159,3 @@ There are several new rules for this release: * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - diff --git a/_posts/2015-12-23-eslint-v2.0.0-alpha-2-released.md b/_posts/2015-12-23-eslint-v2.0.0-alpha-2-released.md index d97ebc97bc..ab7c91f578 100644 --- a/_posts/2015-12-23-eslint-v2.0.0-alpha-2-released.md +++ b/_posts/2015-12-23-eslint-v2.0.0-alpha-2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-alpha-2 released tags: - release @@ -220,5 +219,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - diff --git a/_posts/2016-01-11-eslint-v2.0.0-beta.1-released.md b/_posts/2016-01-11-eslint-v2.0.0-beta.1-released.md index 03c10d1496..ef71369b62 100644 --- a/_posts/2016-01-11-eslint-v2.0.0-beta.1-released.md +++ b/_posts/2016-01-11-eslint-v2.0.0-beta.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-beta.1 released tags: - release @@ -318,5 +317,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - diff --git a/_posts/2016-01-22-eslint-v2.0.0-beta.2-released.md b/_posts/2016-01-22-eslint-v2.0.0-beta.2-released.md index 5fa5d3d820..a4fffeca4b 100644 --- a/_posts/2016-01-22-eslint-v2.0.0-beta.2-released.md +++ b/_posts/2016-01-22-eslint-v2.0.0-beta.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-beta.2 released tags: - release @@ -402,6 +401,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - - diff --git a/_posts/2016-01-29-eslint-v2.0.0-beta.3-released.md b/_posts/2016-01-29-eslint-v2.0.0-beta.3-released.md index 39315ffda3..db61326157 100644 --- a/_posts/2016-01-29-eslint-v2.0.0-beta.3-released.md +++ b/_posts/2016-01-29-eslint-v2.0.0-beta.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-beta.3 released tags: - release @@ -450,6 +449,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - - diff --git a/_posts/2016-02-02-eslint-v2.0.0-rc.0-released.md b/_posts/2016-02-02-eslint-v2.0.0-rc.0-released.md index 3cd1b54e76..4d846fc1dd 100644 --- a/_posts/2016-02-02-eslint-v2.0.0-rc.0-released.md +++ b/_posts/2016-02-02-eslint-v2.0.0-rc.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-rc.0 released tags: - release @@ -502,6 +501,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - - diff --git a/_posts/2016-02-09-eslint-v2.0.0-rc.1-released.md b/_posts/2016-02-09-eslint-v2.0.0-rc.1-released.md index 1a51ab4e00..6e134456a6 100644 --- a/_posts/2016-02-09-eslint-v2.0.0-rc.1-released.md +++ b/_posts/2016-02-09-eslint-v2.0.0-rc.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0-rc.1 released tags: - release @@ -557,6 +556,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - - diff --git a/_posts/2016-02-12-eslint-v2.0.0-released.md b/_posts/2016-02-12-eslint-v2.0.0-released.md index 9fbe141215..050aec91fd 100644 --- a/_posts/2016-02-12-eslint-v2.0.0-released.md +++ b/_posts/2016-02-12-eslint-v2.0.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.0.0 released tags: - release @@ -586,9 +585,3 @@ There are several new rules for this release: ## Build Related (v2.0.0-alpha-1) * Build: Consume no-underscore-dangle allowAfterThis option (fixes [#4599](https://github.com/eslint/eslint/issues/4599)) (Kevin Partington) - - - - - - diff --git a/_posts/2016-02-15-eslint-v2.1.0-released.md b/_posts/2016-02-15-eslint-v2.1.0-released.md index 72094ea0e2..51ae265563 100644 --- a/_posts/2016-02-15-eslint-v2.1.0-released.md +++ b/_posts/2016-02-15-eslint-v2.1.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.1.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.1.0 released -We just pushed ESLint v2.1.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v2.1.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -73,5 +72,3 @@ We just pushed ESLint v2.1.0, which is a minor release upgrade of ESLint. This r * [7981ef5](https://github.com/eslint/eslint/commit/7981ef5) Build: Fix release script (Nicholas C. Zakas) * [b32ddad](https://github.com/eslint/eslint/commit/b32ddad) Build: `npm run perf` command should check the exit code (fixes [#5279](https://github.com/eslint/eslint/issues/5279)) (Burak Yigit Kaya) * [717bede](https://github.com/eslint/eslint/commit/717bede) Build: Switch to using eslint-release (fixes [#5223](https://github.com/eslint/eslint/issues/5223)) (Nicholas C. Zakas) - - diff --git a/_posts/2016-02-19-eslint-v2.2.0-released.md b/_posts/2016-02-19-eslint-v2.2.0-released.md index 4ae04e198f..c43372e040 100644 --- a/_posts/2016-02-19-eslint-v2.2.0-released.md +++ b/_posts/2016-02-19-eslint-v2.2.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.2.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.2.0 released -We just pushed ESLint v2.2.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v2.2.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -47,9 +46,3 @@ We just pushed ESLint v2.2.0, which is a minor release upgrade of ESLint. This r * [3f48875](https://github.com/eslint/eslint/commit/3f48875) Docs: Fix yield star spacing examples (Dmitriy Lazarev) * [4dab76e](https://github.com/eslint/eslint/commit/4dab76e) Docs: Update `preferType` heading to keep code format (fixes [#5307](https://github.com/eslint/eslint/issues/5307)) (chinesedfan) * [d18d406](https://github.com/eslint/eslint/commit/d18d406) Docs: Update PR creation bot message (fixes [#5268](https://github.com/eslint/eslint/issues/5268)) (Nicholas C. Zakas) - - - - - - diff --git a/_posts/2016-03-04-eslint-v2.3.0-released.md b/_posts/2016-03-04-eslint-v2.3.0-released.md index 4f3eecc8f7..39a89a4d86 100644 --- a/_posts/2016-03-04-eslint-v2.3.0-released.md +++ b/_posts/2016-03-04-eslint-v2.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.3.0 released tags: - release @@ -113,5 +112,3 @@ If ESLint fails to find a plugin required by the config file, we will now print * [124c447](https://github.com/eslint/eslint/commit/124c447) Build: Add additional linebreak to docs (fixes [#5464](https://github.com/eslint/eslint/issues/5464)) (Ilya Volodin) * [7932f78](https://github.com/eslint/eslint/commit/7932f78) Build: Fix commit message validation (fixes [#5340](https://github.com/eslint/eslint/issues/5340)) (Nicholas C. Zakas) * [2f3e1ae](https://github.com/eslint/eslint/commit/2f3e1ae) Build: Change rules to warnings in perf test (fixes [#5330](https://github.com/eslint/eslint/issues/5330)) (Brandon Mills) - - diff --git a/_posts/2016-03-11-eslint-v2.4.0-released.md b/_posts/2016-03-11-eslint-v2.4.0-released.md index 14f5882755..afefd31e38 100644 --- a/_posts/2016-03-11-eslint-v2.4.0-released.md +++ b/_posts/2016-03-11-eslint-v2.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.4.0 released tags: - release @@ -68,9 +67,3 @@ With v2.4.0, `babel-eslint` compatibility is now restored with a permanent solut * [6ab81d4](https://github.com/eslint/eslint/commit/6ab81d4) Docs: Distinguish examples in rules under Best Practices part 1 (Mark Pedrotti) * [979c096](https://github.com/eslint/eslint/commit/979c096) Docs: Document linebreak-style as fixable. (Afnan Fahim) * [5d9a798](https://github.com/eslint/eslint/commit/5d9a798) Docs: README.md, prefer-const; change modified to reassigned (Michiel de Bruijne) - - - - - - diff --git a/_posts/2016-03-25-eslint-v2.5.0-released.md b/_posts/2016-03-25-eslint-v2.5.0-released.md index 29b7bf8cd2..46df76a7ad 100644 --- a/_posts/2016-03-25-eslint-v2.5.0-released.md +++ b/_posts/2016-03-25-eslint-v2.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.5.0 released tags: - release @@ -121,5 +120,3 @@ Bundling dependencies does mean that npm cannot dedupe ESLint dependencies upon * [646f863](https://github.com/eslint/eslint/commit/646f863) Build: Bundle dependencies in package.json (fixes [#5013](https://github.com/eslint/eslint/issues/5013)) (Nicholas C. Zakas) * [569c478](https://github.com/eslint/eslint/commit/569c478) Build: Fix phantomjs CI problems (fixes [#5666](https://github.com/eslint/eslint/issues/5666)) (alberto) - - diff --git a/_posts/2016-03-28-eslint-v2.5.3-released.md b/_posts/2016-03-28-eslint-v2.5.3-released.md index d1f85cf9b1..c41f39bd93 100644 --- a/_posts/2016-03-28-eslint-v2.5.3-released.md +++ b/_posts/2016-03-28-eslint-v2.5.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.5.3 released tags: - release @@ -46,5 +45,3 @@ In v2.5.0, we started bundling dependencies with ESLint. The goal was to create * [8749ac5](https://github.com/eslint/eslint/commit/8749ac5) Build: Disable bundling dependencies (fixes [#5687](https://github.com/eslint/eslint/issues/5687)) (Nicholas C. Zakas) * [013a18e](https://github.com/eslint/eslint/commit/013a18e) Build: Fix bundling script (fixes * [#5680](https://github.com/eslint/eslint/issues/5680)) (Nicholas C. Zakas) - - diff --git a/_posts/2016-03-30-updated-rule-policy.md b/_posts/2016-03-30-updated-rule-policy.md index 2341f3dfd0..595e8f2212 100644 --- a/_posts/2016-03-30-updated-rule-policy.md +++ b/_posts/2016-03-30-updated-rule-policy.md @@ -1,5 +1,4 @@ --- -layout: post title: Updated Rule Policy tags: - information diff --git a/_posts/2016-04-01-eslint-v2.6.0-released.md b/_posts/2016-04-01-eslint-v2.6.0-released.md index 3b28a86194..0d01789bf0 100644 --- a/_posts/2016-04-01-eslint-v2.6.0-released.md +++ b/_posts/2016-04-01-eslint-v2.6.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.6.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.6.0 released -We just pushed ESLint v2.6.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v2.6.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -67,5 +66,3 @@ We just pushed ESLint v2.6.0, which is a minor release upgrade of ESLint. This r * [aba1954](https://github.com/eslint/eslint/commit/aba1954) Build: Ignore jsdoc folder internally (fixes [#5714](https://github.com/eslint/eslint/issues/5714)) (alberto) - - diff --git a/_posts/2016-04-04-eslint-v2.7.0-released.md b/_posts/2016-04-04-eslint-v2.7.0-released.md index 3527889190..db824cd20d 100644 --- a/_posts/2016-04-04-eslint-v2.7.0-released.md +++ b/_posts/2016-04-04-eslint-v2.7.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.7.0 released tags: - release @@ -31,9 +30,3 @@ This release was meant to be a patch v2.6.1 release, but the version was incorre * [7e80867](https://github.com/eslint/eslint/commit/7e80867) Docs: Update sentence in fixable rules (Mark Pedrotti) * [4f93c32](https://github.com/eslint/eslint/commit/4f93c32) Docs: Clarify `array-bracket-spacing` with newlines (fixes [#5768](https://github.com/eslint/eslint/issues/5768)) (alberto) - - - - - - diff --git a/_posts/2016-04-14-welcoming-jscs-to-eslint.md b/_posts/2016-04-14-welcoming-jscs-to-eslint.md index 5a63030581..637927d886 100644 --- a/_posts/2016-04-14-welcoming-jscs-to-eslint.md +++ b/_posts/2016-04-14-welcoming-jscs-to-eslint.md @@ -1,5 +1,4 @@ --- -layout: post title: Welcoming JSCS To ESLint date: 2016-04-14 17:13:45 tags: diff --git a/_posts/2016-04-15-eslint-v2.8.0-released.md b/_posts/2016-04-15-eslint-v2.8.0-released.md index fba63d0ea2..7c300fa007 100644 --- a/_posts/2016-04-15-eslint-v2.8.0-released.md +++ b/_posts/2016-04-15-eslint-v2.8.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.8.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.8.0 released -We just pushed ESLint v2.8.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v2.8.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -68,9 +67,3 @@ We just pushed ESLint v2.8.0, which is a minor release upgrade of ESLint. This r * [9c9a295](https://github.com/eslint/eslint/commit/9c9a295) Docs: Add note about shell vs node glob parameters in cli (alberto) * [5308ff9](https://github.com/eslint/eslint/commit/5308ff9) Docs: Add code backticks to sentence in fixable rules (Mark Pedrotti) * [965ec06](https://github.com/eslint/eslint/commit/965ec06) Docs: fix the examples for space-before-function-paren. (Craig Silverstein) - - - - - - diff --git a/_posts/2016-04-19-eslint-joins-the-jquery-foundation.md b/_posts/2016-04-19-eslint-joins-the-jquery-foundation.md index c6f921bead..e1032b9bde 100644 --- a/_posts/2016-04-19-eslint-joins-the-jquery-foundation.md +++ b/_posts/2016-04-19-eslint-joins-the-jquery-foundation.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint Joins The jQuery Foundation date: 2016-04-19 tags: diff --git a/_posts/2016-04-29-eslint-v2.9.0-released.md b/_posts/2016-04-29-eslint-v2.9.0-released.md index b5dd9026e1..68fc39894a 100644 --- a/_posts/2016-04-29-eslint-v2.9.0-released.md +++ b/_posts/2016-04-29-eslint-v2.9.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.9.0 released tags: - release @@ -126,5 +125,3 @@ This version introduces some new rules: * [02be29f](https://github.com/eslint/eslint/commit/02be29f) Chore: Remove CLA check from bot (Nicholas C. Zakas) * [220713e](https://github.com/eslint/eslint/commit/220713e) Chore: Add metadata to existing rules - Batch 4 (refs [#5417](https://github.com/eslint/eslint/issues/5417)) (Vitor Balocco) * [df53414](https://github.com/eslint/eslint/commit/df53414) Chore: Include jQuery Foundation info (Nicholas C. Zakas) - - diff --git a/_posts/2016-05-13-eslint-v2.10.0-released.md b/_posts/2016-05-13-eslint-v2.10.0-released.md index a23c80018c..4a78c62104 100644 --- a/_posts/2016-05-13-eslint-v2.10.0-released.md +++ b/_posts/2016-05-13-eslint-v2.10.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.10.0 released tags: - release @@ -121,5 +120,3 @@ A few rules got additional options: * [4ae39d2](https://github.com/eslint/eslint/commit/4ae39d2) Chore: Replace deprecated calls to context - batch 3 (refs [#6029](https://github.com/eslint/eslint/issues/6029)) ([#6056](https://github.com/eslint/eslint/issues/6056)) (alberto) * [cd1b057](https://github.com/eslint/eslint/commit/cd1b057) Chore: Replace deprecated calls to context - batch 2 (refs [#6029](https://github.com/eslint/eslint/issues/6029)) ([#6049](https://github.com/eslint/eslint/issues/6049)) (alberto) * [9b9d76c](https://github.com/eslint/eslint/commit/9b9d76c) Chore: Replace deprecated calls to context - batch 1 (refs [#6029](https://github.com/eslint/eslint/issues/6029)) ([#6034](https://github.com/eslint/eslint/issues/6034)) (alberto) - - diff --git a/_posts/2016-05-14-eslint-v2.10.1-released.md b/_posts/2016-05-14-eslint-v2.10.1-released.md index 410cc29ff3..6bddc57652 100644 --- a/_posts/2016-05-14-eslint-v2.10.1-released.md +++ b/_posts/2016-05-14-eslint-v2.10.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.10.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.10.1 released -We just pushed ESLint v2.10.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v2.10.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. ## Highlights @@ -27,13 +26,3 @@ This release fixes an issue when using parser other than default one. And a few * [f9ca0d6](https://github.com/eslint/eslint/commit/f9ca0d6) Fix: `no-extra-parens` to check for nulls (fixes [#6161](https://github.com/eslint/eslint/issues/6161)) ([#6164](https://github.com/eslint/eslint/issues/6164)) (Gyandeep Singh) * [d095ee3](https://github.com/eslint/eslint/commit/d095ee3) Fix: Parser merge sequence in config (fixes [#6158](https://github.com/eslint/eslint/issues/6158)) ([#6160](https://github.com/eslint/eslint/issues/6160)) (Gyandeep Singh) * [f33e49f](https://github.com/eslint/eslint/commit/f33e49f) Fix: `no-return-assign` to check for null tokens (fixes [#6159](https://github.com/eslint/eslint/issues/6159)) ([#6162](https://github.com/eslint/eslint/issues/6162)) (Gyandeep Singh) - - - - - - - - - - diff --git a/_posts/2016-05-16-eslint-v2.10.2-released.md b/_posts/2016-05-16-eslint-v2.10.2-released.md index 0decde0f25..0aa3119e0b 100644 --- a/_posts/2016-05-16-eslint-v2.10.2-released.md +++ b/_posts/2016-05-16-eslint-v2.10.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.10.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.10.2 released -We just pushed ESLint v2.10.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v2.10.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -40,7 +39,3 @@ We just pushed ESLint v2.10.2, which is a patch release upgrade of ESLint. This * [842ab2e](https://github.com/eslint/eslint/commit/842ab2e) Build: Run phantomjs tests using karma (fixes [#6128](https://github.com/eslint/eslint/issues/6128)) ([#6178](https://github.com/eslint/eslint/issues/6178)) (alberto) - - - - diff --git a/_posts/2016-05-27-eslint-v2.11.0-released.md b/_posts/2016-05-27-eslint-v2.11.0-released.md index 556603f04d..7732eab2cd 100644 --- a/_posts/2016-05-27-eslint-v2.11.0-released.md +++ b/_posts/2016-05-27-eslint-v2.11.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.11.0 released tags: - release @@ -80,9 +79,3 @@ The new rules included in this release are: * [777941e](https://github.com/eslint/eslint/commit/777941e) Upgrade: doctrine to 1.2.2 (fixes [#6121](https://github.com/eslint/eslint/issues/6121)) ([#6231](https://github.com/eslint/eslint/issues/6231)) (alberto) - - - - - - diff --git a/_posts/2016-05-30-eslint-v2.11.1-released.md b/_posts/2016-05-30-eslint-v2.11.1-released.md index aa7aa9d87a..c3783e9a74 100644 --- a/_posts/2016-05-30-eslint-v2.11.1-released.md +++ b/_posts/2016-05-30-eslint-v2.11.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.11.1 released tags: - release diff --git a/_posts/2016-06-10-eslint-v2.12.0-released.md b/_posts/2016-06-10-eslint-v2.12.0-released.md index faec7380e3..15e914eec1 100644 --- a/_posts/2016-06-10-eslint-v2.12.0-released.md +++ b/_posts/2016-06-10-eslint-v2.12.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.12.0 released tags: - release @@ -127,5 +126,3 @@ The complete list of new rules in this release: * [977cdd5](https://github.com/eslint/eslint/commit/977cdd5) Chore: remove unused method from FileFinder (fixes [#6344](https://github.com/eslint/eslint/issues/6344)) ([#6345](https://github.com/eslint/eslint/issues/6345)) (alberto) * [3e38fc1](https://github.com/eslint/eslint/commit/3e38fc1) Chore: more tests for comments at the end of blocks (refs [#6090](https://github.com/eslint/eslint/issues/6090)) ([#6273](https://github.com/eslint/eslint/issues/6273)) (Kai Cataldo) - - diff --git a/_posts/2016-06-17-eslint-v2.13.0-released.md b/_posts/2016-06-17-eslint-v2.13.0-released.md index 1a2176588c..b814aabb5a 100644 --- a/_posts/2016-06-17-eslint-v2.13.0-released.md +++ b/_posts/2016-06-17-eslint-v2.13.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.13.0 released tags: - release @@ -72,5 +71,3 @@ We are continuing to add autofixing to more rules, and this release we added aut * [2cd90eb](https://github.com/eslint/eslint/commit/2cd90eb) Chore: Fix rule meta description inconsistencies (refs [#5417](https://github.com/eslint/eslint/issues/5417)) ([#6422](https://github.com/eslint/eslint/issues/6422)) (Mark Pedrotti) * [5e9117e](https://github.com/eslint/eslint/commit/5e9117e) Chore: sort rules in eslint.json (fixes [#6425](https://github.com/eslint/eslint/issues/6425)) ([#6426](https://github.com/eslint/eslint/issues/6426)) (alberto) * [77697a7](https://github.com/eslint/eslint/commit/77697a7) Chore: Fake config hierarchy fixtures (fixes [#6206](https://github.com/eslint/eslint/issues/6206)) ([#6402](https://github.com/eslint/eslint/issues/6402)) (Gyandeep Singh) - - diff --git a/_posts/2016-06-20-eslint-v2.13.1-released.md b/_posts/2016-06-20-eslint-v2.13.1-released.md index 035db81d28..e6b91975e8 100644 --- a/_posts/2016-06-20-eslint-v2.13.1-released.md +++ b/_posts/2016-06-20-eslint-v2.13.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v2.13.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v2.13.1 released -We just pushed ESLint v2.13.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v2.13.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -32,11 +31,3 @@ We just pushed ESLint v2.13.1, which is a patch release upgrade of ESLint. This * [a9d4cb2](https://github.com/eslint/eslint/commit/a9d4cb2) Docs: Fix typo in max-params examples ([#6471](https://github.com/eslint/eslint/issues/6471)) (J. William Ashton) - - - - - - - - diff --git a/_posts/2016-07-01-eslint-new-rule-format.md b/_posts/2016-07-01-eslint-new-rule-format.md index a0c22c7508..6cab0ea2ee 100644 --- a/_posts/2016-07-01-eslint-new-rule-format.md +++ b/_posts/2016-07-01-eslint-new-rule-format.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint's New Rule Format tags: - rules @@ -74,6 +73,3 @@ $ eslint-transforms new-rule-format path/to/rules/ rule.js ``` You can pass in as many files or directories as necessary to transform. See the [repo](https://github.com/eslint/eslint-transforms) for more information. - - - diff --git a/_posts/2016-07-01-eslint-v3.0.0-released.md b/_posts/2016-07-01-eslint-v3.0.0-released.md index 002bbec4f1..cbf2276963 100644 --- a/_posts/2016-07-01-eslint-v3.0.0-released.md +++ b/_posts/2016-07-01-eslint-v3.0.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.0.0 released tags: - release @@ -107,5 +106,3 @@ One of the most confusing aspects of ESLint for new users has been that ESLint d * [c60341f](https://github.com/eslint/eslint/commit/c60341f) Chore: Update index and `meta` for `"eslint:recommended"` (refs [#6403](https://github.com/eslint/eslint/issues/6403)) ([#6539](https://github.com/eslint/eslint/issues/6539)) (Mark Pedrotti) * [b179373](https://github.com/eslint/eslint/commit/b179373) Chore: Remove dead code in excuteOnFiles (fixes [#6467](https://github.com/eslint/eslint/issues/6467)) ([#6466](https://github.com/eslint/eslint/issues/6466)) (Andrew Hutchings) * [18fbc4b](https://github.com/eslint/eslint/commit/18fbc4b) Chore: Simplify eslint process exit code (fixes [#6368](https://github.com/eslint/eslint/issues/6368)) ([#6371](https://github.com/eslint/eslint/issues/6371)) (alberto) - - diff --git a/_posts/2016-07-05-eslint-v3.0.1-released.md b/_posts/2016-07-05-eslint-v3.0.1-released.md index 655c2607b9..ced5436fbd 100644 --- a/_posts/2016-07-05-eslint-v3.0.1-released.md +++ b/_posts/2016-07-05-eslint-v3.0.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.0.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.0.1 released -We just pushed ESLint v3.0.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.0.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -51,5 +50,3 @@ We just pushed ESLint v3.0.1, which is a patch release upgrade of ESLint. This r * [8308c0b](https://github.com/eslint/eslint/commit/8308c0b) Chore: remove path-is-absolute in favor of the built-in (fixes [#6598](https://github.com/eslint/eslint/issues/6598)) ([#6600](https://github.com/eslint/eslint/issues/6600)) (shinnn) - - diff --git a/_posts/2016-07-15-eslint-v3.1.0-released.md b/_posts/2016-07-15-eslint-v3.1.0-released.md index e1dad196e6..8f2b3a6e0f 100644 --- a/_posts/2016-07-15-eslint-v3.1.0-released.md +++ b/_posts/2016-07-15-eslint-v3.1.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.1.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.1.0 released -We just pushed ESLint v3.1.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v3.1.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -81,5 +80,3 @@ We just pushed ESLint v3.1.0, which is a minor release upgrade of ESLint. This r * [421e4bf](https://github.com/eslint/eslint/commit/421e4bf) Chore: combine multiple RegEx replaces with one (fixes [#6669](https://github.com/eslint/eslint/issues/6669)) ([#6661](https://github.com/eslint/eslint/issues/6661)) (Sakthipriyan Vairamani) * [5985eb2](https://github.com/eslint/eslint/commit/5985eb2) Chore: add internal rule that validates meta property (fixes [#6383](https://github.com/eslint/eslint/issues/6383)) ([#6608](https://github.com/eslint/eslint/issues/6608)) (Vitor Balocco) * [e6004be](https://github.com/eslint/eslint/commit/e6004be) Chore: Enable preferType in valid-jsdoc (refs [#5188](https://github.com/eslint/eslint/issues/5188)) ([#6634](https://github.com/eslint/eslint/issues/6634)) (Nicholas C. Zakas) - - diff --git a/_posts/2016-07-15-jscs-end-of-life.md b/_posts/2016-07-15-jscs-end-of-life.md index b6fe0d1728..e814a49fec 100644 --- a/_posts/2016-07-15-jscs-end-of-life.md +++ b/_posts/2016-07-15-jscs-end-of-life.md @@ -1,5 +1,4 @@ --- -layout: post title: JSCS End of Life tags: - jscs diff --git a/_posts/2016-07-18-eslint-v3.1.1-released.md b/_posts/2016-07-18-eslint-v3.1.1-released.md index 7402d8f1ec..04e8a6cdc3 100644 --- a/_posts/2016-07-18-eslint-v3.1.1-released.md +++ b/_posts/2016-07-18-eslint-v3.1.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.1.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.1.1 released -We just pushed ESLint v3.1.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.1.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -45,5 +44,3 @@ We just pushed ESLint v3.1.1, which is a patch release upgrade of ESLint. This r * [124f066](https://github.com/eslint/eslint/commit/124f066) Chore: Remove fixable key from multiline-ternary metadata (fixes [#6683](https://github.com/eslint/eslint/issues/6683)) ([#6688](https://github.com/eslint/eslint/issues/6688)) (Kai Cataldo) - - diff --git a/_posts/2016-07-29-eslint-v3.2.0-released.md b/_posts/2016-07-29-eslint-v3.2.0-released.md index fdde550a6b..0a27416f2e 100644 --- a/_posts/2016-07-29-eslint-v3.2.0-released.md +++ b/_posts/2016-07-29-eslint-v3.2.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.2.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.2.0 released -We just pushed ESLint v3.2.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v3.2.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -87,5 +86,3 @@ We just pushed ESLint v3.2.0, which is a minor release upgrade of ESLint. This r * [a157f47](https://github.com/eslint/eslint/commit/a157f47) Chore: Update CLIEngine option desc (fixes [#5179](https://github.com/eslint/eslint/issues/5179)) ([#6713](https://github.com/eslint/eslint/issues/6713)) (Nicholas C. Zakas) * [a0727f9](https://github.com/eslint/eslint/commit/a0727f9) Chore: fix `.gitignore` for vscode (refs [#6383](https://github.com/eslint/eslint/issues/6383)) ([#6720](https://github.com/eslint/eslint/issues/6720)) (Toru Nagashima) * [c64b0c2](https://github.com/eslint/eslint/commit/c64b0c2) Chore: First ES6 refactoring (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#6570](https://github.com/eslint/eslint/issues/6570)) (Nicholas C. Zakas) - - diff --git a/_posts/2016-08-01-eslint-v3.2.1-released.md b/_posts/2016-08-01-eslint-v3.2.1-released.md index b24ff0c122..8985bb4289 100644 --- a/_posts/2016-08-01-eslint-v3.2.1-released.md +++ b/_posts/2016-08-01-eslint-v3.2.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.2.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.2.1 released -We just pushed ESLint v3.2.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.2.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -45,7 +44,3 @@ We just pushed ESLint v3.2.1, which is a patch release upgrade of ESLint. This r * [584577a](https://github.com/eslint/eslint/commit/584577a) Build: Pin file-entry-cache to avoid licence issue (refs [#6816](https://github.com/eslint/eslint/issues/6816)) ([#6818](https://github.com/eslint/eslint/issues/6818)) (alberto) * [288f7bf](https://github.com/eslint/eslint/commit/288f7bf) Build: Fix site generation (fixes [#6791](https://github.com/eslint/eslint/issues/6791)) ([#6793](https://github.com/eslint/eslint/issues/6793)) (Nicholas C. Zakas) - - - - diff --git a/_posts/2016-08-01-eslint-v3.2.2-released.md b/_posts/2016-08-01-eslint-v3.2.2-released.md index 38cdf5b05b..866bf3146c 100644 --- a/_posts/2016-08-01-eslint-v3.2.2-released.md +++ b/_posts/2016-08-01-eslint-v3.2.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.2.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.2.2 released -We just pushed ESLint v3.2.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.2.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -32,9 +31,3 @@ We just pushed ESLint v3.2.2, which is a patch release upgrade of ESLint. This r * [510ce4b](https://github.com/eslint/eslint/commit/510ce4b) Upgrade: file-entry-cache@^1.3.1 (fixes [#6816](https://github.com/eslint/eslint/issues/6816), refs [#6780](https://github.com/eslint/eslint/issues/6780)) ([#6819](https://github.com/eslint/eslint/issues/6819)) (alberto) - - - - - - diff --git a/_posts/2016-08-12-eslint-v3.3.0-released.md b/_posts/2016-08-12-eslint-v3.3.0-released.md index 32e5cbae1d..6b2971cf2a 100644 --- a/_posts/2016-08-12-eslint-v3.3.0-released.md +++ b/_posts/2016-08-12-eslint-v3.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.3.0 released tags: - release @@ -112,5 +111,3 @@ We recommend you upgrade your configurations to use the new rules. * [cdded07](https://github.com/eslint/eslint/commit/cdded07) Chore: use native `Object.assign` (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#6832](https://github.com/eslint/eslint/issues/6832)) (Gyandeep Singh) * [579ec49](https://github.com/eslint/eslint/commit/579ec49) Chore: Add link to rule change guidelines in "needs info" template (fixes [#6829](https://github.com/eslint/eslint/issues/6829)) ([#6831](https://github.com/eslint/eslint/issues/6831)) (Kevin Partington) * [4c5e911](https://github.com/eslint/eslint/commit/4c5e911) Chore: enable `prefer-const` and apply it to our codebase (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#6805](https://github.com/eslint/eslint/issues/6805)) (Toru Nagashima) - - diff --git a/_posts/2016-08-15-eslint-v3.3.1-released.md b/_posts/2016-08-15-eslint-v3.3.1-released.md index ed9417d7fe..cabefa5c3e 100644 --- a/_posts/2016-08-15-eslint-v3.3.1-released.md +++ b/_posts/2016-08-15-eslint-v3.3.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.3.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.3.1 released -We just pushed ESLint v3.3.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.3.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -50,5 +49,3 @@ We just pushed ESLint v3.3.1, which is a patch release upgrade of ESLint. This r * [cd09c96](https://github.com/eslint/eslint/commit/cd09c96) Chore: Use object-shorthand batch 2 (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#6897](https://github.com/eslint/eslint/issues/6897)) (Kai Cataldo) * [2841008](https://github.com/eslint/eslint/commit/2841008) Chore: Use object-shorthand batch 1 (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#6893](https://github.com/eslint/eslint/issues/6893)) (Kai Cataldo) - - diff --git a/_posts/2016-08-26-eslint-v3.4.0-released.md b/_posts/2016-08-26-eslint-v3.4.0-released.md index 0143bbab07..0993000431 100644 --- a/_posts/2016-08-26-eslint-v3.4.0-released.md +++ b/_posts/2016-08-26-eslint-v3.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.4.0 released tags: - release @@ -114,5 +113,3 @@ The following new rules were added in this release: * [0cf1d55](https://github.com/eslint/eslint/commit/0cf1d55) Chore: Fix object-shorthand errors (fixes [#6958](https://github.com/eslint/eslint/issues/6958)) ([#6959](https://github.com/eslint/eslint/issues/6959)) (Kai Cataldo) * [c676322](https://github.com/eslint/eslint/commit/c676322) Chore: Use object-shorthand batch 3 (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#6914](https://github.com/eslint/eslint/issues/6914)) (Kai Cataldo) - - diff --git a/_posts/2016-09-09-eslint-v3.5.0-released.md b/_posts/2016-09-09-eslint-v3.5.0-released.md index efbc349425..8562fdc583 100644 --- a/_posts/2016-09-09-eslint-v3.5.0-released.md +++ b/_posts/2016-09-09-eslint-v3.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.5.0 released tags: - release diff --git a/_posts/2016-09-15-changes-to-issues-and-pr-policies.md b/_posts/2016-09-15-changes-to-issues-and-pr-policies.md index ed2e421432..87bbd11aaf 100644 --- a/_posts/2016-09-15-changes-to-issues-and-pr-policies.md +++ b/_posts/2016-09-15-changes-to-issues-and-pr-policies.md @@ -1,5 +1,4 @@ --- -layout: post title: Changes to Issue and Pull Request Policies tags: - release diff --git a/_posts/2016-09-23-eslint-v3.6.0-released.md b/_posts/2016-09-23-eslint-v3.6.0-released.md index 63f7e5a103..bdcd46064d 100644 --- a/_posts/2016-09-23-eslint-v3.6.0-released.md +++ b/_posts/2016-09-23-eslint-v3.6.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.6.0 released tags: - release @@ -130,5 +129,3 @@ Four rules gained support for the `--fix` command line option: * [8db4f0c](https://github.com/eslint/eslint/commit/8db4f0c) Chore: Enable `typeof` check for `no-undef` rule in eslint-config-eslint ([#7103](https://github.com/eslint/eslint/issues/7103)) (Teddy Katz) * [1738b2e](https://github.com/eslint/eslint/commit/1738b2e) Chore: fix name of internal-no-invalid-meta test file ([#7142](https://github.com/eslint/eslint/issues/7142)) (Vitor Balocco) * [9a2aefb](https://github.com/eslint/eslint/commit/9a2aefb) Chore: Don't require an issue reference in check-commit npm script ([#7104](https://github.com/eslint/eslint/issues/7104)) (Teddy Katz) - - diff --git a/_posts/2016-09-26-eslint-v3.6.1-released.md b/_posts/2016-09-26-eslint-v3.6.1-released.md index db49c250f2..c7d2582978 100644 --- a/_posts/2016-09-26-eslint-v3.6.1-released.md +++ b/_posts/2016-09-26-eslint-v3.6.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.6.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.6.1 released -We just pushed ESLint v3.6.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.6.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -52,5 +51,3 @@ We just pushed ESLint v3.6.1, which is a patch release upgrade of ESLint. This r * [27042d2](https://github.com/eslint/eslint/commit/27042d2) Chore: removed unused code related to scopeMap ([#7218](https://github.com/eslint/eslint/issues/7218)) (Yang Su) * [d154204](https://github.com/eslint/eslint/commit/d154204) Chore: Lint bin/eslint.js ([#7243](https://github.com/eslint/eslint/issues/7243)) (Kevin Partington) - - diff --git a/_posts/2016-09-30-eslint-v3.7.0-released.md b/_posts/2016-09-30-eslint-v3.7.0-released.md index b79f5cc67c..0cff839283 100644 --- a/_posts/2016-09-30-eslint-v3.7.0-released.md +++ b/_posts/2016-09-30-eslint-v3.7.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.7.0 released tags: - release @@ -76,5 +75,3 @@ In addition to linting code, many of the rules can automatically fix errors usin * [7bb800d](https://github.com/eslint/eslint/commit/7bb800d) Chore: add internal rule to enforce meta.docs conventions (fixes [#6954](https://github.com/eslint/eslint/issues/6954)) ([#7155](https://github.com/eslint/eslint/issues/7155)) (Vitor Balocco) - - diff --git a/_posts/2016-10-03-eslint-v3.7.1-released.md b/_posts/2016-10-03-eslint-v3.7.1-released.md index 73e8a60333..6118cc23f0 100644 --- a/_posts/2016-10-03-eslint-v3.7.1-released.md +++ b/_posts/2016-10-03-eslint-v3.7.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.7.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.7.1 released -We just pushed ESLint v3.7.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.7.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -43,5 +42,3 @@ We just pushed ESLint v3.7.1, which is a patch release upgrade of ESLint. This r * [ce590e2](https://github.com/eslint/eslint/commit/ce590e2) Chore: Add additional tests for bin/eslint.js ([#7290](https://github.com/eslint/eslint/issues/7290)) (Teddy Katz) - - diff --git a/_posts/2016-10-14-eslint-v3.8.0-released.md b/_posts/2016-10-14-eslint-v3.8.0-released.md index f8c42889ba..b4c3977500 100644 --- a/_posts/2016-10-14-eslint-v3.8.0-released.md +++ b/_posts/2016-10-14-eslint-v3.8.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.8.0 released tags: - release @@ -114,5 +113,3 @@ If you're using the ESLint [Node.js API](https://eslint.org/docs/developer-guide * [0db4164](https://github.com/eslint/eslint/commit/0db4164) Chore: run prefer-template autofixer on test files (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#7354](https://github.com/eslint/eslint/issues/7354)) (Kai Cataldo) * [3b11d3f](https://github.com/eslint/eslint/commit/3b11d3f) Chore: refactor `no-multiple-empty-lines` ([#7314](https://github.com/eslint/eslint/issues/7314)) (Teddy Katz) * [93214aa](https://github.com/eslint/eslint/commit/93214aa) Chore: Convert non-lib/test files to template literals (refs [#6407](https://github.com/eslint/eslint/issues/6407)) ([#7329](https://github.com/eslint/eslint/issues/7329)) (Kai Cataldo) - - diff --git a/_posts/2016-10-17-eslint-v3.8.1-released.md b/_posts/2016-10-17-eslint-v3.8.1-released.md index 0b4c99b6c6..e7f73a1d1f 100644 --- a/_posts/2016-10-17-eslint-v3.8.1-released.md +++ b/_posts/2016-10-17-eslint-v3.8.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.8.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.8.1 released -We just pushed ESLint v3.8.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.8.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -33,11 +32,3 @@ We just pushed ESLint v3.8.1, which is a patch release upgrade of ESLint. This r * [9106964](https://github.com/eslint/eslint/commit/9106964) Docs: Fix broken link for stylish formatter ([#7386](https://github.com/eslint/eslint/issues/7386)) (Vitor Balocco) * [49d3c1b](https://github.com/eslint/eslint/commit/49d3c1b) Docs: Document the deprecated meta property ([#7367](https://github.com/eslint/eslint/issues/7367)) (Randy Coulman) * [19d2996](https://github.com/eslint/eslint/commit/19d2996) Docs: Relax permission for merging PRs (refs eslint/tsc-meetings[#20](https://github.com/eslint/eslint/issues/20)) ([#7360](https://github.com/eslint/eslint/issues/7360)) (Brandon Mills) - - - - - - - - diff --git a/_posts/2016-10-28-eslint-v3.9.0-released.md b/_posts/2016-10-28-eslint-v3.9.0-released.md index 2276c6c976..d069be75cd 100644 --- a/_posts/2016-10-28-eslint-v3.9.0-released.md +++ b/_posts/2016-10-28-eslint-v3.9.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.9.0 released tags: - release diff --git a/_posts/2016-10-31-eslint-v3.9.1-released.md b/_posts/2016-10-31-eslint-v3.9.1-released.md index 0e1e1f60a9..1a8ded9b14 100644 --- a/_posts/2016-10-31-eslint-v3.9.1-released.md +++ b/_posts/2016-10-31-eslint-v3.9.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.9.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.9.1 released -We just pushed ESLint v3.9.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.9.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -43,7 +42,3 @@ We just pushed ESLint v3.9.1, which is a patch release upgrade of ESLint. This r * [fffdf13](https://github.com/eslint/eslint/commit/fffdf13) Build: Fix prefer-reflect rule to not crash site gen build ([#7471](https://github.com/eslint/eslint/issues/7471)) (Ilya Volodin) - - - - diff --git a/_posts/2016-11-11-eslint-v3.10.0-released.md b/_posts/2016-11-11-eslint-v3.10.0-released.md index e908148e2c..795c06fcb5 100644 --- a/_posts/2016-11-11-eslint-v3.10.0-released.md +++ b/_posts/2016-11-11-eslint-v3.10.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.10.0 released tags: - release @@ -94,5 +93,3 @@ This is a summary of some of the notable changes in this version of ESLint. * [25e5613](https://github.com/eslint/eslint/commit/25e5613) Chore: Remove incorrect test from indent.js. ([#7531](https://github.com/eslint/eslint/issues/7531)) (Scott Stern) * [0dea0ac](https://github.com/eslint/eslint/commit/0dea0ac) Chore: Add Node 7 to travis ci build ([#7506](https://github.com/eslint/eslint/issues/7506)) (Gyandeep Singh) * [183def6](https://github.com/eslint/eslint/commit/183def6) Chore: enable `prefer-arrow-callback` on ESLint codebase (fixes [#6407](https://github.com/eslint/eslint/issues/6407)) ([#7503](https://github.com/eslint/eslint/issues/7503)) (Teddy Katz) - - diff --git a/_posts/2016-11-14-eslint-v3.10.1-released.md b/_posts/2016-11-14-eslint-v3.10.1-released.md index 50f3f4d30d..253218d2cf 100644 --- a/_posts/2016-11-14-eslint-v3.10.1-released.md +++ b/_posts/2016-11-14-eslint-v3.10.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.10.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.10.1 released -We just pushed ESLint v3.10.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.10.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -23,13 +22,3 @@ We just pushed ESLint v3.10.1, which is a patch release upgrade of ESLint. This * [8a0e92a](https://github.com/eslint/eslint/commit/8a0e92a) Fix: handle try/catch correctly in `no-return-await` (fixes [#7581](https://github.com/eslint/eslint/issues/7581)) ([#7582](https://github.com/eslint/eslint/issues/7582)) (Teddy Katz) * [c4dd015](https://github.com/eslint/eslint/commit/c4dd015) Fix: no-useless-return stack overflow on unreachable loops (fixes [#7583](https://github.com/eslint/eslint/issues/7583)) ([#7584](https://github.com/eslint/eslint/issues/7584)) (Teddy Katz) - - - - - - - - - - diff --git a/_posts/2016-11-15-eslint-v3.10.2-released.md b/_posts/2016-11-15-eslint-v3.10.2-released.md index 0c3b1ea75b..4aee347ea2 100644 --- a/_posts/2016-11-15-eslint-v3.10.2-released.md +++ b/_posts/2016-11-15-eslint-v3.10.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.10.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.10.2 released -We just pushed ESLint v3.10.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.10.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -34,11 +33,3 @@ We just pushed ESLint v3.10.2, which is a patch release upgrade of ESLint. This * [100c6e1](https://github.com/eslint/eslint/commit/100c6e1) Docs: Fix example for curly "multi-or-nest" option ([#7597](https://github.com/eslint/eslint/issues/7597)) (Will Chen) * [6abb534](https://github.com/eslint/eslint/commit/6abb534) Docs: Update code of conduct link ([#7599](https://github.com/eslint/eslint/issues/7599)) (Nicholas C. Zakas) * [8302cdb](https://github.com/eslint/eslint/commit/8302cdb) Docs: Update no-tabs to match existing standards & improve readbility ([#7590](https://github.com/eslint/eslint/issues/7590)) (Matt Stow) - - - - - - - - diff --git a/_posts/2016-11-25-eslint-v3.11.0-released.md b/_posts/2016-11-25-eslint-v3.11.0-released.md index 74f05399ab..9117840df8 100644 --- a/_posts/2016-11-25-eslint-v3.11.0-released.md +++ b/_posts/2016-11-25-eslint-v3.11.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.11.0 released tags: - release diff --git a/_posts/2016-11-28-eslint-v3.11.1-released.md b/_posts/2016-11-28-eslint-v3.11.1-released.md index a87ed2b148..4822a15c23 100644 --- a/_posts/2016-11-28-eslint-v3.11.1-released.md +++ b/_posts/2016-11-28-eslint-v3.11.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.11.1 released tags: - release @@ -31,11 +30,3 @@ We just pushed ESLint v3.11.1, which is a patch release upgrade of ESLint. This * [cc4cedc](https://github.com/eslint/eslint/commit/cc4cedc) Docs: Fix a typo in array-bracket-spacing documentation ([#7667](https://github.com/eslint/eslint/issues/7667)) (Alex Guerrero) * [f8adadc](https://github.com/eslint/eslint/commit/f8adadc) Docs: fix a typo in capitalized-comments documentation ([#7666](https://github.com/eslint/eslint/issues/7666)) (Teddy Katz) - - - - - - - - diff --git a/_posts/2016-12-09-eslint-v3.12.0-released.md b/_posts/2016-12-09-eslint-v3.12.0-released.md index ae2b67a58d..7dd07a27d4 100644 --- a/_posts/2016-12-09-eslint-v3.12.0-released.md +++ b/_posts/2016-12-09-eslint-v3.12.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.12.0 released tags: - release diff --git a/_posts/2016-12-12-eslint-v3.12.1-released.md b/_posts/2016-12-12-eslint-v3.12.1-released.md index a021f122d4..d45888dd59 100644 --- a/_posts/2016-12-12-eslint-v3.12.1-released.md +++ b/_posts/2016-12-12-eslint-v3.12.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.12.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.12.1 released -We just pushed ESLint v3.12.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.12.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -41,7 +40,3 @@ We just pushed ESLint v3.12.1, which is a patch release upgrade of ESLint. This * [4b77333](https://github.com/eslint/eslint/commit/4b77333) Build: avoid creating broken rule links in the changelog ([#7731](https://github.com/eslint/eslint/issues/7731)) (Teddy Katz) - - - - diff --git a/_posts/2016-12-14-eslint-v3.12.2-released.md b/_posts/2016-12-14-eslint-v3.12.2-released.md index 91b3d94897..751a9172a4 100644 --- a/_posts/2016-12-14-eslint-v3.12.2-released.md +++ b/_posts/2016-12-14-eslint-v3.12.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.12.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.12.2 released -We just pushed ESLint v3.12.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.12.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -40,7 +39,3 @@ We just pushed ESLint v3.12.2, which is a patch release upgrade of ESLint. This * [5344751](https://github.com/eslint/eslint/commit/5344751) Build: Don't create blogpost links from rule names within other words ([#7754](https://github.com/eslint/eslint/issues/7754)) (Teddy Katz) - - - - diff --git a/_posts/2017-01-06-eslint-v3.13.0-released.md b/_posts/2017-01-06-eslint-v3.13.0-released.md index b30b42c883..2962937720 100644 --- a/_posts/2017-01-06-eslint-v3.13.0-released.md +++ b/_posts/2017-01-06-eslint-v3.13.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.13.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.13.0 released -We just pushed ESLint v3.13.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v3.13.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -110,5 +109,3 @@ Autofix support was added to the following rules: * [bb6b73b](https://github.com/eslint/eslint/commit/bb6b73b) Chore: replace unnecessary function callbacks with arrow functions ([#7795](https://github.com/eslint/eslint/issues/7795)) (Teddy Katz) * [75b7ba4](https://github.com/eslint/eslint/commit/75b7ba4) Chore: enable [object-curly-spacing](/docs/rules/object-curly-spacing) on ESLint codebase (refs [#7725](https://github.com/eslint/eslint/issues/7725)) ([#7770](https://github.com/eslint/eslint/issues/7770)) (Teddy Katz) * [f1bf5ec](https://github.com/eslint/eslint/commit/f1bf5ec) Chore: convert remaining old-style context.report() calls to the new API ([#7763](https://github.com/eslint/eslint/issues/7763)) (Teddy Katz) - - diff --git a/_posts/2017-01-09-eslint-v3.13.1-released.md b/_posts/2017-01-09-eslint-v3.13.1-released.md index 1fd48678cb..ddd4725e84 100644 --- a/_posts/2017-01-09-eslint-v3.13.1-released.md +++ b/_posts/2017-01-09-eslint-v3.13.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.13.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.13.1 released -We just pushed ESLint v3.13.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.13.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -23,13 +22,3 @@ We just pushed ESLint v3.13.1, which is a patch release upgrade of ESLint. This * [3fc4e3f](https://github.com/eslint/eslint/commit/3fc4e3f) Fix: [prefer-destructuring](/docs/rules/prefer-destructuring) reporting compound assignments (fixes [#7881](https://github.com/eslint/eslint/issues/7881)) ([#7882](https://github.com/eslint/eslint/issues/7882)) (Teddy Katz) * [f90462e](https://github.com/eslint/eslint/commit/f90462e) Fix: [no-extra-label](/docs/rules/no-extra-label) autofix should not remove labels used elsewhere ([#7885](https://github.com/eslint/eslint/issues/7885)) (Teddy Katz) - - - - - - - - - - diff --git a/_posts/2017-01-20-eslint-v3.14.0-released.md b/_posts/2017-01-20-eslint-v3.14.0-released.md index 75bc60a4bc..a4004242b9 100644 --- a/_posts/2017-01-20-eslint-v3.14.0-released.md +++ b/_posts/2017-01-20-eslint-v3.14.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.14.0 released tags: - release diff --git a/_posts/2017-01-25-eslint-v3.14.1-released.md b/_posts/2017-01-25-eslint-v3.14.1-released.md index 48223b9ea6..b0fb619a54 100644 --- a/_posts/2017-01-25-eslint-v3.14.1-released.md +++ b/_posts/2017-01-25-eslint-v3.14.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.14.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.14.1 released -We just pushed ESLint v3.14.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.14.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -45,5 +44,3 @@ We just pushed ESLint v3.14.1, which is a patch release upgrade of ESLint. This * [a7bd66a](https://github.com/eslint/eslint/commit/a7bd66a) Chore: Adding assign/redeclare tests to [no-undefined](/docs/rules/no-undefined) (refs [#7964](https://github.com/eslint/eslint/issues/7964)) ([#7965](https://github.com/eslint/eslint/issues/7965)) (Kevin Partington) - - diff --git a/_posts/2017-02-03-eslint-v3.15.0-released.md b/_posts/2017-02-03-eslint-v3.15.0-released.md index 1c8df343be..b90276db9f 100644 --- a/_posts/2017-02-03-eslint-v3.15.0-released.md +++ b/_posts/2017-02-03-eslint-v3.15.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.15.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.15.0 released -We just pushed ESLint v3.15.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v3.15.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -75,5 +74,3 @@ One new rule was added: * [5d57c57](https://github.com/eslint/eslint/commit/5d57c57) Chore: fix [no-else-return](/docs/rules/no-else-return) lint error (refs [#7986](https://github.com/eslint/eslint/issues/7986)) ([#7994](https://github.com/eslint/eslint/issues/7994)) (Vitor Balocco) * [62fb054](https://github.com/eslint/eslint/commit/62fb054) Chore: enable [no-else-return](/docs/rules/no-else-return) on ESLint codebase ([#7986](https://github.com/eslint/eslint/issues/7986)) (Teddy Katz) * [5cdfa99](https://github.com/eslint/eslint/commit/5cdfa99) Chore: enable [no-unneeded-ternary](/docs/rules/no-unneeded-ternary) on ESLint codebase ([#7987](https://github.com/eslint/eslint/issues/7987)) (Teddy Katz) - - diff --git a/_posts/2017-02-20-eslint-v3.16.0-released.md b/_posts/2017-02-20-eslint-v3.16.0-released.md index dd8276d2d7..69d0884063 100644 --- a/_posts/2017-02-20-eslint-v3.16.0-released.md +++ b/_posts/2017-02-20-eslint-v3.16.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.16.0 released tags: - release @@ -123,5 +122,3 @@ Autofix support was added to one rule: * [b04fde7](https://github.com/eslint/eslint/commit/b04fde7) Chore: improve performance of SourceCode constructor ([#8054](https://github.com/eslint/eslint/issues/8054)) (Teddy Katz) * [329dcdc](https://github.com/eslint/eslint/commit/329dcdc) Chore: unify checks for statement list parents ([#8048](https://github.com/eslint/eslint/issues/8048)) (Teddy Katz) * [7bc92d9](https://github.com/eslint/eslint/commit/7bc92d9) Chore: fix invalid test cases ([#8030](https://github.com/eslint/eslint/issues/8030)) (Toru Nagashima) - - diff --git a/_posts/2017-02-22-eslint-v3.16.1-released.md b/_posts/2017-02-22-eslint-v3.16.1-released.md index b255b22353..89ab3bbcfc 100644 --- a/_posts/2017-02-22-eslint-v3.16.1-released.md +++ b/_posts/2017-02-22-eslint-v3.16.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.16.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.16.1 released -We just pushed ESLint v3.16.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.16.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -50,5 +49,3 @@ We just pushed ESLint v3.16.1, which is a patch release upgrade of ESLint. This * [22d7fbf](https://github.com/eslint/eslint/commit/22d7fbf) Chore: fix invalid redeclared variables in tests ([#8130](https://github.com/eslint/eslint/issues/8130)) (Teddy Katz) * [8d95598](https://github.com/eslint/eslint/commit/8d95598) Chore: fix output assertion typos in rule tests ([#8129](https://github.com/eslint/eslint/issues/8129)) (Teddy Katz) - - diff --git a/_posts/2017-03-03-eslint-v3.17.0-released.md b/_posts/2017-03-03-eslint-v3.17.0-released.md index 8e98310cfa..c4601ef3e1 100644 --- a/_posts/2017-03-03-eslint-v3.17.0-released.md +++ b/_posts/2017-03-03-eslint-v3.17.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.17.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.17.0 released -We just pushed ESLint v3.17.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v3.17.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -92,5 +91,3 @@ Two enhancements were made to the [`RuleTester`](/docs/developer-guide/working-w * [a78ec9f](https://github.com/eslint/eslint/commit/a78ec9f) Chore: upgrade `coveralls` to ^2.11.16 ([#8161](https://github.com/eslint/eslint/issues/8161)) (alberto) * [7f1f4e5](https://github.com/eslint/eslint/commit/7f1f4e5) Chore: remove unneeded devDeps `linefix` and `gh-got` ([#8160](https://github.com/eslint/eslint/issues/8160)) (alberto) * [1c84922](https://github.com/eslint/eslint/commit/1c84922) Chore: upgrade eslint-plugin-node ([#8156](https://github.com/eslint/eslint/issues/8156)) (alberto) - - diff --git a/_posts/2017-03-06-eslint-v3.17.1-released.md b/_posts/2017-03-06-eslint-v3.17.1-released.md index 3026303822..e171faf40d 100644 --- a/_posts/2017-03-06-eslint-v3.17.1-released.md +++ b/_posts/2017-03-06-eslint-v3.17.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.17.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.17.1 released -We just pushed ESLint v3.17.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v3.17.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -44,5 +43,3 @@ We just pushed ESLint v3.17.1, which is a patch release upgrade of ESLint. This * [5e3bca7](https://github.com/eslint/eslint/commit/5e3bca7) Chore: add eslint-plugin-eslint-plugin ([#8198](https://github.com/eslint/eslint/issues/8198)) (Teddy Katz) * [580da36](https://github.com/eslint/eslint/commit/580da36) Chore: add missing `output` property to tests ([#8195](https://github.com/eslint/eslint/issues/8195)) (alberto) - - diff --git a/_posts/2017-03-17-eslint-v3.18.0-released.md b/_posts/2017-03-17-eslint-v3.18.0-released.md index 682d4a652c..4d54037ced 100644 --- a/_posts/2017-03-17-eslint-v3.18.0-released.md +++ b/_posts/2017-03-17-eslint-v3.18.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.18.0 released tags: - release diff --git a/_posts/2017-03-31-eslint-v3.19.0-released.md b/_posts/2017-03-31-eslint-v3.19.0-released.md index d669a78493..54860d342e 100644 --- a/_posts/2017-03-31-eslint-v3.19.0-released.md +++ b/_posts/2017-03-31-eslint-v3.19.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v3.19.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v3.19.0 released -We just pushed ESLint v3.19.0, which is a minor release upgrade of ESLint. This release adds a new feature and fixes several bugs found in the previous release. +We just pushed ESLint v3.19.0, which is a minor release upgrade of ESLint. This release adds a new feature and fixes several bugs found in the previous release. ## Highlights @@ -98,5 +97,3 @@ Autofix is now more reliable thanks to nine individual fixes in this release. * [7521cd5](https://github.com/eslint/eslint/commit/7521cd5) Chore: update token logic in rules to use ast-utils ([#8288](https://github.com/eslint/eslint/issues/8288)) (Teddy Katz) * [9b509ce](https://github.com/eslint/eslint/commit/9b509ce) Chore: refactor [space-before-function-paren](/docs/rules/space-before-function-paren) rule ([#8284](https://github.com/eslint/eslint/issues/8284)) (Teddy Katz) * [f8176b3](https://github.com/eslint/eslint/commit/f8176b3) Chore: improve test coverage for node-event-generator ([#8287](https://github.com/eslint/eslint/issues/8287)) (Teddy Katz) - - diff --git a/_posts/2017-04-07-eslint-v4.0.0-alpha.0-released.md b/_posts/2017-04-07-eslint-v4.0.0-alpha.0-released.md index bfdf99979c..02dd24bc82 100644 --- a/_posts/2017-04-07-eslint-v4.0.0-alpha.0-released.md +++ b/_posts/2017-04-07-eslint-v4.0.0-alpha.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.0.0-alpha.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.0.0-alpha.0 released -We just pushed ESLint v4.0.0-alpha.0, which is a preview release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely. +We just pushed ESLint v4.0.0-alpha.0, which is a preview release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely. Note: This version of ESLint is not ready for production use and is provided to gather feedback from the community before releasing the final version. Please let us know if you having any problems or feedback by creating issues on our [Github repo](https://github.com/eslint/eslint) or joining our [Gitter channel](https://gitter.im/eslint/eslint). @@ -107,5 +106,3 @@ There is one new rule in this release: * [769b121](https://github.com/eslint/eslint/commit/769b121) Chore: Fix indentation errors in [indent-legacy](/docs/4.0.0/rules/indent-legacy) ([#8424](https://github.com/eslint/eslint/issues/8424)) (Kai Cataldo) * [8842d7e](https://github.com/eslint/eslint/commit/8842d7e) Chore: fix comment spacing in tests ([#8405](https://github.com/eslint/eslint/issues/8405)) (Teddy Katz) * [4673f6e](https://github.com/eslint/eslint/commit/4673f6e) Chore: Switch to eslint-scope from escope ([#8280](https://github.com/eslint/eslint/issues/8280)) (Corbin Uselton) - - diff --git a/_posts/2017-04-21-eslint-v4.0.0-alpha.1-released.md b/_posts/2017-04-21-eslint-v4.0.0-alpha.1-released.md index b7d349701d..ec92f145e6 100644 --- a/_posts/2017-04-21-eslint-v4.0.0-alpha.1-released.md +++ b/_posts/2017-04-21-eslint-v4.0.0-alpha.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.0.0-alpha.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.0.0-alpha.1 released -We just pushed ESLint v4.0.0-alpha.1, which is a major release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely. +We just pushed ESLint v4.0.0-alpha.1, which is a major release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely. Note: This version of ESLint is not ready for production use and is provided to gather feedback from the community before releasing the final version. Please let us know if you having any problems or feedback by creating issues on our [GitHub repo](https://github.com/eslint/eslint) or joining our [Gitter channel](https://gitter.im/eslint/eslint). @@ -89,5 +88,3 @@ Note: This version of ESLint is not ready for production use and is provided to * [10a1a2d7](https://github.com/eslint/eslint/commit/10a1a2d7) Chore: Do not use cache when testing ([#8464](https://github.com/eslint/eslint/issues/8464)) (Kai Cataldo) * [161ee4ea](https://github.com/eslint/eslint/commit/161ee4ea) Chore: avoid cloning comments array in TokenStore ([#8436](https://github.com/eslint/eslint/issues/8436)) (Teddy Katz) - - diff --git a/_posts/2017-05-05-eslint-v4.0.0-alpha.2-released.md b/_posts/2017-05-05-eslint-v4.0.0-alpha.2-released.md index 6030a2c2ed..525aa4ceda 100644 --- a/_posts/2017-05-05-eslint-v4.0.0-alpha.2-released.md +++ b/_posts/2017-05-05-eslint-v4.0.0-alpha.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.0.0-alpha.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.0.0-alpha.2 released -We just pushed ESLint v4.0.0-alpha.2, which is a major release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely. +We just pushed ESLint v4.0.0-alpha.2, which is a major release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely. Note: This version of ESLint is not ready for production use and is provided to gather feedback from the community before releasing the final version. Please let us know if you having any problems or feedback by creating issues on our [GitHub repo](https://github.com/eslint/eslint) or joining our [Gitter channel](https://gitter.im/eslint/eslint). @@ -75,5 +74,3 @@ Note: This version of ESLint is not ready for production use and is provided to * [025e97a](https://github.com/eslint/eslint/commit/025e97a) Chore: delete duplicated test. ([#8527](https://github.com/eslint/eslint/issues/8527)) (薛定谔的猫) * [37e3ba1](https://github.com/eslint/eslint/commit/37e3ba1) Chore: Add license report and scan status ([#8503](https://github.com/eslint/eslint/issues/8503)) (Kevin Wang) * [afbea78](https://github.com/eslint/eslint/commit/afbea78) Chore: don't pull default options from eslint:recommended (fixes [#8374](https://github.com/eslint/eslint/issues/8374)) ([#8381](https://github.com/eslint/eslint/issues/8381)) (Teddy Katz) - - diff --git a/_posts/2017-05-19-eslint-v4.0.0-beta.0-released.md b/_posts/2017-05-19-eslint-v4.0.0-beta.0-released.md index d234aac6dc..8c7bae8d85 100644 --- a/_posts/2017-05-19-eslint-v4.0.0-beta.0-released.md +++ b/_posts/2017-05-19-eslint-v4.0.0-beta.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.0.0-beta.0 released tags: - release diff --git a/_posts/2017-06-02-eslint-v4.0.0-rc.0-released.md b/_posts/2017-06-02-eslint-v4.0.0-rc.0-released.md index b49bb5364f..36796c5922 100644 --- a/_posts/2017-06-02-eslint-v4.0.0-rc.0-released.md +++ b/_posts/2017-06-02-eslint-v4.0.0-rc.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.0.0-rc.0 released tags: - release diff --git a/_posts/2017-06-11-eslint-v4.0.0-released.md b/_posts/2017-06-11-eslint-v4.0.0-released.md index 7cd7981524..c3258d858c 100644 --- a/_posts/2017-06-11-eslint-v4.0.0-released.md +++ b/_posts/2017-06-11-eslint-v4.0.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.0.0 released tags: - release diff --git a/_posts/2017-06-23-eslint-v4.1.0-released.md b/_posts/2017-06-23-eslint-v4.1.0-released.md index 8a2cbd288a..b6c3868080 100644 --- a/_posts/2017-06-23-eslint-v4.1.0-released.md +++ b/_posts/2017-06-23-eslint-v4.1.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.1.0 released tags: - release diff --git a/_posts/2017-06-25-eslint-v4.1.1-released.md b/_posts/2017-06-25-eslint-v4.1.1-released.md index beebb17838..8c31cdf8db 100644 --- a/_posts/2017-06-25-eslint-v4.1.1-released.md +++ b/_posts/2017-06-25-eslint-v4.1.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.1.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.1.1 released -We just pushed ESLint v4.1.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.1.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -44,5 +43,3 @@ We just pushed ESLint v4.1.1, which is a patch release upgrade of ESLint. This r * [03213bb](https://github.com/eslint/eslint/commit/03213bb) Chore: improve comment explanation of [`indent`](/docs/rules/indent) internal functions ([#8800](https://github.com/eslint/eslint/issues/8800)) (Teddy Katz) * [d2e88ed](https://github.com/eslint/eslint/commit/d2e88ed) Chore: Fix misleading comment in ConfigCache.js ([#8799](https://github.com/eslint/eslint/issues/8799)) (Teddy Katz) - - diff --git a/_posts/2017-07-08-eslint-v4.2.0-released.md b/_posts/2017-07-08-eslint-v4.2.0-released.md index 30b25a7b6b..5f0da68534 100644 --- a/_posts/2017-07-08-eslint-v4.2.0-released.md +++ b/_posts/2017-07-08-eslint-v4.2.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.2.0 released tags: - release diff --git a/_posts/2017-07-21-eslint-v4.3.0-released.md b/_posts/2017-07-21-eslint-v4.3.0-released.md index 821021b30f..0a0746ee42 100644 --- a/_posts/2017-07-21-eslint-v4.3.0-released.md +++ b/_posts/2017-07-21-eslint-v4.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.3.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.3.0 released -We just pushed ESLint v4.3.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.3.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -70,5 +69,3 @@ We just pushed ESLint v4.3.0, which is a minor release upgrade of ESLint. This r * [a8a8350](https://github.com/eslint/eslint/commit/a8a8350) Chore: improve performance of [`indent`](/docs/rules/indent) rule ([#8905](https://github.com/eslint/eslint/issues/8905)) (Teddy Katz) * [764b2a9](https://github.com/eslint/eslint/commit/764b2a9) Chore: update header info in [`indent`](/docs/rules/indent) ([#8926](https://github.com/eslint/eslint/issues/8926)) (Teddy Katz) * [933a9cf](https://github.com/eslint/eslint/commit/933a9cf) Chore: add a fuzzer to detect bugs in core rules ([#8422](https://github.com/eslint/eslint/issues/8422)) (Teddy Katz) - - diff --git a/_posts/2017-08-05-eslint-v4.4.0-released.md b/_posts/2017-08-05-eslint-v4.4.0-released.md index cecdd0e7f5..fa248d7141 100644 --- a/_posts/2017-08-05-eslint-v4.4.0-released.md +++ b/_posts/2017-08-05-eslint-v4.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.4.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.4.0 released -We just pushed ESLint v4.4.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.4.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -15,7 +14,7 @@ We just pushed ESLint v4.4.0, which is a minor release upgrade of ESLint. This r ### Initial support for ECMAScript 2018 Because ECMAScript 2018 is still under development, we are implementing features as they are finalized. This release includes the following: - + * Invalid escape sequences in tagged template literals @@ -85,5 +84,3 @@ Because ECMAScript 2018 is still under development, we are implementing features * [d0536d6](https://github.com/eslint/eslint/commit/d0536d6) Chore: Optimizes adding Linter methods (fixes [#9000](https://github.com/eslint/eslint/issues/9000)) ([#9007](https://github.com/eslint/eslint/issues/9007)) (Sean C Denison) * [0a0401f](https://github.com/eslint/eslint/commit/0a0401f) Chore: fix spelling error. ([#9003](https://github.com/eslint/eslint/issues/9003)) (薛定谔的猫) * [c3ee46b](https://github.com/eslint/eslint/commit/c3ee46b) Chore: fix misleading comment in RuleTester ([#8995](https://github.com/eslint/eslint/issues/8995)) (Teddy Katz) - - diff --git a/_posts/2017-08-07-eslint-v4.4.1-released.md b/_posts/2017-08-07-eslint-v4.4.1-released.md index b9bbcf389e..1b980bc2fa 100644 --- a/_posts/2017-08-07-eslint-v4.4.1-released.md +++ b/_posts/2017-08-07-eslint-v4.4.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.4.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.4.1 released -We just pushed ESLint v4.4.1, which is a patch release upgrade of ESLint. This release fixes a bug found in the previous release. +We just pushed ESLint v4.4.1, which is a patch release upgrade of ESLint. This release fixes a bug found in the previous release. @@ -22,13 +21,3 @@ We just pushed ESLint v4.4.1, which is a patch release upgrade of ESLint. This r * [ec93614](https://github.com/eslint/eslint/commit/ec93614) Fix: [no-multi-spaces](/docs/rules/no-multi-spaces) to avoid reporting consecutive tabs (fixes [#9079](https://github.com/eslint/eslint/issues/9079)) ([#9087](https://github.com/eslint/eslint/issues/9087)) (Teddy Katz) - - - - - - - - - - diff --git a/_posts/2017-08-18-eslint-v4.5.0-released.md b/_posts/2017-08-18-eslint-v4.5.0-released.md index 74fa332e2c..aa8722f1f9 100644 --- a/_posts/2017-08-18-eslint-v4.5.0-released.md +++ b/_posts/2017-08-18-eslint-v4.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.5.0 released tags: - release @@ -58,5 +57,3 @@ We just pushed ESLint v4.5.0, which is a minor release upgrade of ESLint. This r * [1d6a9c0](https://github.com/eslint/eslint/commit/1d6a9c0) Chore: enable eslint-plugin/test-case-shorthand-strings ([#9067](https://github.com/eslint/eslint/issues/9067)) (薛定谔的猫) * [c93a853](https://github.com/eslint/eslint/commit/c93a853) Chore: Remove extra space in blogpost template ([#9088](https://github.com/eslint/eslint/issues/9088)) (Kai Cataldo) - - diff --git a/_posts/2017-09-01-eslint-v4.6.0-released.md b/_posts/2017-09-01-eslint-v4.6.0-released.md index b81581171b..5c4914cd01 100644 --- a/_posts/2017-09-01-eslint-v4.6.0-released.md +++ b/_posts/2017-09-01-eslint-v4.6.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.6.0 released tags: - release @@ -84,5 +83,3 @@ We just pushed ESLint v4.6.0, which is a minor release upgrade of ESLint. This r * [2dc243a](https://github.com/eslint/eslint/commit/2dc243a) Chore: avoid using internal Linter APIs in RuleTester (refs [#9161](https://github.com/eslint/eslint/issues/9161)) ([#9172](https://github.com/eslint/eslint/issues/9172)) (Teddy Katz) * [fcb7bb4](https://github.com/eslint/eslint/commit/fcb7bb4) Chore: avoid unnecessarily complex forEach calls in [no-extra-parens](/docs/rules/no-extra-parens) ([#9159](https://github.com/eslint/eslint/issues/9159)) (Teddy Katz) * [60c5148](https://github.com/eslint/eslint/commit/60c5148) Chore: improve coverage in lib/*.js ([#9130](https://github.com/eslint/eslint/issues/9130)) (Teddy Katz) - - diff --git a/_posts/2017-09-03-eslint-v4.6.1-released.md b/_posts/2017-09-03-eslint-v4.6.1-released.md index b38218ddee..db412ebe8b 100644 --- a/_posts/2017-09-03-eslint-v4.6.1-released.md +++ b/_posts/2017-09-03-eslint-v4.6.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.6.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.6.1 released -We just pushed ESLint v4.6.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.6.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -41,7 +40,3 @@ We just pushed ESLint v4.6.1, which is a patch release upgrade of ESLint. This r * [bdec46d](https://github.com/eslint/eslint/commit/bdec46d) Build: avoid process leak when generating website ([#9217](https://github.com/eslint/eslint/issues/9217)) (Teddy Katz) * [e5c5e83](https://github.com/eslint/eslint/commit/e5c5e83) Build: Fixing issue with docs generation (Fixes [#9199](https://github.com/eslint/eslint/issues/9199)) ([#9200](https://github.com/eslint/eslint/issues/9200)) (Ilya Volodin) - - - - diff --git a/_posts/2017-09-15-eslint-v4.7.0-released.md b/_posts/2017-09-15-eslint-v4.7.0-released.md index f1c2ca77d3..5567fc445a 100644 --- a/_posts/2017-09-15-eslint-v4.7.0-released.md +++ b/_posts/2017-09-15-eslint-v4.7.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.7.0 released tags: - release diff --git a/_posts/2017-09-18-eslint-v4.7.1-released.md b/_posts/2017-09-18-eslint-v4.7.1-released.md index 033b271d90..37dd32ded4 100644 --- a/_posts/2017-09-18-eslint-v4.7.1-released.md +++ b/_posts/2017-09-18-eslint-v4.7.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.7.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.7.1 released -We just pushed ESLint v4.7.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.7.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -22,13 +21,3 @@ We just pushed ESLint v4.7.1, which is a patch release upgrade of ESLint. This r * [08656db](https://github.com/eslint/eslint/commit/08656db) Fix: Handle nested disable directive correctly (fixes [#9318](https://github.com/eslint/eslint/issues/9318)) ([#9322](https://github.com/eslint/eslint/issues/9322)) (Gyandeep Singh) - - - - - - - - - - diff --git a/_posts/2017-09-21-eslint-v4.7.2-released.md b/_posts/2017-09-21-eslint-v4.7.2-released.md index 84f81601f6..fe8a9b4aae 100644 --- a/_posts/2017-09-21-eslint-v4.7.2-released.md +++ b/_posts/2017-09-21-eslint-v4.7.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.7.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.7.2 released -We just pushed ESLint v4.7.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.7.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -22,13 +21,3 @@ We just pushed ESLint v4.7.2, which is a patch release upgrade of ESLint. This r * [4f87732](https://github.com/eslint/eslint/commit/4f87732) Fix: Revert setting node.parent early (fixes [#9331](https://github.com/eslint/eslint/issues/9331)) ([#9336](https://github.com/eslint/eslint/issues/9336)) (Teddy Katz) - - - - - - - - - - diff --git a/_posts/2017-09-29-eslint-v4.8.0-released.md b/_posts/2017-09-29-eslint-v4.8.0-released.md index 36b3820274..531369e394 100644 --- a/_posts/2017-09-29-eslint-v4.8.0-released.md +++ b/_posts/2017-09-29-eslint-v4.8.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.8.0 released tags: - release @@ -60,5 +59,3 @@ Please see the [documentation](https://eslint.org/docs/user-guide/command-line-i * [b1372da](https://github.com/eslint/eslint/commit/b1372da) Chore: remove sourceCode property from Linter (refs [#9161](https://github.com/eslint/eslint/issues/9161)) ([#9363](https://github.com/eslint/eslint/issues/9363)) (Teddy Katz) * [a7668c2](https://github.com/eslint/eslint/commit/a7668c2) Chore: Remove unnecessary slice from logging utility ([#9343](https://github.com/eslint/eslint/issues/9343)) (Gyandeep Singh) * [2ff6fb6](https://github.com/eslint/eslint/commit/2ff6fb6) Chore: remove unused arguments in codebase ([#9340](https://github.com/eslint/eslint/issues/9340)) (Teddy Katz) - - diff --git a/_posts/2017-10-14-eslint-v4.9.0-released.md b/_posts/2017-10-14-eslint-v4.9.0-released.md index a124961a5a..11ef066e4a 100644 --- a/_posts/2017-10-14-eslint-v4.9.0-released.md +++ b/_posts/2017-10-14-eslint-v4.9.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.9.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.9.0 released -We just pushed ESLint v4.9.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.9.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -82,5 +81,3 @@ We also added new CLI option [`--fix-dry-run`](/docs/user-guide/command-line-int * [9fedd51](https://github.com/eslint/eslint/commit/9fedd51) Chore: Add missing space in blog post template ([#9407](https://github.com/eslint/eslint/issues/9407)) (Kevin Partington) * [c581b77](https://github.com/eslint/eslint/commit/c581b77) Chore: Error => TypeError ([#9390](https://github.com/eslint/eslint/issues/9390)) (薛定谔的猫) * [9d3f5ad](https://github.com/eslint/eslint/commit/9d3f5ad) Chore: report unused eslint-disable directives in ESLint codebase ([#9371](https://github.com/eslint/eslint/issues/9371)) (Teddy Katz) - - diff --git a/_posts/2017-10-27-eslint-v4.10.0-released.md b/_posts/2017-10-27-eslint-v4.10.0-released.md index 4faf5e8ab8..2435a0c05a 100644 --- a/_posts/2017-10-27-eslint-v4.10.0-released.md +++ b/_posts/2017-10-27-eslint-v4.10.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.10.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.10.0 released -We just pushed ESLint v4.10.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.10.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -83,5 +82,3 @@ We just pushed ESLint v4.10.0, which is a minor release upgrade of ESLint. This * [da77eb4](https://github.com/eslint/eslint/commit/da77eb4) Chore: Revise no-config-file test to prevent false failure. ([#9443](https://github.com/eslint/eslint/issues/9443)) (Jonathan Pool) * [0b89865](https://github.com/eslint/eslint/commit/0b89865) Chore: ensure tests for internal rules get run ([#9453](https://github.com/eslint/eslint/issues/9453)) (Teddy Katz) * [b31e55a](https://github.com/eslint/eslint/commit/b31e55a) Chore: move internal rules out of lib/ ([#9448](https://github.com/eslint/eslint/issues/9448)) (Teddy Katz) - - diff --git a/_posts/2017-11-10-eslint-v4.11.0-released.md b/_posts/2017-11-10-eslint-v4.11.0-released.md index 70e9718933..e868a96357 100644 --- a/_posts/2017-11-10-eslint-v4.11.0-released.md +++ b/_posts/2017-11-10-eslint-v4.11.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.11.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.11.0 released -We just pushed ESLint v4.11.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.11.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -94,5 +93,3 @@ eslint -f eslint-formatter-pretty file.js * [8e1a095](https://github.com/eslint/eslint/commit/8e1a095) Chore: enable a modified version of [multiline-comment-style](/docs/rules/multiline-comment-style) on codebase ([#9452](https://github.com/eslint/eslint/issues/9452)) (Teddy Katz) * [cb60285](https://github.com/eslint/eslint/commit/cb60285) Chore: remove commented test for HTML formatter ([#9532](https://github.com/eslint/eslint/issues/9532)) (Teddy Katz) * [2224733](https://github.com/eslint/eslint/commit/2224733) Chore: use eslint-plugin-rulesdir instead of --rulesdir for self-linting ([#9164](https://github.com/eslint/eslint/issues/9164)) (Teddy Katz) - - diff --git a/_posts/2017-11-25-eslint-v4.12.0-released.md b/_posts/2017-11-25-eslint-v4.12.0-released.md index 99accf8552..1b3c0a201b 100644 --- a/_posts/2017-11-25-eslint-v4.12.0-released.md +++ b/_posts/2017-11-25-eslint-v4.12.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.12.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.12.0 released -We just pushed ESLint v4.12.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.12.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -74,9 +73,3 @@ This API is useful when you are working with an instance of [`Linter`](/docs/dev * [76dab18](https://github.com/eslint/eslint/commit/76dab18) Upgrade: doctrine@^2.0.2 ([#9656](https://github.com/eslint/eslint/issues/9656)) (Kevin Partington) * [6e04f14](https://github.com/eslint/eslint/commit/6e04f14) Upgrade: `globals` to 11.0.1 (fixes [#9614](https://github.com/eslint/eslint/issues/9614)) ([#9632](https://github.com/eslint/eslint/issues/9632)) (Toru Nagashima) - - - - - - diff --git a/_posts/2017-11-30-eslint-v4.12.1-released.md b/_posts/2017-11-30-eslint-v4.12.1-released.md index 762a118ed7..f8f7fdcbd8 100644 --- a/_posts/2017-11-30-eslint-v4.12.1-released.md +++ b/_posts/2017-11-30-eslint-v4.12.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.12.1 released tags: - release @@ -7,21 +6,8 @@ tags: --- # ESLint v4.12.1 released -We just pushed ESLint v4.12.1, which is a patch release upgrade of ESLint. This release fixes a bug found in the previous release. +We just pushed ESLint v4.12.1, which is a patch release upgrade of ESLint. This release fixes a bug found in the previous release. ## Bug Fixes * [1e362a0](https://github.com/eslint/eslint/commit/1e362a0f8d97105c199fee3dfc277a03badb6c68) Revert "Fix: Use XML 1.1 on XML formatters (fixes [#9607](https://github.com/eslint/eslint/issues/9607)) ([#9608](https://github.com/eslint/eslint/pull/9608))" ([#9667](https://github.com/eslint/eslint/pull/9667)) (Kevin Partington) - - - - - - - - - - - - - diff --git a/_posts/2017-12-08-eslint-v4.13.0-released.md b/_posts/2017-12-08-eslint-v4.13.0-released.md index 78f3904457..eef299b5a7 100644 --- a/_posts/2017-12-08-eslint-v4.13.0-released.md +++ b/_posts/2017-12-08-eslint-v4.13.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.13.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.13.0 released -We just pushed ESLint v4.13.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.13.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -43,5 +42,3 @@ This release updates [camelcase](/docs/rules/camelcase) rule to handle destructu * [1ad3091](https://github.com/eslint/eslint/commit/1ad3091) Chore: fix test-suite to work with node master ([#9688](https://github.com/eslint/eslint/issues/9688)) (Myles Borins) - - diff --git a/_posts/2017-12-11-eslint-v4.13.1-released.md b/_posts/2017-12-11-eslint-v4.13.1-released.md index 71c8a51986..c3f1bdb648 100644 --- a/_posts/2017-12-11-eslint-v4.13.1-released.md +++ b/_posts/2017-12-11-eslint-v4.13.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.13.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.13.1 released -We just pushed ESLint v4.13.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.13.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -43,5 +42,3 @@ We just pushed ESLint v4.13.1, which is a patch release upgrade of ESLint. This * [4564fe0](https://github.com/eslint/eslint/commit/4564fe0) Chore: no-invalid-meta crash if no export assignment (refs [#9534](https://github.com/eslint/eslint/issues/9534)) ([#9698](https://github.com/eslint/eslint/issues/9698)) (Kevin Partington) - - diff --git a/_posts/2017-12-23-eslint-v4.14.0-released.md b/_posts/2017-12-23-eslint-v4.14.0-released.md index 6ea5a17f0d..ae694818bb 100644 --- a/_posts/2017-12-23-eslint-v4.14.0-released.md +++ b/_posts/2017-12-23-eslint-v4.14.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.14.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.14.0 released -We just pushed ESLint v4.14.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.14.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -72,5 +71,3 @@ Parsers can now provide custom scope analysis hooks to ESLint, which should allo * [37d066c](https://github.com/eslint/eslint/commit/37d066c) Chore: Add unit tests for overrides glob matching. ([#9744](https://github.com/eslint/eslint/issues/9744)) (Robert Jackson) * [805a94e](https://github.com/eslint/eslint/commit/805a94e) Chore: Fix typo in CLIEngine test name ([#9741](https://github.com/eslint/eslint/issues/9741)) (@scriptdaemon) * [14baa2e](https://github.com/eslint/eslint/commit/14baa2e) Chore: improve [arrow-body-style](/docs/rules/arrow-body-style) error message (refs [#5498](https://github.com/eslint/eslint/issues/5498)) ([#9718](https://github.com/eslint/eslint/issues/9718)) (Teddy Katz) - - diff --git a/_posts/2018-01-06-eslint-v4.15.0-released.md b/_posts/2018-01-06-eslint-v4.15.0-released.md index 51c4082238..48b7c369de 100644 --- a/_posts/2018-01-06-eslint-v4.15.0-released.md +++ b/_posts/2018-01-06-eslint-v4.15.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.15.0 released tags: - release @@ -44,11 +43,3 @@ The [`indent`](/docs/rules/indent) rule now has an `ignoreComments` option. This * [db431cb](https://github.com/eslint/eslint/commit/db431cb) Docs: HTTP -> HTTPS (fixes [#9768](https://github.com/eslint/eslint/issues/9768)) ([#9768](https://github.com/eslint/eslint/issues/9768)) (Ronald Eddy Jr) * [cbf0fb9](https://github.com/eslint/eslint/commit/cbf0fb9) Docs: describe how to feature-detect scopeManager/visitorKeys support ([#9764](https://github.com/eslint/eslint/issues/9764)) (Teddy Katz) * [f7dcb70](https://github.com/eslint/eslint/commit/f7dcb70) Docs: Add note about "patch release pending" label to maintainer guide ([#9763](https://github.com/eslint/eslint/issues/9763)) (Teddy Katz) - - - - - - - - diff --git a/_posts/2018-01-19-eslint-v4.16.0-released.md b/_posts/2018-01-19-eslint-v4.16.0-released.md index bf42178915..db301f229e 100644 --- a/_posts/2018-01-19-eslint-v4.16.0-released.md +++ b/_posts/2018-01-19-eslint-v4.16.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.16.0 released tags: - release @@ -69,5 +68,3 @@ We just pushed ESLint v4.16.0, which is a minor release upgrade of ESLint. This * [cd5681d](https://github.com/eslint/eslint/commit/cd5681d) Chore: Deactivate consistent-docs-url in internal rules folder ([#9815](https://github.com/eslint/eslint/issues/9815)) (Kevin Partington) - - diff --git a/_posts/2018-02-02-eslint-v4.17.0-released.md b/_posts/2018-02-02-eslint-v4.17.0-released.md index d7db8b08b4..9f4a343808 100644 --- a/_posts/2018-02-02-eslint-v4.17.0-released.md +++ b/_posts/2018-02-02-eslint-v4.17.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.17.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.17.0 released -We just pushed ESLint v4.17.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.17.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. ## Highlights @@ -53,5 +52,3 @@ We just pushed ESLint v4.17.0, which is a minor release upgrade of ESLint. This * [bb213dc](https://github.com/eslint/eslint/commit/bb213dc) Chore: Use messageIds in some of the core rules ([#9648](https://github.com/eslint/eslint/issues/9648)) (Jed Fox) - - diff --git a/_posts/2018-02-16-eslint-v4.18.0-released.md b/_posts/2018-02-16-eslint-v4.18.0-released.md index effb689d13..5cf09f22c9 100644 --- a/_posts/2018-02-16-eslint-v4.18.0-released.md +++ b/_posts/2018-02-16-eslint-v4.18.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.18.0 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.18.0 released -We just pushed ESLint v4.18.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. +We just pushed ESLint v4.18.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. @@ -56,5 +55,3 @@ We just pushed ESLint v4.18.0, which is a minor release upgrade of ESLint. This * [70f22f3](https://github.com/eslint/eslint/commit/70f22f3) Chore: Apply memoization to config creation within glob utils ([#9944](https://github.com/eslint/eslint/issues/9944)) (Kenton Jacobsen) * [f8d343f](https://github.com/eslint/eslint/commit/f8d343f) Chore: Fix default issue template ([#9946](https://github.com/eslint/eslint/issues/9946)) (Kai Cataldo) - - diff --git a/_posts/2018-02-20-eslint-v4.18.1-released.md b/_posts/2018-02-20-eslint-v4.18.1-released.md index 546b1371e4..b4213761ff 100644 --- a/_posts/2018-02-20-eslint-v4.18.1-released.md +++ b/_posts/2018-02-20-eslint-v4.18.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.18.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.18.1 released -We just pushed ESLint v4.18.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.18.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -31,11 +30,3 @@ We just pushed ESLint v4.18.1, which is a patch release upgrade of ESLint. This * [3e99363](https://github.com/eslint/eslint/commit/3e99363) Docs: Fixed typo in [key-spacing](/docs/rules/key-spacing) rule doc ([#9987](https://github.com/eslint/eslint/issues/9987)) (Jaid) * [7c2cd70](https://github.com/eslint/eslint/commit/7c2cd70) Docs: deprecate experimentalObjectRestSpread ([#9986](https://github.com/eslint/eslint/issues/9986)) (Toru Nagashima) - - - - - - - - diff --git a/_posts/2018-03-02-eslint-v4.18.2-released.md b/_posts/2018-03-02-eslint-v4.18.2-released.md index c2ddbcd056..8fa88befbc 100644 --- a/_posts/2018-03-02-eslint-v4.18.2-released.md +++ b/_posts/2018-03-02-eslint-v4.18.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.18.2 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.18.2 released -We just pushed ESLint v4.18.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.18.2, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -44,5 +43,3 @@ We just pushed ESLint v4.18.2, which is a patch release upgrade of ESLint. This * [558ccba](https://github.com/eslint/eslint/commit/558ccba) Chore: refactor directive comment processing ([#10007](https://github.com/eslint/eslint/issues/10007)) (Teddy Katz) * [18e15d9](https://github.com/eslint/eslint/commit/18e15d9) Chore: avoid useless catch clauses that just rethrow errors ([#10010](https://github.com/eslint/eslint/issues/10010)) (Teddy Katz) * [a1c3759](https://github.com/eslint/eslint/commit/a1c3759) Chore: refactor populating configs with defaults in linter ([#10006](https://github.com/eslint/eslint/issues/10006)) (Teddy Katz) - - diff --git a/_posts/2018-03-16-eslint-v4.19.0-released.md b/_posts/2018-03-16-eslint-v4.19.0-released.md index 1331bdf775..bdb3b02d1e 100644 --- a/_posts/2018-03-16-eslint-v4.19.0-released.md +++ b/_posts/2018-03-16-eslint-v4.19.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.19.0 released tags: - release @@ -54,5 +53,3 @@ We just pushed ESLint v4.19.0, which is a minor release upgrade of ESLint. This * [e33bb64](https://github.com/eslint/eslint/commit/e33bb64) Chore: enable [no-param-reassign](/docs/rules/no-param-reassign) on ESLint codebase ([#10065](https://github.com/eslint/eslint/issues/10065)) (Teddy Katz) - - diff --git a/_posts/2018-03-21-eslint-v4.19.1-released.md b/_posts/2018-03-21-eslint-v4.19.1-released.md index 55bca64433..eb39acb3d3 100644 --- a/_posts/2018-03-21-eslint-v4.19.1-released.md +++ b/_posts/2018-03-21-eslint-v4.19.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v4.19.1 released tags: - release @@ -7,7 +6,7 @@ tags: --- # ESLint v4.19.1 released -We just pushed ESLint v4.19.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. +We just pushed ESLint v4.19.1, which is a patch release upgrade of ESLint. This release fixes several bugs found in the previous release. @@ -44,5 +43,3 @@ We just pushed ESLint v4.19.1, which is a patch release upgrade of ESLint. This * [0360cc2](https://github.com/eslint/eslint/commit/0360cc2) Chore: Adding debug logs on successful plugin loads ([#10100](https://github.com/eslint/eslint/issues/10100)) (Kevin Partington) * [a717c5d](https://github.com/eslint/eslint/commit/a717c5d) Chore: Adding log at beginning of unit tests in Makefile.js ([#10102](https://github.com/eslint/eslint/issues/10102)) (Kevin Partington) - - diff --git a/_posts/2018-03-30-eslint-v5.0.0-alpha.0-released.md b/_posts/2018-03-30-eslint-v5.0.0-alpha.0-released.md index 656d4b3a74..f6701aa603 100644 --- a/_posts/2018-03-30-eslint-v5.0.0-alpha.0-released.md +++ b/_posts/2018-03-30-eslint-v5.0.0-alpha.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0-alpha.0 released tags: - release @@ -97,5 +96,3 @@ As there are a lot of changes, we've created a [migration guide](/docs/5.0.0/use * [9a020dc14](https://github.com/eslint/eslint/commit/9a020dc14) Chore: refactor --no-ignore flag logic ([#10146](https://github.com/eslint/eslint/issues/10146)) (Teddy Katz) * [4f61a0ded](https://github.com/eslint/eslint/commit/4f61a0ded) Chore: add noopener/noreferrer (薛定谔的猫) * [837edc7c0](https://github.com/eslint/eslint/commit/837edc7c0) Chore: Uncommented test for empty program for no-invalid-meta ([#10046](https://github.com/eslint/eslint/issues/10046)) (Kevin Partington) - - diff --git a/_posts/2018-04-13-eslint-v5.0.0-alpha.1-released.md b/_posts/2018-04-13-eslint-v5.0.0-alpha.1-released.md index de852d4d19..f79b9c214d 100644 --- a/_posts/2018-04-13-eslint-v5.0.0-alpha.1-released.md +++ b/_posts/2018-04-13-eslint-v5.0.0-alpha.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0-alpha.1 released tags: - release diff --git a/_posts/2018-04-27-eslint-v5.0.0-alpha.2-released.md b/_posts/2018-04-27-eslint-v5.0.0-alpha.2-released.md index e6fc3f3350..9a637e605a 100644 --- a/_posts/2018-04-27-eslint-v5.0.0-alpha.2-released.md +++ b/_posts/2018-04-27-eslint-v5.0.0-alpha.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0-alpha.2 released tags: - release @@ -88,5 +87,3 @@ As there are a lot of changes, we've created a [migration guide](/docs/5.0.0/use * [b32d1f4](https://github.com/eslint/eslint/commit/b32d1f4) Chore: upgrade eslump@1.6.2 ([#10258](https://github.com/eslint/eslint/issues/10258)) (薛定谔的猫) * [7938bf1](https://github.com/eslint/eslint/commit/7938bf1) Chore: update eslint-fuzzer ecmaVersion to 2018 ([#10255](https://github.com/eslint/eslint/issues/10255)) (薛定谔的猫) * [a2953ec](https://github.com/eslint/eslint/commit/a2953ec) Chore: small opt to improve readability ([#10225](https://github.com/eslint/eslint/issues/10225)) (薛定谔的猫) - - diff --git a/_posts/2018-05-11-eslint-v5.0.0-alpha.3-released.md b/_posts/2018-05-11-eslint-v5.0.0-alpha.3-released.md index e871a11d40..ef8e6581c3 100644 --- a/_posts/2018-05-11-eslint-v5.0.0-alpha.3-released.md +++ b/_posts/2018-05-11-eslint-v5.0.0-alpha.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0-alpha.3 released tags: - release @@ -101,5 +100,3 @@ As there are a lot of changes, we've created a [migration guide](/docs/5.0.0/use * [99b842d](https://github.com/eslint/eslint/commit/99b842d) Chore: upgrade mock-fs@4.5.0 ([#10325](https://github.com/eslint/eslint/issues/10325)) (Tim Schaub) * [fe91859](https://github.com/eslint/eslint/commit/fe91859) Chore: Update issue templates with new format ([#10309](https://github.com/eslint/eslint/issues/10309)) (Ilya Volodin) * [f7330c1](https://github.com/eslint/eslint/commit/f7330c1) Chore: Add ESLint path to plugin-missing message ([#10283](https://github.com/eslint/eslint/issues/10283)) (Kevin Partington) - - diff --git a/_posts/2018-05-28-eslint-v5.0.0-alpha.4-released.md b/_posts/2018-05-28-eslint-v5.0.0-alpha.4-released.md index f771e75e86..5b7749992d 100644 --- a/_posts/2018-05-28-eslint-v5.0.0-alpha.4-released.md +++ b/_posts/2018-05-28-eslint-v5.0.0-alpha.4-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0-alpha.4 released tags: - release diff --git a/_posts/2018-06-09-eslint-v5.0.0-rc.0-released.md b/_posts/2018-06-09-eslint-v5.0.0-rc.0-released.md index 0fb7dd247e..f62a567af6 100644 --- a/_posts/2018-06-09-eslint-v5.0.0-rc.0-released.md +++ b/_posts/2018-06-09-eslint-v5.0.0-rc.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0-rc.0 released tags: - release @@ -86,5 +85,3 @@ As there are a lot of changes, we've created a [migration guide](/docs/5.0.0/use * [a370da2](https://github.com/eslint/eslint/commit/a370da2) Chore: small opt to improve readability ([#10241](https://github.com/eslint/eslint/issues/10241)) (薛定谔的猫) - - diff --git a/_posts/2018-06-22-eslint-v5.0.0-released.md b/_posts/2018-06-22-eslint-v5.0.0-released.md index e0bcab5807..2a16707118 100644 --- a/_posts/2018-06-22-eslint-v5.0.0-released.md +++ b/_posts/2018-06-22-eslint-v5.0.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.0 released tags: - release @@ -70,9 +69,3 @@ Changes since v5.0.0-rc.0: * [daefbdb](https://github.com/eslint/eslint/commit/daefbdb) Upgrade: eslint-scope and espree to 4.0.0 (refs [#10458](https://github.com/eslint/eslint/issues/10458)) ([#10500](https://github.com/eslint/eslint/issues/10500)) (Brandon Mills) - - - - - - diff --git a/_posts/2018-06-25-eslint-v5.0.1-released.md b/_posts/2018-06-25-eslint-v5.0.1-released.md index 2f06e549c5..f0a3d47827 100644 --- a/_posts/2018-06-25-eslint-v5.0.1-released.md +++ b/_posts/2018-06-25-eslint-v5.0.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.0.1 released tags: - release @@ -30,11 +29,3 @@ We just pushed ESLint v5.0.1, which is a patch release upgrade of ESLint. This r * [4c823bd](https://github.com/eslint/eslint/commit/4c823bd) Docs: Fix [max-lines-per-function](/docs/rules/max-lines-per-function) correct code's max value ([#10513](https://github.com/eslint/eslint/issues/10513)) (Rhys Bower) - - - - - - - - diff --git a/_posts/2018-07-08-eslint-v5.1.0-released.md b/_posts/2018-07-08-eslint-v5.1.0-released.md index f416de01b8..2136168ed1 100644 --- a/_posts/2018-07-08-eslint-v5.1.0-released.md +++ b/_posts/2018-07-08-eslint-v5.1.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.1.0 released tags: - release @@ -76,5 +75,3 @@ We just pushed ESLint v5.1.0, which is a minor release upgrade of ESLint. This r * [8ee39c5f2](https://github.com/eslint/eslint/commit/8ee39c5f2) Chore: small refactor config-validator ([#10565](https://github.com/eslint/eslint/issues/10565)) (薛定谔的猫) * [92b19ca61](https://github.com/eslint/eslint/commit/92b19ca61) Chore: use eslintrc overrides(dogfooding) ([#10566](https://github.com/eslint/eslint/issues/10566)) (薛定谔的猫) - - diff --git a/_posts/2018-07-12-postmortem-for-malicious-package-publishes.md b/_posts/2018-07-12-postmortem-for-malicious-package-publishes.md index 662f4d8a55..9bb78d8038 100644 --- a/_posts/2018-07-12-postmortem-for-malicious-package-publishes.md +++ b/_posts/2018-07-12-postmortem-for-malicious-package-publishes.md @@ -1,5 +1,4 @@ --- -layout: post title: Postmortem for Malicious Packages Published on July 12th, 2018 tags: - security @@ -49,7 +48,7 @@ With the hindsight of this incident, we have a few recommendations for npm packa * **2018-07-12 10:25 UTC**: The attacker unpublished `eslint-config-eslint@5.0.2`. * **2018-07-12 10:40 UTC**: The attacker published `eslint-scope@3.7.2`, which contained the same malicious `postinstall` script. * **2018-07-12 11:17 UTC**: A user posted [eslint/eslint-scope#39](https://github.com/eslint/eslint-scope/issues/39), notifying the ESLint team of the issue. -* **2018-07-12 12:27 UTC**: The pastebin.com link containing malicious code was taken down. +* **2018-07-12 12:27 UTC**: The pastebin.com link containing malicious code was taken down. * **2018-07-12 12:37 UTC**: The npm team unpublished `eslint-scope@3.7.2` after being contacted by an ESLint maintainer. * **2018-07-12 17:41 UTC**: The ESLint team published `eslint-scope@3.7.3` with the code from `eslint-scope@3.7.1` so that caches could pick up the new version. * **2018-07-12 18:42 UTC**: npm revoked all access tokens generated before 2018-07-12 12:30 UTC. diff --git a/_posts/2018-07-20-eslint-v5.2.0-released.md b/_posts/2018-07-20-eslint-v5.2.0-released.md index d8869b02f6..8149438da7 100644 --- a/_posts/2018-07-20-eslint-v5.2.0-released.md +++ b/_posts/2018-07-20-eslint-v5.2.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.2.0 released tags: - release @@ -62,5 +61,3 @@ We just pushed ESLint v5.2.0, which is a minor release upgrade of ESLint. This r * [e4e7ff2](https://github.com/eslint/eslint/commit/e4e7ff2) Chore: fix error message in eslint-config-eslint ([#10588](https://github.com/eslint/eslint/issues/10588)) (薛定谔的猫) * [1e88170](https://github.com/eslint/eslint/commit/1e88170) Chore: Move lib/logging and lib/timing to lib/util/ (refs [#10559](https://github.com/eslint/eslint/issues/10559)) ([#10579](https://github.com/eslint/eslint/issues/10579)) (Kevin Partington) * [0faf633](https://github.com/eslint/eslint/commit/0faf633) Chore: Simplify helper method in Linter tests ([#10580](https://github.com/eslint/eslint/issues/10580)) (Kevin Partington) - - diff --git a/_posts/2018-08-03-eslint-v5.3.0-released.md b/_posts/2018-08-03-eslint-v5.3.0-released.md index 65544c344d..8b658388f9 100644 --- a/_posts/2018-08-03-eslint-v5.3.0-released.md +++ b/_posts/2018-08-03-eslint-v5.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.3.0 released tags: - release @@ -89,5 +88,3 @@ Four new rules have been added: * [d8aea28](https://github.com/eslint/eslint/commit/d8aea28) Chore: rm unnecessary plugin in eslint-config-eslint ([#10685](https://github.com/eslint/eslint/issues/10685)) (薛定谔的猫) * [0cb5e3e](https://github.com/eslint/eslint/commit/0cb5e3e) Chore: Replace some function application with spread operators ([#10645](https://github.com/eslint/eslint/issues/10645)) (Kevin Partington) * [e1a3cac](https://github.com/eslint/eslint/commit/e1a3cac) Chore: rm deprecated experimentalObjectRestSpread option in tests ([#10647](https://github.com/eslint/eslint/issues/10647)) (薛定谔的猫) - - diff --git a/_posts/2018-08-17-eslint-v5.4.0-released.md b/_posts/2018-08-17-eslint-v5.4.0-released.md index e7a56e2c18..4872ab5b6e 100644 --- a/_posts/2018-08-17-eslint-v5.4.0-released.md +++ b/_posts/2018-08-17-eslint-v5.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.4.0 released tags: - release @@ -54,5 +53,3 @@ We just pushed ESLint v5.4.0, which is a minor release upgrade of ESLint. This r * [985567d](https://github.com/eslint/eslint/commit/985567d) Chore: rm unused dep string.prototype.matchall ([#10756](https://github.com/eslint/eslint/issues/10756)) (薛定谔的猫) * [6492233](https://github.com/eslint/eslint/commit/6492233) Chore: enable [no-prototype-builtins](/docs/rules/no-prototype-builtins) in codebase (fixes [#10660](https://github.com/eslint/eslint/issues/10660)) ([#10664](https://github.com/eslint/eslint/issues/10664)) (薛定谔的猫) * [137140f](https://github.com/eslint/eslint/commit/137140f) Chore: use eslintrc overrides ([#10677](https://github.com/eslint/eslint/issues/10677)) (薛定谔的猫) - - diff --git a/_posts/2018-08-31-eslint-v5.5.0-released.md b/_posts/2018-08-31-eslint-v5.5.0-released.md index 7f685f3888..3f95a957fe 100644 --- a/_posts/2018-08-31-eslint-v5.5.0-released.md +++ b/_posts/2018-08-31-eslint-v5.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.5.0 released tags: - release @@ -59,5 +58,3 @@ We just pushed ESLint v5.5.0, which is a minor release upgrade of ESLint. This r * [cb946af](https://github.com/eslint/eslint/commit/cb946af) Chore: use meta.messages in some rules (1/4) ([#10764](https://github.com/eslint/eslint/issues/10764)) (薛定谔的猫) - - diff --git a/_posts/2018-09-14-eslint-v5.6.0-released.md b/_posts/2018-09-14-eslint-v5.6.0-released.md index fb117d8c1d..776130074f 100644 --- a/_posts/2018-09-14-eslint-v5.6.0-released.md +++ b/_posts/2018-09-14-eslint-v5.6.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.6.0 released tags: - release @@ -45,5 +44,3 @@ We just pushed ESLint v5.6.0, which is a minor release upgrade of ESLint. This r * [0a65844](https://github.com/eslint/eslint/commit/0a65844) Chore: quote enable avoidEscape option in eslint-config-eslint ([#10626](https://github.com/eslint/eslint/issues/10626)) (薛定谔的猫) * [32f41bd](https://github.com/eslint/eslint/commit/32f41bd) Chore: Add configuration wrapper markdown for the bug report template ([#10669](https://github.com/eslint/eslint/issues/10669)) (Iulian Onofrei) - - diff --git a/_posts/2018-09-28-eslint-v5.6.1-released.md b/_posts/2018-09-28-eslint-v5.6.1-released.md index 58c9c9f274..091191b79d 100644 --- a/_posts/2018-09-28-eslint-v5.6.1-released.md +++ b/_posts/2018-09-28-eslint-v5.6.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.6.1 released tags: - release @@ -62,5 +61,3 @@ We just pushed ESLint v5.6.1, which is a patch release upgrade of ESLint. This r * [b3e3cb1](https://github.com/eslint/eslint/commit/b3e3cb1) Chore: Update debug log name to match filename ([#10863](https://github.com/eslint/eslint/issues/10863)) (Nicholas C. Zakas) - - diff --git a/_posts/2018-10-12-eslint-v5.7.0-released.md b/_posts/2018-10-12-eslint-v5.7.0-released.md index fc9ff937c9..12aae09ae8 100644 --- a/_posts/2018-10-12-eslint-v5.7.0-released.md +++ b/_posts/2018-10-12-eslint-v5.7.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.7.0 released tags: - release diff --git a/_posts/2018-10-26-eslint-v5.8.0-released.md b/_posts/2018-10-26-eslint-v5.8.0-released.md index 65fb7de48f..213ca4c2e5 100644 --- a/_posts/2018-10-26-eslint-v5.8.0-released.md +++ b/_posts/2018-10-26-eslint-v5.8.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.8.0 released tags: - release @@ -64,5 +63,3 @@ We just pushed ESLint v5.8.0, which is a minor release upgrade of ESLint. This r * [3d88b38](https://github.com/eslint/eslint/commit/3d88b38) Chore: avoid using legacy report API in [no-irregular-whitespace](/docs/rules/no-irregular-whitespace) ([#11013](https://github.com/eslint/eslint/issues/11013)) (Teddy Katz) * [577cbf1](https://github.com/eslint/eslint/commit/577cbf1) Chore: Add typescript-specific edge case tests to [space-infix-ops](/docs/rules/space-infix-ops) ([#10986](https://github.com/eslint/eslint/issues/10986)) (Bence Dányi) * [d45b184](https://github.com/eslint/eslint/commit/d45b184) Chore: Using deconstruction assignment for shelljs ([#10974](https://github.com/eslint/eslint/issues/10974)) (ZYSzys) - - diff --git a/_posts/2018-11-09-eslint-v5.9.0-released.md b/_posts/2018-11-09-eslint-v5.9.0-released.md index cbdbd1b24f..05d5a669fe 100644 --- a/_posts/2018-11-09-eslint-v5.9.0-released.md +++ b/_posts/2018-11-09-eslint-v5.9.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.9.0 released tags: - release @@ -82,5 +81,3 @@ There is also a new `fixTypes` option that can be passed to the [`CLIEngine`](ht * [0800b20](https://github.com/eslint/eslint/commit/0800b20) Chore: fix invalid super() calls in tests ([#11054](https://github.com/eslint/eslint/issues/11054)) (Teddy Katz) - - diff --git a/_posts/2018-11-27-jsdoc-end-of-life.md b/_posts/2018-11-27-jsdoc-end-of-life.md index 4b6863459e..7448ed72e6 100644 --- a/_posts/2018-11-27-jsdoc-end-of-life.md +++ b/_posts/2018-11-27-jsdoc-end-of-life.md @@ -1,5 +1,4 @@ --- -layout: post title: "End-of-Life for Built-in JSDoc Support in ESLint" tags: - eol @@ -9,7 +8,7 @@ tags: # End-of-Life for Built-in JSDoc Support in ESLint -Over the past few years, the ESLint project has grown in size and scope. What originally consisted of a single executable package has grown into a project with multiple packages including several parsers and other utilities. Although the project has grown, the size of the team has not, and as such we’ve had to make some tough decisions about how to continue maintaining the ESLint project as a whole using an all-volunteer team. +Over the past few years, the ESLint project has grown in size and scope. What originally consisted of a single executable package has grown into a project with multiple packages including several parsers and other utilities. Although the project has grown, the size of the team has not, and as such we’ve had to make some tough decisions about how to continue maintaining the ESLint project as a whole using an all-volunteer team. As part of a recent review, we've decided to end-of-life the built-in support for JSDoc in the ESLint project. This post contains the details of that decision and what happens next. diff --git a/_posts/2018-12-08-eslint-v5.10.0-released.md b/_posts/2018-12-08-eslint-v5.10.0-released.md index 6ebd30032b..5b263ddd07 100644 --- a/_posts/2018-12-08-eslint-v5.10.0-released.md +++ b/_posts/2018-12-08-eslint-v5.10.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.10.0 released tags: - release diff --git a/_posts/2018-12-22-eslint-v5.11.0-released.md b/_posts/2018-12-22-eslint-v5.11.0-released.md index 07bc28187d..289a7034e2 100644 --- a/_posts/2018-12-22-eslint-v5.11.0-released.md +++ b/_posts/2018-12-22-eslint-v5.11.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.11.0 released tags: - release @@ -50,11 +49,3 @@ We just pushed ESLint v5.11.0, which is a minor release upgrade of ESLint. This * [`733d936`](https://github.com/eslint/eslint/commit/733d93618a99758a05453ab94505a9f1330950e0) Docs: link to JSDoc EOL blogpost in [valid-jsdoc](/docs/rules/valid-jsdoc) and [require-jsdoc](/docs/rules/require-jsdoc) ([#11191](https://github.com/eslint/eslint/issues/11191)) (Nathan Diddle) * [`d5eb108`](https://github.com/eslint/eslint/commit/d5eb108e17f676d0e4fcddeb1211b4bdfac760c1) Docs: Ensure `triage` label is added to new issues ([#11182](https://github.com/eslint/eslint/issues/11182)) (Teddy Katz) * [`617a287`](https://github.com/eslint/eslint/commit/617a2874ed085bca36ca289aac55e3b7f7ce937e) Docs: add missing deprecation notices for jsdoc rules ([#11171](https://github.com/eslint/eslint/issues/11171)) (Teddy Katz) - - - - - - - - diff --git a/_posts/2018-12-26-eslint-v5.11.1-released.md b/_posts/2018-12-26-eslint-v5.11.1-released.md index 8b88d20411..027cd0bd0f 100644 --- a/_posts/2018-12-26-eslint-v5.11.1-released.md +++ b/_posts/2018-12-26-eslint-v5.11.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.11.1 released tags: - release @@ -24,13 +23,3 @@ We just pushed ESLint v5.11.1, which is a patch release upgrade of ESLint. This * [`de79f10`](https://github.com/eslint/eslint/commit/de79f1026b7035f0296d7876f1db64f225cca1b8) Fix: handle optional catch bindings in [no-useless-catch](/docs/rules/no-useless-catch) ([#11205](https://github.com/eslint/eslint/issues/11205)) (Colin Ihrig) - - - - - - - - - - diff --git a/_posts/2019-01-04-eslint-v5.12.0-released.md b/_posts/2019-01-04-eslint-v5.12.0-released.md index c9ec6ef23e..12db3735e0 100644 --- a/_posts/2019-01-04-eslint-v5.12.0-released.md +++ b/_posts/2019-01-04-eslint-v5.12.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.12.0 released tags: - release @@ -44,7 +43,3 @@ We just pushed ESLint v5.12.0, which is a minor release upgrade of ESLint. This * [`f92d6f0`](https://github.com/eslint/eslint/commit/f92d6f05c4dcd4a3a0616871e10b31edae9dfad5) Build: Add karma-chrome-launcher support ([#11027](https://github.com/eslint/eslint/issues/11027)) (薛定谔的猫) - - - - diff --git a/_posts/2019-01-18-eslint-v5.12.1-released.md b/_posts/2019-01-18-eslint-v5.12.1-released.md index 8adfd98f41..c7b9a08993 100644 --- a/_posts/2019-01-18-eslint-v5.12.1-released.md +++ b/_posts/2019-01-18-eslint-v5.12.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.12.1 released tags: - release @@ -51,5 +50,3 @@ We just pushed ESLint v5.12.1, which is a patch release upgrade of ESLint. This * [`eb5c401`](https://github.com/eslint/eslint/commit/eb5c4014f16be1c2003ed46ce9560d0d8a567d0f) Chore: use meta.messages in some rules (2/4) (refs [#9870](https://github.com/eslint/eslint/issues/9870)) ([#10773](https://github.com/eslint/eslint/issues/10773)) (薛定谔的猫) - - diff --git a/_posts/2019-01-18-future-typescript-eslint.md b/_posts/2019-01-18-future-typescript-eslint.md index 1ebc6e5c79..f587dde530 100644 --- a/_posts/2019-01-18-future-typescript-eslint.md +++ b/_posts/2019-01-18-future-typescript-eslint.md @@ -1,5 +1,4 @@ --- -layout: post title: "The future of TypeScript on ESLint" tags: - typescript diff --git a/_posts/2019-02-01-eslint-v5.13.0-released.md b/_posts/2019-02-01-eslint-v5.13.0-released.md index 834e118370..ec1aeb3a5e 100644 --- a/_posts/2019-02-01-eslint-v5.13.0-released.md +++ b/_posts/2019-02-01-eslint-v5.13.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.13.0 released tags: - release diff --git a/_posts/2019-02-12-funding-eslint-future.md b/_posts/2019-02-12-funding-eslint-future.md index 62f42d02be..5892631bf5 100644 --- a/_posts/2019-02-12-funding-eslint-future.md +++ b/_posts/2019-02-12-funding-eslint-future.md @@ -1,5 +1,4 @@ --- -layout: post title: "Funding ESLint's Future" tags: - Open Source diff --git a/_posts/2019-02-15-eslint-v5.14.0-released.md b/_posts/2019-02-15-eslint-v5.14.0-released.md index 86fec2f0d9..e601d8ef3c 100644 --- a/_posts/2019-02-15-eslint-v5.14.0-released.md +++ b/_posts/2019-02-15-eslint-v5.14.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.14.0 released tags: - release @@ -92,5 +91,3 @@ We just pushed ESLint v5.14.0, which is a minor release upgrade of ESLint. This * [`9441ce7`](https://github.com/eslint/eslint/commit/9441ce77b7228f2c4562e158a10905afe11f31f2) Chore: update incorrect tests to fix build failing ([#11354](https://github.com/eslint/eslint/issues/11354)) (薛定谔的猫) - - diff --git a/_posts/2019-02-18-eslint-v5.14.1-released.md b/_posts/2019-02-18-eslint-v5.14.1-released.md index 289e8362c3..85f0ccbf3e 100644 --- a/_posts/2019-02-18-eslint-v5.14.1-released.md +++ b/_posts/2019-02-18-eslint-v5.14.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.14.1 released tags: - release @@ -24,13 +23,3 @@ We just pushed ESLint v5.14.1, which is a patch release upgrade of ESLint. This * [`1d6e639`](https://github.com/eslint/eslint/commit/1d6e63930073e79e52890f552cc6e9a0646b7fb4) Fix: [sort-keys](/docs/rules/sort-keys) throws Error at SpreadElement (fixes [#11402](https://github.com/eslint/eslint/issues/11402)) ([#11403](https://github.com/eslint/eslint/issues/11403)) (Krist Wongsuphasawat) - - - - - - - - - - diff --git a/_posts/2019-03-01-eslint-v5.15.0-released.md b/_posts/2019-03-01-eslint-v5.15.0-released.md index cf5fae6e03..21ee9d9e07 100644 --- a/_posts/2019-03-01-eslint-v5.15.0-released.md +++ b/_posts/2019-03-01-eslint-v5.15.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.15.0 released tags: - release @@ -72,5 +71,3 @@ The [prefer-named-capture-group](/docs/rules/prefer-named-capture-group) rule ha * [`5018378`](https://github.com/eslint/eslint/commit/5018378131fd5190bbccca902c0cf4276ee1581a) Chore: enable [require-unicode-regexp](/docs/rules/require-unicode-regexp) on ESLint codebase ([#11422](https://github.com/eslint/eslint/issues/11422)) (Teddy Katz) * [`f6ba633`](https://github.com/eslint/eslint/commit/f6ba633f56eca6be20fc4b0d9496a78b9498d578) Chore: lint all files in the repo at the same time ([#11425](https://github.com/eslint/eslint/issues/11425)) (Teddy Katz) * [`b9aabe3`](https://github.com/eslint/eslint/commit/b9aabe34311f6189b87c9d8a1aa40f3513fed773) Chore: run fuzzer along with unit tests ([#11404](https://github.com/eslint/eslint/issues/11404)) (Teddy Katz) - - diff --git a/_posts/2019-03-04-eslint-v5.15.1-released.md b/_posts/2019-03-04-eslint-v5.15.1-released.md index da6d56ac94..e17b228c7d 100644 --- a/_posts/2019-03-04-eslint-v5.15.1-released.md +++ b/_posts/2019-03-04-eslint-v5.15.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.15.1 released tags: - release @@ -36,7 +35,3 @@ We just pushed ESLint v5.15.1, which is a patch release upgrade of ESLint. This * [`fe1a892`](https://github.com/eslint/eslint/commit/fe1a892f85b09c3d2fea05bef011530a678a6af5) Build: bundle espree (fixes eslint/eslint.github.io[#546](https://github.com/eslint/eslint/issues/546)) ([#11467](https://github.com/eslint/eslint/issues/11467)) (薛定谔的猫) - - - - diff --git a/_posts/2019-03-15-eslint-v5.15.2-released.md b/_posts/2019-03-15-eslint-v5.15.2-released.md index 21aeb2275b..4f508ab5a5 100644 --- a/_posts/2019-03-15-eslint-v5.15.2-released.md +++ b/_posts/2019-03-15-eslint-v5.15.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.15.2 released tags: - release @@ -67,5 +66,3 @@ We just pushed ESLint v5.15.2, which is a patch release upgrade of ESLint. This * [`0f56dc6`](https://github.com/eslint/eslint/commit/0f56dc6d9eadad05dc3d5c9d1d9ddef94e10c5d3) Chore: make config validator params more consistent ([#11435](https://github.com/eslint/eslint/issues/11435)) (薛定谔的猫) * [`62fee4a`](https://github.com/eslint/eslint/commit/62fee4a976897d158c8c137339728cd280333286) Chore: eslint-config-eslint enable [comma-dangle](/docs/rules/comma-dangle) functions: "never" ([#11434](https://github.com/eslint/eslint/issues/11434)) (薛定谔的猫) * [`f078f9a`](https://github.com/eslint/eslint/commit/f078f9a9e094ec00c61a6ef1c9550d017631e69a) Chore: use "file:" dependencies for internal rules/config ([#11465](https://github.com/eslint/eslint/issues/11465)) (Teddy Katz) - - diff --git a/_posts/2019-03-18-eslint-v5.15.3-released.md b/_posts/2019-03-18-eslint-v5.15.3-released.md index 7425cbb198..4062b867ee 100644 --- a/_posts/2019-03-18-eslint-v5.15.3-released.md +++ b/_posts/2019-03-18-eslint-v5.15.3-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.15.3 released tags: - release @@ -38,5 +37,3 @@ We just pushed ESLint v5.15.3, which is a patch release upgrade of ESLint. This * [`1f715a2`](https://github.com/eslint/eslint/commit/1f715a20c145d8ccc38f3310afccd838495d09d4) Chore: make test-case-property-ordering reasonable ([#11511](https://github.com/eslint/eslint/issues/11511)) (Toru Nagashima) - - diff --git a/_posts/2019-03-29-eslint-v5.16.0-released.md b/_posts/2019-03-29-eslint-v5.16.0-released.md index c352725306..12111216b9 100644 --- a/_posts/2019-03-29-eslint-v5.16.0-released.md +++ b/_posts/2019-03-29-eslint-v5.16.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v5.16.0 released tags: - release diff --git a/_posts/2019-04-12-eslint-v6.0.0-alpha.0-released.md b/_posts/2019-04-12-eslint-v6.0.0-alpha.0-released.md index eb0cf0e6b6..b4bb8bbf9c 100644 --- a/_posts/2019-04-12-eslint-v6.0.0-alpha.0-released.md +++ b/_posts/2019-04-12-eslint-v6.0.0-alpha.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.0.0-alpha.0 released tags: - release @@ -107,5 +106,3 @@ As there are a lot of changes, we've created a [migration guide](/docs/6.0.0/use * [`3d9e137`](https://github.com/eslint/eslint/commit/3d9e1372aad1e174b5438e3d6bd75fdefba06bad) Chore: fix test that fails when the CWD contains a space ([#11612](https://github.com/eslint/eslint/issues/11612)) (Teddy Katz) - - diff --git a/_posts/2019-05-01-funding-update.md b/_posts/2019-05-01-funding-update.md index 5d2ffeb9e1..8caf362b12 100644 --- a/_posts/2019-05-01-funding-update.md +++ b/_posts/2019-05-01-funding-update.md @@ -1,5 +1,4 @@ --- -layout: post title: "Funding ESLint's Future: An Update" tags: - Open Source @@ -13,7 +12,7 @@ tags: Back in February, we [announced](https://eslint.org/blog/2019/02/funding-eslint-future) the creation of the [ESLint Collective](https://opencollective.com/eslint) to raise funds for the ongoing maintenance and development of ESLint. At the time, we were grateful to have both [Facebook Open Source](https://code.facebook.com/projects/) and [Airbnb](https://airbnb.com) as our first two gold sponsors, each donating $1,000 per month. -In the past three months, we are happy to share that our monthly donations have reached over $7,000, 35% of the way towards our $20,000 goal. That's an amazing achievement in such a short amount of time, and we are humbled that so many have reached out to support ESLint. +In the past three months, we are happy to share that our monthly donations have reached over $7,000, 35% of the way towards our $20,000 goal. That's an amazing achievement in such a short amount of time, and we are humbled that so many have reached out to support ESLint. ## Introducing our latest sponsors diff --git a/_posts/2019-05-10-eslint-v6.0.0-alpha.1-released.md b/_posts/2019-05-10-eslint-v6.0.0-alpha.1-released.md index febf2f72ed..8e94d2db8a 100644 --- a/_posts/2019-05-10-eslint-v6.0.0-alpha.1-released.md +++ b/_posts/2019-05-10-eslint-v6.0.0-alpha.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.0.0-alpha.1 released tags: - release @@ -108,5 +107,3 @@ If you're upgrading from ESLint v5.x, we recommend looking at the [migration gui * [`7f290a9`](https://github.com/eslint/eslint/commit/7f290a9044ca795884ac2e495cd31b2a35f109a6) Chore: add eslint as a devDependeny ([#11654](https://github.com/eslint/eslint/issues/11654)) (Toru Nagashima) * [`139fd2f`](https://github.com/eslint/eslint/commit/139fd2f1254bcc524738f8c2645e0847df95e0d0) Chore: add markdownlint-cli ([#11653](https://github.com/eslint/eslint/issues/11653)) (Toru Nagashima) * [`8b4dba6`](https://github.com/eslint/eslint/commit/8b4dba606f8306f8ad0a37e2174a6e3236f7ebe7) Chore: Add linting to git commit ([#11556](https://github.com/eslint/eslint/issues/11556)) (Nicholas C. Zakas) - - diff --git a/_posts/2019-05-25-eslint-v6.0.0-alpha.2-released.md b/_posts/2019-05-25-eslint-v6.0.0-alpha.2-released.md index 962996a64f..6a614df9f7 100644 --- a/_posts/2019-05-25-eslint-v6.0.0-alpha.2-released.md +++ b/_posts/2019-05-25-eslint-v6.0.0-alpha.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.0.0-alpha.2 released tags: - release @@ -101,5 +100,3 @@ If you're upgrading from ESLint v5.x, we recommend looking at the [migration gui * [`219aecb`](https://github.com/eslint/eslint/commit/219aecb78bc646d44bad27dc775a9b3d3dc58232) Chore: restructure files ([#11555](https://github.com/eslint/eslint/issues/11555)) (Toru Nagashima) * [`67c671f`](https://github.com/eslint/eslint/commit/67c671fdc1c8b08cb8d263a9bb2151e3108c88b4) Chore: ignore deprecated rules in fuzz tests ([#11710](https://github.com/eslint/eslint/issues/11710)) (Pig Fang) * [`af81cb3`](https://github.com/eslint/eslint/commit/af81cb3ecc5e6bf43a6a2d8f326103350513a1b8) Chore: make fuzzer produce minimal reproducible examples of bugs ([#11700](https://github.com/eslint/eslint/issues/11700)) (Teddy Katz) - - diff --git a/_posts/2019-06-09-eslint-v6.0.0-rc.0-released.md b/_posts/2019-06-09-eslint-v6.0.0-rc.0-released.md index e9ddecff3f..166c4cc124 100644 --- a/_posts/2019-06-09-eslint-v6.0.0-rc.0-released.md +++ b/_posts/2019-06-09-eslint-v6.0.0-rc.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.0.0-rc.0 released tags: - release diff --git a/_posts/2019-06-21-eslint-v6.0.0-released.md b/_posts/2019-06-21-eslint-v6.0.0-released.md index 2753b51094..884111f255 100644 --- a/_posts/2019-06-21-eslint-v6.0.0-released.md +++ b/_posts/2019-06-21-eslint-v6.0.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.0.0 released tags: - release @@ -66,5 +65,3 @@ Changes since v6.0.0-rc.0: * [`167ce87`](https://github.com/eslint/eslint/commit/167ce87e908ec04b0d3d79960278d45c883c4285) Chore: remove unuseable profile command ([#11854](https://github.com/eslint/eslint/issues/11854)) (Toru Nagashima) * [`1db3462`](https://github.com/eslint/eslint/commit/1db346220889305a427b45a00afcf362b81b3767) Chore: rm superfluous argument & fix perf-multifiles-targets ([#11834](https://github.com/eslint/eslint/issues/11834)) (薛定谔的猫) - - diff --git a/_posts/2019-06-24-eslint-v6.0.1-released.md b/_posts/2019-06-24-eslint-v6.0.1-released.md index 0bea402b8a..30d926a4b6 100644 --- a/_posts/2019-06-24-eslint-v6.0.1-released.md +++ b/_posts/2019-06-24-eslint-v6.0.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.0.1 released tags: - release @@ -37,11 +36,3 @@ We just pushed ESLint v6.0.1, which is a patch release upgrade of ESLint. This r * [`566b7aa`](https://github.com/eslint/eslint/commit/566b7aa5d61fb31cd47fe4da7820b07cf9bde1ec) Docs: Update [no-confusing-arrow](/docs/rules/no-confusing-arrow) with the new default option ([#11886](https://github.com/eslint/eslint/issues/11886)) (Yuping Zuo) * [`21f4a80`](https://github.com/eslint/eslint/commit/21f4a8057ccc941f72bb617ae3b5c135a774f6c0) Docs: Fix inconsistent linking in migration guide ([#11881](https://github.com/eslint/eslint/issues/11881)) (Teddy Katz) * [`f3a0774`](https://github.com/eslint/eslint/commit/f3a0774a8879b08777a4aedc76677f13d5156242) Docs: Fix typo in 6.0.0 migration guide ([#11870](https://github.com/eslint/eslint/issues/11870)) (Kevin Partington) - - - - - - - - diff --git a/_posts/2019-07-20-eslint-v6.1.0-released.md b/_posts/2019-07-20-eslint-v6.1.0-released.md index c7dab5648f..b6efbbeaf2 100644 --- a/_posts/2019-07-20-eslint-v6.1.0-released.md +++ b/_posts/2019-07-20-eslint-v6.1.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.1.0 released tags: - release @@ -76,5 +75,3 @@ We just pushed ESLint v6.1.0, which is a minor release upgrade of ESLint. This r * [`2a10856`](https://github.com/eslint/eslint/commit/2a10856d1ed5880a09a5ba452bd80d49c1be4e6c) Chore: Add temporary test files to .gitignore ([#11978](https://github.com/eslint/eslint/issues/11978)) (Milos Djermanovic) * [`d83b233`](https://github.com/eslint/eslint/commit/d83b23382de3b80056a7e6330ed5846316c94147) Chore: update path for release bundles ([#11977](https://github.com/eslint/eslint/issues/11977)) (Kai Cataldo) * [`cc3885b`](https://github.com/eslint/eslint/commit/cc3885b028e29ebc575c900f43af81cb0dabffb6) Chore: add v8-compile-cache to speed up instantiation time ([#11921](https://github.com/eslint/eslint/issues/11921)) (薛定谔的猫) - - diff --git a/_posts/2019-08-18-eslint-v6.2.0-released.md b/_posts/2019-08-18-eslint-v6.2.0-released.md index 3645a2b337..9d88e60c99 100644 --- a/_posts/2019-08-18-eslint-v6.2.0-released.md +++ b/_posts/2019-08-18-eslint-v6.2.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.2.0 released tags: - release @@ -78,5 +77,3 @@ We just pushed ESLint v6.2.0, which is a minor release upgrade of ESLint. This r * [`fe631af`](https://github.com/eslint/eslint/commit/fe631afee59641876598d19b1935967099cc6fa0) Chore: minor typo fix ([#12112](https://github.com/eslint/eslint/issues/12112)) (James George) * [`34ccc0c`](https://github.com/eslint/eslint/commit/34ccc0cd81f495190e585c6efa8ae233d45bd3ed) Chore: Remove TDZ scope type condition from [no-unused-vars](/docs/rules/no-unused-vars) ([#12055](https://github.com/eslint/eslint/issues/12055)) (Milos Djermanovic) - - diff --git a/_posts/2019-08-20-eslint-v6.2.1-released.md b/_posts/2019-08-20-eslint-v6.2.1-released.md index e281a55241..47489df20b 100644 --- a/_posts/2019-08-20-eslint-v6.2.1-released.md +++ b/_posts/2019-08-20-eslint-v6.2.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.2.1 released tags: - release @@ -27,9 +26,3 @@ We just pushed ESLint v6.2.1, which is a patch release upgrade of ESLint. This r * [`8c021b5`](https://github.com/eslint/eslint/commit/8c021b5917b3aa3c578ffe3972106d0a6bcf0838) Upgrade: eslint-utils 1.4.2 ([#12131](https://github.com/eslint/eslint/issues/12131)) (Toru Nagashima) - - - - - - diff --git a/_posts/2019-08-23-eslint-v6.2.2-released.md b/_posts/2019-08-23-eslint-v6.2.2-released.md index 73355f4ccf..e3a862a982 100644 --- a/_posts/2019-08-23-eslint-v6.2.2-released.md +++ b/_posts/2019-08-23-eslint-v6.2.2-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.2.2 released tags: - release @@ -34,9 +33,3 @@ We just pushed ESLint v6.2.2, which is a patch release upgrade of ESLint. This r * [`0e0b784`](https://github.com/eslint/eslint/commit/0e0b784b922051c2a1d39dd8160382114b645800) Upgrade: espree@^6.1.1 ([#12158](https://github.com/eslint/eslint/issues/12158)) (Kevin Partington) - - - - - - diff --git a/_posts/2019-08-30-eslint-v6.3.0-released.md b/_posts/2019-08-30-eslint-v6.3.0-released.md index 696fceb644..5d6845300e 100644 --- a/_posts/2019-08-30-eslint-v6.3.0-released.md +++ b/_posts/2019-08-30-eslint-v6.3.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.3.0 released tags: - release diff --git a/_posts/2019-09-09-indeed-donates-10000-to-eslint.md b/_posts/2019-09-09-indeed-donates-10000-to-eslint.md index 17524e762d..3d94654e20 100644 --- a/_posts/2019-09-09-indeed-donates-10000-to-eslint.md +++ b/_posts/2019-09-09-indeed-donates-10000-to-eslint.md @@ -1,5 +1,4 @@ --- -layout: post title: "Indeed donates $10,000 to ESLint" tags: - Open Source diff --git a/_posts/2019-09-13-eslint-v6.4.0-released.md b/_posts/2019-09-13-eslint-v6.4.0-released.md index f03cad5a9e..288ec09b60 100644 --- a/_posts/2019-09-13-eslint-v6.4.0-released.md +++ b/_posts/2019-09-13-eslint-v6.4.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.4.0 released tags: - release @@ -66,11 +65,3 @@ We just pushed ESLint v6.4.0, which is a minor release upgrade of ESLint. This r * [`319e4d8`](https://github.com/eslint/eslint/commit/319e4d8386ea846928f0f906c251b46043a53491) Docs: adding finally example ([#12256](https://github.com/eslint/eslint/issues/12256)) (Jens Melgaard) * [`d52328f`](https://github.com/eslint/eslint/commit/d52328f012f3704c7d1ce39427e63f80531c7979) Docs: fix [no-sequences](/docs/rules/no-sequences) `with` examples ([#12239](https://github.com/eslint/eslint/issues/12239)) (Milos Djermanovic) * [`a0a9746`](https://github.com/eslint/eslint/commit/a0a9746724ccd22c721ddc1b25c566aa9acea154) Docs: Fix link in [no-irregular-whitespace](/docs/rules/no-irregular-whitespace).md ([#12196](https://github.com/eslint/eslint/issues/12196)) (Timo Tijhof) - - - - - - - - diff --git a/_posts/2019-09-29-eslint-v6.5.0-released.md b/_posts/2019-09-29-eslint-v6.5.0-released.md index 739f191240..370303d805 100644 --- a/_posts/2019-09-29-eslint-v6.5.0-released.md +++ b/_posts/2019-09-29-eslint-v6.5.0-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.5.0 released tags: - release @@ -66,5 +65,3 @@ In addition, many rules that removed comments during autofix have been modified * [`04b6adb`](https://github.com/eslint/eslint/commit/04b6adb7f1bcb2b6cb3fa377b1ca4cecd810630e) Chore: enable eslint-plugin-jsdoc (refs [#11146](https://github.com/eslint/eslint/issues/11146)) ([#12332](https://github.com/eslint/eslint/issues/12332)) (Kai Cataldo) * [`29c12f1`](https://github.com/eslint/eslint/commit/29c12f18726a3afb21fc89ab1bdacc6972d49e68) Chore: cache results in runtime-info ([#12320](https://github.com/eslint/eslint/issues/12320)) (Kai Cataldo) * [`f9fc695`](https://github.com/eslint/eslint/commit/f9fc695d77c19cd5ecb3f0e97e1ea124c8543409) Chore: enable [default-param-last](/docs/rules/default-param-last) ([#12244](https://github.com/eslint/eslint/issues/12244)) (薛定谔的猫) - - diff --git a/_posts/2019-09-30-eslint-v6.5.1-released.md b/_posts/2019-09-30-eslint-v6.5.1-released.md index 1604c723a7..cd7924bb26 100644 --- a/_posts/2019-09-30-eslint-v6.5.1-released.md +++ b/_posts/2019-09-30-eslint-v6.5.1-released.md @@ -1,5 +1,4 @@ --- -layout: post title: ESLint v6.5.1 released tags: - release @@ -32,11 +31,3 @@ We just pushed ESLint v6.5.1, which is a patch release upgrade of ESLint. This r * [`0d3d7d9`](https://github.com/eslint/eslint/commit/0d3d7d9cdd83a7f0e035c95f716a91b9ecc4868b) Docs: fix typo in [no-magic-numbers](/docs/rules/no-magic-numbers) ([#12345](https://github.com/eslint/eslint/issues/12345)) (Josiah Rooney) - - - - - - - - diff --git a/_posts/2019-10-25-eslint-v6.6.0-released.md b/_posts/2019-10-25-eslint-v6.6.0-released.md index 0cafba24a7..4fdd6b822f 100644 --- a/_posts/2019-10-25-eslint-v6.6.0-released.md +++ b/_posts/2019-10-25-eslint-v6.6.0-released.md @@ -1,6 +1,5 @@ --- -layout: post -title: ESLint v6.6.0 released +title: "ESLint v6.6.0 released" tags: - release - minor diff --git a/_posts/2019-11-07-funding-update.md b/_posts/2019-11-07-funding-update.md index c3d067753c..79f2ed3d34 100644 --- a/_posts/2019-11-07-funding-update.md +++ b/_posts/2019-11-07-funding-update.md @@ -1,5 +1,4 @@ --- -layout: post title: "Funding ESLint's Future: November Update" tags: - Open Source @@ -44,16 +43,16 @@ One of our initial sponsors, [Facebook](https://facebook.com), also makes use of Another of our initial sponsors, [Salesforce](https://salesforce.com), makes extensive use of ESLint as part of their larger development ecosystem: > We have been using ESLint for many years, specially on our core platform, where it has become one of the most fundamental pieces of our pipeline. -> +> > To name some of our most important use cases of ESLint: -> +> > - We use it to validate and enforce specific rules and semantics every time a customer pushes components to our platform. That helps us scale and guarantee correctness on all the code that we serve. > - We use it to give all our developers a recommended set of rules, patterns and stylistic principles that allow us to keep a healthy and maintainable code base. > - We use it to guard specific API usages that will prevent the code from running in different conditions or host environments. > - We use it to help our customers write performant code, specially in IE11 where we have rules to prevent specific grammar that will transpile down to very inefficient code (ex. async-await, default function parameters). -> +> > Given that ESLint is such a core part of our platform and ecosystem, we are really proud to be part of the community by sponsoring and contributing in any way we can to the future of an amazing project. -> +> > -- Diego Ferreiro Val, Principal Architect at Salesforce ## Help us reach our goal diff --git a/_posts/_posts.json b/_posts/_posts.json new file mode 100644 index 0000000000..5fac77ef7c --- /dev/null +++ b/_posts/_posts.json @@ -0,0 +1,4 @@ +{ + "layout": "post", + "permalink": "blog/{{ page.date | dateFormat: \"yyyy/MM\" }}/{{ page.fileSlug }}.html" +} diff --git a/_tools/dev-server.js b/_tools/dev-server.js new file mode 100644 index 0000000000..76a773997e --- /dev/null +++ b/_tools/dev-server.js @@ -0,0 +1,171 @@ +/** + * @fileoverview Local development server that emulates our Netlify deployment environments. + * Watches for changes and rebuilds source files as they are edited. + * @author Kai Cataldo + */ + +/* eslint-disable no-console */ + +"use strict"; + +//----------------------------------------------------------------------------- +// Requirements +//----------------------------------------------------------------------------- + +const path = require("path"); +const fs = require("fs"); +const { spawn } = require("child_process"); +const express = require("express"); +const morgan = require("morgan"); +const chokidar = require("chokidar"); + +const fsPromises = fs.promises; + +//----------------------------------------------------------------------------- +// Data +//----------------------------------------------------------------------------- + +const PORT = process.env.DEV_PORT || 8080; +const ROOT_DIR = path.resolve(__dirname, ".."); + +//----------------------------------------------------------------------------- +// Helpers +//----------------------------------------------------------------------------- + +/** + * Converts a stream to string and formats the string. + * @param {stream} data The stream to format. + * @returns {string} The formatted stream data. + */ +function formatStreamData(data) { + return data.toString().replace(/\n$/u, ""); +} + +/** + * Removes a trailing slash from a url. + * @param {string} url The url to format. + * @returns {string} The formatted url. + */ +function removeTrailingSlash(url) { + return url.replace(/\/$/u, ""); +} + +/** + * Spawns a child process and logs output to the parent + * process's stdout/stderr. + * @param {string} command The command to run. + * @param {string[]} args The arguments to run. + * @returns {void} + */ +function spawnChildProcess(command, args) { + const processName = `${command} ${args.join(" ")}`; + const options = { + cwd: ROOT_DIR, + shell: true + }; + const childProcess = spawn(command, args, options); + + childProcess.on("error", err => { + console.error(`Error while spawning ${processName}: ${err.message}\n`); + throw err; + }); + childProcess.stdout.on("data", data => console.log(formatStreamData(data))); + childProcess.stderr.on("data", data => console.error(formatStreamData(data))); +} + +/** + * Checks if a given file path exists. + * @param {string} filePath The path to check. + * @returns {Promise} A promise that resolves with true if the + * file path exists and false if it doesn't. + */ +async function filePathExists(filePath) { + try { + await fsPromises.access(filePath, fs.constants.F_OK); + return true; + } catch { + return false; + } +} + +//----------------------------------------------------------------------------- +// Main +//----------------------------------------------------------------------------- + +const app = express(); + +// HTTP Logging +app.use(morgan("tiny")); + +/* + * Paths that contain `.` characters are not matched by `express.static()` + * (e.g. "_posts/2019-09-29-eslint-v6.5.0-released.md"). This is essentially + * the same behavior as + * `app.use(express.static(path.join(__dirname, "../_site"), { extensions: ["html"] }));` + * but with the correct behavior for the noted exception above. + * + * TODO: Figure out why this is so that we don't have to create this custom route handler + * and can use `express.static()` directly instead. + */ +app.get("*", async(req, res, next) => { + const reqPath = path.join(__dirname, "../_site", removeTrailingSlash(req.url)); + + if (await filePathExists(reqPath)) { + + // Handle directories. + if (!path.extname(reqPath).length) { + let filePathStats = null; + + try { + filePathStats = await fsPromises.stat(reqPath); + } catch (err) { + console.error(err); + } + + if (filePathStats && filePathStats.isDirectory()) { + if (!req.url.endsWith("/")) { + return res.redirect(301, `${req.url}/`); + } + + return res.sendFile(path.join(reqPath, "index.html")); + } + } + + // Handle all other assets. + return res.sendFile(reqPath); + } + + // Serve "pretty" urls that do not have the `.html` extension. + if (await filePathExists(`${reqPath}.html`)) { + if (req.url.endsWith("/")) { + return res.redirect(301, removeTrailingSlash(req.url)); + } + + return res.sendFile(`${reqPath}.html`); + } + + // File could not be found. + return next(); +}); + +// 404 Handler +app.use((req, res) => res.status(404).sendFile(path.join(__dirname, "../_site/404.html"))); +app.listen(PORT, () => { + + // Less dosen't have a maintained watcher. + chokidar.watch(["_data/*.yml", "src/styles/**/*.less"]) + .on("change", filePath => { + if (path.extname(filePath) === ".yml") { + console.log(`\n${filePath} changed. Converting YAML to JSON.`); + spawnChildProcess("npm", ["run", "convert-yaml"]); + } else if (path.extname(filePath) === ".less") { + console.log(`\n${filePath} changed. Recompiling styles.`); + spawnChildProcess("npm", ["run", "build:less"]); + } + }); + + spawnChildProcess("npm", ["run", "build:less"]); + spawnChildProcess("npm", ["run", "start:webpack"]); + spawnChildProcess("npm", ["run", "start:eleventy"]); + console.log(`Local version of eslint.org can be accessed at http://localhost:${PORT}.\n`); +}); diff --git a/_tools/yaml-to-json.js b/_tools/yaml-to-json.js new file mode 100644 index 0000000000..e2466089db --- /dev/null +++ b/_tools/yaml-to-json.js @@ -0,0 +1,49 @@ +/** + * @fileoverview Tool to convert YAML files to JSON. + * @author Kai Cataldo + */ + +/* eslint-disable no-console */ + +"use strict"; + +//----------------------------------------------------------------------------- +// Requirements +//----------------------------------------------------------------------------- + +const fs = require("fs"); +const path = require("path"); +const glob = require("glob-promise"); +const yaml = require("js-yaml"); +const fsPromises = fs.promises; + +//----------------------------------------------------------------------------- +// Main +//----------------------------------------------------------------------------- + +(async function() { + const [, , globPath] = process.argv; + + if (!globPath) { + console.trace("Must be called with a glob."); + process.exit(1); + } + + console.log(`Converting YAML files found with glob "${globPath}" to JSON.`); + + const files = await glob(globPath); + + if (!files.length) { + console.trace(`No files found for glob ${globPath}.`); + process.exit(1); + } + + return Promise.all(files.map(async file => { + const contents = await fsPromises.readFile(path.resolve(file), "utf8"); + const newFileName = file.replace(/.yml$/, ".json"); + const parsedContents = yaml.safeLoad(contents, { filename: file }); + + await fsPromises.writeFile(newFileName, JSON.stringify(parsedContents)); + console.log(` - ${file} converted to ${newFileName}`); + })); +}()); diff --git a/docs/0.24.1/command-line-interface/index.html b/docs/0.24.1/command-line-interface/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/0.24.1/command-line-interface/index.html +++ b/docs/0.24.1/command-line-interface/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/0.24.1/configuring/index.html b/docs/0.24.1/configuring/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/0.24.1/configuring/index.html +++ b/docs/0.24.1/configuring/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/0.24.1/user-guide/rules.md b/docs/0.24.1/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/0.24.1/user-guide/rules.md +++ b/docs/0.24.1/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/1.0.0/command-line-interface/index.html b/docs/1.0.0/command-line-interface/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/1.0.0/command-line-interface/index.html +++ b/docs/1.0.0/command-line-interface/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/1.0.0/configuring/index.html b/docs/1.0.0/configuring/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/1.0.0/configuring/index.html +++ b/docs/1.0.0/configuring/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/1.0.0/user-guide/rules.md b/docs/1.0.0/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/1.0.0/user-guide/rules.md +++ b/docs/1.0.0/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/1.10.3/command-line-interface/index.html b/docs/1.10.3/command-line-interface/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/1.10.3/command-line-interface/index.html +++ b/docs/1.10.3/command-line-interface/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/1.10.3/configuring/index.html b/docs/1.10.3/configuring/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/1.10.3/configuring/index.html +++ b/docs/1.10.3/configuring/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/1.10.3/user-guide/rules.md b/docs/1.10.3/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/1.10.3/user-guide/rules.md +++ b/docs/1.10.3/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/2.0.0/command-line-interface/index.html b/docs/2.0.0/command-line-interface/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/2.0.0/command-line-interface/index.html +++ b/docs/2.0.0/command-line-interface/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/2.0.0/configuring/index.html b/docs/2.0.0/configuring/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/2.0.0/configuring/index.html +++ b/docs/2.0.0/configuring/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/2.0.0/user-guide/rules.md b/docs/2.0.0/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/2.0.0/user-guide/rules.md +++ b/docs/2.0.0/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/2.13.1/command-line-interface/index.html b/docs/2.13.1/command-line-interface/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/2.13.1/command-line-interface/index.html +++ b/docs/2.13.1/command-line-interface/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/2.13.1/configuring/index.html b/docs/2.13.1/configuring/index.html index 1c8b45276e..18e9d54624 100644 --- a/docs/2.13.1/configuring/index.html +++ b/docs/2.13.1/configuring/index.html @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/2.13.1/developer-guide/code-path-analysis.md b/docs/2.13.1/developer-guide/code-path-analysis.md deleted file mode 100644 index 9ece42a035..0000000000 --- a/docs/2.13.1/developer-guide/code-path-analysis.md +++ /dev/null @@ -1,557 +0,0 @@ ---- -title: Code Path Analysis Details -layout: doc ---- - - -# Code Path Analysis Details - -ESLint's rules can use code paths. -The code path is execution routes of programs. -It forks/joins at such as `if` statements. - -```js -if (a && b) { - foo(); -} -bar(); -``` - -![Code Path Example](./code-path-analysis/helo.svg) - -## Objects - -Program is expressed with several code paths. -A code path is expressed with objects of two kinds: `CodePath` and `CodePathSegment`. - -### `CodePath` - -`CodePath` expresses whole of one code path. -This object exists for each function and the global. -This has references of both the initial segment and the final segments of a code path. - -`CodePath` has the following properties: - -* `id` (`string`) - An unique string. Respective rules can use `id` to save additional information for each code path. -* `initialSegment` (`CodePathSegment`) - The initial segment of this code path. -* `finalSegments` (`CodePathSegment[]`) - The final segments which includes both returned and thrown. -* `returnedSegments` (`CodePathSegment[]`) - The final segments which includes only returned. -* `thrownSegments` (`CodePathSegment[]`) - The final segments which includes only thrown. -* `currentSegments` (`CodePathSegment[]`) - Segments of the current position. -* `upper` (`CodePath|null`) - The code path of the upper function/global scope. -* `childCodePaths` (`CodePath[]`) - Code paths of functions this code path contains. - -### `CodePathSegment` - -`CodePathSegment` is a part of a code path. -A code path is expressed with plural `CodePathSegment` objects, it's similar to doubly linked list. -Difference from doubly linked list is what there are forking and merging (the next/prev are plural). - -`CodePathSegment` has the following properties: - -* `id` (`string`) - An unique string. Respective rules can use `id` to save additional information for each segment. -* `nextSegments` (`CodePathSegment[]`) - The next segments. If forking, there are two or more. If final, there is nothing. -* `prevSegments` (`CodePathSegment[]`) - The previous segments. If merging, there are two or more. If initial, there is nothing. -* `reachable` (`boolean`) - A flag which shows whether or not it's reachable. This becomes `false` when preceded by `return`, `throw`, `break`, or `continue`. - -## Events - -There are five events related to code paths, and you can define event handlers in rules. - -```js -module.exports = function(context) { - return { - /** - * This is called at the start of analyzing a code path. - * In this time, the code path object has only the initial segment. - * - * @param {CodePath} codePath - The new code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathStart": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called at the end of analyzing a code path. - * In this time, the code path object is complete. - * - * @param {CodePath} codePath - The completed code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathEnd": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called when a code path segment was created. - * It meant the code path is forked or merged. - * In this time, the segment has the previous segments and has been - * judged reachable or not. - * - * @param {CodePathSegment} segment - The new code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentStart": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was leaved. - * In this time, the segment does not have the next segments yet. - * - * @param {CodePathSegment} segment - The leaved code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentEnd": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was looped. - * Usually segments have each previous segments when created, - * but when looped, a segment is added as a new previous segment into a - * existing segment. - * - * @param {CodePathSegment} fromSegment - A code path segment of source. - * @param {CodePathSegment} toSegment - A code path segment of destination. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentLoop": function(fromSegment, toSegment, node) { - // do something with segment - } - }; -}; -``` - -### About `onCodePathSegmentLoop` - -This event is always fired when the next segment has existed already. -That timing is the end of loops mainly. - -For Example 1: - -```js -while (a) { - a = foo(); -} -bar(); -``` - -1. First, the analysis advances to the end of loop. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-while-1.svg) - -2. Second, it creates the looping path. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-while-2.svg) - -3. Last, it advances to the end. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-while-3.svg) - -For example 2: - -```js -for (let i = 0; i < 10; ++i) { - foo(i); -} -bar(); -``` - -1. `for` statements are more complex. - First, the analysis advances to `ForStatement.update`. - The `update` segment is hovered at first. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-for-1.svg) - -2. Second, it advances to `ForStatement.body`. - Of course the `body` segment is preceded by the `test` segment. - It keeps the `update` segment hovering. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-for-2.svg) - -3. Third, it creates the looping path from `body` segment to `update` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-for-3.svg) - -4. Fourth, also it creates the looping path from `update` segment to `test` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 4](./code-path-analysis/loop-event-example-for-4.svg) - -5. Last, it advances to the end. - - ![Loop Event's Example 5](./code-path-analysis/loop-event-example-for-5.svg) - - - -## Usage Examples - -### To check whether or not this is reachable - -```js -var last = require("lodash").last; - -function isReachable(segment) { - return segment.reachable; -} - -module.exports = function(context) { - var codePathStack = []; - - return { - // Stores CodePath objects. - "onCodePathStart": function(codePath) { - codePathStack.push(codePath); - }, - "onCodePathEnd": function(codePath) { - codePathStack.pop(); - }, - - // Checks reachable or not. - "ExpressionStatement": function(node) { - var codePath = last(codePathStack); - - // Checks the current code path segments. - if (!codePath.currentSegments.some(isReachable)) { - context.report({message: "Unreachable!", node: node}); - } - } - }; -}; -``` - -See Also: -[no-unreachable](https://github.com/eslint/eslint/blob/master/lib/rules/no-unreachable.js), -[no-fallthrough](https://github.com/eslint/eslint/blob/master/lib/rules/no-fallthrough.js), -[consistent-return](https://github.com/eslint/eslint/blob/master/lib/rules/consistent-return.js) - -### To check state of a code path - -This example is checking whether or not the parameter `cb` is called in every path. -Instances of `CodePath` and `CodePathSegment` are shared to every rule. -So a rule must not modify those instances. -Please use a map of information instead. - -```js -var last = require("lodash").last; - -function hasCb(node, context) { - if (node.type.indexOf("Function") !== -1) { - return context.getDeclaredVariables(node).some(function(v) { - return v.type === "Parameter" && v.name === "cb"; - }); - } - return false; -} - -function isCbCalled(info) { - return info.cbCalled; -} - -module.exports = function(context) { - var funcInfoStack = []; - var segmentInfoMap = Object.create(null); - - return { - // Checks `cb`. - "onCodePathStart": function(codePath, node) { - funcInfoStack.push({ - codePath: codePath, - hasCb: hasCb(node, context) - }); - }, - "onCodePathEnd": function(codePath, node) { - funcInfoStack.pop(); - - // Checks `cb` was called in every paths. - var cbCalled = codePath.finalSegments.every(function(segment) { - var info = segmentInfoMap[segment.id]; - return info.cbCalled; - }); - - if (!cbCalled) { - context.report({ - message: "`cb` should be called in every path.", - node: node - }); - } - }, - - // Manages state of code paths. - "onCodePathSegmentStart": function(segment) { - // Ignores if `cb` doesn't exist. - if (!last(funcInfoStack).hasCb) { - return; - } - - // Initialize state of this path. - var info = segmentInfoMap[segment.id] = { - cbCalled: false - }; - - // If there are the previous paths, merges state. - // Checks `cb` was called in every previous path. - if (segment.prevSegments.length > 0) { - info.cbCalled = segment.prevSegments.every(isCbCalled); - } - }, - - // Checks reachable or not. - "CallExpression": function(node) { - var funcInfo = last(funcInfoStack); - - // Ignores if `cb` doesn't exist. - if (!funcInfo.hasCb) { - return; - } - - // Sets marks that `cb` was called. - var callee = node.callee; - if (callee.type === "Identifier" && callee.name === "cb") { - funcInfo.codePath.currentSegments.forEach(function(segment) { - var info = segmentInfoMap[segment.id]; - info.cbCalled = true; - }); - } - } - }; -}; -``` - -See Also: -[constructor-super](https://github.com/eslint/eslint/blob/master/lib/rules/constructor-super.js), -[no-this-before-super](https://github.com/eslint/eslint/blob/master/lib/rules/no-this-before-super.js) - -## Code Path Examples - -### Hello World - -```js -console.log("Hello world!"); -``` - -![Hello World](./code-path-analysis/example-hello-world.svg) - -### `IfStatement` - -```js -if (a) { - foo(); -} else { - bar(); -} -``` - -![`IfStatement`](./code-path-analysis/example-ifstatement.svg) - -### `IfStatement` (chain) - -```js -if (a) { - foo(); -} else if (b) { - bar(); -} else if (c) { - hoge(); -} -``` - -![`IfStatement` (chain)](./code-path-analysis/example-ifstatement-chain.svg) - -### `SwitchStatement` - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; -} -``` - -![`SwitchStatement`](./code-path-analysis/example-switchstatement.svg) - -### `SwitchStatement` (has `default`) - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; - - default: - fuga(); - break; -} -``` - -![`SwitchStatement` (has `default`)](./code-path-analysis/example-switchstatement-has-default.svg) - -### `TryStatement` (try-catch) - -```js -try { - foo(); - if (a) { - throw new Error(); - } - bar(); -} catch (err) { - hoge(err); -} -last(); -``` - -It creates the paths from `try` block to `catch` block at: - -* `throw` statements. -* The first throwable node (e.g. a function call) in the `try` block. -* The end of the `try` block. - -![`TryStatement` (try-catch)](./code-path-analysis/example-trystatement-try-catch.svg) - -### `TryStatement` (try-finally) - -```js -try { - foo(); - bar(); -} finally { - fuga(); -} -last(); -``` - -If there is not `catch` block, `finally` block has two current segments. -At this time, `CodePath.currentSegments.length` is `2`. -One is the normal path, and another is the leaving path (`throw` or `return`). - -![`TryStatement` (try-finally)](./code-path-analysis/example-trystatement-try-finally.svg) - -### `TryStatement` (try-catch-finally) - -```js -try { - foo(); - bar(); -} catch (err) { - hoge(err); -} finally { - fuga(); -} -last(); -``` - -![`TryStatement` (try-catch-finally)](./code-path-analysis/example-trystatement-try-catch-finally.svg) - -### `WhileStatement` - -```js -while (a) { - foo(); - if (b) { - continue; - } - bar(); -} -``` - -![`WhileStatement`](./code-path-analysis/example-whilestatement.svg) - -### `DoWhileStatement` - -```js -do { - foo(); - bar(); -} while (a); -``` - -![`DoWhileStatement`](./code-path-analysis/example-dowhilestatement.svg) - -### `ForStatement` - -```js -for (let i = 0; i < 10; ++i) { - foo(); - if (b) { - break; - } - bar(); -} -``` - -![`ForStatement`](./code-path-analysis/example-forstatement.svg) - -### `ForStatement` (for ever) - -```js -for (;;) { - foo(); -} -bar(); -``` - -![`ForStatement` (for ever)](./code-path-analysis/example-forstatement-for-ever.svg) - -### `ForInStatement` - -```js -for (let key in obj) { - foo(key); -} -``` - -![`ForInStatement`](./code-path-analysis/example-forinstatement.svg) - -### When there is a function - -```js -function foo(a) { - if (a) { - return; - } - bar(); -} - -foo(false); -``` - -It creates two code paths. - -* The global's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-g.svg) - -* The function's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-f.svg) diff --git a/docs/2.13.1/user-guide/rules.md b/docs/2.13.1/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/2.13.1/user-guide/rules.md +++ b/docs/2.13.1/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/3.0.0/developer-guide/code-path-analysis.md b/docs/3.0.0/developer-guide/code-path-analysis.md deleted file mode 100644 index 13f3d28a75..0000000000 --- a/docs/3.0.0/developer-guide/code-path-analysis.md +++ /dev/null @@ -1,557 +0,0 @@ ---- -title: Code Path Analysis Details -layout: doc ---- - - -# Code Path Analysis Details - -ESLint's rules can use code paths. -The code path is execution routes of programs. -It forks/joins at such as `if` statements. - -```js -if (a && b) { - foo(); -} -bar(); -``` - -![Code Path Example](./code-path-analysis/helo.svg) - -## Objects - -Program is expressed with several code paths. -A code path is expressed with objects of two kinds: `CodePath` and `CodePathSegment`. - -### `CodePath` - -`CodePath` expresses whole of one code path. -This object exists for each function and the global. -This has references of both the initial segment and the final segments of a code path. - -`CodePath` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each code path. -* `initialSegment` (`CodePathSegment`) - The initial segment of this code path. -* `finalSegments` (`CodePathSegment[]`) - The final segments which includes both returned and thrown. -* `returnedSegments` (`CodePathSegment[]`) - The final segments which includes only returned. -* `thrownSegments` (`CodePathSegment[]`) - The final segments which includes only thrown. -* `currentSegments` (`CodePathSegment[]`) - Segments of the current position. -* `upper` (`CodePath|null`) - The code path of the upper function/global scope. -* `childCodePaths` (`CodePath[]`) - Code paths of functions this code path contains. - -### `CodePathSegment` - -`CodePathSegment` is a part of a code path. -A code path is expressed with plural `CodePathSegment` objects, it's similar to doubly linked list. -Difference from doubly linked list is what there are forking and merging (the next/prev are plural). - -`CodePathSegment` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each segment. -* `nextSegments` (`CodePathSegment[]`) - The next segments. If forking, there are two or more. If final, there is nothing. -* `prevSegments` (`CodePathSegment[]`) - The previous segments. If merging, there are two or more. If initial, there is nothing. -* `reachable` (`boolean`) - A flag which shows whether or not it's reachable. This becomes `false` when preceded by `return`, `throw`, `break`, or `continue`. - -## Events - -There are five events related to code paths, and you can define event handlers in rules. - -```js -module.exports = function(context) { - return { - /** - * This is called at the start of analyzing a code path. - * In this time, the code path object has only the initial segment. - * - * @param {CodePath} codePath - The new code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathStart": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called at the end of analyzing a code path. - * In this time, the code path object is complete. - * - * @param {CodePath} codePath - The completed code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathEnd": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called when a code path segment was created. - * It meant the code path is forked or merged. - * In this time, the segment has the previous segments and has been - * judged reachable or not. - * - * @param {CodePathSegment} segment - The new code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentStart": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was leaved. - * In this time, the segment does not have the next segments yet. - * - * @param {CodePathSegment} segment - The leaved code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentEnd": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was looped. - * Usually segments have each previous segments when created, - * but when looped, a segment is added as a new previous segment into a - * existing segment. - * - * @param {CodePathSegment} fromSegment - A code path segment of source. - * @param {CodePathSegment} toSegment - A code path segment of destination. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentLoop": function(fromSegment, toSegment, node) { - // do something with segment - } - }; -}; -``` - -### About `onCodePathSegmentLoop` - -This event is always fired when the next segment has existed already. -That timing is the end of loops mainly. - -For Example 1: - -```js -while (a) { - a = foo(); -} -bar(); -``` - -1. First, the analysis advances to the end of loop. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-while-1.svg) - -2. Second, it creates the looping path. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-while-2.svg) - -3. Last, it advances to the end. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-while-3.svg) - -For example 2: - -```js -for (let i = 0; i < 10; ++i) { - foo(i); -} -bar(); -``` - -1. `for` statements are more complex. - First, the analysis advances to `ForStatement.update`. - The `update` segment is hovered at first. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-for-1.svg) - -2. Second, it advances to `ForStatement.body`. - Of course the `body` segment is preceded by the `test` segment. - It keeps the `update` segment hovering. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-for-2.svg) - -3. Third, it creates the looping path from `body` segment to `update` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-for-3.svg) - -4. Fourth, also it creates the looping path from `update` segment to `test` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 4](./code-path-analysis/loop-event-example-for-4.svg) - -5. Last, it advances to the end. - - ![Loop Event's Example 5](./code-path-analysis/loop-event-example-for-5.svg) - - - -## Usage Examples - -### To check whether or not this is reachable - -```js -var last = require("lodash").last; - -function isReachable(segment) { - return segment.reachable; -} - -module.exports = function(context) { - var codePathStack = []; - - return { - // Stores CodePath objects. - "onCodePathStart": function(codePath) { - codePathStack.push(codePath); - }, - "onCodePathEnd": function(codePath) { - codePathStack.pop(); - }, - - // Checks reachable or not. - "ExpressionStatement": function(node) { - var codePath = last(codePathStack); - - // Checks the current code path segments. - if (!codePath.currentSegments.some(isReachable)) { - context.report({message: "Unreachable!", node: node}); - } - } - }; -}; -``` - -See Also: -[no-unreachable](https://github.com/eslint/eslint/blob/master/lib/rules/no-unreachable.js), -[no-fallthrough](https://github.com/eslint/eslint/blob/master/lib/rules/no-fallthrough.js), -[consistent-return](https://github.com/eslint/eslint/blob/master/lib/rules/consistent-return.js) - -### To check state of a code path - -This example is checking whether or not the parameter `cb` is called in every path. -Instances of `CodePath` and `CodePathSegment` are shared to every rule. -So a rule must not modify those instances. -Please use a map of information instead. - -```js -var last = require("lodash").last; - -function hasCb(node, context) { - if (node.type.indexOf("Function") !== -1) { - return context.getDeclaredVariables(node).some(function(v) { - return v.type === "Parameter" && v.name === "cb"; - }); - } - return false; -} - -function isCbCalled(info) { - return info.cbCalled; -} - -module.exports = function(context) { - var funcInfoStack = []; - var segmentInfoMap = Object.create(null); - - return { - // Checks `cb`. - "onCodePathStart": function(codePath, node) { - funcInfoStack.push({ - codePath: codePath, - hasCb: hasCb(node, context) - }); - }, - "onCodePathEnd": function(codePath, node) { - funcInfoStack.pop(); - - // Checks `cb` was called in every paths. - var cbCalled = codePath.finalSegments.every(function(segment) { - var info = segmentInfoMap[segment.id]; - return info.cbCalled; - }); - - if (!cbCalled) { - context.report({ - message: "`cb` should be called in every path.", - node: node - }); - } - }, - - // Manages state of code paths. - "onCodePathSegmentStart": function(segment) { - // Ignores if `cb` doesn't exist. - if (!last(funcInfoStack).hasCb) { - return; - } - - // Initialize state of this path. - var info = segmentInfoMap[segment.id] = { - cbCalled: false - }; - - // If there are the previous paths, merges state. - // Checks `cb` was called in every previous path. - if (segment.prevSegments.length > 0) { - info.cbCalled = segment.prevSegments.every(isCbCalled); - } - }, - - // Checks reachable or not. - "CallExpression": function(node) { - var funcInfo = last(funcInfoStack); - - // Ignores if `cb` doesn't exist. - if (!funcInfo.hasCb) { - return; - } - - // Sets marks that `cb` was called. - var callee = node.callee; - if (callee.type === "Identifier" && callee.name === "cb") { - funcInfo.codePath.currentSegments.forEach(function(segment) { - var info = segmentInfoMap[segment.id]; - info.cbCalled = true; - }); - } - } - }; -}; -``` - -See Also: -[constructor-super](https://github.com/eslint/eslint/blob/master/lib/rules/constructor-super.js), -[no-this-before-super](https://github.com/eslint/eslint/blob/master/lib/rules/no-this-before-super.js) - -## Code Path Examples - -### Hello World - -```js -console.log("Hello world!"); -``` - -![Hello World](./code-path-analysis/example-hello-world.svg) - -### `IfStatement` - -```js -if (a) { - foo(); -} else { - bar(); -} -``` - -![`IfStatement`](./code-path-analysis/example-ifstatement.svg) - -### `IfStatement` (chain) - -```js -if (a) { - foo(); -} else if (b) { - bar(); -} else if (c) { - hoge(); -} -``` - -![`IfStatement` (chain)](./code-path-analysis/example-ifstatement-chain.svg) - -### `SwitchStatement` - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; -} -``` - -![`SwitchStatement`](./code-path-analysis/example-switchstatement.svg) - -### `SwitchStatement` (has `default`) - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; - - default: - fuga(); - break; -} -``` - -![`SwitchStatement` (has `default`)](./code-path-analysis/example-switchstatement-has-default.svg) - -### `TryStatement` (try-catch) - -```js -try { - foo(); - if (a) { - throw new Error(); - } - bar(); -} catch (err) { - hoge(err); -} -last(); -``` - -It creates the paths from `try` block to `catch` block at: - -* `throw` statements. -* The first throwable node (e.g. a function call) in the `try` block. -* The end of the `try` block. - -![`TryStatement` (try-catch)](./code-path-analysis/example-trystatement-try-catch.svg) - -### `TryStatement` (try-finally) - -```js -try { - foo(); - bar(); -} finally { - fuga(); -} -last(); -``` - -If there is not `catch` block, `finally` block has two current segments. -At this time, `CodePath.currentSegments.length` is `2`. -One is the normal path, and another is the leaving path (`throw` or `return`). - -![`TryStatement` (try-finally)](./code-path-analysis/example-trystatement-try-finally.svg) - -### `TryStatement` (try-catch-finally) - -```js -try { - foo(); - bar(); -} catch (err) { - hoge(err); -} finally { - fuga(); -} -last(); -``` - -![`TryStatement` (try-catch-finally)](./code-path-analysis/example-trystatement-try-catch-finally.svg) - -### `WhileStatement` - -```js -while (a) { - foo(); - if (b) { - continue; - } - bar(); -} -``` - -![`WhileStatement`](./code-path-analysis/example-whilestatement.svg) - -### `DoWhileStatement` - -```js -do { - foo(); - bar(); -} while (a); -``` - -![`DoWhileStatement`](./code-path-analysis/example-dowhilestatement.svg) - -### `ForStatement` - -```js -for (let i = 0; i < 10; ++i) { - foo(); - if (b) { - break; - } - bar(); -} -``` - -![`ForStatement`](./code-path-analysis/example-forstatement.svg) - -### `ForStatement` (for ever) - -```js -for (;;) { - foo(); -} -bar(); -``` - -![`ForStatement` (for ever)](./code-path-analysis/example-forstatement-for-ever.svg) - -### `ForInStatement` - -```js -for (let key in obj) { - foo(key); -} -``` - -![`ForInStatement`](./code-path-analysis/example-forinstatement.svg) - -### When there is a function - -```js -function foo(a) { - if (a) { - return; - } - bar(); -} - -foo(false); -``` - -It creates two code paths. - -* The global's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-g.svg) - -* The function's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-f.svg) diff --git a/docs/3.0.0/rules/index.liquid b/docs/3.0.0/rules/index.liquid new file mode 100644 index 0000000000..25ad9f2697 --- /dev/null +++ b/docs/3.0.0/rules/index.liquid @@ -0,0 +1,107 @@ +--- +title: List of available rules +layout: doc +--- + +

Rules

+

Rules in ESLint are grouped by category to help you understand their purpose.

+

No rules are enabled by default. The `"extends": "eslint:recommended"` property in a configuration file enables rules that report common problems, which have a check mark (recommended) below.

+

The `--fix` option on the command line automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench (fixable) below.

+{% for category in rules.categories %} +

{{ category.name}}

+ {{ category.description }} + + + + + + + + + {% for rule in category.rules %} + + + + + + + {% endfor %} + +
{% if rule.recommended %}(recommended){% endif %}{% if rule.fixable %}(fixable){% endif %} + {{ rule.name }} + {{rule.description}}
+{% endfor %} +{% if rules.deprecated %} +

{{ rules.deprecated.name }}

+ {{ rules.deprecated.description }} +
+ + + + + + + + + + + + + {% for rule in rules.deprecated.rules %} + + + {% if rule.replacedBy.size > 0 %} + + {% else %} + + {% endif %} + + {% endfor %} + +
Deprecated ruleReplaced by
+ {{ rule.name }} + + {% for replaced in rule.replacedBy %} + {{ replaced }} + {% endfor %} + +

(no replacement)

+
+
+{% endif %} +

{{ rules.removed.name }}

+{{ rules.removed.description }} +
+ + + + + + + + + + + + + {% for rule in rules.removed.rules %} + + + {% if rule.replacedBy.size > 0 %} + + {% else %} + + {% endif %} + + {% endfor %} + +
Removed ruleReplaced by
+ {{ rule.removed }} + + {% for replaced in rule.replacedBy %} + {{ replaced }} + {% endfor %} + +

(no replacement)

+
+
diff --git a/docs/3.0.0/rules/index.md b/docs/3.0.0/rules/index.md deleted file mode 100644 index f2e25526be..0000000000 --- a/docs/3.0.0/rules/index.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: List of available rules -layout: doc ---- - -# Rules - -Rules in ESLint are grouped by category to help you understand their purpose. - -No rules are enabled by default. The `"extends": "eslint:recommended"` property in a [configuration file](../user-guide/configuring#extending-configuration-files) enables rules that report common problems, which have a check mark (recommended) below. - -The `--fix` option on the [command line](../user-guide/command-line-interface#fix) automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench (fixable) below. - -{% for category in site.data.rules.categories %} - -## {{ category.name}} - -{{ category.description }} - - ------ - -{% for rule in category.rules %} - - - - - - -{% endfor %} - -
{% if rule.recommended %}(recommended){% endif %}{% if rule.fixable %}(fixable){% endif %}[{{rule.name}}]({{rule.name}}) -{{rule.description}} -
- -{% endfor %} - -{% if site.data.rules.deprecated %} -## {{ site.data.rules.deprecated.name }} - -{{ site.data.rules.deprecated.description }} - -
- - ---- - - - - - - - - - -{% for rule in site.data.rules.deprecated.rules %} - - -{% if rule.replacedBy.size > 0 %} - - -{% endfor %} - - -
Deprecated ruleReplaced by
[{{rule.name}}]({{rule.name}}) -{% for replaced in rule.replacedBy %}[{{replaced}}]({{replaced}}){% endfor %} -{% else %} -

(no replacement)

-{% endif %} -
-
-{% endif %} - -## {{ site.data.rules.removed.name }} - -{{ site.data.rules.removed.description }} - -
- - ---- - - - - - - - - - -{% for rule in site.data.rules.removed.rules %} - - -{% if rule.replacedBy.size > 0 %} - - -{% endfor %} - - -
Removed ruleReplaced by
[{{rule.removed}}]({{rule.removed}}) -{% for replaced in rule.replacedBy %}[{{replaced}}]({{replaced}}){% endfor %} -{% else %} -

(no replacement)

-{% endif %} -
-
diff --git a/docs/3.0.0/user-guide/rules.md b/docs/3.0.0/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/3.0.0/user-guide/rules.md +++ b/docs/3.0.0/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/docs/4.0.0/developer-guide/code-path-analysis.md b/docs/4.0.0/developer-guide/code-path-analysis.md deleted file mode 100644 index 13f3d28a75..0000000000 --- a/docs/4.0.0/developer-guide/code-path-analysis.md +++ /dev/null @@ -1,557 +0,0 @@ ---- -title: Code Path Analysis Details -layout: doc ---- - - -# Code Path Analysis Details - -ESLint's rules can use code paths. -The code path is execution routes of programs. -It forks/joins at such as `if` statements. - -```js -if (a && b) { - foo(); -} -bar(); -``` - -![Code Path Example](./code-path-analysis/helo.svg) - -## Objects - -Program is expressed with several code paths. -A code path is expressed with objects of two kinds: `CodePath` and `CodePathSegment`. - -### `CodePath` - -`CodePath` expresses whole of one code path. -This object exists for each function and the global. -This has references of both the initial segment and the final segments of a code path. - -`CodePath` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each code path. -* `initialSegment` (`CodePathSegment`) - The initial segment of this code path. -* `finalSegments` (`CodePathSegment[]`) - The final segments which includes both returned and thrown. -* `returnedSegments` (`CodePathSegment[]`) - The final segments which includes only returned. -* `thrownSegments` (`CodePathSegment[]`) - The final segments which includes only thrown. -* `currentSegments` (`CodePathSegment[]`) - Segments of the current position. -* `upper` (`CodePath|null`) - The code path of the upper function/global scope. -* `childCodePaths` (`CodePath[]`) - Code paths of functions this code path contains. - -### `CodePathSegment` - -`CodePathSegment` is a part of a code path. -A code path is expressed with plural `CodePathSegment` objects, it's similar to doubly linked list. -Difference from doubly linked list is what there are forking and merging (the next/prev are plural). - -`CodePathSegment` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each segment. -* `nextSegments` (`CodePathSegment[]`) - The next segments. If forking, there are two or more. If final, there is nothing. -* `prevSegments` (`CodePathSegment[]`) - The previous segments. If merging, there are two or more. If initial, there is nothing. -* `reachable` (`boolean`) - A flag which shows whether or not it's reachable. This becomes `false` when preceded by `return`, `throw`, `break`, or `continue`. - -## Events - -There are five events related to code paths, and you can define event handlers in rules. - -```js -module.exports = function(context) { - return { - /** - * This is called at the start of analyzing a code path. - * In this time, the code path object has only the initial segment. - * - * @param {CodePath} codePath - The new code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathStart": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called at the end of analyzing a code path. - * In this time, the code path object is complete. - * - * @param {CodePath} codePath - The completed code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathEnd": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called when a code path segment was created. - * It meant the code path is forked or merged. - * In this time, the segment has the previous segments and has been - * judged reachable or not. - * - * @param {CodePathSegment} segment - The new code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentStart": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was leaved. - * In this time, the segment does not have the next segments yet. - * - * @param {CodePathSegment} segment - The leaved code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentEnd": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was looped. - * Usually segments have each previous segments when created, - * but when looped, a segment is added as a new previous segment into a - * existing segment. - * - * @param {CodePathSegment} fromSegment - A code path segment of source. - * @param {CodePathSegment} toSegment - A code path segment of destination. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentLoop": function(fromSegment, toSegment, node) { - // do something with segment - } - }; -}; -``` - -### About `onCodePathSegmentLoop` - -This event is always fired when the next segment has existed already. -That timing is the end of loops mainly. - -For Example 1: - -```js -while (a) { - a = foo(); -} -bar(); -``` - -1. First, the analysis advances to the end of loop. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-while-1.svg) - -2. Second, it creates the looping path. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-while-2.svg) - -3. Last, it advances to the end. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-while-3.svg) - -For example 2: - -```js -for (let i = 0; i < 10; ++i) { - foo(i); -} -bar(); -``` - -1. `for` statements are more complex. - First, the analysis advances to `ForStatement.update`. - The `update` segment is hovered at first. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-for-1.svg) - -2. Second, it advances to `ForStatement.body`. - Of course the `body` segment is preceded by the `test` segment. - It keeps the `update` segment hovering. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-for-2.svg) - -3. Third, it creates the looping path from `body` segment to `update` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-for-3.svg) - -4. Fourth, also it creates the looping path from `update` segment to `test` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 4](./code-path-analysis/loop-event-example-for-4.svg) - -5. Last, it advances to the end. - - ![Loop Event's Example 5](./code-path-analysis/loop-event-example-for-5.svg) - - - -## Usage Examples - -### To check whether or not this is reachable - -```js -var last = require("lodash").last; - -function isReachable(segment) { - return segment.reachable; -} - -module.exports = function(context) { - var codePathStack = []; - - return { - // Stores CodePath objects. - "onCodePathStart": function(codePath) { - codePathStack.push(codePath); - }, - "onCodePathEnd": function(codePath) { - codePathStack.pop(); - }, - - // Checks reachable or not. - "ExpressionStatement": function(node) { - var codePath = last(codePathStack); - - // Checks the current code path segments. - if (!codePath.currentSegments.some(isReachable)) { - context.report({message: "Unreachable!", node: node}); - } - } - }; -}; -``` - -See Also: -[no-unreachable](https://github.com/eslint/eslint/blob/master/lib/rules/no-unreachable.js), -[no-fallthrough](https://github.com/eslint/eslint/blob/master/lib/rules/no-fallthrough.js), -[consistent-return](https://github.com/eslint/eslint/blob/master/lib/rules/consistent-return.js) - -### To check state of a code path - -This example is checking whether or not the parameter `cb` is called in every path. -Instances of `CodePath` and `CodePathSegment` are shared to every rule. -So a rule must not modify those instances. -Please use a map of information instead. - -```js -var last = require("lodash").last; - -function hasCb(node, context) { - if (node.type.indexOf("Function") !== -1) { - return context.getDeclaredVariables(node).some(function(v) { - return v.type === "Parameter" && v.name === "cb"; - }); - } - return false; -} - -function isCbCalled(info) { - return info.cbCalled; -} - -module.exports = function(context) { - var funcInfoStack = []; - var segmentInfoMap = Object.create(null); - - return { - // Checks `cb`. - "onCodePathStart": function(codePath, node) { - funcInfoStack.push({ - codePath: codePath, - hasCb: hasCb(node, context) - }); - }, - "onCodePathEnd": function(codePath, node) { - funcInfoStack.pop(); - - // Checks `cb` was called in every paths. - var cbCalled = codePath.finalSegments.every(function(segment) { - var info = segmentInfoMap[segment.id]; - return info.cbCalled; - }); - - if (!cbCalled) { - context.report({ - message: "`cb` should be called in every path.", - node: node - }); - } - }, - - // Manages state of code paths. - "onCodePathSegmentStart": function(segment) { - // Ignores if `cb` doesn't exist. - if (!last(funcInfoStack).hasCb) { - return; - } - - // Initialize state of this path. - var info = segmentInfoMap[segment.id] = { - cbCalled: false - }; - - // If there are the previous paths, merges state. - // Checks `cb` was called in every previous path. - if (segment.prevSegments.length > 0) { - info.cbCalled = segment.prevSegments.every(isCbCalled); - } - }, - - // Checks reachable or not. - "CallExpression": function(node) { - var funcInfo = last(funcInfoStack); - - // Ignores if `cb` doesn't exist. - if (!funcInfo.hasCb) { - return; - } - - // Sets marks that `cb` was called. - var callee = node.callee; - if (callee.type === "Identifier" && callee.name === "cb") { - funcInfo.codePath.currentSegments.forEach(function(segment) { - var info = segmentInfoMap[segment.id]; - info.cbCalled = true; - }); - } - } - }; -}; -``` - -See Also: -[constructor-super](https://github.com/eslint/eslint/blob/master/lib/rules/constructor-super.js), -[no-this-before-super](https://github.com/eslint/eslint/blob/master/lib/rules/no-this-before-super.js) - -## Code Path Examples - -### Hello World - -```js -console.log("Hello world!"); -``` - -![Hello World](./code-path-analysis/example-hello-world.svg) - -### `IfStatement` - -```js -if (a) { - foo(); -} else { - bar(); -} -``` - -![`IfStatement`](./code-path-analysis/example-ifstatement.svg) - -### `IfStatement` (chain) - -```js -if (a) { - foo(); -} else if (b) { - bar(); -} else if (c) { - hoge(); -} -``` - -![`IfStatement` (chain)](./code-path-analysis/example-ifstatement-chain.svg) - -### `SwitchStatement` - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; -} -``` - -![`SwitchStatement`](./code-path-analysis/example-switchstatement.svg) - -### `SwitchStatement` (has `default`) - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; - - default: - fuga(); - break; -} -``` - -![`SwitchStatement` (has `default`)](./code-path-analysis/example-switchstatement-has-default.svg) - -### `TryStatement` (try-catch) - -```js -try { - foo(); - if (a) { - throw new Error(); - } - bar(); -} catch (err) { - hoge(err); -} -last(); -``` - -It creates the paths from `try` block to `catch` block at: - -* `throw` statements. -* The first throwable node (e.g. a function call) in the `try` block. -* The end of the `try` block. - -![`TryStatement` (try-catch)](./code-path-analysis/example-trystatement-try-catch.svg) - -### `TryStatement` (try-finally) - -```js -try { - foo(); - bar(); -} finally { - fuga(); -} -last(); -``` - -If there is not `catch` block, `finally` block has two current segments. -At this time, `CodePath.currentSegments.length` is `2`. -One is the normal path, and another is the leaving path (`throw` or `return`). - -![`TryStatement` (try-finally)](./code-path-analysis/example-trystatement-try-finally.svg) - -### `TryStatement` (try-catch-finally) - -```js -try { - foo(); - bar(); -} catch (err) { - hoge(err); -} finally { - fuga(); -} -last(); -``` - -![`TryStatement` (try-catch-finally)](./code-path-analysis/example-trystatement-try-catch-finally.svg) - -### `WhileStatement` - -```js -while (a) { - foo(); - if (b) { - continue; - } - bar(); -} -``` - -![`WhileStatement`](./code-path-analysis/example-whilestatement.svg) - -### `DoWhileStatement` - -```js -do { - foo(); - bar(); -} while (a); -``` - -![`DoWhileStatement`](./code-path-analysis/example-dowhilestatement.svg) - -### `ForStatement` - -```js -for (let i = 0; i < 10; ++i) { - foo(); - if (b) { - break; - } - bar(); -} -``` - -![`ForStatement`](./code-path-analysis/example-forstatement.svg) - -### `ForStatement` (for ever) - -```js -for (;;) { - foo(); -} -bar(); -``` - -![`ForStatement` (for ever)](./code-path-analysis/example-forstatement-for-ever.svg) - -### `ForInStatement` - -```js -for (let key in obj) { - foo(key); -} -``` - -![`ForInStatement`](./code-path-analysis/example-forinstatement.svg) - -### When there is a function - -```js -function foo(a) { - if (a) { - return; - } - bar(); -} - -foo(false); -``` - -It creates two code paths. - -* The global's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-g.svg) - -* The function's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-f.svg) diff --git a/docs/4.0.0/rules/index.liquid b/docs/4.0.0/rules/index.liquid new file mode 100644 index 0000000000..1733a1e02f --- /dev/null +++ b/docs/4.0.0/rules/index.liquid @@ -0,0 +1,108 @@ +--- +title: List of available rules +layout: doc +--- + +

Rules

+

Rules in ESLint are grouped by category to help you understand their purpose.

+

No rules are enabled by default. The `"extends": "eslint:recommended"` property in a configuration file enables rules that report common problems, which have a check mark (recommended) below.

+

The `--fix` option on the command line automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench (fixable) below.

+ +{% for category in rules4.categories %} +

{{ category.name}}

+ {{ category.description }} + + + + + + + + + {% for rule in category.rules %} + + + + + + + {% endfor %} + +
{% if rule.recommended %}(recommended){% endif %}{% if rule.fixable %}(fixable){% endif %} + {{ rule.name }} + {{ rule.description }}
+{% endfor %} +{% if rules.deprecated %} +

{{ rules.deprecated.name }}

+ {{ rules.deprecated.description }} +
+ + + + + + + + + + + + + {% for rule in rules.deprecated.rules %} + + + {% if rule.replacedBy.size > 0 %} + + {% else %} + + {% endif %} + + {% endfor %} + +
Deprecated ruleReplaced by
+ {{ rule.name }} + + {% for replaced in rule.replacedBy %} + {{ replaced }} + {% endfor %} + +

(no replacement)

+
+
+{% endif %} +

{{ rules.removed.name }}

+{{ rules.removed.description }} +
+ + + + + + + + + + + + + {% for rule in rules.removed.rules %} + + + {% if rule.replacedBy.size > 0 %} + + {% else %} + + {% endif %} + + {% endfor %} + +
Removed ruleReplaced by
+ {{ rule.removed }} + + {% for replaced in rule.replacedBy %} + {{ replaced }} + {% endfor %} + +

(no replacement)

+
+
diff --git a/docs/4.0.0/rules/index.md b/docs/4.0.0/rules/index.md deleted file mode 100644 index 54b4329f38..0000000000 --- a/docs/4.0.0/rules/index.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: List of available rules -layout: doc ---- - -# Rules - -Rules in ESLint are grouped by category to help you understand their purpose. - -No rules are enabled by default. The `"extends": "eslint:recommended"` property in a [configuration file](../user-guide/configuring#extending-configuration-files) enables rules that report common problems, which have a check mark (recommended) below. - -The `--fix` option on the [command line](../user-guide/command-line-interface#fix) automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench (fixable) below. - -{% for category in site.data.rules4.categories %} - -## {{ category.name}} - -{{ category.description }} - - ------ - -{% for rule in category.rules %} - - - - - - -{% endfor %} - -
{% if rule.recommended %}(recommended){% endif %}{% if rule.fixable %}(fixable){% endif %}[{{rule.name}}]({{rule.name}}) -{{rule.description}} -
- -{% endfor %} - -{% if site.data.rules.deprecated %} -## {{ site.data.rules.deprecated.name }} - -{{ site.data.rules.deprecated.description }} - -
- - ---- - - - - - - - - - -{% for rule in site.data.rules.deprecated.rules %} - - -{% if rule.replacedBy.size > 0 %} - - -{% endfor %} - - -
Deprecated ruleReplaced by
[{{rule.name}}]({{rule.name}}) -{% for replaced in rule.replacedBy %}[{{replaced}}]({{replaced}}){% endfor %} -{% else %} -

(no replacement)

-{% endif %} -
-
-{% endif %} - -## {{ site.data.rules.removed.name }} - -{{ site.data.rules.removed.description }} - -
- - ---- - - - - - - - - - -{% for rule in site.data.rules.removed.rules %} - - -{% if rule.replacedBy.size > 0 %} - - -{% endfor %} - - -
Removed ruleReplaced by
[{{rule.removed}}]({{rule.removed}}) -{% for replaced in rule.replacedBy %}[{{replaced}}]({{replaced}}){% endfor %} -{% else %} -

(no replacement)

-{% endif %} -
-
diff --git a/docs/5.0.0/developer-guide/code-path-analysis.md b/docs/5.0.0/developer-guide/code-path-analysis.md deleted file mode 100644 index 9c13e26d6c..0000000000 --- a/docs/5.0.0/developer-guide/code-path-analysis.md +++ /dev/null @@ -1,558 +0,0 @@ ---- -title: Code Path Analysis Details -layout: doc -edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/code-path-analysis.md ---- - - -# Code Path Analysis Details - -ESLint's rules can use code paths. -The code path is execution routes of programs. -It forks/joins at such as `if` statements. - -```js -if (a && b) { - foo(); -} -bar(); -``` - -![Code Path Example](./code-path-analysis/helo.svg) - -## Objects - -Program is expressed with several code paths. -A code path is expressed with objects of two kinds: `CodePath` and `CodePathSegment`. - -### `CodePath` - -`CodePath` expresses whole of one code path. -This object exists for each function and the global. -This has references of both the initial segment and the final segments of a code path. - -`CodePath` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each code path. -* `initialSegment` (`CodePathSegment`) - The initial segment of this code path. -* `finalSegments` (`CodePathSegment[]`) - The final segments which includes both returned and thrown. -* `returnedSegments` (`CodePathSegment[]`) - The final segments which includes only returned. -* `thrownSegments` (`CodePathSegment[]`) - The final segments which includes only thrown. -* `currentSegments` (`CodePathSegment[]`) - Segments of the current position. -* `upper` (`CodePath|null`) - The code path of the upper function/global scope. -* `childCodePaths` (`CodePath[]`) - Code paths of functions this code path contains. - -### `CodePathSegment` - -`CodePathSegment` is a part of a code path. -A code path is expressed with plural `CodePathSegment` objects, it's similar to doubly linked list. -Difference from doubly linked list is what there are forking and merging (the next/prev are plural). - -`CodePathSegment` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each segment. -* `nextSegments` (`CodePathSegment[]`) - The next segments. If forking, there are two or more. If final, there is nothing. -* `prevSegments` (`CodePathSegment[]`) - The previous segments. If merging, there are two or more. If initial, there is nothing. -* `reachable` (`boolean`) - A flag which shows whether or not it's reachable. This becomes `false` when preceded by `return`, `throw`, `break`, or `continue`. - -## Events - -There are five events related to code paths, and you can define event handlers in rules. - -```js -module.exports = function(context) { - return { - /** - * This is called at the start of analyzing a code path. - * In this time, the code path object has only the initial segment. - * - * @param {CodePath} codePath - The new code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathStart": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called at the end of analyzing a code path. - * In this time, the code path object is complete. - * - * @param {CodePath} codePath - The completed code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathEnd": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called when a code path segment was created. - * It meant the code path is forked or merged. - * In this time, the segment has the previous segments and has been - * judged reachable or not. - * - * @param {CodePathSegment} segment - The new code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentStart": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was leaved. - * In this time, the segment does not have the next segments yet. - * - * @param {CodePathSegment} segment - The leaved code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentEnd": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was looped. - * Usually segments have each previous segments when created, - * but when looped, a segment is added as a new previous segment into a - * existing segment. - * - * @param {CodePathSegment} fromSegment - A code path segment of source. - * @param {CodePathSegment} toSegment - A code path segment of destination. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentLoop": function(fromSegment, toSegment, node) { - // do something with segment - } - }; -}; -``` - -### About `onCodePathSegmentLoop` - -This event is always fired when the next segment has existed already. -That timing is the end of loops mainly. - -For Example 1: - -```js -while (a) { - a = foo(); -} -bar(); -``` - -1. First, the analysis advances to the end of loop. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-while-1.svg) - -2. Second, it creates the looping path. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-while-2.svg) - -3. Last, it advances to the end. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-while-3.svg) - -For example 2: - -```js -for (let i = 0; i < 10; ++i) { - foo(i); -} -bar(); -``` - -1. `for` statements are more complex. - First, the analysis advances to `ForStatement.update`. - The `update` segment is hovered at first. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-for-1.svg) - -2. Second, it advances to `ForStatement.body`. - Of course the `body` segment is preceded by the `test` segment. - It keeps the `update` segment hovering. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-for-2.svg) - -3. Third, it creates the looping path from `body` segment to `update` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-for-3.svg) - -4. Fourth, also it creates the looping path from `update` segment to `test` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 4](./code-path-analysis/loop-event-example-for-4.svg) - -5. Last, it advances to the end. - - ![Loop Event's Example 5](./code-path-analysis/loop-event-example-for-5.svg) - - - -## Usage Examples - -### To check whether or not this is reachable - -```js -var last = require("lodash").last; - -function isReachable(segment) { - return segment.reachable; -} - -module.exports = function(context) { - var codePathStack = []; - - return { - // Stores CodePath objects. - "onCodePathStart": function(codePath) { - codePathStack.push(codePath); - }, - "onCodePathEnd": function(codePath) { - codePathStack.pop(); - }, - - // Checks reachable or not. - "ExpressionStatement": function(node) { - var codePath = last(codePathStack); - - // Checks the current code path segments. - if (!codePath.currentSegments.some(isReachable)) { - context.report({message: "Unreachable!", node: node}); - } - } - }; -}; -``` - -See Also: -[no-unreachable](https://github.com/eslint/eslint/blob/master/lib/rules/no-unreachable.js), -[no-fallthrough](https://github.com/eslint/eslint/blob/master/lib/rules/no-fallthrough.js), -[consistent-return](https://github.com/eslint/eslint/blob/master/lib/rules/consistent-return.js) - -### To check state of a code path - -This example is checking whether or not the parameter `cb` is called in every path. -Instances of `CodePath` and `CodePathSegment` are shared to every rule. -So a rule must not modify those instances. -Please use a map of information instead. - -```js -var last = require("lodash").last; - -function hasCb(node, context) { - if (node.type.indexOf("Function") !== -1) { - return context.getDeclaredVariables(node).some(function(v) { - return v.type === "Parameter" && v.name === "cb"; - }); - } - return false; -} - -function isCbCalled(info) { - return info.cbCalled; -} - -module.exports = function(context) { - var funcInfoStack = []; - var segmentInfoMap = Object.create(null); - - return { - // Checks `cb`. - "onCodePathStart": function(codePath, node) { - funcInfoStack.push({ - codePath: codePath, - hasCb: hasCb(node, context) - }); - }, - "onCodePathEnd": function(codePath, node) { - funcInfoStack.pop(); - - // Checks `cb` was called in every paths. - var cbCalled = codePath.finalSegments.every(function(segment) { - var info = segmentInfoMap[segment.id]; - return info.cbCalled; - }); - - if (!cbCalled) { - context.report({ - message: "`cb` should be called in every path.", - node: node - }); - } - }, - - // Manages state of code paths. - "onCodePathSegmentStart": function(segment) { - // Ignores if `cb` doesn't exist. - if (!last(funcInfoStack).hasCb) { - return; - } - - // Initialize state of this path. - var info = segmentInfoMap[segment.id] = { - cbCalled: false - }; - - // If there are the previous paths, merges state. - // Checks `cb` was called in every previous path. - if (segment.prevSegments.length > 0) { - info.cbCalled = segment.prevSegments.every(isCbCalled); - } - }, - - // Checks reachable or not. - "CallExpression": function(node) { - var funcInfo = last(funcInfoStack); - - // Ignores if `cb` doesn't exist. - if (!funcInfo.hasCb) { - return; - } - - // Sets marks that `cb` was called. - var callee = node.callee; - if (callee.type === "Identifier" && callee.name === "cb") { - funcInfo.codePath.currentSegments.forEach(function(segment) { - var info = segmentInfoMap[segment.id]; - info.cbCalled = true; - }); - } - } - }; -}; -``` - -See Also: -[constructor-super](https://github.com/eslint/eslint/blob/master/lib/rules/constructor-super.js), -[no-this-before-super](https://github.com/eslint/eslint/blob/master/lib/rules/no-this-before-super.js) - -## Code Path Examples - -### Hello World - -```js -console.log("Hello world!"); -``` - -![Hello World](./code-path-analysis/example-hello-world.svg) - -### `IfStatement` - -```js -if (a) { - foo(); -} else { - bar(); -} -``` - -![`IfStatement`](./code-path-analysis/example-ifstatement.svg) - -### `IfStatement` (chain) - -```js -if (a) { - foo(); -} else if (b) { - bar(); -} else if (c) { - hoge(); -} -``` - -![`IfStatement` (chain)](./code-path-analysis/example-ifstatement-chain.svg) - -### `SwitchStatement` - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; -} -``` - -![`SwitchStatement`](./code-path-analysis/example-switchstatement.svg) - -### `SwitchStatement` (has `default`) - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; - - default: - fuga(); - break; -} -``` - -![`SwitchStatement` (has `default`)](./code-path-analysis/example-switchstatement-has-default.svg) - -### `TryStatement` (try-catch) - -```js -try { - foo(); - if (a) { - throw new Error(); - } - bar(); -} catch (err) { - hoge(err); -} -last(); -``` - -It creates the paths from `try` block to `catch` block at: - -* `throw` statements. -* The first throwable node (e.g. a function call) in the `try` block. -* The end of the `try` block. - -![`TryStatement` (try-catch)](./code-path-analysis/example-trystatement-try-catch.svg) - -### `TryStatement` (try-finally) - -```js -try { - foo(); - bar(); -} finally { - fuga(); -} -last(); -``` - -If there is not `catch` block, `finally` block has two current segments. -At this time, `CodePath.currentSegments.length` is `2`. -One is the normal path, and another is the leaving path (`throw` or `return`). - -![`TryStatement` (try-finally)](./code-path-analysis/example-trystatement-try-finally.svg) - -### `TryStatement` (try-catch-finally) - -```js -try { - foo(); - bar(); -} catch (err) { - hoge(err); -} finally { - fuga(); -} -last(); -``` - -![`TryStatement` (try-catch-finally)](./code-path-analysis/example-trystatement-try-catch-finally.svg) - -### `WhileStatement` - -```js -while (a) { - foo(); - if (b) { - continue; - } - bar(); -} -``` - -![`WhileStatement`](./code-path-analysis/example-whilestatement.svg) - -### `DoWhileStatement` - -```js -do { - foo(); - bar(); -} while (a); -``` - -![`DoWhileStatement`](./code-path-analysis/example-dowhilestatement.svg) - -### `ForStatement` - -```js -for (let i = 0; i < 10; ++i) { - foo(); - if (b) { - break; - } - bar(); -} -``` - -![`ForStatement`](./code-path-analysis/example-forstatement.svg) - -### `ForStatement` (for ever) - -```js -for (;;) { - foo(); -} -bar(); -``` - -![`ForStatement` (for ever)](./code-path-analysis/example-forstatement-for-ever.svg) - -### `ForInStatement` - -```js -for (let key in obj) { - foo(key); -} -``` - -![`ForInStatement`](./code-path-analysis/example-forinstatement.svg) - -### When there is a function - -```js -function foo(a) { - if (a) { - return; - } - bar(); -} - -foo(false); -``` - -It creates two code paths. - -* The global's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-g.svg) - -* The function's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-f.svg) diff --git a/docs/6.0.0/developer-guide/architecture.md b/docs/6.0.0/developer-guide/architecture.md deleted file mode 100644 index a9d2a3e3db..0000000000 --- a/docs/6.0.0/developer-guide/architecture.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Architecture -layout: doc -edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/architecture.md - ---- - - -# Architecture - -
dependency graph
- -At a high level, there are a few key parts to ESLint: - -* `bin/eslint.js` - this is the file that actually gets executed with the command line utility. It's a dumb wrapper that does nothing more than bootstrap ESLint, passing the command line arguments to `cli`. This is intentionally small so as not to require heavy testing. -* `lib/api.js` - this is the entry point of `require("eslint")`. This file exposes an object that contains public classes `Linter`, `CLIEngine`, `RuleTester`, and `SourceCode`. -* `lib/cli.js` - this is the heart of the ESLint CLI. It takes an array of arguments and then uses `eslint` to execute the commands. By keeping this as a separate utility, it allows others to effectively call ESLint from within another Node.js program as if it were done on the command line. The main call is `cli.execute()`. This is also the part that does all the file reading, directory traversing, input, and output. -* `lib/init/` - this module contains `--init` functionality that set up a configuration file for end users. -* `lib/cli-engine/` - this module is `CLIEngine` class that finds source code files and configuration files then does code verifying with the `Linter` class. This includes the loading logic of configuration files, parsers, plugins, and formatters. -* `lib/linter/` - this module is the core `Linter` class that does code verifying based on configuration options. This file does no file I/O and does not interact with the `console` at all. For other Node.js programs that have JavaScript text to verify, they would be able to use this interface directly. -* `lib/rule-tester/` - this module is `RuleTester` class that is a wrapper around Mocha so that rules can be unit tested. This class lets us write consistently formatted tests for each rule that is implemented and be confident that each of the rules work. The RuleTester interface was modeled after Mocha and works with Mocha's global testing methods. RuleTester can also be modified to work with other testing frameworks. -* `lib/source-code/` - this module is `SourceCode` class that is used to represent the parsed source code. It takes in source code and the Program node of the AST representing the code. -* `lib/rules/` - this contains built-in rules that verify source code. - -## The `cli` object - -The `cli` object is the API for the command line interface. Literally, the `bin/eslint.js` file simply passes arguments to the `cli` object and then sets `process.exitCode` to the returned exit code. - -The main method is `cli.execute()`, which accepts an array of strings that represent the command line options (as if `process.argv` were passed without the first two arguments). If you want to run ESLint from inside of another program and have it act like the CLI, then `cli` is the object to use. - -This object's responsibilities include: - -* Interpreting command line arguments -* Reading from the file system -* Outputting to the console -* Outputting to the filesystem -* Use a formatter -* Returning the correct exit code - -This object may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations - -## The `CLIEngine` object - -The `CLIEngine` type represents the core functionality of the CLI except that it reads nothing from the command line and doesn't output anything by default. Instead, it accepts many (but not all) of the arguments that are passed into the CLI. It reads both configuration and source files as well as managing the environment that is passed into the `Linter` object. - -The main method of the `CLIEngine` is `executeOnFiles()`, which accepts an array of file and directory names to run the linter on. - -This object's responsibilities include: - -* Managing the execution environment for `Linter` -* Reading from the file system -* Reading configuration information from config files (including `.eslintrc` and `package.json`) - -This object may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations -* Output to the console -* Use formatters - -## The `Linter` object - -The main method of the `Linter` object is `verify()` and accepts two arguments: the source text to verify and a configuration object (the baked configuration of the given configuration file plus command line options). The method first parses the given text with `espree` (or whatever the configured parser is) and retrieves the AST. The AST is produced with both line/column and range locations which are useful for reporting location of issues and retrieving the source text related to an AST node, respectively. - -Once the AST is available, `estraverse` is used to traverse the AST from top to bottom. At each node, the `Linter` object emits an event that has the same name as the node type (i.e., "Identifier", "WithStatement", etc.). On the way back up the subtree, an event is emitted with the AST type name and suffixed with ":exit", such as "Identifier:exit" - this allows rules to take action both on the way down and on the way up in the traversal. Each event is emitted with the appropriate AST node available. - -This object's responsibilities include: - -* Inspecting JavaScript code strings -* Creating an AST for the code -* Executing rules on the AST -* Reporting back the results of the execution - -This object may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations -* Use Node.js-specific features -* Access the file system -* Call `console.log()` or any other similar method - -## Rules - -Individual rules are the most specialized part of the ESLint architecture. Rules can do very little, they are simply a set of instructions executed against an AST that is provided. They do get some context information passed in, but the primary responsibility of a rule is to inspect the AST and report warnings. - -These objects' responsibilities are: - -* Inspect the AST for specific patterns -* Reporting warnings when certain patterns are found - -These objects may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations -* Use Node.js-specific features -* Access the file system -* Call `console.log()` or any other similar method diff --git a/docs/6.0.0/developer-guide/code-path-analysis.md b/docs/6.0.0/developer-guide/code-path-analysis.md deleted file mode 100644 index 35be8d9b9a..0000000000 --- a/docs/6.0.0/developer-guide/code-path-analysis.md +++ /dev/null @@ -1,559 +0,0 @@ ---- -title: Code Path Analysis Details -layout: doc -edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/code-path-analysis.md - ---- - - -# Code Path Analysis Details - -ESLint's rules can use code paths. -The code path is execution routes of programs. -It forks/joins at such as `if` statements. - -```js -if (a && b) { - foo(); -} -bar(); -``` - -![Code Path Example](./code-path-analysis/helo.svg) - -## Objects - -Program is expressed with several code paths. -A code path is expressed with objects of two kinds: `CodePath` and `CodePathSegment`. - -### `CodePath` - -`CodePath` expresses whole of one code path. -This object exists for each function and the global. -This has references of both the initial segment and the final segments of a code path. - -`CodePath` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each code path. -* `initialSegment` (`CodePathSegment`) - The initial segment of this code path. -* `finalSegments` (`CodePathSegment[]`) - The final segments which includes both returned and thrown. -* `returnedSegments` (`CodePathSegment[]`) - The final segments which includes only returned. -* `thrownSegments` (`CodePathSegment[]`) - The final segments which includes only thrown. -* `currentSegments` (`CodePathSegment[]`) - Segments of the current position. -* `upper` (`CodePath|null`) - The code path of the upper function/global scope. -* `childCodePaths` (`CodePath[]`) - Code paths of functions this code path contains. - -### `CodePathSegment` - -`CodePathSegment` is a part of a code path. -A code path is expressed with plural `CodePathSegment` objects, it's similar to doubly linked list. -Difference from doubly linked list is what there are forking and merging (the next/prev are plural). - -`CodePathSegment` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each segment. -* `nextSegments` (`CodePathSegment[]`) - The next segments. If forking, there are two or more. If final, there is nothing. -* `prevSegments` (`CodePathSegment[]`) - The previous segments. If merging, there are two or more. If initial, there is nothing. -* `reachable` (`boolean`) - A flag which shows whether or not it's reachable. This becomes `false` when preceded by `return`, `throw`, `break`, or `continue`. - -## Events - -There are five events related to code paths, and you can define event handlers in rules. - -```js -module.exports = function(context) { - return { - /** - * This is called at the start of analyzing a code path. - * In this time, the code path object has only the initial segment. - * - * @param {CodePath} codePath - The new code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathStart": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called at the end of analyzing a code path. - * In this time, the code path object is complete. - * - * @param {CodePath} codePath - The completed code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathEnd": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called when a code path segment was created. - * It meant the code path is forked or merged. - * In this time, the segment has the previous segments and has been - * judged reachable or not. - * - * @param {CodePathSegment} segment - The new code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentStart": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was leaved. - * In this time, the segment does not have the next segments yet. - * - * @param {CodePathSegment} segment - The leaved code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentEnd": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was looped. - * Usually segments have each previous segments when created, - * but when looped, a segment is added as a new previous segment into a - * existing segment. - * - * @param {CodePathSegment} fromSegment - A code path segment of source. - * @param {CodePathSegment} toSegment - A code path segment of destination. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentLoop": function(fromSegment, toSegment, node) { - // do something with segment - } - }; -}; -``` - -### About `onCodePathSegmentLoop` - -This event is always fired when the next segment has existed already. -That timing is the end of loops mainly. - -For Example 1: - -```js -while (a) { - a = foo(); -} -bar(); -``` - -1. First, the analysis advances to the end of loop. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-while-1.svg) - -2. Second, it creates the looping path. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-while-2.svg) - -3. Last, it advances to the end. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-while-3.svg) - -For example 2: - -```js -for (let i = 0; i < 10; ++i) { - foo(i); -} -bar(); -``` - -1. `for` statements are more complex. - First, the analysis advances to `ForStatement.update`. - The `update` segment is hovered at first. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-for-1.svg) - -2. Second, it advances to `ForStatement.body`. - Of course the `body` segment is preceded by the `test` segment. - It keeps the `update` segment hovering. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-for-2.svg) - -3. Third, it creates the looping path from `body` segment to `update` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-for-3.svg) - -4. Fourth, also it creates the looping path from `update` segment to `test` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 4](./code-path-analysis/loop-event-example-for-4.svg) - -5. Last, it advances to the end. - - ![Loop Event's Example 5](./code-path-analysis/loop-event-example-for-5.svg) - - - -## Usage Examples - -### To check whether or not this is reachable - -```js -var last = require("lodash").last; - -function isReachable(segment) { - return segment.reachable; -} - -module.exports = function(context) { - var codePathStack = []; - - return { - // Stores CodePath objects. - "onCodePathStart": function(codePath) { - codePathStack.push(codePath); - }, - "onCodePathEnd": function(codePath) { - codePathStack.pop(); - }, - - // Checks reachable or not. - "ExpressionStatement": function(node) { - var codePath = last(codePathStack); - - // Checks the current code path segments. - if (!codePath.currentSegments.some(isReachable)) { - context.report({message: "Unreachable!", node: node}); - } - } - }; -}; -``` - -See Also: -[no-unreachable](https://github.com/eslint/eslint/blob/master/lib/rules/no-unreachable.js), -[no-fallthrough](https://github.com/eslint/eslint/blob/master/lib/rules/no-fallthrough.js), -[consistent-return](https://github.com/eslint/eslint/blob/master/lib/rules/consistent-return.js) - -### To check state of a code path - -This example is checking whether or not the parameter `cb` is called in every path. -Instances of `CodePath` and `CodePathSegment` are shared to every rule. -So a rule must not modify those instances. -Please use a map of information instead. - -```js -var last = require("lodash").last; - -function hasCb(node, context) { - if (node.type.indexOf("Function") !== -1) { - return context.getDeclaredVariables(node).some(function(v) { - return v.type === "Parameter" && v.name === "cb"; - }); - } - return false; -} - -function isCbCalled(info) { - return info.cbCalled; -} - -module.exports = function(context) { - var funcInfoStack = []; - var segmentInfoMap = Object.create(null); - - return { - // Checks `cb`. - "onCodePathStart": function(codePath, node) { - funcInfoStack.push({ - codePath: codePath, - hasCb: hasCb(node, context) - }); - }, - "onCodePathEnd": function(codePath, node) { - funcInfoStack.pop(); - - // Checks `cb` was called in every paths. - var cbCalled = codePath.finalSegments.every(function(segment) { - var info = segmentInfoMap[segment.id]; - return info.cbCalled; - }); - - if (!cbCalled) { - context.report({ - message: "`cb` should be called in every path.", - node: node - }); - } - }, - - // Manages state of code paths. - "onCodePathSegmentStart": function(segment) { - // Ignores if `cb` doesn't exist. - if (!last(funcInfoStack).hasCb) { - return; - } - - // Initialize state of this path. - var info = segmentInfoMap[segment.id] = { - cbCalled: false - }; - - // If there are the previous paths, merges state. - // Checks `cb` was called in every previous path. - if (segment.prevSegments.length > 0) { - info.cbCalled = segment.prevSegments.every(isCbCalled); - } - }, - - // Checks reachable or not. - "CallExpression": function(node) { - var funcInfo = last(funcInfoStack); - - // Ignores if `cb` doesn't exist. - if (!funcInfo.hasCb) { - return; - } - - // Sets marks that `cb` was called. - var callee = node.callee; - if (callee.type === "Identifier" && callee.name === "cb") { - funcInfo.codePath.currentSegments.forEach(function(segment) { - var info = segmentInfoMap[segment.id]; - info.cbCalled = true; - }); - } - } - }; -}; -``` - -See Also: -[constructor-super](https://github.com/eslint/eslint/blob/master/lib/rules/constructor-super.js), -[no-this-before-super](https://github.com/eslint/eslint/blob/master/lib/rules/no-this-before-super.js) - -## Code Path Examples - -### Hello World - -```js -console.log("Hello world!"); -``` - -![Hello World](./code-path-analysis/example-hello-world.svg) - -### `IfStatement` - -```js -if (a) { - foo(); -} else { - bar(); -} -``` - -![`IfStatement`](./code-path-analysis/example-ifstatement.svg) - -### `IfStatement` (chain) - -```js -if (a) { - foo(); -} else if (b) { - bar(); -} else if (c) { - hoge(); -} -``` - -![`IfStatement` (chain)](./code-path-analysis/example-ifstatement-chain.svg) - -### `SwitchStatement` - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; -} -``` - -![`SwitchStatement`](./code-path-analysis/example-switchstatement.svg) - -### `SwitchStatement` (has `default`) - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; - - default: - fuga(); - break; -} -``` - -![`SwitchStatement` (has `default`)](./code-path-analysis/example-switchstatement-has-default.svg) - -### `TryStatement` (try-catch) - -```js -try { - foo(); - if (a) { - throw new Error(); - } - bar(); -} catch (err) { - hoge(err); -} -last(); -``` - -It creates the paths from `try` block to `catch` block at: - -* `throw` statements. -* The first throwable node (e.g. a function call) in the `try` block. -* The end of the `try` block. - -![`TryStatement` (try-catch)](./code-path-analysis/example-trystatement-try-catch.svg) - -### `TryStatement` (try-finally) - -```js -try { - foo(); - bar(); -} finally { - fuga(); -} -last(); -``` - -If there is not `catch` block, `finally` block has two current segments. -At this time, `CodePath.currentSegments.length` is `2`. -One is the normal path, and another is the leaving path (`throw` or `return`). - -![`TryStatement` (try-finally)](./code-path-analysis/example-trystatement-try-finally.svg) - -### `TryStatement` (try-catch-finally) - -```js -try { - foo(); - bar(); -} catch (err) { - hoge(err); -} finally { - fuga(); -} -last(); -``` - -![`TryStatement` (try-catch-finally)](./code-path-analysis/example-trystatement-try-catch-finally.svg) - -### `WhileStatement` - -```js -while (a) { - foo(); - if (b) { - continue; - } - bar(); -} -``` - -![`WhileStatement`](./code-path-analysis/example-whilestatement.svg) - -### `DoWhileStatement` - -```js -do { - foo(); - bar(); -} while (a); -``` - -![`DoWhileStatement`](./code-path-analysis/example-dowhilestatement.svg) - -### `ForStatement` - -```js -for (let i = 0; i < 10; ++i) { - foo(); - if (b) { - break; - } - bar(); -} -``` - -![`ForStatement`](./code-path-analysis/example-forstatement.svg) - -### `ForStatement` (for ever) - -```js -for (;;) { - foo(); -} -bar(); -``` - -![`ForStatement` (for ever)](./code-path-analysis/example-forstatement-for-ever.svg) - -### `ForInStatement` - -```js -for (let key in obj) { - foo(key); -} -``` - -![`ForInStatement`](./code-path-analysis/example-forinstatement.svg) - -### When there is a function - -```js -function foo(a) { - if (a) { - return; - } - bar(); -} - -foo(false); -``` - -It creates two code paths. - -* The global's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-g.svg) - -* The function's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-f.svg) diff --git a/docs/developer-guide/architecture.md b/docs/developer-guide/architecture.md deleted file mode 100644 index a9d2a3e3db..0000000000 --- a/docs/developer-guide/architecture.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Architecture -layout: doc -edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/architecture.md - ---- - - -# Architecture - -
dependency graph
- -At a high level, there are a few key parts to ESLint: - -* `bin/eslint.js` - this is the file that actually gets executed with the command line utility. It's a dumb wrapper that does nothing more than bootstrap ESLint, passing the command line arguments to `cli`. This is intentionally small so as not to require heavy testing. -* `lib/api.js` - this is the entry point of `require("eslint")`. This file exposes an object that contains public classes `Linter`, `CLIEngine`, `RuleTester`, and `SourceCode`. -* `lib/cli.js` - this is the heart of the ESLint CLI. It takes an array of arguments and then uses `eslint` to execute the commands. By keeping this as a separate utility, it allows others to effectively call ESLint from within another Node.js program as if it were done on the command line. The main call is `cli.execute()`. This is also the part that does all the file reading, directory traversing, input, and output. -* `lib/init/` - this module contains `--init` functionality that set up a configuration file for end users. -* `lib/cli-engine/` - this module is `CLIEngine` class that finds source code files and configuration files then does code verifying with the `Linter` class. This includes the loading logic of configuration files, parsers, plugins, and formatters. -* `lib/linter/` - this module is the core `Linter` class that does code verifying based on configuration options. This file does no file I/O and does not interact with the `console` at all. For other Node.js programs that have JavaScript text to verify, they would be able to use this interface directly. -* `lib/rule-tester/` - this module is `RuleTester` class that is a wrapper around Mocha so that rules can be unit tested. This class lets us write consistently formatted tests for each rule that is implemented and be confident that each of the rules work. The RuleTester interface was modeled after Mocha and works with Mocha's global testing methods. RuleTester can also be modified to work with other testing frameworks. -* `lib/source-code/` - this module is `SourceCode` class that is used to represent the parsed source code. It takes in source code and the Program node of the AST representing the code. -* `lib/rules/` - this contains built-in rules that verify source code. - -## The `cli` object - -The `cli` object is the API for the command line interface. Literally, the `bin/eslint.js` file simply passes arguments to the `cli` object and then sets `process.exitCode` to the returned exit code. - -The main method is `cli.execute()`, which accepts an array of strings that represent the command line options (as if `process.argv` were passed without the first two arguments). If you want to run ESLint from inside of another program and have it act like the CLI, then `cli` is the object to use. - -This object's responsibilities include: - -* Interpreting command line arguments -* Reading from the file system -* Outputting to the console -* Outputting to the filesystem -* Use a formatter -* Returning the correct exit code - -This object may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations - -## The `CLIEngine` object - -The `CLIEngine` type represents the core functionality of the CLI except that it reads nothing from the command line and doesn't output anything by default. Instead, it accepts many (but not all) of the arguments that are passed into the CLI. It reads both configuration and source files as well as managing the environment that is passed into the `Linter` object. - -The main method of the `CLIEngine` is `executeOnFiles()`, which accepts an array of file and directory names to run the linter on. - -This object's responsibilities include: - -* Managing the execution environment for `Linter` -* Reading from the file system -* Reading configuration information from config files (including `.eslintrc` and `package.json`) - -This object may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations -* Output to the console -* Use formatters - -## The `Linter` object - -The main method of the `Linter` object is `verify()` and accepts two arguments: the source text to verify and a configuration object (the baked configuration of the given configuration file plus command line options). The method first parses the given text with `espree` (or whatever the configured parser is) and retrieves the AST. The AST is produced with both line/column and range locations which are useful for reporting location of issues and retrieving the source text related to an AST node, respectively. - -Once the AST is available, `estraverse` is used to traverse the AST from top to bottom. At each node, the `Linter` object emits an event that has the same name as the node type (i.e., "Identifier", "WithStatement", etc.). On the way back up the subtree, an event is emitted with the AST type name and suffixed with ":exit", such as "Identifier:exit" - this allows rules to take action both on the way down and on the way up in the traversal. Each event is emitted with the appropriate AST node available. - -This object's responsibilities include: - -* Inspecting JavaScript code strings -* Creating an AST for the code -* Executing rules on the AST -* Reporting back the results of the execution - -This object may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations -* Use Node.js-specific features -* Access the file system -* Call `console.log()` or any other similar method - -## Rules - -Individual rules are the most specialized part of the ESLint architecture. Rules can do very little, they are simply a set of instructions executed against an AST that is provided. They do get some context information passed in, but the primary responsibility of a rule is to inspect the AST and report warnings. - -These objects' responsibilities are: - -* Inspect the AST for specific patterns -* Reporting warnings when certain patterns are found - -These objects may not: - -* Call `process.exit()` directly -* Perform any asynchronous operations -* Use Node.js-specific features -* Access the file system -* Call `console.log()` or any other similar method diff --git a/docs/developer-guide/architecture/index.md b/docs/developer-guide/architecture/index.md index 0b2f1e3ecf..e23eae3bf2 100644 --- a/docs/developer-guide/architecture/index.md +++ b/docs/developer-guide/architecture/index.md @@ -8,7 +8,7 @@ edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/arc # Architecture -
dependency graph
+
dependency graph
At a high level, there are a few key parts to ESLint: diff --git a/docs/developer-guide/code-path-analysis.md b/docs/developer-guide/code-path-analysis.md deleted file mode 100644 index 35be8d9b9a..0000000000 --- a/docs/developer-guide/code-path-analysis.md +++ /dev/null @@ -1,559 +0,0 @@ ---- -title: Code Path Analysis Details -layout: doc -edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/code-path-analysis.md - ---- - - -# Code Path Analysis Details - -ESLint's rules can use code paths. -The code path is execution routes of programs. -It forks/joins at such as `if` statements. - -```js -if (a && b) { - foo(); -} -bar(); -``` - -![Code Path Example](./code-path-analysis/helo.svg) - -## Objects - -Program is expressed with several code paths. -A code path is expressed with objects of two kinds: `CodePath` and `CodePathSegment`. - -### `CodePath` - -`CodePath` expresses whole of one code path. -This object exists for each function and the global. -This has references of both the initial segment and the final segments of a code path. - -`CodePath` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each code path. -* `initialSegment` (`CodePathSegment`) - The initial segment of this code path. -* `finalSegments` (`CodePathSegment[]`) - The final segments which includes both returned and thrown. -* `returnedSegments` (`CodePathSegment[]`) - The final segments which includes only returned. -* `thrownSegments` (`CodePathSegment[]`) - The final segments which includes only thrown. -* `currentSegments` (`CodePathSegment[]`) - Segments of the current position. -* `upper` (`CodePath|null`) - The code path of the upper function/global scope. -* `childCodePaths` (`CodePath[]`) - Code paths of functions this code path contains. - -### `CodePathSegment` - -`CodePathSegment` is a part of a code path. -A code path is expressed with plural `CodePathSegment` objects, it's similar to doubly linked list. -Difference from doubly linked list is what there are forking and merging (the next/prev are plural). - -`CodePathSegment` has the following properties: - -* `id` (`string`) - A unique string. Respective rules can use `id` to save additional information for each segment. -* `nextSegments` (`CodePathSegment[]`) - The next segments. If forking, there are two or more. If final, there is nothing. -* `prevSegments` (`CodePathSegment[]`) - The previous segments. If merging, there are two or more. If initial, there is nothing. -* `reachable` (`boolean`) - A flag which shows whether or not it's reachable. This becomes `false` when preceded by `return`, `throw`, `break`, or `continue`. - -## Events - -There are five events related to code paths, and you can define event handlers in rules. - -```js -module.exports = function(context) { - return { - /** - * This is called at the start of analyzing a code path. - * In this time, the code path object has only the initial segment. - * - * @param {CodePath} codePath - The new code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathStart": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called at the end of analyzing a code path. - * In this time, the code path object is complete. - * - * @param {CodePath} codePath - The completed code path. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathEnd": function(codePath, node) { - // do something with codePath - }, - - /** - * This is called when a code path segment was created. - * It meant the code path is forked or merged. - * In this time, the segment has the previous segments and has been - * judged reachable or not. - * - * @param {CodePathSegment} segment - The new code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentStart": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was leaved. - * In this time, the segment does not have the next segments yet. - * - * @param {CodePathSegment} segment - The leaved code path segment. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentEnd": function(segment, node) { - // do something with segment - }, - - /** - * This is called when a code path segment was looped. - * Usually segments have each previous segments when created, - * but when looped, a segment is added as a new previous segment into a - * existing segment. - * - * @param {CodePathSegment} fromSegment - A code path segment of source. - * @param {CodePathSegment} toSegment - A code path segment of destination. - * @param {ASTNode} node - The current node. - * @returns {void} - */ - "onCodePathSegmentLoop": function(fromSegment, toSegment, node) { - // do something with segment - } - }; -}; -``` - -### About `onCodePathSegmentLoop` - -This event is always fired when the next segment has existed already. -That timing is the end of loops mainly. - -For Example 1: - -```js -while (a) { - a = foo(); -} -bar(); -``` - -1. First, the analysis advances to the end of loop. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-while-1.svg) - -2. Second, it creates the looping path. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-while-2.svg) - -3. Last, it advances to the end. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-while-3.svg) - -For example 2: - -```js -for (let i = 0; i < 10; ++i) { - foo(i); -} -bar(); -``` - -1. `for` statements are more complex. - First, the analysis advances to `ForStatement.update`. - The `update` segment is hovered at first. - - ![Loop Event's Example 1](./code-path-analysis/loop-event-example-for-1.svg) - -2. Second, it advances to `ForStatement.body`. - Of course the `body` segment is preceded by the `test` segment. - It keeps the `update` segment hovering. - - ![Loop Event's Example 2](./code-path-analysis/loop-event-example-for-2.svg) - -3. Third, it creates the looping path from `body` segment to `update` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 3](./code-path-analysis/loop-event-example-for-3.svg) - -4. Fourth, also it creates the looping path from `update` segment to `test` segment. - At this time, the next segment has existed already, so the `onCodePathSegmentStart` event is not fired. - It fires `onCodePathSegmentLoop` instead. - - ![Loop Event's Example 4](./code-path-analysis/loop-event-example-for-4.svg) - -5. Last, it advances to the end. - - ![Loop Event's Example 5](./code-path-analysis/loop-event-example-for-5.svg) - - - -## Usage Examples - -### To check whether or not this is reachable - -```js -var last = require("lodash").last; - -function isReachable(segment) { - return segment.reachable; -} - -module.exports = function(context) { - var codePathStack = []; - - return { - // Stores CodePath objects. - "onCodePathStart": function(codePath) { - codePathStack.push(codePath); - }, - "onCodePathEnd": function(codePath) { - codePathStack.pop(); - }, - - // Checks reachable or not. - "ExpressionStatement": function(node) { - var codePath = last(codePathStack); - - // Checks the current code path segments. - if (!codePath.currentSegments.some(isReachable)) { - context.report({message: "Unreachable!", node: node}); - } - } - }; -}; -``` - -See Also: -[no-unreachable](https://github.com/eslint/eslint/blob/master/lib/rules/no-unreachable.js), -[no-fallthrough](https://github.com/eslint/eslint/blob/master/lib/rules/no-fallthrough.js), -[consistent-return](https://github.com/eslint/eslint/blob/master/lib/rules/consistent-return.js) - -### To check state of a code path - -This example is checking whether or not the parameter `cb` is called in every path. -Instances of `CodePath` and `CodePathSegment` are shared to every rule. -So a rule must not modify those instances. -Please use a map of information instead. - -```js -var last = require("lodash").last; - -function hasCb(node, context) { - if (node.type.indexOf("Function") !== -1) { - return context.getDeclaredVariables(node).some(function(v) { - return v.type === "Parameter" && v.name === "cb"; - }); - } - return false; -} - -function isCbCalled(info) { - return info.cbCalled; -} - -module.exports = function(context) { - var funcInfoStack = []; - var segmentInfoMap = Object.create(null); - - return { - // Checks `cb`. - "onCodePathStart": function(codePath, node) { - funcInfoStack.push({ - codePath: codePath, - hasCb: hasCb(node, context) - }); - }, - "onCodePathEnd": function(codePath, node) { - funcInfoStack.pop(); - - // Checks `cb` was called in every paths. - var cbCalled = codePath.finalSegments.every(function(segment) { - var info = segmentInfoMap[segment.id]; - return info.cbCalled; - }); - - if (!cbCalled) { - context.report({ - message: "`cb` should be called in every path.", - node: node - }); - } - }, - - // Manages state of code paths. - "onCodePathSegmentStart": function(segment) { - // Ignores if `cb` doesn't exist. - if (!last(funcInfoStack).hasCb) { - return; - } - - // Initialize state of this path. - var info = segmentInfoMap[segment.id] = { - cbCalled: false - }; - - // If there are the previous paths, merges state. - // Checks `cb` was called in every previous path. - if (segment.prevSegments.length > 0) { - info.cbCalled = segment.prevSegments.every(isCbCalled); - } - }, - - // Checks reachable or not. - "CallExpression": function(node) { - var funcInfo = last(funcInfoStack); - - // Ignores if `cb` doesn't exist. - if (!funcInfo.hasCb) { - return; - } - - // Sets marks that `cb` was called. - var callee = node.callee; - if (callee.type === "Identifier" && callee.name === "cb") { - funcInfo.codePath.currentSegments.forEach(function(segment) { - var info = segmentInfoMap[segment.id]; - info.cbCalled = true; - }); - } - } - }; -}; -``` - -See Also: -[constructor-super](https://github.com/eslint/eslint/blob/master/lib/rules/constructor-super.js), -[no-this-before-super](https://github.com/eslint/eslint/blob/master/lib/rules/no-this-before-super.js) - -## Code Path Examples - -### Hello World - -```js -console.log("Hello world!"); -``` - -![Hello World](./code-path-analysis/example-hello-world.svg) - -### `IfStatement` - -```js -if (a) { - foo(); -} else { - bar(); -} -``` - -![`IfStatement`](./code-path-analysis/example-ifstatement.svg) - -### `IfStatement` (chain) - -```js -if (a) { - foo(); -} else if (b) { - bar(); -} else if (c) { - hoge(); -} -``` - -![`IfStatement` (chain)](./code-path-analysis/example-ifstatement-chain.svg) - -### `SwitchStatement` - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; -} -``` - -![`SwitchStatement`](./code-path-analysis/example-switchstatement.svg) - -### `SwitchStatement` (has `default`) - -```js -switch (a) { - case 0: - foo(); - break; - - case 1: - case 2: - bar(); - // fallthrough - - case 3: - hoge(); - break; - - default: - fuga(); - break; -} -``` - -![`SwitchStatement` (has `default`)](./code-path-analysis/example-switchstatement-has-default.svg) - -### `TryStatement` (try-catch) - -```js -try { - foo(); - if (a) { - throw new Error(); - } - bar(); -} catch (err) { - hoge(err); -} -last(); -``` - -It creates the paths from `try` block to `catch` block at: - -* `throw` statements. -* The first throwable node (e.g. a function call) in the `try` block. -* The end of the `try` block. - -![`TryStatement` (try-catch)](./code-path-analysis/example-trystatement-try-catch.svg) - -### `TryStatement` (try-finally) - -```js -try { - foo(); - bar(); -} finally { - fuga(); -} -last(); -``` - -If there is not `catch` block, `finally` block has two current segments. -At this time, `CodePath.currentSegments.length` is `2`. -One is the normal path, and another is the leaving path (`throw` or `return`). - -![`TryStatement` (try-finally)](./code-path-analysis/example-trystatement-try-finally.svg) - -### `TryStatement` (try-catch-finally) - -```js -try { - foo(); - bar(); -} catch (err) { - hoge(err); -} finally { - fuga(); -} -last(); -``` - -![`TryStatement` (try-catch-finally)](./code-path-analysis/example-trystatement-try-catch-finally.svg) - -### `WhileStatement` - -```js -while (a) { - foo(); - if (b) { - continue; - } - bar(); -} -``` - -![`WhileStatement`](./code-path-analysis/example-whilestatement.svg) - -### `DoWhileStatement` - -```js -do { - foo(); - bar(); -} while (a); -``` - -![`DoWhileStatement`](./code-path-analysis/example-dowhilestatement.svg) - -### `ForStatement` - -```js -for (let i = 0; i < 10; ++i) { - foo(); - if (b) { - break; - } - bar(); -} -``` - -![`ForStatement`](./code-path-analysis/example-forstatement.svg) - -### `ForStatement` (for ever) - -```js -for (;;) { - foo(); -} -bar(); -``` - -![`ForStatement` (for ever)](./code-path-analysis/example-forstatement-for-ever.svg) - -### `ForInStatement` - -```js -for (let key in obj) { - foo(key); -} -``` - -![`ForInStatement`](./code-path-analysis/example-forinstatement.svg) - -### When there is a function - -```js -function foo(a) { - if (a) { - return; - } - bar(); -} - -foo(false); -``` - -It creates two code paths. - -* The global's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-g.svg) - -* The function's - - ![When there is a function](./code-path-analysis/example-when-there-is-a-function-f.svg) diff --git a/docs/developer-guide/code-path-analysis/index.md b/docs/developer-guide/code-path-analysis/index.md index dc045ec77b..3991219c4c 100644 --- a/docs/developer-guide/code-path-analysis/index.md +++ b/docs/developer-guide/code-path-analysis/index.md @@ -1,7 +1,7 @@ --- title: Code Path Analysis Details layout: doc -edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/code-path-analysis/README.md +edit_link: https://github.com/eslint/eslint/edit/master/docs/developer-guide/code-path-analysis.md --- diff --git a/docs/docs.json b/docs/docs.json new file mode 100644 index 0000000000..f9564fa00a --- /dev/null +++ b/docs/docs.json @@ -0,0 +1,3 @@ +{ + "permalink": "{{ page.filePathStem }}.html" +} diff --git a/docs/rules/index.liquid b/docs/rules/index.liquid new file mode 100644 index 0000000000..53d683aa17 --- /dev/null +++ b/docs/rules/index.liquid @@ -0,0 +1,105 @@ +--- +title: List of available rules +layout: doc +--- + +

Rules

+

Rules in ESLint are grouped by category to help you understand their purpose.

+

No rules are enabled by default. The "extends": "eslint:recommended" property in a configuration file enables rules that report common problems, which have a check mark (recommended) below.

+

The `--fix` option on the command line automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench (fixable) below.

+{% for category in rules.categories %} +

{{ category.name }}

+ {{ category.description }} + + + + + + + + + {% for rule in category.rules %} + + + + + + + {% endfor %} + +
{% if rule.recommended %}(recommended){% endif %}{% if rule.fixable %}(fixable){% endif %}{{ rule.name }} {{ rule.description }}
+{% endfor %} +{% if rules.deprecated %} +

{{ rules.deprecated.name }}

+ {{ rules.deprecated.description }} +
+ + + + + + + + + + + + + {% for rule in rules.deprecated.rules %} + + + {% if rule.replacedBy.size > 0 %} + + {% else %} + + {% endif %} + + {% endfor %} + +
Deprecated ruleReplaced by
+ {{ rule.name }} + + {% for replaced in rule.replacedBy %} + {{ replaced }} + {% endfor %} + +

(no replacement)

+
+
+ {% endif %} +

{{ rules.removed.name }}

+ {{ rules.removed.description }} +
+ + + + + + + + + + + + + {% for rule in rules.removed.rules %} + + + {% if rule.replacedBy.size > 0 %} + + {% else %} + + {% endif %} + + {% endfor %} + +
Removed ruleReplaced by
+ {{ rule.removed }} + + {% for replaced in rule.replacedBy %} + {{ replaced }} + {% endfor %} + +

(no replacement)

+
+
diff --git a/docs/rules/index.md b/docs/rules/index.md deleted file mode 100644 index f2e25526be..0000000000 --- a/docs/rules/index.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: List of available rules -layout: doc ---- - -# Rules - -Rules in ESLint are grouped by category to help you understand their purpose. - -No rules are enabled by default. The `"extends": "eslint:recommended"` property in a [configuration file](../user-guide/configuring#extending-configuration-files) enables rules that report common problems, which have a check mark (recommended) below. - -The `--fix` option on the [command line](../user-guide/command-line-interface#fix) automatically fixes problems (currently mostly whitespace) reported by rules which have a wrench (fixable) below. - -{% for category in site.data.rules.categories %} - -## {{ category.name}} - -{{ category.description }} - - ------ - -{% for rule in category.rules %} - - - - - - -{% endfor %} - -
{% if rule.recommended %}(recommended){% endif %}{% if rule.fixable %}(fixable){% endif %}[{{rule.name}}]({{rule.name}}) -{{rule.description}} -
- -{% endfor %} - -{% if site.data.rules.deprecated %} -## {{ site.data.rules.deprecated.name }} - -{{ site.data.rules.deprecated.description }} - -
- - ---- - - - - - - - - - -{% for rule in site.data.rules.deprecated.rules %} - - -{% if rule.replacedBy.size > 0 %} - - -{% endfor %} - - -
Deprecated ruleReplaced by
[{{rule.name}}]({{rule.name}}) -{% for replaced in rule.replacedBy %}[{{replaced}}]({{replaced}}){% endfor %} -{% else %} -

(no replacement)

-{% endif %} -
-
-{% endif %} - -## {{ site.data.rules.removed.name }} - -{{ site.data.rules.removed.description }} - -
- - ---- - - - - - - - - - -{% for rule in site.data.rules.removed.rules %} - - -{% if rule.replacedBy.size > 0 %} - - -{% endfor %} - - -
Removed ruleReplaced by
[{{rule.removed}}]({{rule.removed}}) -{% for replaced in rule.replacedBy %}[{{replaced}}]({{replaced}}){% endfor %} -{% else %} -

(no replacement)

-{% endif %} -
-
diff --git a/docs/user-guide/rules.md b/docs/user-guide/rules.md index 1c8b45276e..18e9d54624 100644 --- a/docs/user-guide/rules.md +++ b/docs/user-guide/rules.md @@ -1,4 +1,4 @@ --- -layout: redirect +layout: content-only sitemap: false --- diff --git a/feed.xml b/feed.xml deleted file mode 100644 index 2b8b9cc078..0000000000 --- a/feed.xml +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: null ---- - - - - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }} - - {% for post in site.posts limit:10 %} - - {{ post.title | xml_escape }} - {{ post.content | xml_escape }} - {{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }} - {{ site.url }}{{ post.url }} - {{ site.url }}{{ post.url }} - - {% endfor %} - - diff --git a/package-lock.json b/package-lock.json index a9b3f9147e..f37aa2f9a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,60 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@11ty/eleventy": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-0.9.0.tgz", + "integrity": "sha512-6BW59Fzf2sXrtnS5bUey5JbbiOSZCujG7/6/quj4ooLYIFV3djBZpyJg6mQmlyefFIacvC0GDP+9QT+QQ0O74g==", + "dev": true, + "requires": { + "browser-sync": "^2.26.7", + "chalk": "^2.4.2", + "chokidar": "^3.0.2", + "debug": "^4.1.1", + "dependency-graph": "^0.8.0", + "dependency-tree": "^7.0.2", + "ejs": "^2.6.2", + "fast-glob": "^3.0.4", + "fs-extra": "^8.1.0", + "gray-matter": "^4.0.2", + "hamljs": "^0.6.2", + "handlebars": "^4.1.2", + "javascript-stringify": "^2.0.0", + "liquidjs": "^6.4.3", + "lodash": "^4.17.15", + "luxon": "^1.17.2", + "markdown-it": "^8.4.2", + "minimist": "^1.2.0", + "moo": "^0.5.0", + "multimatch": "^4.0.0", + "mustache": "^2.3.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.0", + "parse-filepath": "^1.0.2", + "please-upgrade-node": "^3.2.0", + "pretty": "^2.0.0", + "pug": "^2.0.4", + "recursive-copy": "^2.0.10", + "semver": "^6.3.0", + "slugify": "^1.3.4", + "time-require": "^0.1.2", + "valid-url": "^1.0.9" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "@babel/code-frame": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", @@ -839,6 +893,32 @@ "to-fast-properties": "^2.0.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@octokit/endpoint": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.2.0.tgz", @@ -897,6 +977,93 @@ "url-template": "^2.0.8" } }, + "@types/babel-types": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", + "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==", + "dev": true + }, + "@types/babylon": { + "version": "6.16.5", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", + "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", + "dev": true, + "requires": { + "@types/babel-types": "*" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", + "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.8.0.tgz", + "integrity": "sha512-ksvjBDTdbAQ04cR5JyFSDX113k66FxH1tAXmi+dj6hufsl/G0eMc/f1GgLjEVPkYClDbRKv+rnBFuE5EusomUw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash.unescape": "4.0.1", + "semver": "^6.3.0", + "tsutils": "^3.17.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", @@ -1085,11 +1252,27 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, "acorn": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz", @@ -1102,12 +1285,35 @@ "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", "dev": true }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "^4.0.4" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "acorn-jsx": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", "dev": true }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, "agentkeepalive": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", @@ -1184,6 +1390,28 @@ } } }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -1237,6 +1465,12 @@ } } }, + "app-module-path": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", + "integrity": "sha1-ZBqlXft9am8KgUHEucCqULbCTdU=", + "dev": true + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -1280,6 +1514,18 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, "array-includes": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", @@ -1290,18 +1536,41 @@ "es-abstract": "^1.7.0" } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true + "dev": true }, "asn1": { "version": "0.2.4", @@ -1360,6 +1629,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-module-types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.5.0.tgz", + "integrity": "sha512-dP6vhvatex3Q+OThhvcyGRvHn4noQBg1b8lCNKUAFL05up80hr2pAExveU3YQNDGMhfNPhQit/vzIkkvBPbSXw==", + "dev": true + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -1372,12 +1647,30 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1413,6 +1706,24 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, "axobject-query": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", @@ -1434,6 +1745,62 @@ "pify": "^4.0.1" } }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1501,12 +1868,39 @@ } } }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -1521,6 +1915,15 @@ "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==", "dev": true }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -1533,6 +1936,12 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, "bluebird": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", @@ -1545,6 +1954,78 @@ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, "bootstrap": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", @@ -1606,37 +2087,292 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { + "browser-sync": { + "version": "2.26.7", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.7.tgz", + "integrity": "sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w==", + "dev": true, + "requires": { + "browser-sync-client": "^2.26.6", + "browser-sync-ui": "^2.26.4", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^2.0.4", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^3", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "1.15.2", + "immutable": "^3", + "localtunnel": "1.9.2", + "micromatch": "^3.1.10", + "opn": "5.3.0", + "portscanner": "2.1.1", + "qs": "6.2.3", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "2.1.1", + "ua-parser-js": "0.7.17", + "yargs": "6.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", + "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.1.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "browser-sync-client": { + "version": "2.26.6", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.6.tgz", + "integrity": "sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw==", + "dev": true, + "requires": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6" + }, + "dependencies": { + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + } + } + }, + "browser-sync-ui": { + "version": "2.26.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz", + "integrity": "sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^2.0.4", + "stream-throttle": "^0.1.3" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", "inherits": "^2.0.1", @@ -1688,6 +2424,18 @@ "node-releases": "^1.1.23" } }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "dev": true + }, + "bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", + "dev": true + }, "btoa-lite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", @@ -1723,6 +2471,12 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, "cacache": { "version": "11.3.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", @@ -1786,12 +2540,28 @@ } } }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -1809,6 +2579,16 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1820,6 +2600,15 @@ "supports-color": "^5.3.0" } }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "dev": true, + "requires": { + "is-regex": "^1.0.3" + } + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -1827,23 +2616,104 @@ "dev": true }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "chownr": { @@ -1990,6 +2860,12 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "codemirror": { "version": "5.48.0", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.48.0.tgz", @@ -2040,12 +2916,24 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2064,6 +2952,82 @@ "typedarray": "^0.0.6" } }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -2073,12 +3037,39 @@ "date-now": "^0.1.4" } }, + "constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "requires": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -2088,6 +3079,18 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -2181,6 +3184,58 @@ "sha.js": "^2.4.8" } }, + "cross-env": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", + "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -2265,6 +3320,12 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2354,11 +3415,58 @@ } } }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.8.0.tgz", + "integrity": "sha512-DCvzSq2UiMsuLnj/9AL484ummEgLtZIcRS7YvtO38QnpX3vqh9nJ8P+zhu8Ja+SmLrBHO2iDbva20jq38qvBkQ==", + "dev": true + }, + "dependency-tree": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/dependency-tree/-/dependency-tree-7.0.2.tgz", + "integrity": "sha512-yh3qCLHl/o/ZUPq14HUF6AGEbNTMyCAu92D6AmY3SEynJHkB25o3hTDzvt3Tu/KpR0093ATyrhr4aGwcx8NnVw==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "debug": "^4.1.1", + "filing-cabinet": "^2.3.1", + "precinct": "^6.1.1" + } + }, "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -2375,12 +3483,118 @@ "minimalistic-assert": "^1.0.0" } }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, + "detective-amd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-3.0.0.tgz", + "integrity": "sha512-kOpKHyabdSKF9kj7PqYHLeHPw+TJT8q2u48tZYMkIcas28el1CYeLEJ42Nm+563/Fq060T5WknfwDhdX9+kkBQ==", + "dev": true, + "requires": { + "ast-module-types": "^2.3.1", + "escodegen": "^1.8.0", + "get-amd-module-type": "^3.0.0", + "node-source-walk": "^4.0.0" + } + }, + "detective-cjs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-3.1.1.tgz", + "integrity": "sha512-JQtNTBgFY6h8uT6pgph5QpV3IyxDv+z3qPk/FZRDT9TlFfm5dnRtpH39WtQEr1khqsUxVqXzKjZHpdoQvQbllg==", + "dev": true, + "requires": { + "ast-module-types": "^2.4.0", + "node-source-walk": "^4.0.0" + } + }, + "detective-es6": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-2.1.0.tgz", + "integrity": "sha512-QSHqKGOp/YBIfmIqKXaXeq2rlL+bp3bcIQMfZ+0PvKzRlELSOSZxKRvpxVcxlLuocQv4QnOfuWGniGrmPbz8MQ==", + "dev": true, + "requires": { + "node-source-walk": "^4.0.0" + } + }, + "detective-less": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/detective-less/-/detective-less-1.0.2.tgz", + "integrity": "sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "gonzales-pe": "^4.2.3", + "node-source-walk": "^4.0.0" + } + }, + "detective-postcss": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-3.0.1.tgz", + "integrity": "sha512-tfTS2GdpUal5NY0aCqI4dpEy8Xfr88AehYKB0iBIZvo8y2g3UsrcDnrp9PR2FbzoW7xD5Rip3NJW7eCSvtqdUw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "is-url": "^1.2.4", + "postcss": "^7.0.2", + "postcss-values-parser": "^1.5.0" + } + }, + "detective-sass": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-3.0.1.tgz", + "integrity": "sha512-oSbrBozRjJ+QFF4WJFbjPQKeakoaY1GiR380NPqwdbWYd5wfl5cLWv0l6LsJVqrgWfFN1bjFqSeo32Nxza8Lbw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "gonzales-pe": "^4.2.3", + "node-source-walk": "^4.0.0" + } + }, + "detective-scss": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-2.0.1.tgz", + "integrity": "sha512-VveyXW4WQE04s05KlJ8K0bG34jtHQVgTc9InspqoQxvnelj/rdgSAy7i2DXAazyQNFKlWSWbS+Ro2DWKFOKTPQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "gonzales-pe": "^4.2.3", + "node-source-walk": "^4.0.0" + } + }, + "detective-stylus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.0.tgz", + "integrity": "sha1-UK7n24uruZA4HwEMY/q7pbWOVM0=", + "dev": true + }, + "detective-typescript": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-5.7.0.tgz", + "integrity": "sha512-4SQeACXWAjIOsd2kJykPL8gWC9nVA+z8w7KtAdtd/7BCpDfrpI2ZA7pdhsmHv/zxf3ofeqpYi72vCkZ65bAjtA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "^2.4.0", + "ast-module-types": "^2.5.0", + "node-source-walk": "^4.2.0", + "typescript": "^3.6.4" + } + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -2415,6 +3629,30 @@ "esutils": "^2.0.2" } }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, "dom-walk": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", @@ -2426,6 +3664,32 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "domhandler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", + "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.0.0.tgz", + "integrity": "sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg==", + "dev": true, + "requires": { + "dom-serializer": "^0.2.1", + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0" + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2438,6 +3702,24 @@ "stream-shift": "^1.0.0" } }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", + "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", + "dev": true, + "requires": { + "tfunk": "^3.0.1" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -2447,6 +3729,48 @@ "safer-buffer": "^2.1.0" } }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, "electron-to-chromium": { "version": "1.3.179", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.179.tgz", @@ -2468,6 +3792,12 @@ "minimalistic-crypto-utils": "^1.0.0" } }, + "emitter-mixin": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/emitter-mixin/-/emitter-mixin-0.0.3.tgz", + "integrity": "sha1-WUjLKG8uSO3DslGnz8H3iDOW1lw=", + "dev": true + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -2480,13 +3810,114 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-client": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz", + "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", "dev": true, "requires": { - "once": "^1.4.0" + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" } }, "enhanced-resolve": { @@ -2500,6 +3931,12 @@ "tapable": "^1.0.0" } }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, "envify": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", @@ -2518,6 +3955,15 @@ "prr": "~1.0.1" } }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", @@ -2548,12 +3994,46 @@ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "eslint": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.0.1.tgz", @@ -2721,6 +4201,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" }, @@ -2728,7 +4209,8 @@ "eslint-visitor-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true } } }, @@ -2784,6 +4266,18 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, "events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", @@ -2874,6 +4368,135 @@ "homedir-polyfill": "^1.0.1" } }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3002,6 +4625,73 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -3013,6 +4703,15 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -3037,6 +4736,32 @@ "flat-cache": "^2.0.1" } }, + "file-exists-dazinatorfork": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/file-exists-dazinatorfork/-/file-exists-dazinatorfork-1.0.2.tgz", + "integrity": "sha512-r70c72ln2YHzQINNfxDp02hAhbGkt1HffZ+Du8oetWDLjDtFja/Lm10lUaSh9e+wD+7VDvPee0b0C9SAy8pWZg==", + "dev": true + }, + "filing-cabinet": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-2.3.3.tgz", + "integrity": "sha512-Lp9FNBm74UnZI/0tVcH8WlJZmnYf9/qImt1/VUaEj3rlBl+V7M5yVAzYPJ7X1T2WxQeCrSQN4jN64SlQa6Rbew==", + "dev": true, + "requires": { + "app-module-path": "^2.2.0", + "commander": "^2.13.0", + "debug": "^4.1.1", + "enhanced-resolve": "^4.1.0", + "is-relative-path": "^1.0.2", + "module-definition": "^3.0.0", + "module-lookup-amd": "^6.1.0", + "resolve": "^1.11.1", + "resolve-dependency-path": "^2.0.0", + "sass-lookup": "^3.0.0", + "stylus-lookup": "^3.0.1", + "typescript": "^3.0.3" + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -3060,6 +4785,47 @@ } } }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", + "integrity": "sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==", + "dev": true, + "requires": { + "traverse-chain": "~0.1.0" + } + }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -3109,6 +4875,12 @@ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -3119,6 +4891,32 @@ "readable-stream": "^2.3.6" } }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -3145,6 +4943,12 @@ "mime-types": "^2.1.12" } }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3154,6 +4958,12 @@ "map-cache": "^0.2.2" } }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -3164,6 +4974,34 @@ "readable-stream": "^2.0.0" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } + } + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -3195,25 +5033,29 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, "requires": { @@ -3223,13 +5065,15 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, "requires": { @@ -3239,37 +5083,43 @@ }, "chownr": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "optional": true, "requires": { @@ -3278,25 +5128,29 @@ }, "deep-extend": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -3305,13 +5159,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -3327,7 +5183,8 @@ }, "glob": { "version": "7.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "optional": true, "requires": { @@ -3341,13 +5198,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, "requires": { @@ -3356,7 +5215,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -3365,7 +5225,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -3375,19 +5236,22 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "optional": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, "requires": { @@ -3396,13 +5260,15 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, "requires": { @@ -3411,13 +5277,15 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "optional": true }, "minipass": { "version": "2.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "optional": true, "requires": { @@ -3427,7 +5295,8 @@ }, "minizlib": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", "dev": true, "optional": true, "requires": { @@ -3436,7 +5305,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "optional": true, "requires": { @@ -3445,13 +5315,15 @@ }, "ms": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true, "optional": true }, "needle": { "version": "2.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz", + "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", "dev": true, "optional": true, "requires": { @@ -3462,7 +5334,8 @@ }, "node-pre-gyp": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", "dev": true, "optional": true, "requires": { @@ -3480,7 +5353,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -3490,13 +5364,15 @@ }, "npm-bundled": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", "dev": true, "optional": true, "requires": { @@ -3506,7 +5382,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -3518,19 +5395,22 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, "requires": { @@ -3539,19 +5419,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -3561,19 +5444,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, "requires": { @@ -3585,7 +5471,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -3593,7 +5480,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -3608,7 +5496,8 @@ }, "rimraf": { "version": "2.6.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "optional": true, "requires": { @@ -3617,43 +5506,50 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.7.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, "requires": { @@ -3664,7 +5560,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -3673,7 +5570,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, "requires": { @@ -3682,13 +5580,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", "dev": true, "optional": true, "requires": { @@ -3703,13 +5603,15 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, "requires": { @@ -3718,13 +5620,15 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true, "optional": true } @@ -3742,12 +5646,28 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-amd-module-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-3.0.0.tgz", + "integrity": "sha512-99Q7COuACPfVt18zH9N4VAMyb81S6TUgJm2NgV6ERtkh9VIkAaByZkW530wl3lLN5KTtSrK9jVLxYsoP5hQKsw==", + "dev": true, + "requires": { + "ast-module-types": "^2.3.2", + "node-source-walk": "^4.0.0" + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-own-enumerable-property-symbols": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz", + "integrity": "sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -3772,9 +5692,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3806,6 +5726,15 @@ } } }, + "glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "dev": true, + "requires": { + "@types/glob": "*" + } + }, "global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", @@ -3856,6 +5785,60 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", + "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", + "dev": true, + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -3868,6 +5851,44 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, + "gray-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", + "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", + "dev": true, + "requires": { + "js-yaml": "^3.11.0", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha1-e3EWz22+cnjkKz9u+HJaM+F3yOM=", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -3914,6 +5935,52 @@ "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -3986,6 +6053,17 @@ "minimalistic-assert": "^1.0.1" } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz", + "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -4022,6 +6100,107 @@ "parse-passwd": "^1.0.0" } }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dev": true, + "requires": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + }, + "dependencies": { + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "htmlparser2": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.0.0.tgz", + "integrity": "sha512-cChwXn5Vam57fyXajDtPXL1wTYc8JtLbr2TN76FYu05itVVVealxLowe2B3IEznJG4p9HAYn/0tJaRlGuEglFQ==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "dev": true, + "requires": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -4086,6 +6265,12 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true + }, "import-fresh": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", @@ -4118,6 +6303,12 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4198,6 +6389,22 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -4218,6 +6425,12 @@ } } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -4284,6 +6497,24 @@ } } }, + "is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "dev": true, + "requires": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -4331,6 +6562,45 @@ } } }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-object": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", @@ -4355,6 +6625,27 @@ "has": "^1.0.1" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-relative-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-relative-path/-/is-relative-path-1.0.2.tgz", + "integrity": "sha1-CRtGoNZ8HtD+hfH4z93gBrslHUY=", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -4375,6 +6666,33 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -4410,12 +6728,49 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", + "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", + "dev": true + }, + "js-beautify": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", + "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~0.5.1", + "nopt": "~4.0.1" + }, + "dependencies": { + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "dev": true }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4485,6 +6840,15 @@ "minimist": "^1.2.0" } }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -4496,6 +6860,16 @@ "verror": "1.10.0" } }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "dev": true, + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, "jsx-ast-utils": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz", @@ -4506,12 +6880,24 @@ "object.assign": "^4.1.0" } }, + "junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI=", + "dev": true + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -4577,6 +6963,48 @@ "type-check": "~0.3.2" } }, + "limiter": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.4.tgz", + "integrity": "sha512-XCpr5bElgDI65vVgstP8TWjv6/QKWm9GU5UG0Pr5sLQ3QLo8NVKsioe+Jed5/3vFOe3IQuqE7DKwTvKQkjTHvg==", + "dev": true + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "liquidjs": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-6.4.3.tgz", + "integrity": "sha512-m1xSB10Ncu22NR3X0xdaqu/GvP1xadDCFYGqGgd6me8DAWjyA68BKE5DHJmSxw1CGsWPsX+Hj2v/87J2w/LvMQ==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "load-script": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", @@ -4599,6 +7027,160 @@ "json5": "^1.0.1" } }, + "localtunnel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.2.tgz", + "integrity": "sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg==", + "dev": true, + "requires": { + "axios": "0.19.0", + "debug": "4.1.1", + "openurl": "1.1.1", + "yargs": "6.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -4621,18 +7203,36 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "dev": true + }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", "dev": true }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4641,6 +7241,12 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4650,6 +7256,12 @@ "yallist": "^3.0.2" } }, + "luxon": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.21.2.tgz", + "integrity": "sha512-yshwnlkA79WfC24/BC9Rd1n0mhorP22Sc7GYn0puRU6wD/douCgNJIzI9qQBuT9m2/bU+n9v1RflVNE4rMPPxQ==", + "dev": true + }, "macos-release": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", @@ -4696,6 +7308,54 @@ "object-visit": "^1.0.0" } }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "dependencies": { + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + } + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4707,6 +7367,18 @@ "safe-buffer": "^5.1.2" } }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, "mem": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", @@ -4736,6 +7408,24 @@ "readable-stream": "^2.0.1" } }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4771,8 +7461,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true + "dev": true }, "mime-db": { "version": "1.40.0", @@ -4846,6 +7535,12 @@ "through2": "^2.0.0" } }, + "mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -4899,6 +7594,66 @@ } } }, + "module-definition": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-3.2.0.tgz", + "integrity": "sha512-PO6o0BajpdRR+fb3FUSeDISgJpnyxg8UDUEalR8LPQajl0M5+m4jHWhgrMGGSEl6D9+sVl/l1fjOCvpBXIQ+2Q==", + "dev": true, + "requires": { + "ast-module-types": "^2.4.0", + "node-source-walk": "^4.0.0" + } + }, + "module-lookup-amd": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/module-lookup-amd/-/module-lookup-amd-6.2.0.tgz", + "integrity": "sha512-uxHCj5Pw9psZiC1znjU2qPsubt6haCSsN9m7xmIdoTciEgfxUkE1vhtDvjHPuOXEZrVJhjKgkmkP+w73rRuelQ==", + "dev": true, + "requires": { + "commander": "^2.8.1", + "debug": "^4.1.0", + "file-exists-dazinatorfork": "^1.0.2", + "find": "^0.3.0", + "requirejs": "^2.3.5", + "requirejs-config-file": "^3.1.1" + } + }, + "moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==", + "dev": true + }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "dev": true, + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -4919,6 +7674,25 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "mustache": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", + "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==", + "dev": true + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -4957,6 +7731,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, "neo-async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", @@ -4969,6 +7749,15 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", @@ -5015,6 +7804,15 @@ "semver": "^5.3.0" } }, + "node-source-walk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.2.0.tgz", + "integrity": "sha512-hPs/QMe6zS94f5+jG3kk9E7TNm4P2SulrKiLWMzKszBfNZvL/V6wseHlTd7IvfW0NZWqPtK3+9yYNr+3USGteA==", + "dev": true, + "requires": { + "@babel/parser": "^7.0.0" + } + }, "nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", @@ -5023,6 +7821,18 @@ "abbrev": "1" } }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5038,6 +7848,160 @@ "path-key": "^2.0.0" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nunjucks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.0.tgz", + "integrity": "sha512-YS/qEQ6N7qCnUdm6EoYRBfJUdWNT0PpKbbRnogV2XyXbBm2STIP1O6yrdZHgwMVK7fIYUx7i8+yatEixnXSB1w==", + "dev": true, + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^2.0.0", + "yargs": "^3.32.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -5048,6 +8012,12 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -5084,6 +8054,12 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -5172,6 +8148,21 @@ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", "dev": true }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5181,13 +8172,52 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } } }, "optionator": { @@ -5210,6 +8240,12 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -5237,6 +8273,16 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -5296,6 +8342,15 @@ "readable-stream": "^2.1.5" } }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5319,12 +8374,62 @@ "safe-buffer": "^5.1.1" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -5355,6 +8460,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5367,6 +8478,46 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -5385,12 +8536,33 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -5400,6 +8572,25 @@ "find-up": "^3.0.0" } }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "is-number-like": "^1.0.3" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -5492,12 +8683,75 @@ "integrity": "sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ==", "dev": true }, + "postcss-values-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz", + "integrity": "sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "precinct": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/precinct/-/precinct-6.1.2.tgz", + "integrity": "sha512-Mk+oWvR7N2D2EY+5vKNnnXPGor1aU3ZbkcHp2ER68el5PL1nmZsvpq41s69emiNMSuL6TMoIeTabvwfe5w7vNg==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "debug": "^4.1.1", + "detective-amd": "^3.0.0", + "detective-cjs": "^3.1.1", + "detective-es6": "^2.0.0", + "detective-less": "^1.0.2", + "detective-postcss": "^3.0.0", + "detective-sass": "^3.0.0", + "detective-scss": "^2.0.0", + "detective-stylus": "^1.0.0", + "detective-typescript": "^5.1.1", + "module-definition": "^3.1.0", + "node-source-walk": "^4.2.0" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, + "requires": { + "parse-ms": "^0.1.0" + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -5526,7 +8780,6 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, - "optional": true, "requires": { "asap": "~2.0.3" } @@ -5547,12 +8800,34 @@ "react-is": "^16.8.1" } }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -5572,6 +8847,209 @@ "safe-buffer": "^5.1.2" } }, + "pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "dev": true, + "requires": { + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" + } + }, + "pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dev": true, + "requires": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "pug-code-gen": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", + "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", + "dev": true, + "requires": { + "constantinople": "^3.1.2", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", + "dev": true + }, + "pug-filters": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "dev": true, + "requires": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "pug-lexer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "dev": true, + "requires": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.3" + } + }, + "pug-linker": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "dev": true, + "requires": { + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" + } + }, + "pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "pug-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "dev": true, + "requires": { + "pug-error": "^1.3.3", + "token-stream": "0.0.1" + } + }, + "pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", + "dev": true + }, + "pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dev": true, + "requires": { + "pug-error": "^1.3.3" + } + }, + "pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", + "dev": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5645,6 +9123,24 @@ "safe-buffer": "^5.1.0" } }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "react": { "version": "16.8.6", "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", @@ -5667,11 +9163,53 @@ "scheduler": "^0.13.6" } }, - "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" - }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -5698,6 +9236,32 @@ "readable-stream": "^2.0.2" } }, + "recursive-copy": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.10.tgz", + "integrity": "sha512-S9J9XJUnfZ2NUS3lK6lx6HWLl2nWui+f7AKuu+qoFs4ikEPYgZ3qKk1T6tmBnr7PzhtKnawE+6TREy9XQKmxCA==", + "dev": true, + "requires": { + "del": "^2.2.0", + "emitter-mixin": "0.0.3", + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "reduce": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz", @@ -5795,6 +9359,12 @@ } } }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -5852,6 +9422,29 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requirejs": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", + "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", + "dev": true + }, + "requirejs-config-file": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/requirejs-config-file/-/requirejs-config-file-3.1.2.tgz", + "integrity": "sha512-sdLWywcDuNz7EIOhenSbRfT4YF84nItDv90coN2htbokjmU2QeyQuSBZILQUKNksepl8UPVU+hgYySFaDxbJPQ==", + "dev": true, + "requires": { + "esprima": "^4.0.0", + "make-dir": "^2.1.0", + "stringify-object": "^3.2.1" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, "resolve": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", @@ -5878,6 +9471,12 @@ } } }, + "resolve-dependency-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-dependency-path/-/resolve-dependency-path-2.0.0.tgz", + "integrity": "sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w==", + "dev": true + }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -5913,6 +9512,33 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -5929,6 +9555,21 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -5957,6 +9598,12 @@ "is-promise": "^2.1.0" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -5966,6 +9613,12 @@ "aproba": "^1.1.1" } }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", @@ -5994,6 +9647,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sass-lookup": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sass-lookup/-/sass-lookup-3.0.0.tgz", + "integrity": "sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg==", + "dev": true, + "requires": { + "commander": "^2.16.0" + } + }, "scheduler": { "version": "0.13.6", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", @@ -6014,17 +9676,186 @@ "ajv-keywords": "^3.1.0" } }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, "serialize-javascript": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", "dev": true }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -6075,6 +9906,12 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -6100,12 +9937,24 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -6117,6 +9966,12 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "slugify": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.6.tgz", + "integrity": "sha512-wA9XS475ZmGNlEnYYLPReSfuz/c3VQsEMoU43mi6OnKMCdbnFXd4/Yg7J0lBv8jkPolacMpOrWEaoYxuE1+hoQ==", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -6194,54 +10049,249 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "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.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.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", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", "dev": true, "requires": { - "kind-of": "^3.2.0" + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "ms": "2.0.0" } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -6294,6 +10344,38 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -6360,6 +10442,12 @@ } } }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -6399,6 +10487,16 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -6418,6 +10516,17 @@ "safe-buffer": "~5.1.0" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -6427,6 +10536,21 @@ "ansi-regex": "^3.0.0" } }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -6449,6 +10573,16 @@ "schema-utils": "^1.0.0" } }, + "stylus-lookup": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-3.0.2.tgz", + "integrity": "sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg==", + "dev": true, + "requires": { + "commander": "^2.8.1", + "debug": "^4.1.0" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6458,6 +10592,12 @@ "has-flag": "^3.0.0" } }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, "table": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", @@ -6555,6 +10695,58 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "tfunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", + "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "object-path": "^0.9.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -6570,6 +10762,43 @@ "xtend": "~4.0.1" } }, + "time-require": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", + "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -6588,6 +10817,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -6647,6 +10882,18 @@ "repeat-string": "^1.6.1" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -6656,6 +10903,12 @@ "punycode": "^1.4.1" } }, + "traverse-chain": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", + "integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=", + "dev": true + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -6668,6 +10921,15 @@ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -6696,12 +10958,83 @@ "prelude-ls": "~1.1.2" } }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "uglify-js": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", + "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", + "dev": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -6775,6 +11108,18 @@ "os-name": "^3.0.0" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -6822,9 +11167,15 @@ } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, "uri-js": { @@ -6893,6 +11244,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -6904,6 +11261,28 @@ "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", "dev": true }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -6920,6 +11299,12 @@ "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", "dev": true }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -6929,6 +11314,28 @@ "chokidar": "^2.0.2", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + } } }, "webpack": { @@ -7026,6 +11433,12 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, "windows-release": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", @@ -7035,6 +11448,24 @@ "execa": "^1.0.0" } }, + "with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "dev": true, + "requires": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -7104,6 +11535,21 @@ "mkdirp": "^0.5.1" } }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -7179,6 +11625,12 @@ "decamelize": "^1.2.0" } }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, "zepto": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zepto/-/zepto-1.2.0.tgz", diff --git a/package.json b/package.json index c41680b042..a1753c83cb 100644 --- a/package.json +++ b/package.json @@ -1,64 +1,71 @@ { "name": "eslint.github.io", - "version": "1.0.0", "private": true, + "version": "1.0.0", "description": "This contains the code running on eslint.org.", - "main": "index.js", - "directories": { - "doc": "docs" - }, - "engines": { - "node": ">=8.0.0" - }, - "scripts": { - "build:jekyll": "bundle exec jekyll build", - "build:webpack": "webpack --mode=production", - "build:less": "lessc src/styles/main.less assets/build/styles/main.css --clean-css --source-map=assets/build/styles/main.css.map", - "build": "npm run build:less && npm run build:webpack && npm run build:jekyll", - "start:jekyll": "bundle exec jekyll serve --config _config.yml,_config.dev.yml", - "start:webpack": "webpack -w --mode=development", - "start:docker": "npm run build:less && docker run --rm -v `pwd`:/srv/jekyll -p 4000:4000 -it jekyll/jekyll:3.8 jekyll serve -V --config _config.yml,_config.dev.yml", - "start": "npm run build:less && npm run start:jekyll", - "lint": "eslint --ext=.js,.jsx .", - "lint:fix": "npm run lint -- --fix", - "test": "npm run lint" - }, + "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/eslint/eslint.github.io.git" }, - "author": "", - "license": "MIT", "bugs": { "url": "https://github.com/eslint/eslint.github.io/issues" }, "homepage": "https://github.com/eslint/eslint.github.io#readme", + "engines": { + "node": ">=12.0.0" + }, + "scripts": { + "build:eleventy": "npm run convert-yaml && eleventy", + "build:webpack": "webpack --mode=production", + "build:less": "lessc src/styles/main.less _site/assets/styles/main.css --clean-css --source-map=_site/assets/styles/main.css.map", + "build": "npm run build:eleventy && npm run build:less && npm run build:webpack", + "start:eleventy": "npm run convert-yaml && cross-env NODE_ENV=development eleventy --watch", + "start:webpack": "webpack -w --mode=development", + "start": "node _tools/dev-server.js", + "lint": "eslint --ext=.js,.jsx .", + "test": "npm run lint", + "fix": "npm run lint -- --fix", + "convert-yaml": "node _tools/yaml-to-json.js \"_data/*.yml\"" + }, "dependencies": { "anchor-js": "^4.2.0", "bootstrap": "^3.4.1", "bootstrap.native": "^2.0.26", "codemirror": "^5.48.0", "docsearch.js": "^2.6.3", + "highlight.js": "^9.16.2", "react": "^16.8.6", "react-dom": "^16.8.6" }, "devDependencies": { + "@11ty/eleventy": "^0.9.0", "@babel/core": "^7.4.5", "@babel/preset-env": "^7.4.5", "@babel/preset-react": "^7.0.0", "@octokit/rest": "^16.28.2", "babel-loader": "^8.0.6", + "chokidar": "^3.3.0", "core-js": "^3.1.4", + "cross-env": "^6.0.3", "css-loader": "^3.0.0", "eslint": "^6.0.1", "eslint-config-eslint": "^5.0.1", "eslint-plugin-jsx-a11y": "^6.2.1", "eslint-plugin-node": "^9.1.0", "eslint-plugin-react": "^7.14.2", + "express": "^4.17.1", + "glob-promise": "^3.4.0", + "html-entities": "^1.2.1", + "html-minifier": "^4.0.0", + "htmlparser2": "^4.0.0", + "js-yaml": "^3.13.1", "json-loader": "^0.5.2", "less": "^3.9.0", "less-loader": "^5.0.0", "less-plugin-clean-css": "^1.5.1", + "luxon": "^1.21.2", + "morgan": "^1.9.1", "node-fetch": "^2.6.0", "regenerator-runtime": "^0.13.2", "style-loader": "^0.23.1", diff --git a/_redirects b/public/_redirects similarity index 100% rename from _redirects rename to public/_redirects diff --git a/manifest.json b/public/manifest.json similarity index 100% rename from manifest.json rename to public/manifest.json diff --git a/src/styles/lib/bootstrap.less b/src/styles/lib/bootstrap.less index 5f8254235d..d93b77ea61 100644 --- a/src/styles/lib/bootstrap.less +++ b/src/styles/lib/bootstrap.less @@ -343,7 +343,7 @@ textarea { } .section-intro { - background: url('../../img/jumbosplash.jpg') no-repeat; + background: url('../img/jumbosplash.jpg') no-repeat; background-size: cover; color: #fff; padding: 30px 0 40px; diff --git a/src/styles/lib/bootstrap_variables.less b/src/styles/lib/bootstrap_variables.less index 6cc247d86e..c3a035ecf7 100644 --- a/src/styles/lib/bootstrap_variables.less +++ b/src/styles/lib/bootstrap_variables.less @@ -72,7 +72,7 @@ // Iconography // ------------------------- -@icon-font-path: "../../fonts/"; +@icon-font-path: "../fonts/"; @icon-font-name: "glyphicons-halflings-regular"; diff --git a/src/styles/lib/rouge.less b/src/styles/lib/rouge.less deleted file mode 100644 index c72f37ad9f..0000000000 --- a/src/styles/lib/rouge.less +++ /dev/null @@ -1,231 +0,0 @@ -@color_1: #999988; /* Comment */ -@color_2: #a61717; /* Error */ -@color_3: #000000; /* Keyword, Operator, Generic, Keyword, Operator */ -@color_4: #999999; /* Name.Builtin.Pseudo */ -@color_5: #aa0000; /* Generic.Error, Generic.Traceback */ -@color_6: #888888; /* Generic.Output */ -@color_7: #555555; /* Generic.Prompt, Name.Namespace */ -@color_8: #aaaaaa; /* Generic.Subheading */ -@color_9: #445588; /* Keyword.Type, Name.Class */ -@color_10: #009999; /* Literal.Number */ -@color_11: #d01040; /* Literal.String */ -@color_12: #008080; /* Name.Attribute, Name.Constant, Name.Variable */ -@color_13: #0086B3; /* Name.Builtin */ -@color_14: #3c5d5d; /* Name.Decorator */ -@color_15: #800080; /* Name.Entity */ -@color_16: #990000; /* Name.Exception, Name.Function, Name.Label */ -@color_17: #000080; /* Name.Tag */ -@color_18: #bbbbbb; /* Text.Whitespace */ -@color_19: #009926; /* Literal.String.Regex */ -@color_20: #990073; /* Literal.String.Symbol */ - -.highlight { - .hll { - background-color: #ffffcc; - } - .c { - color: @color_1; - font-style: italic; - } - .err { - color: @color_2; - background-color: #e3d2d2; /* Error */ - } - .k { - color: @color_3; - font-weight: bold; - } - .o { - color: @color_3; - font-weight: bold; - } - .cm { - color: @color_1; - font-style: italic; - } - .cp { - color: @color_4; - font-weight: bold; - font-style: italic; - } - .c1 { - color: @color_1; - font-style: italic; - } - .cs { - color: @color_4; - font-weight: bold; - font-style: italic; - } - .gd { - color: @color_3; - background-color: #ffdddd; /* Generic.Deleted */ - } - .ge { - color: @color_3; - font-style: italic; - } - .gr { - color: @color_5; - } - .gh { - color: @color_4; - } - .gi { - color: @color_3; - background-color: #ddffdd; /* Generic.Inserted */ - } - .go { - color: @color_6; - } - .gp { - color: @color_7; - } - .gs { - font-weight: bold; - } - .gu { - color: @color_8; - } - .gt { - color: @color_5; - } - .kc { - color: @color_3; - font-weight: bold; - } - .kd { - color: @color_3; - font-weight: bold; - } - .kn { - color: @color_3; - font-weight: bold; - } - .kp { - color: @color_3; - font-weight: bold; - } - .kr { - color: @color_3; - font-weight: bold; - } - .kt { - color: @color_9; - font-weight: bold; - } - .m { - color: @color_10; - } - .s { - color: @color_11; - } - .na { - color: @color_12; - } - .nb { - color: @color_13; - } - .nc { - color: @color_9; - font-weight: bold; - } - .no { - color: @color_12; - } - .nd { - color: @color_14; - font-weight: bold; - } - .ni { - color: @color_15; - } - .ne { - color: @color_16; - font-weight: bold; - } - .nf { - color: @color_16; - font-weight: bold; - } - .nl { - color: @color_16; - font-weight: bold; - } - .nn { - color: @color_7; - } - .nt { - color: @color_17; - } - .nv { - color: @color_12; - } - .ow { - color: @color_3; - font-weight: bold; - } - .w { - color: @color_18; - } - .mf { - color: @color_10; - } - .mh { - color: @color_10; - } - .mi { - color: @color_10; - } - .mo { - color: @color_10; - } - .sb { - color: @color_11; - } - .sc { - color: @color_11; - } - .sd { - color: @color_11; - } - .s2 { - color: @color_11; - } - .se { - color: @color_11; - } - .sh { - color: @color_11; - } - .si { - color: @color_11; - } - .sx { - color: @color_11; - } - .sr { - color: @color_19; - } - .s1 { - color: @color_11; - } - .ss { - color: @color_20; - } - .bp { - color: @color_4; - } - .vc { - color: @color_12; - } - .vg { - color: @color_12; - } - .vi { - color: @color_12; - } - .il { - color: @color_10; - } -} diff --git a/src/styles/lib/syntax_highlighting.less b/src/styles/lib/syntax_highlighting.less new file mode 100644 index 0000000000..fd8a78af38 --- /dev/null +++ b/src/styles/lib/syntax_highlighting.less @@ -0,0 +1,5 @@ +@import (less) "../../../node_modules/highlight.js/styles/github.css"; + +.hljs { + padding: 11.5px; +} diff --git a/src/styles/main.less b/src/styles/main.less index 3510a278fd..fa08b83047 100644 --- a/src/styles/main.less +++ b/src/styles/main.less @@ -3,6 +3,6 @@ @import "lib/overrides.less"; @import "lib/logos.less"; @import "lib/sponsors.less"; -@import "lib/rouge.less"; +@import "lib/syntax_highlighting.less"; @import "lib/rules_index.less"; @import "lib/404.less"; diff --git a/webpack.config.js b/webpack.config.js index d7b0e5bfb0..2c70cc34f6 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -10,7 +10,7 @@ module.exports = { main: path.join(__dirname, "src/js/main/index.js") }, output: { - path: path.join(__dirname, "assets/build/js"), + path: path.join(__dirname, "_site/assets/js"), filename: "[name].js" }, module: {