diff --git a/.babelrc.js b/.babelrc.js index 666c1a0efb70a..4eb42997a778d 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -6,10 +6,8 @@ if (process.env.NODE_ENV !== `test`) { ignore.push(`**/__tests__`) } -const presetAbsPath = require(`path`).join(__dirname, '.babel-preset.js') - module.exports = { sourceMaps: true, - presets: [presetAbsPath], + presets: ["babel-preset-gatsby-package"], ignore, } diff --git a/.circleci/config.yml b/.circleci/config.yml index 8e5e9075adf57..731f713bc9d93 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,38 +1,34 @@ -aliases: - node6: &node6 - docker: - - image: circleci/node:6 - - node8: &node8 - docker: - - image: circleci/node:8 - - node10: &node10 +executors: + node: + parameters: + image: + type: string + default: "10" docker: - - image: circleci/node:10 + - image: circleci/node:<< parameters.image >> - node10_browsers: &node10_browsers +aliases: + e2e-executor: &e2e-executor docker: - - image: circleci/node:10-browsers + - image: cypress/browsers:chrome69 - restore_node_modules: &restore_node_modules + restore_cache: &restore_cache restore_cache: name: Restore node_modules cache keys: - - node-modules-{{ checksum "yarn.lock" }} + - yarn-cypress-cache-{{ checksum "yarn.lock" }} install_node_modules: &install_node_modules run: name: Install node modules - command: | - yarn + command: yarn --frozen-lockfile - persist_node_modules: &persist_node_modules + persist_cache: &persist_cache save_cache: name: Save node modules cache - key: node-modules-{{ checksum "yarn.lock" }} + key: yarn-cypress-cache-{{ checksum "yarn.lock" }} paths: - - node_modules + - ~/.cache attach_to_bootstrap: &attach_to_bootstrap attach_workspace: @@ -44,32 +40,61 @@ aliases: ignore: - master + ignore_docs: &ignore_docs + filters: + branches: + ignore: + - /docs.+/ + - /blog.+/ + test_template: &test_template steps: - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*" - - <<: *restore_node_modules + - run: ./scripts/assert-changed-files.sh "packages/*|.circleci/*" + - <<: *restore_cache - <<: *install_node_modules - - <<: *persist_node_modules + - <<: *persist_cache - <<: *attach_to_bootstrap - run: yarn jest -w 1 - integration_test_workflow: &integration_test_workflow - <<: *ignore_master + e2e-test-workflow: &e2e-test-workflow + filters: + branches: + ignore: + - master + - /docs.+/ + - /blog.+/ requires: - bootstrap -version: 2 +commands: + e2e-test: + parameters: + trigger_pattern: + type: string + default: "packages/*|.circleci/*" + test_path: + type: string + steps: + - checkout + - run: ./scripts/assert-changed-files.sh "<< parameters.trigger_pattern >>|<< parameters.test_path >>/*" + - <<: *restore_cache + - <<: *install_node_modules + - <<: *persist_cache + - <<: *attach_to_bootstrap + - run: ./scripts/e2e-test.sh "<< parameters.test_path >>" + +version: 2.1 jobs: bootstrap: - <<: *node10 + executor: node steps: - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*" - - <<: *restore_node_modules + - run: ./scripts/assert-changed-files.sh "packages/*|(e2e|integration)-tests/*|.circleci/*" + - <<: *restore_cache - <<: *install_node_modules - - <<: *persist_node_modules + - <<: *persist_cache - run: yarn bootstrap - persist_to_workspace: root: packages @@ -77,75 +102,64 @@ jobs: - "*" lint: - <<: *node10 + executor: node steps: - checkout - - <<: *restore_node_modules + - <<: *restore_cache - <<: *install_node_modules - - <<: *persist_node_modules + - <<: *persist_cache - run: yarn lint unit_tests_node6: - <<: *node6 + executor: + name: node + image: "6" <<: *test_template unit_tests_node8: - <<: *node8 + executor: + name: node + image: "8" <<: *test_template unit_tests_node10: - <<: *node10 + executor: node <<: *test_template integration_tests: - <<: *node10 + executor: node steps: - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*" - - <<: *restore_node_modules + - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*|.circleci/*" + - <<: *restore_cache - <<: *install_node_modules - - <<: *persist_node_modules + - <<: *persist_cache + - <<: *attach_to_bootstrap - run: yarn test:integration e2e_tests_gatsbygram: - <<: *node10_browsers + <<: *e2e-executor steps: - - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*|examples/gatsbygram/*" - - <<: *restore_node_modules - - <<: *install_node_modules - - <<: *attach_to_bootstrap - - run: ./scripts/integration-test.sh examples/gatsbygram + - e2e-test: + test_path: examples/gatsbygram e2e_tests_path-prefix: - <<: *node10_browsers + <<: *e2e-executor steps: - - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*" - - <<: *restore_node_modules - - <<: *install_node_modules - - <<: *attach_to_bootstrap - - run: ./scripts/integration-test.sh integration-tests/path-prefix + - e2e-test: + test_path: e2e-tests/path-prefix e2e_tests_gatsby-image: - <<: *node10_browsers + <<: *e2e-executor steps: - - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*" - - <<: *restore_node_modules - - <<: *install_node_modules - - <<: *attach_to_bootstrap - - run: ./scripts/integration-test.sh integration-tests/gatsby-image + - e2e-test: + test_path: e2e-tests/gatsby-image e2e_tests_runtime: - <<: *node10_browsers + <<: *e2e-executor steps: - - checkout - - run: ./scripts/assert-changed-files.sh "packages/*|integration-tests/*" - - <<: *restore_node_modules - - <<: *install_node_modules - - <<: *attach_to_bootstrap - - run: ./scripts/integration-test.sh integration-tests/production-runtime + - e2e-test: + test_path: e2e-tests/production-runtime workflows: version: 2 @@ -154,20 +168,24 @@ workflows: - bootstrap - lint - unit_tests_node6: + <<: *ignore_docs requires: - bootstrap - unit_tests_node8: + <<: *ignore_docs requires: - bootstrap - unit_tests_node10: + <<: *ignore_docs requires: - bootstrap - - integration_tests + - integration_tests: + <<: *ignore_docs - e2e_tests_gatsbygram: - <<: *integration_test_workflow + <<: *e2e-test-workflow - e2e_tests_path-prefix: - <<: *integration_test_workflow + <<: *e2e-test-workflow - e2e_tests_gatsby-image: - <<: *integration_test_workflow + <<: *e2e-test-workflow - e2e_tests_runtime: - <<: *integration_test_workflow + <<: *e2e-test-workflow diff --git a/.editorconfig b/.editorconfig index 1e48203106beb..ae10a5cce3b26 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,4 +7,4 @@ end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true -trim_trailing_whitespace = true \ No newline at end of file +trim_trailing_whitespace = true diff --git a/.eslintrc.json b/.eslintrc.json index a049b127e7747..4efa02222c841 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -9,7 +9,7 @@ "prettier/flowtype", "prettier/react" ], - "plugins": ["flowtype", "react"], + "plugins": ["flowtype", "prettier", "react"], "parserOptions": { "ecmaVersion": 2016, "sourceType": "module", @@ -27,36 +27,22 @@ "spyOn": true }, "rules": { - "no-console": "off", - "no-inner-declarations": "off", - "valid-jsdoc": "off", - "require-jsdoc": "off", - "quotes": ["error", "backtick"], - "consistent-return": ["error"], "arrow-body-style": [ "error", "as-needed", { "requireReturnForObjectLiteral": true } ], - "jsx-quotes": ["error", "prefer-double"], - "semi": ["error", "never"], - "object-curly-spacing": ["error", "always"], - "comma-dangle": [ - "error", - { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "ignore" - } - ], - "react/prop-types": [ - "error", - { - "ignore": ["children"] - } - ] + "consistent-return": ["error"], + "no-console": "off", + "no-inner-declarations": "off", + "prettier/prettier": "error", + "quotes": ["error", "backtick"], + "react/display-name": "off", + "react/jsx-key": "warn", + "react/no-unescaped-entities": "warn", + "react/prop-types": "off", + "require-jsdoc": "off", + "valid-jsdoc": "off" }, "overrides": [ { @@ -71,6 +57,18 @@ "___loader": false, "___emitter": false } + }, + { + "files": ["**/cypress/integration/**/*", "**/cypress/support/**/*"], + "globals": { + "cy": false, + "Cypress": false + } + } + ], + "settings": { + "react": { + "version": "16.4.2" } - ] + } } diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000..a0e422d6c6037 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +**/*.js.snap text eol=lf +**/__testfixtures__/** text eol=lf +**/__tests__/fixtures/** text eol=lf +**/*.md text eol=lf \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0d1a73256da08..a4111dfee5abb 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,12 +1,6 @@ Belongs in the docs (to make sure we don’t have to maintain docs about core dependencies and third-party software, we will focus on linking to their docs as much as possible) + +> **No** --> Belongs in blog, marketing, Twitter, podcast, starter library, plugin library, etc. + +2. Helps further something on the [developer journey](https://pronovix.com/blog/analyzing-api-docs-and-dx-patterns-best-banking-developer-portals): + + - Discover + - Evaluate + - Get Started + - Implement & Troubleshoot + - Celebrate & Share + - Contribute & Maintain + +> **Yes** --> Belongs in the docs + +> **No** --> Does not belong in the docs + +## Handling proposed doc changes + +### Someone wants to create a new doc + +Does doc already exist? + +> **Yes** --> Is there a discovery problem? If so, solve it + +> **No** --> move ahead + +Is there a demand to create the doc? + +> **Yes** --> move ahead + +> **No** --> don't create it + +Does the doc qualify to be in the /docs/? + +> **Yes** --> Create it + +> **No** --> Don't create it + +### Someone wants to create new categories in the docs sidebar + +Is there a category that the doc(s) could fit in that has more than 5-7 docs in it? + +> **Yes** --> Put in existing category + +> **No** --> Move on + +Would the new category have more than 2 docs in it? + +> **Yes** --> Create new category + +> **No** --> consider waiting to create the category until there is more than 2 docs + +### Someone wants to reorder the categories in the sidebar or shift docs to new categories + +Is there evidence that the reorganization would help further one of the steps on the developer journey? + +> **Yes** --> Reorder them and do usability testing to measure the value of the change + +> **No** --> Don't reorder the categories + +## Naming criteria + +Names categories in the .org site should: + +- be SEO-friendly (common google search term, easy-to-remember URL that is not likely to change anytime soon) +- communicate a core concept of Gatsby (TBD) and/or a core value (TBD) +- be a noun, like "plugins, styling, guides, core concepts" etc. + +Names for guides, tutorial sections, and sub-headings in the .org site should: + +- be SEO friendly (common google search term, easy-to-remember URL that is not likely to change anytime soon) +- nearly always start with an -ing verb, like "adding", since all tasks are action-oriented. + +## Thanks and keep Hacktoberfesting with Gatsby + +It’s been incredible to see how many hard-working contributors have gotten PR’s merged with us so far! Don't forget to check out [how to participate in Gatsby Hacktoberfest!](/blog/2018-10-09-hacktoberfest-kickoff/) + +And don’t forget to also read the [Docs Decision Tree RFC](https://github.com/gatsbyjs/rfcs/pull/14) and leave your comments before October 31st, when the commenting period will be closed. diff --git a/docs/blog/2018-10-15-beyond-static-intro/images/dynamic.jpg b/docs/blog/2018-10-15-beyond-static-intro/images/dynamic.jpg new file mode 100644 index 0000000000000..498bdf59fedaa Binary files /dev/null and b/docs/blog/2018-10-15-beyond-static-intro/images/dynamic.jpg differ diff --git a/docs/blog/2018-10-15-beyond-static-intro/index.md b/docs/blog/2018-10-15-beyond-static-intro/index.md new file mode 100644 index 0000000000000..32e787a8e3afa --- /dev/null +++ b/docs/blog/2018-10-15-beyond-static-intro/index.md @@ -0,0 +1,61 @@ +--- +title: "Beyond Static: Building Dynamic Apps with Gatsby" +date: 2018-10-15 +author: Dustin Schau +image: images/dynamic.jpg +showImageInArticle: false +tags: ["apps", "beyond static", "webinar"] +--- + +We hear it regularly. Gatsby is for static sites, Next.js (or similar) is for when your data changes regularly and/or you need an "app." This raises a question... what actually _is_ an app? + +If this question interests you, consider attending [the upcoming webinar][webinar] where we'll focus on shedding some light on this very question as well as talk about how to build dynamic web apps with Gatsby. + +Until then, I’d like to offer some brief teasers of some of the content we’ll be discussing during the webinar and some introductory information in _how_ Gatsby enables app development. + +> My first impression of Gatsby is that it is more of a static site generator which I interpret as being aimed at content or marketing websites and not as focused on web apps. That is a complete assumption so please correct me if I am wrong. +> +> - [Triptcip][reddit-thread] + +## What is an app? + +It's surprisingly challenging to define what separates an app from a static site. + +- Authentication? +- Reacting to remote data changes? +- A shopping cart? + +It's surprisingly murky where that line is drawn and why exactly many seem to clearly delineate the two _separate_ concepts. + +In fact, I contend that the line between these two concepts is extremely blurry. There isn't some magic percentage threshold that, when crossed, indicates that a static site is now an application. Nor is the inverse true, that an "app" is somehow static because some percentage of its content never or rarely changes. + +From this perspective, it's fair to consider dynamic content as the key determinant between static sites and apps. The more dynamic content an application has, the more app-like that application feels. From this basis, Gatsby is an excellent choice because it enables dynamic functionality just as easily as it enables static site generation. + +## How does Gatsby enable app functionality? + +Gatsby is great for static sites and for truly maximizing performance, while also maintaining a great developer experience and enabling fast feature development with tools developers actually _want_ to use. React, GraphQL, headless CMSes, and the list goes on and on. We enable these, and more, in an easy-to-use package that gets blazing-fast performance, by _default_. It's possible you've heard us talk about these things before 😅 We've honed in on this message and initially focused on this core functionality of building static sites. However, that's only one side of the coin. Gatsby's flexibility and one of its **core** ideas enable building apps on top of this solid static base. + +### Hydration + +One of the central ideas of Gatsby is that we statically generate our HTML content--using React DOM server-side APIs. A less-often illustrated feature is that this static HTML content can then be _enhanced_ with client-side JavaScript via React hydration. The general approach is as follows: + +1. Build and render static HTML, creating content and pages with data injected at build time +1. Invoke [ReactDOM.hydrate method][hydrate] to pick up just where we left our static HTML +1. Transfer rendering to the [React reconciler][reconciler] + +It's this last phase that bridges the gap between static sites and full-fledged applications. In this phase you can make data calls, authenticate users, and perform all the app-like functionality you desire. + +It's really that easy. + +## Use cases + +Gatsby enables these hooks to deliver app-like functionality, just as it does for static site generation. However, it's not as clear when it makes sense to reach for something purely server rendered (Next.js, Nuxt, etc.) or a hybrid approach, like we offer in Gatsby. In the webinar, I'll go over a number of examples of various types of web apps, including e-commerce apps, apps which utilize authentication, and apps that connect to a remote data source (e.g. a GraphQL API), among others! You'll leave having a clear mental model of the types of apps that **you** can build with Gatsby. + +## Wrap Up + +If these briefly described topics and use cases sound interesting to you then please consider [signing up for the Webinar][webinar]. I can't wait to share some practical advice, excellent tooling, and a live demo to show you how you can #BuildWithGatsby in more ways than _just_ static. I hope to see you there! + +[reddit-thread]: https://www.reddit.com/r/reactjs/comments/992n2r/next_vs_gatsby/?st=jn6cojmr&sh=1a53fac1 +[webinar]: https://www.gatsbyjs.com/build-web-apps-webinar +[hydrate]: https://reactjs.org/docs/react-dom.html#hydrate +[reconciler]: https://reactjs.org/docs/reconciliation.html diff --git a/docs/blog/2018-10-16-why-mobile-performance-is-crucial/index.md b/docs/blog/2018-10-16-why-mobile-performance-is-crucial/index.md new file mode 100644 index 0000000000000..cb6a47cc3d678 --- /dev/null +++ b/docs/blog/2018-10-16-why-mobile-performance-is-crucial/index.md @@ -0,0 +1,164 @@ +--- +title: "Journey to the Content Mesh Part 4: Why Mobile Performance Is Crucial" +author: "Sam Bhagwat" +"date": 2018-10-16 +tags: ["content-mesh"] +--- + +_This is Part 4 of a series. Part 1 is_ [The Journey to a Content Mesh](/blog/2018-10-04-journey-to-the-content-mesh)_; Part 2 is_ [Unbundling of the CMS](/blog/2018-10-10-unbundling-of-the-cms)_; Part 3 is_ [The Rise of Modern Web Development](/blog/2018-10-11-rise-of-modern-web-development). + +Mobile traffic now makes up over half of all site visits, and more than half of mobile site visits are abandoned if a page takes [over 3 seconds to load](https://www.thinkwithgoogle.com/data-gallery/detail/mobile-site-abandonment-three-second-load/). + +With the Fortune 500 spending millions of marketing dollars on marketing initiatives aimed at driving traffic to their site, the business impact of bouncing visitors is clear -- [every 100ms of latency costs 1% of sales.](https://www.digitalrealty.com/blog/the-cost-of-latency/) + +Unfortunately, in practice, great performance is surprisingly hard to achieve -- average page load times _haven’t improved_ over several years of increasing connection speed. + +Why is that? Increased site complexity often distributes bottlenecks across multiple code points and teams of stakeholders. While performance checklists exist, they’ve ballooned to 40+ items -- making them costly and time-consuming for teams to implement. + +As Gatsby's co-founder Kyle Mathews likes to say (paraphrasing Tolstoy): + +> "All fast websites are alike, but all slow websites are slow in different ways." + +Ultimately, we’ll argue, performance must be solved _at the framework level_ -- that is, in the content mesh. + +## The rise of smartphone usage + +Between 2014 and 2017, mobile usage (including tablets) rose from 20% of site visits to 50% of site visits. + + + + +Source: [StatCounter](http://gs.statcounter.com/platform-market-share/desktop-mobile-tablet/worldwide/2011) + +When smartphones were first created, the first key challenge of website teams was to offer a responsive version of their site that worked on mobile devices _at all._ + +As mobile has grown to half of internet traffic, the key challenge has shifted to performance. + +## Faster connections haven’t translated to faster sites + +While average phone connection speed, as well as processing power, has increased over the last several years, sites haven’t gotten faster. In fact, load times **have increased**. + +Data from the HTTPArchive shows how long it's taken for the average page on the Internet to completely load all content (including images, script files, CSS files, etc.): + +
+ +
+ Web performance over time +
+
+ +Source: [HTTPArchive](https://httparchive.org/reports/loading-speed?start=2014_02_01&end=latest&view=list#ol) + +Why is that? + +Connection speeds for mobile device have increased, while Moore's Law has made devices faster. However, these speed dividends have been eaten up by two things. + +First, **[heavier page weights](https://www.keycdn.com/support/the-growth-of-web-page-size/)**. + +This has generally driven by increased page complexity driven by increased user expectations. + +Second, the **growing complexity of websites**. Non-critical images, CSS, JS libraries, and 3rd party tracking software will often unintentionally end up on the critical path to page load: + +- A marketing analyst drops a `"`; -exports[`static-entry onPreRenderHTML can be used to replace postBodyComponents 1`] = `"
div3
div2
div1
"`; +exports[`static-entry onPreRenderHTML can be used to replace postBodyComponents 1`] = `"
div3
div2
div1
"`; exports[`static-entry onPreRenderHTML can be used to replace preBodyComponents 1`] = `"
div3
div2
div1
"`; diff --git a/packages/gatsby/cache-dir/__tests__/error-overlay-handler.js b/packages/gatsby/cache-dir/__tests__/error-overlay-handler.js new file mode 100644 index 0000000000000..088793742e9e4 --- /dev/null +++ b/packages/gatsby/cache-dir/__tests__/error-overlay-handler.js @@ -0,0 +1,59 @@ +import "@babel/polyfill" +const { + reportError, + clearError, + errorMap, +} = require(`../error-overlay-handler`) + +import * as ErrorOverlay from "react-error-overlay" + +jest.mock(`react-error-overlay`, () => { + return { + reportBuildError: jest.fn(), + dismissBuildError: jest.fn(), + startReportingRuntimeErrors: jest.fn(), + setEditorHandler: jest.fn(), + } +}) + +beforeEach(() => { + ErrorOverlay.reportBuildError.mockClear() + ErrorOverlay.dismissBuildError.mockClear() +}) + +describe(`errorOverlayHandler`, () => { + describe(`clearError()`, () => { + beforeEach(() => { + reportError(`foo`, `error`) + reportError(`bar`, `error`) + }) + afterAll(() => { + clearError(`foo`) + clearError(`bar`) + }) + it(`should clear specific error type`, () => { + expect(Object.keys(errorMap)).toHaveLength(2) + clearError(`foo`) + expect(Object.keys(errorMap)).toHaveLength(1) + expect(ErrorOverlay.dismissBuildError).not.toHaveBeenCalled() + }) + + it(`should call ErrorOverlay to dismiss build errors`, () => { + clearError(`foo`) + clearError(`bar`) + expect(ErrorOverlay.dismissBuildError).toHaveBeenCalled() + }) + }) + describe(`reportErrorOverlay()`, () => { + it(`should not add error if it's empty and not call ErrorOverlay`, () => { + reportError(`foo`, null) + expect(Object.keys(errorMap)).toHaveLength(0) + expect(ErrorOverlay.reportBuildError).not.toHaveBeenCalled() + }) + it(`should add error if it has a truthy value and call ErrorOverlay`, () => { + reportError(`foo`, `bar`) + expect(Object.keys(errorMap)).toHaveLength(1) + expect(ErrorOverlay.reportBuildError).toHaveBeenCalled() + }) + }) +}) diff --git a/packages/gatsby/cache-dir/__tests__/minimal-config.js b/packages/gatsby/cache-dir/__tests__/minimal-config.js index 0dc919641e741..7f7f7c9d59529 100644 --- a/packages/gatsby/cache-dir/__tests__/minimal-config.js +++ b/packages/gatsby/cache-dir/__tests__/minimal-config.js @@ -1,30 +1,36 @@ const path = require(`path`) const child = require(`child_process`) -it(`Builds cache-dir with minimal config`, done => { - const args = [ - require.resolve(`@babel/cli/bin/babel.js`), - path.join(__dirname, `..`), - `--config-file`, - path.join(__dirname, `.babelrc`), - ] +it( + `Builds cache-dir with minimal config`, + done => { + const args = [ + require.resolve(`@babel/cli/bin/babel.js`), + path.join(__dirname, `..`), + `--config-file`, + path.join(__dirname, `.babelrc`), + `--ignore`, + `**/__tests__`, + ] - const spawn = child.spawn(process.execPath, args) + const spawn = child.spawn(process.execPath, args) - let stderr = `` - let stdout = `` + let stderr = `` + let stdout = `` - spawn.stderr.on(`data`, function (chunk) { - stderr += chunk - }) + spawn.stderr.on(`data`, function(chunk) { + stderr += chunk + }) - spawn.stdout.on(`data`, function (chunk) { - stdout += chunk - }) + spawn.stdout.on(`data`, function(chunk) { + stdout += chunk + }) - spawn.on(`close`, function () { - expect(stderr).toEqual(``) - expect(stdout).not.toEqual(``) - done() - }) -}, 30000) + spawn.on(`close`, function() { + expect(stderr).toEqual(``) + expect(stdout).not.toEqual(``) + done() + }) + }, + 30000 +) diff --git a/packages/gatsby/cache-dir/__tests__/static-entry.js b/packages/gatsby/cache-dir/__tests__/static-entry.js index 785247fb23692..03d857d15a1de 100644 --- a/packages/gatsby/cache-dir/__tests__/static-entry.js +++ b/packages/gatsby/cache-dir/__tests__/static-entry.js @@ -2,9 +2,11 @@ import React from "react" import DevelopStaticEntry from "../develop-static-entry" jest.mock(`fs`) -jest.mock(`gatsby/package.json`, () => ({ - version: '2.0.0' -})); +jest.mock(`gatsby/package.json`, () => { + return { + version: `2.0.0`, + } +}) jest.mock( `../sync-requires`, diff --git a/packages/gatsby/cache-dir/api-runner-browser.js b/packages/gatsby/cache-dir/api-runner-browser.js index b86a91ce3ca6c..036fee8278ec8 100644 --- a/packages/gatsby/cache-dir/api-runner-browser.js +++ b/packages/gatsby/cache-dir/api-runner-browser.js @@ -6,6 +6,17 @@ const { } = require(`./loader`).publicLoader exports.apiRunner = (api, args = {}, defaultReturn, argTransform) => { + // Hooks for cypress-gatsby's API handler + if (window.Cypress) { + if (window.___apiHandler) { + window.___apiHandler(api) + } else if (window.___resolvedAPIs) { + window.___resolvedAPIs.push(api) + } else { + window.___resolvedAPIs = [api] + } + } + let results = plugins.map(plugin => { if (!plugin.plugin[api]) { return undefined diff --git a/packages/gatsby/cache-dir/api-ssr-docs.js b/packages/gatsby/cache-dir/api-ssr-docs.js index 389c05c9eabeb..6890ea7150b75 100644 --- a/packages/gatsby/cache-dir/api-ssr-docs.js +++ b/packages/gatsby/cache-dir/api-ssr-docs.js @@ -142,6 +142,7 @@ exports.onPreRenderHTML = true * @param {object} $0 * @param {object} $0.element The "Page" React Element built by Gatsby. * @param {object} $0.props Props object used by page. + * @param {string} $0.pathname Path of page. * @example * import React from "react" * import Layout from "./src/components/Layout" diff --git a/packages/gatsby/cache-dir/app.js b/packages/gatsby/cache-dir/app.js index 74d4a0a788067..ec3d0c65ae416 100644 --- a/packages/gatsby/cache-dir/app.js +++ b/packages/gatsby/cache-dir/app.js @@ -1,16 +1,23 @@ import React from "react" import ReactDOM from "react-dom" import domReady from "domready" -import { hot } from "react-hot-loader" +import { hot, setConfig } from "react-hot-loader" import socketIo from "./socketIo" import emitter from "./emitter" import { apiRunner, apiRunnerAsync } from "./api-runner-browser" -import loader from "./loader" +import loader, { setApiRunnerForLoader } from "./loader" import syncRequires from "./sync-requires" import pages from "./pages.json" window.___emitter = emitter +setApiRunnerForLoader(apiRunner) + +// necessary for hot-reloading of react hooks +setConfig({ + ignoreSFC: true, + pureRender: true, +}) // Let the site/plugins run code very early. apiRunnerAsync(`onClientEntry`).then(() => { diff --git a/packages/gatsby/cache-dir/ensure-resources.js b/packages/gatsby/cache-dir/ensure-resources.js index c94146cd181c0..53b611c0aa4ba 100644 --- a/packages/gatsby/cache-dir/ensure-resources.js +++ b/packages/gatsby/cache-dir/ensure-resources.js @@ -2,7 +2,6 @@ import React from "react" import PropTypes from "prop-types" import loader from "./loader" import shallowCompare from "shallow-compare" -import { getRedirectUrl } from "./load-directly-or-404" // Pass pathname in as prop. // component will try fetching resources. If they exist, @@ -93,21 +92,54 @@ class EnsureResources extends React.Component { return shallowCompare(this, nextProps, nextState) } - render() { + shouldRenderStaticHTML() { + const { localStorage } = window + const { href, pathname } = window.location + + // This should only occur if the network is offline, or if the + // path is nonexistent and there's no custom 404 page. if ( process.env.NODE_ENV === `production` && !(this.state.pageResources && this.state.pageResources.json) ) { - // This should only occur if there's no custom 404 page - const url = getRedirectUrl(this.state.location.href) - if (url) { - window.location.replace(url) + if (localStorage.getItem(`___failedResources`) === pathname) { + // Maybe it will work again in the future, so remove the flag + localStorage.removeItem(`___failedResources`) + console.error( + `WARNING: Resources cannot be loaded for the pathname ${pathname} - ` + + `falling back to static HTML instead.\n` + + `This is likely due to a bug in Gatsby, or misconfiguration in your project.` + ) + } else { + // Mark the pathname as failed + localStorage.setItem(`___failedResources`, pathname) + + // Reload the page. + // Do this, rather than simply `window.location.reload()`, so that + // pressing the back/forward buttons work - otherwise when pressing + // back, the browser will just change the URL and expect JS to handle + // the change, which won't always work since it might not be a Gatsby + // page. + const originalUrl = new URL(href) + window.history.replaceState({}, `404`, `${pathname}?gatsby-404`) + window.location.replace(originalUrl) } - return null + return true + } else { + localStorage.removeItem(`___failedResources`) + return false } + } - return this.props.children(this.state) + render() { + // TODO: find a nicer way to do this (e.g. React Suspense) + if (this.shouldRenderStaticHTML()) { + const __html = document.getElementById(`___gatsby`).innerHTML + return
+ } else { + return this.props.children(this.state) + } } } diff --git a/packages/gatsby/cache-dir/error-overlay-handler.js b/packages/gatsby/cache-dir/error-overlay-handler.js new file mode 100644 index 0000000000000..038156789e0f0 --- /dev/null +++ b/packages/gatsby/cache-dir/error-overlay-handler.js @@ -0,0 +1,41 @@ +import * as ErrorOverlay from "react-error-overlay" + +// Report runtime errors +ErrorOverlay.startReportingRuntimeErrors({ + onError: () => {}, + filename: `/commons.js`, +}) +ErrorOverlay.setEditorHandler(errorLocation => + window.fetch( + `/__open-stack-frame-in-editor?fileName=` + + window.encodeURIComponent(errorLocation.fileName) + + `&lineNumber=` + + window.encodeURIComponent(errorLocation.lineNumber || 1) + ) +) + +const errorMap = {} + +const handleErrorOverlay = () => { + const errors = Object.values(errorMap) + if (errors.length > 0) { + const errorMsg = errors.join(`\n\n`) + ErrorOverlay.reportBuildError(errorMsg) + } else { + ErrorOverlay.dismissBuildError() + } +} + +export const clearError = errorID => { + delete errorMap[errorID] + handleErrorOverlay() +} + +export const reportError = (errorID, error) => { + if (error) { + errorMap[errorID] = error + } + handleErrorOverlay() +} + +export { errorMap } diff --git a/packages/gatsby/cache-dir/gatsby-browser-entry.js b/packages/gatsby/cache-dir/gatsby-browser-entry.js index 63f5eec25cb04..b68a61b5bfdf2 100644 --- a/packages/gatsby/cache-dir/gatsby-browser-entry.js +++ b/packages/gatsby/cache-dir/gatsby-browser-entry.js @@ -7,7 +7,6 @@ import Link, { replace, navigateTo, } from "gatsby-link" -import { waitForRouteChange } from "./wait-for-route-change" import PageRenderer from "./public-page-renderer" import parsePath from "./parse-path" @@ -58,5 +57,4 @@ export { StaticQueryContext, StaticQuery, PageRenderer, - waitForRouteChange, } diff --git a/packages/gatsby/cache-dir/json-store.js b/packages/gatsby/cache-dir/json-store.js index c7120f57e25da..632a5591aec20 100644 --- a/packages/gatsby/cache-dir/json-store.js +++ b/packages/gatsby/cache-dir/json-store.js @@ -90,10 +90,7 @@ class JSONStore extends React.Component { return ( - + ) } diff --git a/packages/gatsby/cache-dir/load-directly-or-404.js b/packages/gatsby/cache-dir/load-directly-or-404.js deleted file mode 100644 index 2a40d5a001d38..0000000000000 --- a/packages/gatsby/cache-dir/load-directly-or-404.js +++ /dev/null @@ -1,69 +0,0 @@ -export function getRedirectUrl(path) { - const url = new URL(path, window.location.origin) - - // This should never happen, but check just in case - otherwise, there would - // be an infinite redirect loop - if (url.search.match(/\?(.*&)?no-cache=1(&|$)/)) { - console.log( - `Found no-cache=1 while attempting to load a page directly; ` + - `this is likely due to a bug in Gatsby, or a misconfiguration in your project.` - ) - return false - } - - // Append the appropriate query to the URL. - if (url.search) { - url.search += `&no-cache=1` - } else { - url.search = `?no-cache=1` - } - - return url -} - -/** - * When other parts of the code can't find resources for a page, they load the 404 page's - * resources (if it exists) and then pass them here. This module then does the following: - * 1. Checks if 404 pages resources exist. If not, just navigate directly to the desired URL - * to show whatever server 404 page exists. - * 2. Try fetching the desired page to see if it exists on the server but we - * were just prevented from seeing it due to loading the site from a SW. If this is the case, - * trigger a hard reload to grab that page from the server. - * 3. If the page doesn't exist, show the normal 404 page component. - * 4. If the fetch failed (generally meaning we're offline), then navigate anyways to show - * either the browser's offline page or whatever the server error is. - */ -export default function(resources, path, replaceOnSuccess = false) { - return new Promise((resolve, reject) => { - const url = getRedirectUrl(path) - if (!url) return reject(url) - - // Always navigate directly if a custom 404 page doesn't exist. - if (!resources) { - window.location = url - } else { - // Now test if the page is available directly - fetch(url.href) - .then(response => { - if (response.status !== 404) { - // Redirect there if there isn't a 404. If a different HTTP - // error occurs, the appropriate error message will be - // displayed after loading the page directly. - if (replaceOnSuccess) { - window.location.replace(url) - } else { - window.location = url - } - } else { - // If a 404 occurs, show the custom 404 page. - resolve() - } - }) - .catch(() => { - // If an error occurs (usually when offline), navigate to the - // page anyway to show the browser's proper offline error page - window.location = url - }) - } - }) -} diff --git a/packages/gatsby/cache-dir/loader.js b/packages/gatsby/cache-dir/loader.js index 1f0e1c7e6cc0b..23a3dde924a7e 100644 --- a/packages/gatsby/cache-dir/loader.js +++ b/packages/gatsby/cache-dir/loader.js @@ -1,11 +1,9 @@ import pageFinderFactory from "./find-page" import emitter from "./emitter" -import stripPrefix from "./strip-prefix" import prefetchHelper from "./prefetch" const preferDefault = m => (m && m.default) || m -let prefetcher let devGetPageData let inInitialRender = true let hasFetched = Object.create(null) @@ -17,7 +15,6 @@ let fetchingPageResourceMapPromise = null let fetchedPageResourceMap = false let apiRunner const failedPaths = {} -const failedResources = {} const MAX_HISTORY = 5 const jsonPromiseStore = {} @@ -73,6 +70,7 @@ const fetchResource = resourceName => { if (req.status === 200) { resolve(JSON.parse(req.responseText)) } else { + delete jsonPromiseStore[resourceName] reject() } } @@ -91,7 +89,8 @@ const fetchResource = resourceName => { const fetchPromise = resourceFunction() let failed = false return fetchPromise - .catch(() => { + .catch(e => { + console.error(e) failed = true }) .then(component => { @@ -100,10 +99,6 @@ const fetchResource = resourceName => { succeeded: !failed, }) - if (!failedResources[resourceName]) { - failedResources[resourceName] = failed - } - fetchHistory = fetchHistory.slice(-MAX_HISTORY) resolve(component) @@ -113,10 +108,12 @@ const fetchResource = resourceName => { const prefetchResource = resourceName => { if (resourceName.slice(0, 12) === `component---`) { - createComponentUrls(resourceName).forEach(url => prefetchHelper(url)) + return Promise.all( + createComponentUrls(resourceName).map(url => prefetchHelper(url)) + ) } else { const url = createJsonURL(jsonDataPaths[resourceName]) - prefetchHelper(url) + return prefetchHelper(url) } } @@ -147,22 +144,30 @@ const handleResourceLoadError = (path, message) => { } } +const onPrefetchPathname = pathname => { + if (!prefetchTriggered[pathname]) { + apiRunner(`onPrefetchPathname`, { pathname }) + prefetchTriggered[pathname] = true + } +} + +const onPostPrefetchPathname = pathname => { + if (!prefetchCompleted[pathname]) { + apiRunner(`onPostPrefetchPathname`, { pathname }) + prefetchCompleted[pathname] = true + } +} + // Note we're not actively using the path data atm. There // could be future optimizations however around trying to ensure // we load all resources for likely-to-be-visited paths. // let pathArray = [] // let pathCount = {} -let resourcesCount = Object.create(null) -const sortResourcesByCount = (a, b) => { - if (resourcesCount[a] > resourcesCount[b]) return 1 - else if (resourcesCount[a] < resourcesCount[b]) return -1 - else return 0 -} - let findPage let pathScriptsCache = {} let prefetchTriggered = {} +let prefetchCompleted = {} let disableCorePrefetching = false const queue = { @@ -181,23 +186,16 @@ const queue = { // Hovering on a link is a very strong indication the user is going to // click on it soon so let's start prefetching resources for this // pathname. - hovering: rawPath => { - const path = stripPrefix(rawPath, __PATH_PREFIX__) + hovering: path => { queue.getResourcesForPathname(path) }, - enqueue: rawPath => { - const path = stripPrefix(rawPath, __PATH_PREFIX__) + enqueue: path => { if (!apiRunner) console.error(`Run setApiRunnerForLoader() before enqueing paths`) // Tell plugins with custom prefetching logic that they should start // prefetching this path. - if (!prefetchTriggered[path]) { - apiRunner(`onPrefetchPathname`, { - pathname: path, - }) - prefetchTriggered[path] = true - } + onPrefetchPathname(path) // If a plugin has disabled core prefetching, stop now. if (disableCorePrefetching.some(a => a)) { @@ -216,7 +214,7 @@ const queue = { ) { // If page wasn't found check and we didn't fetch resources map for // all pages, wait for fetch to complete and try find page again - return fetchPageResourceMap().then(() => queue.enqueue(rawPath)) + return fetchPageResourceMap().then(() => queue.enqueue(path)) } if (!page) { @@ -232,8 +230,13 @@ const queue = { // Prefetch resources. if (process.env.NODE_ENV === `production`) { - prefetchResource(page.jsonName) - prefetchResource(page.componentChunkName) + Promise.all([ + prefetchResource(page.jsonName), + prefetchResource(page.componentChunkName), + ]).then(() => { + // Tell plugins the path has been successfully prefetched + onPostPrefetchPathname(path) + }) } return true @@ -278,7 +281,8 @@ const queue = { path, `Previously detected load failure for "${path}"` ) - return reject() + reject() + return } const page = findPage(path) @@ -291,9 +295,10 @@ const queue = { ) { // If page wasn't found check and we didn't fetch resources map for // all pages, wait for fetch to complete and try to get resources again - return fetchPageResourceMap().then(() => + fetchPageResourceMap().then(() => resolve(queue.getResourcesForPathname(path)) ) + return } if (!page) { @@ -301,10 +306,12 @@ const queue = { // Preload the custom 404 page if (path !== `/404.html`) { - return resolve(queue.getResourcesForPathname(`/404.html`)) + resolve(queue.getResourcesForPathname(`/404.html`)) + return } - return resolve() + resolve() + return } // Use the path from the page so the pathScriptsCache uses @@ -317,7 +324,8 @@ const queue = { page, pageResources: pathScriptsCache[path], }) - return resolve(pathScriptsCache[path]) + resolve(pathScriptsCache[path]) + return } // Nope, we need to load resource(s) @@ -340,6 +348,9 @@ const queue = { page, pageResources, }) + // Tell plugins the path has been successfully prefetched + onPostPrefetchPathname(path) + resolve(pageResources) }) } else { @@ -368,6 +379,9 @@ const queue = { pageResources, }) + // Tell plugins the path has been successfully prefetched + onPostPrefetchPathname(path) + if (doingInitialRender) { // We got all resources needed for first mount, // we can fetch resoures for all pages. diff --git a/packages/gatsby/cache-dir/navigation.js b/packages/gatsby/cache-dir/navigation.js index 081a4e2e74d39..1932dfc64d491 100644 --- a/packages/gatsby/cache-dir/navigation.js +++ b/packages/gatsby/cache-dir/navigation.js @@ -1,16 +1,11 @@ import React from "react" import PropTypes from "prop-types" -import loader, { setApiRunnerForLoader } from "./loader" +import loader from "./loader" import redirects from "./redirects.json" import { apiRunner } from "./api-runner-browser" import emitter from "./emitter" -import { - resolveRouteChangePromise, - resetRouteChangePromise, -} from "./wait-for-route-change" import { navigate as reachNavigate } from "@reach/router" import parsePath from "./parse-path" -import loadDirectlyOr404 from "./load-directly-or-404" // Convert to a map for faster lookup in maybeRedirect() const redirectMap = redirects.reduce((map, redirect) => { @@ -48,7 +43,6 @@ const onPreRouteUpdate = location => { const onRouteUpdate = location => { if (!maybeRedirect(location.pathname)) { apiRunner(`onRouteUpdate`, { location }) - resolveRouteChangePromise() // Temp hack while awaiting https://github.com/reach/router/issues/119 window.__navigatingToLink = false @@ -71,14 +65,16 @@ const navigate = (to, options = {}) => { pathname = parsePath(to).pathname } - // If we had a service worker update, no matter the path, reload window + // If we had a service worker update, no matter the path, reload window and + // reset the pathname whitelist if (window.GATSBY_SW_UPDATED) { + const { controller } = navigator.serviceWorker + controller.postMessage({ gatsbyApi: `resetWhitelist` }) + window.location = pathname return } - resetRouteChangePromise() - // Start a timer to wait for a second before transitioning and showing a // loader in case resources aren't around yet. const timeoutId = setTimeout(() => { @@ -89,27 +85,11 @@ const navigate = (to, options = {}) => { }, 1000) loader.getResourcesForPathname(pathname).then(pageResources => { - if ( - (!pageResources || pageResources.page.path === `/404.html`) && - process.env.NODE_ENV === `production` - ) { - clearTimeout(timeoutId) - loadDirectlyOr404(pageResources, to).then(() => - reachNavigate(to, options) - ) - } else { - reachNavigate(to, options) - clearTimeout(timeoutId) - } + reachNavigate(to, options) + clearTimeout(timeoutId) }) } -// reset route change promise after going back / forward -// in history (when not using Gatsby navigation) -window.addEventListener(`popstate`, () => { - resetRouteChangePromise() -}) - function shouldUpdateScroll(prevRouterProps, { location }) { const { pathname, hash } = location const results = apiRunner(`shouldUpdateScroll`, { @@ -140,7 +120,6 @@ function init() { // Temp hack while awaiting https://github.com/reach/router/issues/119 window.__navigatingToLink = false - setApiRunnerForLoader(apiRunner) window.___loader = loader window.___push = to => navigate(to, { replace: false }) window.___replace = to => navigate(to, { replace: true }) diff --git a/packages/gatsby/cache-dir/page-renderer.js b/packages/gatsby/cache-dir/page-renderer.js index a8f500f66706c..403787fbbe1db 100644 --- a/packages/gatsby/cache-dir/page-renderer.js +++ b/packages/gatsby/cache-dir/page-renderer.js @@ -20,7 +20,7 @@ class PageRenderer extends React.Component { replacementElement || createElement(this.props.pageResources.component, { ...props, - key: this.props.location.pathname, + key: this.props.pageResources.page.path, }) const wrappedPage = apiRunner( diff --git a/packages/gatsby/cache-dir/prefetch.js b/packages/gatsby/cache-dir/prefetch.js index 182864e155b3c..1d6322d8aeeca 100644 --- a/packages/gatsby/cache-dir/prefetch.js +++ b/packages/gatsby/cache-dir/prefetch.js @@ -10,24 +10,46 @@ const support = function(feature) { } catch (err) { return false } + return false } + const linkPrefetchStrategy = function(url) { - if (typeof document === `undefined`) { - return - } - const link = document.createElement(`link`) - link.setAttribute(`rel`, `prefetch`) - link.setAttribute(`href`, url) - const parentElement = - document.getElementsByTagName(`head`)[0] || - document.getElementsByName(`script`)[0].parentNode - parentElement.appendChild(link) + return new Promise((resolve, reject) => { + if (typeof document === `undefined`) { + reject() + return + } + + const link = document.createElement(`link`) + link.setAttribute(`rel`, `prefetch`) + link.setAttribute(`href`, url) + + link.onload = resolve + link.onerror = reject + + const parentElement = + document.getElementsByTagName(`head`)[0] || + document.getElementsByName(`script`)[0].parentNode + parentElement.appendChild(link) + }) } + const xhrPrefetchStrategy = function(url) { - const req = new XMLHttpRequest() - req.open(`GET`, url, true) - req.withCredentials = true - req.send(null) + return new Promise((resolve, reject) => { + const req = new XMLHttpRequest() + req.open(`GET`, url, true) + req.withCredentials = true + + req.onload = () => { + if (req.status === 200) { + resolve() + } else { + reject() + } + } + + req.send(null) + }) } const supportedPrefetchStrategy = support(`prefetch`) @@ -37,11 +59,19 @@ const supportedPrefetchStrategy = support(`prefetch`) const preFetched = {} const prefetch = function(url) { - if (preFetched[url]) { - return - } - preFetched[url] = true - supportedPrefetchStrategy(url) + return new Promise(resolve => { + if (preFetched[url]) { + resolve() + return + } + + supportedPrefetchStrategy(url) + .then(() => { + resolve() + preFetched[url] = true + }) + .catch(() => {}) // 404s are logged to the console anyway + }) } export default prefetch diff --git a/packages/gatsby/cache-dir/production-app.js b/packages/gatsby/cache-dir/production-app.js index 0b4f1ad661009..89acd652c2dd8 100644 --- a/packages/gatsby/cache-dir/production-app.js +++ b/packages/gatsby/cache-dir/production-app.js @@ -11,11 +11,9 @@ import { RouteUpdates, } from "./navigation" import emitter from "./emitter" -window.___emitter = emitter import PageRenderer from "./page-renderer" import asyncRequires from "./async-requires" -import loader from "./loader" -import loadDirectlyOr404 from "./load-directly-or-404" +import loader, { setApiRunnerForLoader } from "./loader" import EnsureResources from "./ensure-resources" window.asyncRequires = asyncRequires @@ -25,6 +23,7 @@ window.___loader = loader loader.addPagesArray([window.page]) loader.addDataPaths({ [window.page.jsonName]: window.dataPath }) loader.addProdRequires(asyncRequires) +setApiRunnerForLoader(apiRunner) navigationInit() @@ -63,14 +62,20 @@ apiRunnerAsync(`onClientEntry`).then(() => { } const { page, location: browserLoc } = window - // TODO: comment what this check does if ( + // Make sure the window.page object is defined page && - page.path !== `/404.html` && + // The canonical path doesn't match the actual path (i.e. the address bar) __PATH_PREFIX__ + page.path !== browserLoc.pathname && - !page.path.match(/^\/offline-plugin-app-shell-fallback\/?$/) && + // ...and if matchPage is specified, it also doesn't match the actual path (!page.matchPath || - !match(__PATH_PREFIX__ + page.matchPath, browserLoc.pathname)) + !match(__PATH_PREFIX__ + page.matchPath, browserLoc.pathname)) && + // Ignore 404 pages, since we want to keep the same URL + page.path !== `/404.html` && + !page.path.match(/^\/404\/?$/) && + // Also ignore the offline shell (since when using the offline plugin, all + // pages have this canonical path) + !page.path.match(/^\/offline-plugin-app-shell-fallback\/?$/) ) { navigate( __PATH_PREFIX__ + page.path + browserLoc.search + browserLoc.hash, @@ -78,56 +83,43 @@ apiRunnerAsync(`onClientEntry`).then(() => { ) } - loader - .getResourcesForPathname(browserLoc.pathname) - .then(resources => { - if (!resources || resources.page.path === `/404.html`) { - return loadDirectlyOr404( - resources, - browserLoc.pathname + browserLoc.search + browserLoc.hash, - true - ) - } - - return null - }) - .then(() => { - const Root = () => - createElement( - Router, - { - basepath: __PATH_PREFIX__, - }, - createElement(RouteHandler, { path: `/*` }) - ) + loader.getResourcesForPathname(browserLoc.pathname).then(() => { + const Root = () => + createElement( + Router, + { + basepath: __PATH_PREFIX__, + }, + createElement(RouteHandler, { path: `/*` }) + ) - const WrappedRoot = apiRunner( - `wrapRootElement`, - { element: }, - , - ({ result }) => { - return { element: result } - } - ).pop() + const WrappedRoot = apiRunner( + `wrapRootElement`, + { element: }, + , + ({ result }) => { + return { element: result } + } + ).pop() - let NewRoot = () => WrappedRoot + let NewRoot = () => WrappedRoot - const renderer = apiRunner( - `replaceHydrateFunction`, - undefined, - ReactDOM.hydrate - )[0] + const renderer = apiRunner( + `replaceHydrateFunction`, + undefined, + ReactDOM.hydrate + )[0] - domReady(() => { - renderer( - , - typeof window !== `undefined` - ? document.getElementById(`___gatsby`) - : void 0, - () => { - apiRunner(`onInitialClientRender`) - } - ) - }) + domReady(() => { + renderer( + , + typeof window !== `undefined` + ? document.getElementById(`___gatsby`) + : void 0, + () => { + apiRunner(`onInitialClientRender`) + } + ) }) + }) }) diff --git a/packages/gatsby/cache-dir/register-service-worker.js b/packages/gatsby/cache-dir/register-service-worker.js index adcdee9f00dcf..b2edd20569d4d 100644 --- a/packages/gatsby/cache-dir/register-service-worker.js +++ b/packages/gatsby/cache-dir/register-service-worker.js @@ -1,6 +1,13 @@ import { apiRunner } from "./api-runner-browser" -if (`serviceWorker` in navigator) { +if ( + window.location.protocol !== `https:` && + window.location.hostname !== `localhost` +) { + console.error( + `Service workers can only be used over HTTPS, or on localhost for development` + ) +} else if (`serviceWorker` in navigator) { navigator.serviceWorker .register(`${__PATH_PREFIX__}/sw.js`) .then(function(reg) { diff --git a/packages/gatsby/cache-dir/root.js b/packages/gatsby/cache-dir/root.js index 40e4e6d87d81e..927c97add7841 100644 --- a/packages/gatsby/cache-dir/root.js +++ b/packages/gatsby/cache-dir/root.js @@ -13,34 +13,21 @@ import loader from "./loader" import JSONStore from "./json-store" import EnsureResources from "./ensure-resources" -import * as ErrorOverlay from "react-error-overlay" - -// Report runtime errors -ErrorOverlay.startReportingRuntimeErrors({ - onError: () => {}, - filename: `/commons.js`, -}) -ErrorOverlay.setEditorHandler(errorLocation => - window.fetch( - `/__open-stack-frame-in-editor?fileName=` + - window.encodeURIComponent(errorLocation.fileName) + - `&lineNumber=` + - window.encodeURIComponent(errorLocation.lineNumber || 1) - ) -) +import { reportError, clearError } from "./error-overlay-handler" if (window.__webpack_hot_middleware_reporter__ !== undefined) { + const overlayErrorID = `webpack` // Report build errors window.__webpack_hot_middleware_reporter__.useCustomOverlay({ showProblems(type, obj) { if (type !== `errors`) { - ErrorOverlay.dismissBuildError() + clearError(overlayErrorID) return } - ErrorOverlay.reportBuildError(obj[0]) + reportError(overlayErrorID, obj[0]) }, clear() { - ErrorOverlay.dismissBuildError() + clearError(overlayErrorID) }, }) } diff --git a/packages/gatsby/cache-dir/socketIo.js b/packages/gatsby/cache-dir/socketIo.js index 799b08cb2abe7..978f7db8966d1 100644 --- a/packages/gatsby/cache-dir/socketIo.js +++ b/packages/gatsby/cache-dir/socketIo.js @@ -1,3 +1,5 @@ +import { reportError, clearError } from "./error-overlay-handler" + let socket = null let staticQueryData = {} @@ -29,14 +31,19 @@ export default function socketIo() { [msg.payload.id]: msg.payload.result, } } - } - if (msg.type === `pageQueryResult`) { + } else if (msg.type === `pageQueryResult`) { if (didDataChange(msg, pageQueryData)) { pageQueryData = { ...pageQueryData, [msg.payload.id]: msg.payload.result, } } + } else if (msg.type === `overlayError`) { + if (msg.payload.message) { + reportError(msg.payload.id, msg.payload.message) + } else { + clearError(msg.payload.id) + } } if (msg.type && msg.payload) { ___emitter.emit(msg.type, msg.payload) diff --git a/packages/gatsby/cache-dir/static-entry.js b/packages/gatsby/cache-dir/static-entry.js index 66b3bf83ac260..5013c0a179860 100644 --- a/packages/gatsby/cache-dir/static-entry.js +++ b/packages/gatsby/cache-dir/static-entry.js @@ -52,7 +52,7 @@ const createElement = React.createElement export default (pagePath, callback) => { let bodyHtml = `` let headComponents = [ - + , ] let htmlAttributes = {} let bodyAttributes = {} @@ -163,10 +163,10 @@ export default (pagePath, callback) => { const bodyComponent = apiRunner( `wrapRootElement`, - { element: routerElement }, + { element: routerElement, pathname: pagePath }, routerElement, ({ result }) => { - return { element: result } + return { element: result, pathname: pagePath } } ).pop() @@ -180,6 +180,8 @@ export default (pagePath, callback) => { setPreBodyComponents, setPostBodyComponents, setBodyProps, + pathname: pagePath, + pathPrefix: __PATH_PREFIX__, }) // If no one stepped up, we'll handle it. @@ -315,15 +317,6 @@ export default (pagePath, callback) => { } }) - apiRunner(`onPreRenderHTML`, { - getHeadComponents, - replaceHeadComponents, - getPreBodyComponents, - replacePreBodyComponents, - getPostBodyComponents, - replacePostBodyComponents, - }) - // Add page metadata for the current page const windowData = `/* { postBodyComponents.push(...bodyScripts) + apiRunner(`onPreRenderHTML`, { + getHeadComponents, + replaceHeadComponents, + getPreBodyComponents, + replacePreBodyComponents, + getPostBodyComponents, + replacePostBodyComponents, + pathname: pagePath, + pathPrefix: __PATH_PREFIX__, + }) + const html = `${renderToStaticMarkup( { - promise = new Promise(r => { - resolve = r - }) -} -resetRouteChangePromise() -const waitForRouteChange = () => promise - -const resolveRouteChangePromise = () => { - resolve(window.location) -} - -// We need to set this function on the window -// so it's accessible to Cypress for tests. -if (typeof window !== `undefined`) { - window.___waitForRouteChange = waitForRouteChange -} - -export { - waitForRouteChange, - resolveRouteChangePromise, - resetRouteChangePromise, -} diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index aea15f0ef634e..63f3138cdbfb4 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.0.12", + "version": "2.0.63", "author": "Kyle Mathews ", "bin": { "gatsby": "./dist/bin/gatsby.js" @@ -13,25 +13,26 @@ "@babel/code-frame": "^7.0.0", "@babel/core": "^7.0.0", "@babel/parser": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", "@babel/polyfill": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.0.0", "@babel/traverse": "^7.0.0", + "@moocar/lokijs": "^1.0.1", "@reach/router": "^1.1.1", + "address": "1.0.3", "autoprefixer": "^8.6.5", "babel-core": "7.0.0-bridge.0", "babel-eslint": "^8.2.2", "babel-loader": "8.0.0-beta.4", "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-macros": "^2.4.0", - "babel-plugin-remove-graphql-queries": "^2.0.2-rc.3", + "babel-plugin-remove-graphql-queries": "^2.5.2", + "babel-preset-gatsby": "^0.1.6", + "babel-traverse": "6.26.0", "better-queue": "^3.8.6", "bluebird": "^3.5.0", + "browserslist": "3.2.8", + "cache-manager": "^2.9.0", + "cache-manager-fs-hash": "^0.0.6", "chalk": "^2.3.2", "chokidar": "^2.0.2", "common-tags": "^1.4.0", @@ -60,15 +61,16 @@ "file-loader": "^1.1.11", "flat": "^4.0.0", "friendly-errors-webpack-plugin": "^1.6.1", + "fs-exists-cached": "1.0.0", "fs-extra": "^5.0.0", - "gatsby-cli": "^2.4.2", - "gatsby-link": "^2.0.2", - "gatsby-plugin-page-creator": "^2.0.0", - "gatsby-react-router-scroll": "^2.0.0", + "gatsby-cli": "^2.4.6", + "gatsby-link": "^2.0.7", + "gatsby-plugin-page-creator": "^2.0.5", + "gatsby-react-router-scroll": "^2.0.2", "glob": "^7.1.1", "graphql": "^0.13.2", "graphql-relay": "^0.5.5", - "graphql-skip-limit": "^2.0.0", + "graphql-skip-limit": "^2.0.2", "graphql-tools": "^3.0.4", "graphql-type-json": "^0.2.1", "hash-mod": "^0.0.5", @@ -101,10 +103,11 @@ "raw-loader": "^0.5.1", "react-dev-utils": "^4.2.1", "react-error-overlay": "^3.0.0", - "react-hot-loader": "^4.1.0", - "redux": "^3.6.0", + "react-hot-loader": "^4.5.1", + "redux": "^4.0.0", "relay-compiler": "1.5.0", "request": "^2.85.0", + "semver": "^5.6.0", "shallow-compare": "^1.2.2", "sift": "^5.1.0", "signal-exit": "^3.0.2", @@ -127,15 +130,10 @@ }, "devDependencies": { "@babel/cli": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/preset-flow": "^7.0.0", - "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.0.0", + "babel-preset-gatsby-package": "^0.1.3", "cross-env": "^5.1.4", "lerna": "^2.9.0", - "nyc": "^7.0.0", "rimraf": "^2.6.1" }, "engines": { @@ -147,7 +145,7 @@ "graphql.js", "index.d.ts" ], - "homepage": "https://github.com/gatsbyjs/gatsby#readme", + "homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby#readme", "keywords": [ "blog", "generator", @@ -158,7 +156,8 @@ "website" ], "license": "MIT", - "main": "cache-dir/gatsby-browser-entry.js", + "main": "cache-dir/commonjs/gatsby-browser-entry.js", + "module": "cache-dir/gatsby-browser-entry.js", "peerDependencies": { "react": "^16.4.2", "react-dom": "^16.4.2" @@ -171,13 +170,14 @@ "graphql": "^0.13.2" }, "scripts": { - "build": "rimraf dist && npm run build:src && npm run build:internal-plugins && npm run build:rawfiles", + "build": "npm run build:src && npm run build:internal-plugins && npm run build:rawfiles && npm run build:cjs", "build:internal-plugins": "copyfiles -u 1 src/internal-plugins/**/package.json dist", "build:rawfiles": "copyfiles -u 1 src/internal-plugins/**/raw_* dist", + "build:cjs": "babel cache-dir --out-dir cache-dir/commonjs --ignore **/__tests__", "build:src": "babel src --out-dir dist --source-maps --ignore **/gatsby-cli.js,**/raw_*,**/__tests__", "clean-test-bundles": "find test/ -type f -name bundle.js* -exec rm -rf {} +", + "prebuild": "rimraf dist && rimraf cache-dir/commonjs", "prepare": "cross-env NODE_ENV=production npm run build", - "test-coverage": "node_modules/.bin/nyc --reporter=lcov --reporter=text npm test", "watch": "rimraf dist && mkdir dist && npm run build:internal-plugins && npm run build:rawfiles && npm run build:src -- --watch" }, "types": "index.d.ts", diff --git a/packages/gatsby/src/bootstrap/__tests__/__snapshots__/resolve-module-exports.js.snap b/packages/gatsby/src/bootstrap/__tests__/__snapshots__/resolve-module-exports.js.snap new file mode 100644 index 0000000000000..323c1aa8ae208 --- /dev/null +++ b/packages/gatsby/src/bootstrap/__tests__/__snapshots__/resolve-module-exports.js.snap @@ -0,0 +1,10 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Resolve module exports Show meaningful error message for invalid JavaScript 1`] = ` +Array [ + "Syntax error in \\"/bad/file\\": +Unexpected token (1:13) +> 1 | const exports.blah = () = }}} + | ^", +] +`; diff --git a/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js b/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js index 50381a4358bab..9a253157d4a4b 100644 --- a/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js +++ b/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js @@ -1,5 +1,11 @@ jest.mock(`fs`) +jest.mock(`gatsby-cli/lib/reporter`, () => { + return { + panic: jest.fn(), + } +}) +const reporter = require(`gatsby-cli/lib/reporter`) const resolveModuleExports = require(`../resolve-module-exports`) let resolver @@ -101,11 +107,16 @@ describe(`Resolve module exports`, () => { return createElement(ReplaceComponentRenderer, { ...props, loader }) } `, + "/esmodule/export": ` + exports.__esModule = true; + exports.foo = ''; + `, } beforeEach(() => { resolver = jest.fn(arg => arg) require(`fs`).__setMockFiles(MOCK_FILE_INFO) + reporter.panic.mockClear() }) it(`Returns empty array for file paths that don't exist`, () => { @@ -118,9 +129,15 @@ describe(`Resolve module exports`, () => { expect(result).toEqual([]) }) - it(`Returns empty array for invalid JavaScript`, () => { - const result = resolveModuleExports(`/bad/file`) - expect(result).toEqual([]) + it(`Show meaningful error message for invalid JavaScript`, () => { + resolveModuleExports(`/bad/file`, resolver) + expect( + reporter.panic.mock.calls.map(c => + // Remove console colors + trim whitespace + // eslint-disable-next-line + c[0].replace(/\x1B[[(?);]{0,2}(;?\d)*./g, ``).trim() + ) + ).toMatchSnapshot() }) it(`Resolves an export`, () => { @@ -152,4 +169,9 @@ describe(`Resolve module exports`, () => { const result = resolveModuleExports(`/realistic/export`, resolver) expect(result).toEqual([`replaceHistory`, `replaceComponentRenderer`]) }) + + it(`Ignores exports.__esModule`, () => { + const result = resolveModuleExports(`/esmodule/export`, resolver) + expect(result).toEqual([`foo`]) + }) }) diff --git a/packages/gatsby/src/bootstrap/get-config-file.js b/packages/gatsby/src/bootstrap/get-config-file.js index 14c87d56950a5..55b1e705b17b5 100644 --- a/packages/gatsby/src/bootstrap/get-config-file.js +++ b/packages/gatsby/src/bootstrap/get-config-file.js @@ -32,27 +32,20 @@ module.exports = async function getConfigFile( }) ) if (!testRequireError(configPath, err)) { - report.error( + report.panic( `We encountered an error while trying to load your site's ${configName}. Please fix the error and try again.`, err ) - process.exit(1) } else if (nearMatch) { - console.log(``) - report.error( + report.panic( `It looks like you were trying to add the config file? Please rename "${chalk.bold( nearMatch )}" to "${chalk.bold(configName)}"` ) - console.log(``) - process.exit(1) } else if (existsSync(path.join(rootDir, `src`, configName))) { - console.log(``) - report.error( + report.panic( `Your ${configName} file is in the wrong place. You've placed it in the src/ directory. It must instead be at the root of your site next to your package.json file.` ) - console.log(``) - process.exit(1) } } diff --git a/packages/gatsby/src/bootstrap/index.js b/packages/gatsby/src/bootstrap/index.js index 4e7f99e198bae..fdd5ec63c8beb 100644 --- a/packages/gatsby/src/bootstrap/index.js +++ b/packages/gatsby/src/bootstrap/index.js @@ -8,16 +8,19 @@ const crypto = require(`crypto`) const del = require(`del`) const path = require(`path`) const convertHrtime = require(`convert-hrtime`) +const Promise = require(`bluebird`) const apiRunnerNode = require(`../utils/api-runner-node`) +const mergeGatsbyConfig = require(`../utils/merge-gatsby-config`) +const getBrowserslist = require(`../utils/browserslist`) const { graphql } = require(`graphql`) const { store, emitter } = require(`../redux`) const loadPlugins = require(`./load-plugins`) -const { initCache } = require(`../utils/cache`) const report = require(`gatsby-cli/lib/reporter`) const getConfigFile = require(`./get-config-file`) const tracer = require(`opentracing`).globalTracer() const preferDefault = require(`./prefer-default`) +const nodeTracking = require(`../db/node-tracking`) // Show stack trace on unhandled promises. process.on(`unhandledRejection`, (reason, p) => { @@ -51,10 +54,17 @@ module.exports = async (args: BootstrapArgs) => { const spanArgs = args.parentSpan ? { childOf: args.parentSpan } : {} const bootstrapSpan = tracer.startSpan(`bootstrap`, spanArgs) + // Start plugin runner which listens to the store + // and invokes Gatsby API based on actions. + require(`../redux/plugin-runner`) + + const directory = slash(args.directory) + const program = { ...args, + browserslist: getBrowserslist(directory), // Fix program directory path for windows env. - directory: slash(args.directory), + directory, } store.dispatch({ @@ -63,14 +73,44 @@ module.exports = async (args: BootstrapArgs) => { }) // Try opening the site's gatsby-config.js file. - let activity = report.activityTimer(`open and validate gatsby-config`, { + let activity = report.activityTimer(`open and validate gatsby-configs`, { parentSpan: bootstrapSpan, }) activity.start() - const config = await preferDefault( + let config = await preferDefault( getConfigFile(program.directory, `gatsby-config`) ) + // theme gatsby configs can be functions or objects + if (config && config.__experimentalThemes) { + const themesConfig = await Promise.mapSeries( + config.__experimentalThemes, + async plugin => { + const themeName = plugin.resolve || plugin + const themeConfig = plugin.options || {} + const theme = await preferDefault( + getConfigFile(themeName, `gatsby-config`) + ) + // if theme is a function, call it with the themeConfig + let themeConfigObj = theme + if (_.isFunction(theme)) { + themeConfigObj = theme(themeConfig) + } + // themes function as plugins too (gatsby-node, etc) + return { + ...themeConfigObj, + plugins: [ + ...(themeConfigObj.plugins || []), + // theme plugin is last so it's gatsby-node, etc can override it's declared plugins, like a normal site. + { resolve: themeName, options: themeConfig }, + ], + } + } + ).reduce(mergeGatsbyConfig, {}) + + config = mergeGatsbyConfig(themesConfig, config) + } + if (config && config.polyfill) { report.warn( `Support for custom Promise polyfills has been removed in Gatsby v2. We only support Babel 7's new automatic polyfilling behavior.` @@ -175,13 +215,39 @@ module.exports = async (args: BootstrapArgs) => { // Now that we know the .cache directory is safe, initialize the cache // directory. - initCache() + await fs.ensureDir(`${program.directory}/.cache`) // Ensure the public/static directory await fs.ensureDir(`${program.directory}/public/static`) activity.end() + if (process.env.GATSBY_DB_NODES === `loki`) { + const loki = require(`../db/loki`) + // Start the nodes database (in memory loki js with interval disk + // saves). If data was saved from a previous build, it will be + // loaded here + activity = report.activityTimer(`start nodes db`, { + parentSpan: bootstrapSpan, + }) + activity.start() + const dbSaveFile = `${program.directory}/.cache/loki/loki.db` + try { + await loki.start({ + saveFile: dbSaveFile, + }) + } catch (e) { + report.error( + `Error starting DB. Perhaps try deleting ${path.dirname(dbSaveFile)}` + ) + } + activity.end() + } + + // By now, our nodes database has been loaded, so ensure that we + // have tracked all inline objects + nodeTracking.trackDbNodes() + // Copy our site files to the root of the site. activity = report.activityTimer(`copy gatsby files`, { parentSpan: bootstrapSpan, @@ -316,7 +382,7 @@ module.exports = async (args: BootstrapArgs) => { parentSpan: bootstrapSpan, }) activity.start() - await require(`../schema`)({ parentSpan: activity.span }) + await require(`../schema`).build({ parentSpan: activity.span }) activity.end() // Collect resolvable extensions and attach to program. @@ -379,7 +445,7 @@ module.exports = async (args: BootstrapArgs) => { parentSpan: bootstrapSpan, }) activity.start() - await require(`../schema`)({ parentSpan: activity.span }) + await require(`../schema`).build({ parentSpan: activity.span }) activity.end() require(`../schema/type-conflict-reporter`).printConflicts() diff --git a/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap b/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap index b3ce0d7cae856..d0f253050336e 100644 --- a/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap +++ b/packages/gatsby/src/bootstrap/load-plugins/__tests__/__snapshots__/load-plugins.js.snap @@ -4,7 +4,7 @@ exports[`Load plugins Load plugins for a site 1`] = ` Array [ Object { "browserAPIs": Array [], - "id": "Plugin dev-404-page", + "id": "d48d1c52-fe48-53cb-8f08-aa4b47dde5a5", "name": "dev-404-page", "nodeAPIs": Array [ "createPagesStatefully", @@ -18,7 +18,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin load-babel-config", + "id": "1fc32581-893a-55e8-8927-bcd667e2b700", "name": "load-babel-config", "nodeAPIs": Array [ "onPreBootstrap", @@ -32,7 +32,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin internal-data-bridge", + "id": "a5079d69-ba80-53dc-82f9-0f440bd5448c", "name": "internal-data-bridge", "nodeAPIs": Array [ "sourceNodes", @@ -47,7 +47,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin prod-404", + "id": "f795702c-a3b8-5a88-88ee-5d06019d44fa", "name": "prod-404", "nodeAPIs": Array [ "onCreatePage", @@ -61,7 +61,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin query-runner", + "id": "84dad27f-1d44-51fc-ac56-4db2e5222995", "name": "query-runner", "nodeAPIs": Array [ "onCreatePage", @@ -75,7 +75,21 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin default-site-plugin", + "id": "6f4b2fa9-66b5-5205-a03f-140005a2cfe5", + "name": "webpack-theme-component-shadowing", + "nodeAPIs": Array [ + "onCreateWebpackConfig", + ], + "pluginOptions": Object { + "plugins": Array [], + }, + "resolve": "", + "ssrAPIs": Array [], + "version": "1.0.0", + }, + Object { + "browserAPIs": Array [], + "id": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", "name": "default-site-plugin", "nodeAPIs": Array [], "pluginOptions": Object { @@ -87,7 +101,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin gatsby-plugin-page-creator", + "id": "cc2293db-7635-5675-bb5e-05c41ff28688", "name": "gatsby-plugin-page-creator", "nodeAPIs": Array [ "createPagesStatefully", @@ -108,7 +122,7 @@ exports[`Load plugins Loads plugins defined with an object but without an option Array [ Object { "browserAPIs": Array [], - "id": "Plugin dev-404-page", + "id": "d48d1c52-fe48-53cb-8f08-aa4b47dde5a5", "name": "dev-404-page", "nodeAPIs": Array [ "createPagesStatefully", @@ -122,7 +136,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin load-babel-config", + "id": "1fc32581-893a-55e8-8927-bcd667e2b700", "name": "load-babel-config", "nodeAPIs": Array [ "onPreBootstrap", @@ -136,7 +150,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin internal-data-bridge", + "id": "a5079d69-ba80-53dc-82f9-0f440bd5448c", "name": "internal-data-bridge", "nodeAPIs": Array [ "sourceNodes", @@ -151,7 +165,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin prod-404", + "id": "f795702c-a3b8-5a88-88ee-5d06019d44fa", "name": "prod-404", "nodeAPIs": Array [ "onCreatePage", @@ -165,7 +179,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin query-runner", + "id": "84dad27f-1d44-51fc-ac56-4db2e5222995", "name": "query-runner", "nodeAPIs": Array [ "onCreatePage", @@ -179,6 +193,21 @@ Array [ }, Object { "browserAPIs": Array [], + "id": "6f4b2fa9-66b5-5205-a03f-140005a2cfe5", + "name": "webpack-theme-component-shadowing", + "nodeAPIs": Array [ + "onCreateWebpackConfig", + ], + "pluginOptions": Object { + "plugins": Array [], + }, + "resolve": "", + "ssrAPIs": Array [], + "version": "1.0.0", + }, + Object { + "browserAPIs": Array [], + "id": "c731052f-1e62-5905-9fb3-edc9057be8f1", "name": "TEST", "nodeAPIs": Array [], "pluginOptions": Object { @@ -190,7 +219,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin default-site-plugin", + "id": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", "name": "default-site-plugin", "nodeAPIs": Array [], "pluginOptions": Object { @@ -202,7 +231,7 @@ Array [ }, Object { "browserAPIs": Array [], - "id": "Plugin gatsby-plugin-page-creator", + "id": "cc2293db-7635-5675-bb5e-05c41ff28688", "name": "gatsby-plugin-page-creator", "nodeAPIs": Array [ "createPagesStatefully", diff --git a/packages/gatsby/src/bootstrap/load-plugins/__tests__/validate.js b/packages/gatsby/src/bootstrap/load-plugins/__tests__/validate.js index c466f3d32b81e..8e34ca28a1fbf 100644 --- a/packages/gatsby/src/bootstrap/load-plugins/__tests__/validate.js +++ b/packages/gatsby/src/bootstrap/load-plugins/__tests__/validate.js @@ -1,9 +1,17 @@ +jest.mock(`gatsby-cli/lib/reporter`, () => { + return { + panicOnBuild: jest.fn(), + warn: jest.fn(), + } +}) jest.mock(`../../resolve-module-exports`) +const reporter = require(`gatsby-cli/lib/reporter`) const { collatePluginAPIs, handleBadExports, handleMultipleReplaceRenderers, + warnOnIncompatiblePeerDependency, } = require(`../validate`) describe(`collatePluginAPIs`, () => { @@ -81,7 +89,7 @@ describe(`collatePluginAPIs`, () => { describe(`handleBadExports`, () => { it(`Does nothing when there are no bad exports`, async () => { - const result = handleBadExports({ + handleBadExports({ apis: { node: [`these`, `can`, `be`], browser: [`anything`, `as there`], @@ -93,12 +101,10 @@ describe(`handleBadExports`, () => { ssr: [], }, }) - - expect(result).toEqual(false) }) - it(`Returns true and logs a message when bad exports are detected`, async () => { - const result = handleBadExports({ + it(`Calls reporter.panicOnBuild when bad exports are detected`, async () => { + handleBadExports({ apis: { node: [``], browser: [``], @@ -115,8 +121,8 @@ describe(`handleBadExports`, () => { ], }, }) - // TODO: snapshot console.log()'s from handleBadExports? - expect(result).toEqual(true) + + expect(reporter.panicOnBuild.mock.calls.length).toBe(1) }) }) @@ -193,3 +199,27 @@ describe(`handleMultipleReplaceRenderers`, () => { expect(result).toMatchSnapshot() }) }) + +describe(`warnOnIncompatiblePeerDependency`, () => { + beforeEach(() => { + reporter.warn.mockClear() + }) + + it(`Does not warn when no peer dependency`, () => { + warnOnIncompatiblePeerDependency(`dummy-package`, { peerDependencies: {} }) + + expect(reporter.warn).not.toHaveBeenCalled() + }) + + it(`Warns on incompatible gatsby peer dependency`, async () => { + warnOnIncompatiblePeerDependency(`dummy-package`, { + peerDependencies: { + gatsby: `<2.0.0`, + }, + }) + + expect(reporter.warn).toHaveBeenCalledWith( + expect.stringContaining(`Plugin dummy-package is not compatible`) + ) + }) +}) diff --git a/packages/gatsby/src/bootstrap/load-plugins/index.js b/packages/gatsby/src/bootstrap/load-plugins/index.js index abe5001e5bc12..6122afbd7f4f1 100644 --- a/packages/gatsby/src/bootstrap/load-plugins/index.js +++ b/packages/gatsby/src/bootstrap/load-plugins/index.js @@ -52,8 +52,7 @@ module.exports = async (config = {}) => { const badExports = x.badExports // Show errors for any non-Gatsby APIs exported from plugins - const isBad = handleBadExports({ apis, badExports }) - if (isBad && process.env.NODE_ENV === `production`) process.exit(1) // TODO: change to panicOnBuild + handleBadExports({ apis, badExports }) // Show errors when ReplaceRenderer has been implemented multiple times flattenedPlugins = handleMultipleReplaceRenderers({ diff --git a/packages/gatsby/src/bootstrap/load-plugins/load.js b/packages/gatsby/src/bootstrap/load-plugins/load.js index 89e745e532c04..aa8769c6ad5ab 100644 --- a/packages/gatsby/src/bootstrap/load-plugins/load.js +++ b/packages/gatsby/src/bootstrap/load-plugins/load.js @@ -4,8 +4,10 @@ const fs = require(`fs`) const path = require(`path`) const crypto = require(`crypto`) const glob = require(`glob`) +const { warnOnIncompatiblePeerDependency } = require(`./validate`) const { store } = require(`../../redux`) const existsSync = require(`fs-exists-cached`).sync +const createNodeId = require(`../../utils/create-node-id`) function createFileContentHash(root, globPattern) { const hash = crypto.createHash(`md5`) @@ -18,6 +20,19 @@ function createFileContentHash(root, globPattern) { return hash.digest(`hex`) } +/** + * Make sure key is unique to plugin options. E.g there could + * be multiple source-filesystem plugins, with different names + * (docs, blogs). + * @param {*} name Name of the plugin + * @param {*} pluginObject + */ +const createPluginId = (name, pluginObject = null) => + createNodeId( + name + (pluginObject ? JSON.stringify(pluginObject.options) : ``), + `Plugin` + ) + /** * @typedef {Object} PluginInfo * @property {string} resolve The absolute path to the plugin @@ -44,11 +59,13 @@ function resolvePlugin(pluginName) { const packageJSON = JSON.parse( fs.readFileSync(`${resolvedPath}/package.json`, `utf-8`) ) + const name = packageJSON.name || pluginName + warnOnIncompatiblePeerDependency(name, packageJSON) return { resolve: resolvedPath, - name: packageJSON.name || pluginName, - id: `Plugin ${packageJSON.name || pluginName}`, + name, + id: createPluginId(name), version: packageJSON.version || createFileContentHash(resolvedPath, `**`), } @@ -69,10 +86,11 @@ function resolvePlugin(pluginName) { const packageJSON = JSON.parse( fs.readFileSync(`${resolvedPath}/package.json`, `utf-8`) ) + warnOnIncompatiblePeerDependency(packageJSON.name, packageJSON) return { resolve: resolvedPath, - id: `Plugin ${packageJSON.name}`, + id: createPluginId(packageJSON.name), name: packageJSON.name, version: packageJSON.version, } @@ -101,9 +119,11 @@ module.exports = (config = {}) => { }, } } else { + plugin.options = plugin.options || {} + // Plugins can have plugins. const subplugins = [] - if (plugin.options && plugin.options.plugins) { + if (plugin.options.plugins) { plugin.options.plugins.forEach(p => { subplugins.push(processPlugin(p)) }) @@ -114,8 +134,11 @@ module.exports = (config = {}) => { // Add some default values for tests as we don't actually // want to try to load anything during tests. if (plugin.resolve === `___TEST___`) { + const name = `TEST` + return { - name: `TEST`, + id: createPluginId(name, plugin), + name, pluginOptions: { plugins: [], }, @@ -126,6 +149,7 @@ module.exports = (config = {}) => { return { ...info, + id: createPluginId(info.name, plugin), pluginOptions: _.merge({ plugins: [] }, plugin.options), } } @@ -138,6 +162,7 @@ module.exports = (config = {}) => { `../../internal-plugins/internal-data-bridge`, `../../internal-plugins/prod-404`, `../../internal-plugins/query-runner`, + `../../internal-plugins/webpack-theme-component-shadowing`, ] internalPlugins.forEach(relPath => { const absPath = path.join(__dirname, relPath) @@ -154,7 +179,7 @@ module.exports = (config = {}) => { // Add the site's default "plugin" i.e. gatsby-x files in root of site. plugins.push({ resolve: slash(process.cwd()), - id: `Plugin default-site-plugin`, + id: createPluginId(`default-site-plugin`), name: `default-site-plugin`, version: createFileContentHash(process.cwd(), `gatsby-*`), pluginOptions: { diff --git a/packages/gatsby/src/bootstrap/load-plugins/validate.js b/packages/gatsby/src/bootstrap/load-plugins/validate.js index 605d6af41717b..edd7157b43349 100644 --- a/packages/gatsby/src/bootstrap/load-plugins/validate.js +++ b/packages/gatsby/src/bootstrap/load-plugins/validate.js @@ -1,5 +1,6 @@ const _ = require(`lodash`) - +const semver = require(`semver`) +const { version: gatsbyVersion } = require(`gatsby/package.json`) const reporter = require(`gatsby-cli/lib/reporter`) const resolveModuleExports = require(`../resolve-module-exports`) @@ -89,15 +90,14 @@ const getBadExportsMessage = (badExports, exportType, apis) => { const handleBadExports = ({ apis, badExports }) => { // Output error messages for all bad exports - let isBad = false _.toPairs(badExports).forEach(badItem => { const [exportType, entries] = badItem if (entries.length > 0) { - isBad = true - console.log(getBadExportsMessage(entries, exportType, apis[exportType])) + reporter.panicOnBuild( + getBadExportsMessage(entries, exportType, apis[exportType]) + ) } }) - return isBad } /** @@ -215,8 +215,22 @@ const handleMultipleReplaceRenderers = ({ apiToPlugins, flattenedPlugins }) => { return flattenedPlugins } +function warnOnIncompatiblePeerDependency(name, packageJSON) { + // Note: In the future the peer dependency should be enforced for all plugins. + const gatsbyPeerDependency = _.get(packageJSON, `peerDependencies.gatsby`) + if ( + gatsbyPeerDependency && + !semver.satisfies(gatsbyVersion, gatsbyPeerDependency) + ) { + reporter.warn( + `Plugin ${name} is not compatible with your gatsby version ${gatsbyVersion} - It requires gatsby@${gatsbyPeerDependency}` + ) + } +} + module.exports = { collatePluginAPIs, handleBadExports, handleMultipleReplaceRenderers, + warnOnIncompatiblePeerDependency, } diff --git a/packages/gatsby/src/bootstrap/resolve-module-exports.js b/packages/gatsby/src/bootstrap/resolve-module-exports.js index 1da3ca495caa5..30057db5361fe 100644 --- a/packages/gatsby/src/bootstrap/resolve-module-exports.js +++ b/packages/gatsby/src/bootstrap/resolve-module-exports.js @@ -2,6 +2,7 @@ const fs = require(`fs`) const traverse = require(`babel-traverse`).default const get = require(`lodash/get`) +const { codeFrameColumns } = require(`@babel/code-frame`) const { babelParseToAst } = require(`../utils/babel-parse-to-ast`) const report = require(`gatsby-cli/lib/reporter`) @@ -25,7 +26,30 @@ module.exports = (modulePath, resolver = require.resolve) => { } const code = fs.readFileSync(absPath, `utf8`) // get file contents - const ast = babelParseToAst(code, absPath) + let ast + try { + ast = babelParseToAst(code, absPath) + } catch (err) { + if (err instanceof SyntaxError) { + // Pretty print syntax errors + const codeFrame = codeFrameColumns( + code, + { + start: err.loc, + }, + { + highlightCode: true, + } + ) + + report.panic( + `Syntax error in "${absPath}":\n${err.message}\n${codeFrame}` + ) + } else { + // if it's not syntax error, just throw it + throw err + } + } let isCommonJS = false let isES6 = false @@ -51,6 +75,9 @@ module.exports = (modulePath, resolver = require.resolve) => { if (nodeLeft.type !== `MemberExpression`) return + // ignore marker property `__esModule` + if (get(nodeLeft, `property.name`) === `__esModule`) return + // get foo from `exports.foo = bar` if (get(nodeLeft, `object.name`) === `exports`) { isCommonJS = true diff --git a/packages/gatsby/src/commands/build.js b/packages/gatsby/src/commands/build.js index 3ed36006c0df9..6c69c009a85d4 100644 --- a/packages/gatsby/src/commands/build.js +++ b/packages/gatsby/src/commands/build.js @@ -17,7 +17,6 @@ function reportFailure(msg, err: Error) { type BuildArgs = { directory: string, sitePackageJson: object, - browserslist: string[], prefixPaths: boolean, noUglify: boolean, openTracingConfigFile: string, diff --git a/packages/gatsby/src/commands/develop.js b/packages/gatsby/src/commands/develop.js index 45542f60d83cb..afce9058d0980 100644 --- a/packages/gatsby/src/commands/develop.js +++ b/packages/gatsby/src/commands/develop.js @@ -26,6 +26,7 @@ const websocketManager = require(`../utils/websocket-manager`) const getSslCert = require(`../utils/get-ssl-cert`) const slash = require(`slash`) const { initTracer } = require(`../utils/tracer`) +const apiRunnerNode = require(`../utils/api-runner-node`) // const isInteractive = process.stdout.isTTY @@ -154,10 +155,23 @@ async function startServer(program) { const { prefix, url } = proxy app.use(`${prefix}/*`, (req, res) => { const proxiedUrl = url + req.originalUrl - req.pipe(request(proxiedUrl)).pipe(res) + req + .pipe( + request(proxiedUrl).on(`error`, err => { + const message = `Error when trying to proxy request "${ + req.originalUrl + }" to "${proxiedUrl}"` + + report.error(message, err) + res.status(500).end() + }) + ) + .pipe(res) }) } + await apiRunnerNode(`onCreateDevServer`, { app }) + // Render an HTML page and serve it. app.use((req, res, next) => { const parsedPath = parsePath(req.path) @@ -425,8 +439,13 @@ module.exports = async (program: any) => { printInstructions(program.sitePackageJson.name, urls, program.useYarn) printDeprecationWarnings() if (program.open) { - require(`opn`)(urls.localUrlForBrowser) - .catch(err => console.log(`${chalk.yellow(`warn`)} Browser not opened because no browser was found`)) + require(`opn`)(urls.localUrlForBrowser).catch(err => + console.log( + `${chalk.yellow( + `warn` + )} Browser not opened because no browser was found` + ) + ) } } diff --git a/packages/gatsby/src/commands/repl.js b/packages/gatsby/src/commands/repl.js index 00ce79e987e31..926f9af76d873 100644 --- a/packages/gatsby/src/commands/repl.js +++ b/packages/gatsby/src/commands/repl.js @@ -1,7 +1,13 @@ const repl = require(`repl`) const { graphql } = require(`graphql`) const bootstrap = require(`../bootstrap`) -const { store, loadNodeContent, getNodes, getNode } = require(`../redux`) +const { + loadNodeContent, + getNodes, + getNode, + getNodesByType, +} = require(`../db/nodes`) +const { store } = require(`../redux`) module.exports = async program => { // run bootstrap @@ -16,9 +22,10 @@ module.exports = async program => { pages, components, staticQueryComponents, - nodes, } = store.getState() + const nodes = getNodes() + const query = async query => { const result = await graphql(schema, query, {}, {}, {}) console.log(`query result: ${JSON.stringify(result)}`) @@ -35,6 +42,7 @@ module.exports = async program => { _.context.dataPaths = jsonDataPaths _.context.getNode = getNode _.context.getNodes = getNodes + _.context.getNodesByType = getNodesByType _.context.loadNodeContent = loadNodeContent _.context.nodes = [...nodes.entries()] _.context.pages = [...pages.entries()] diff --git a/packages/gatsby/src/commands/serve.js b/packages/gatsby/src/commands/serve.js index 6ae1637f94eac..96a7be7ea3698 100644 --- a/packages/gatsby/src/commands/serve.js +++ b/packages/gatsby/src/commands/serve.js @@ -33,11 +33,20 @@ module.exports = async program => { const server = app.listen(port, () => { let openUrlString = `http://localhost:${port}${pathPrefix}` - console.log(`${chalk.blue(`info`)} gatsby serve running at: ${chalk.bold(openUrlString)}`) + console.log( + `${chalk.blue(`info`)} gatsby serve running at: ${chalk.bold( + openUrlString + )}` + ) if (open) { console.log(`${chalk.blue(`info`)} Opening browser...`) - openurl(openUrlString) - .catch(err => console.log(`${chalk.yellow(`warn`)} Browser not opened because no browser was found`)) + openurl(openUrlString).catch(err => + console.log( + `${chalk.yellow( + `warn` + )} Browser not opened because no browser was found` + ) + ) } }) diff --git a/packages/gatsby/src/db/__tests__/fixtures/ensure-loki.js b/packages/gatsby/src/db/__tests__/fixtures/ensure-loki.js new file mode 100644 index 0000000000000..e02a612f28ce0 --- /dev/null +++ b/packages/gatsby/src/db/__tests__/fixtures/ensure-loki.js @@ -0,0 +1,8 @@ +const { backend } = require(`../../nodes`) + +module.exports = () => { + if (backend === `loki`) { + const lokiDb = require(`../../loki`) + beforeAll(lokiDb.start) + } +} diff --git a/packages/gatsby/src/db/__tests__/node-tracking-test.js b/packages/gatsby/src/db/__tests__/node-tracking-test.js new file mode 100644 index 0000000000000..491a346c95ed9 --- /dev/null +++ b/packages/gatsby/src/db/__tests__/node-tracking-test.js @@ -0,0 +1,126 @@ +const { store } = require(`../../redux`) +const { + boundActionCreators: { createNode }, +} = require(`../../redux/actions`) +const { getNode } = require(`../../db/nodes`) +const { findRootNodeAncestor, trackDbNodes } = require(`../node-tracking`) +const nodeTypes = require(`../../schema/build-node-types`) +const { run: runQuery } = require(`../nodes-query`) +require(`./fixtures/ensure-loki`)() + +function makeNode() { + return { + id: `id1`, + parent: null, + children: [], + inlineObject: { + field: `fieldOfFirstNode`, + }, + inlineArray: [1, 2, 3], + internal: { + type: `TestNode`, + contentDigest: `digest1`, + owner: `test`, + }, + } +} + +describe(`track root nodes`, () => { + beforeEach(() => { + const nodes = [makeNode()] + store.dispatch({ type: `DELETE_CACHE` }) + for (const node of nodes) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } + trackDbNodes() + createNode( + { + id: `id2`, + parent: null, + children: [], + inlineObject: { + field: `fieldOfSecondNode`, + }, + inlineArray: [1, 2, 3], + internal: { + type: `TestNode`, + contentDigest: `digest2`, + }, + }, + { + name: `test`, + } + ) + }) + describe(`Tracks nodes read from redux state cache`, () => { + it(`Tracks inline objects`, () => { + const node = getNode(`id1`) + const inlineObject = node.inlineObject + const trackedRootNode = findRootNodeAncestor(inlineObject) + + expect(trackedRootNode).toEqual(node) + }) + it(`Tracks inline arrays`, () => { + const node = getNode(`id1`) + const inlineObject = node.inlineArray + const trackedRootNode = findRootNodeAncestor(inlineObject) + + expect(trackedRootNode).toEqual(node) + }) + it(`Doesn't track copied objects`, () => { + const node = getNode(`id1`) + const copiedInlineObject = { ...node.inlineObject } + const trackedRootNode = findRootNodeAncestor(copiedInlineObject) + + expect(trackedRootNode).not.toEqual(node) + }) + }) + describe(`Tracks nodes created using createNode action`, () => { + it(`Tracks inline objects`, () => { + const node = getNode(`id2`) + const inlineObject = node.inlineObject + const trackedRootNode = findRootNodeAncestor(inlineObject) + + expect(trackedRootNode).toEqual(node) + }) + }) + + describe(`Tracks nodes returned by queries`, () => { + let type + + beforeAll(async () => { + type = (await nodeTypes.buildAll({})).testNode.nodeObjectType + }) + + it(`Tracks objects when running query without filter`, async () => { + const result = await runQuery({ + queryArgs: {}, + gqlType: type, + firstOnly: false, + }) + + expect(result.length).toEqual(2) + expect(findRootNodeAncestor(result[0].inlineObject)).toEqual(result[0]) + expect(findRootNodeAncestor(result[1].inlineObject)).toEqual(result[1]) + }) + + it(`Tracks objects when running query with filter`, async () => { + const result = await runQuery({ + queryArgs: { + filter: { + inlineObject: { + field: { + eq: `fieldOfSecondNode`, + }, + }, + }, + }, + gqlType: type, + firstOnly: false, + }) + + expect(result.length).toEqual(1) + expect(findRootNodeAncestor(result[0].inlineObject)).toEqual(result[0]) + }) + }) +}) diff --git a/packages/gatsby/src/db/__tests__/nodes.js b/packages/gatsby/src/db/__tests__/nodes.js new file mode 100644 index 0000000000000..61fc4437822de --- /dev/null +++ b/packages/gatsby/src/db/__tests__/nodes.js @@ -0,0 +1,347 @@ +const { actions } = require(`../../redux/actions`) +const { getNode, getNodes } = require(`../nodes`) +const { store } = require(`../../redux`) +require(`./fixtures/ensure-loki`)() + +describe(`nodes db tests`, () => { + beforeEach(() => { + store.dispatch({ type: `DELETE_CACHE` }) + }) + it(`deletes previously transformed children nodes when the parent node is updated`, () => { + store.dispatch( + actions.createNode( + { + id: `hi`, + children: [], + parent: null, + internal: { + contentDigest: `hasdfljds`, + type: `Test`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi-1`, + children: [], + parent: `hi`, + internal: { + contentDigest: `hasdfljds-1`, + type: `Test-1`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createParentChildLink( + { + parent: getNode(`hi`), + child: getNode(`hi-1`), + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi-1-1`, + children: [], + parent: `hi-1`, + internal: { + contentDigest: `hasdfljds-1-1`, + type: `Test-1-1`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createParentChildLink( + { + parent: getNode(`hi-1`), + child: getNode(`hi-1-1`), + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi`, + children: [], + parent: `test`, + internal: { + contentDigest: `hasdfljds2`, + type: `Test`, + }, + }, + { + name: `tests`, + } + ) + ) + expect(getNodes()).toHaveLength(1) + }) + + it(`deletes previously transformed children nodes when the parent node is deleted`, () => { + store.dispatch( + actions.createNode( + { + id: `hi`, + children: [], + parent: `test`, + internal: { + contentDigest: `hasdfljds`, + type: `Test`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi2`, + children: [], + parent: `test`, + internal: { + contentDigest: `hasdfljds`, + type: `Test`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi-1`, + children: [], + parent: `hi`, + internal: { + contentDigest: `hasdfljds-1`, + type: `Test-1`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createParentChildLink( + { + parent: getNode(`hi`), + child: getNode(`hi-1`), + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi-1-1`, + children: [], + parent: `hi-1`, + internal: { + contentDigest: `hasdfljds-1-1`, + type: `Test-1-1`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createParentChildLink( + { + parent: getNode(`hi-1`), + child: getNode(`hi-1-1`), + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.deleteNode( + { + node: getNode(`hi`), + }, + { + name: `tests`, + } + ) + ) + expect(getNodes()).toHaveLength(1) + }) + it(`deletes previously transformed children nodes when parent nodes are deleted`, () => { + store.dispatch( + actions.createNode( + { + id: `hi`, + children: [], + parent: `test`, + internal: { + contentDigest: `hasdfljds`, + type: `Test`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi-1`, + children: [], + parent: `hi`, + internal: { + contentDigest: `hasdfljds-1`, + type: `Test-1`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createParentChildLink( + { + parent: getNode(`hi`), + child: getNode(`hi-1`), + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createNode( + { + id: `hi-1-1`, + children: [], + parent: `hi-1`, + internal: { + contentDigest: `hasdfljds-1-1`, + type: `Test-1-1`, + }, + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.createParentChildLink( + { + parent: getNode(`hi-1`), + child: getNode(`hi-1-1`), + }, + { + name: `tests`, + } + ) + ) + store.dispatch( + actions.deleteNode( + { node: getNode(`hi`) }, + { + name: `tests`, + } + ) + ) + expect(getNodes()).toHaveLength(0) + }) + it(`allows deleting nodes`, () => { + actions.createNode( + { + id: `hi`, + children: [], + parent: `test`, + internal: { + contentDigest: `hasdfljds`, + type: `Test`, + }, + pickle: true, + deep: { + array: [ + 0, + 1, + { + boom: true, + }, + ], + }, + }, + { + name: `tests`, + } + ) + actions.deleteNode({ + node: getNode(`hi`), + }) + expect(getNode(`hi`)).toBeUndefined() + }) + + it(`warns when using old deleteNode signature `, () => { + console.warn = jest.fn() + store.dispatch( + actions.createNode( + { + id: `hi`, + children: [], + parent: `test`, + internal: { + contentDigest: `hasdfljds`, + type: `Test`, + }, + }, + { + name: `tests`, + } + ) + ) + expect(getNode(`hi`)).toMatchObject({ id: `hi` }) + store.dispatch( + actions.deleteNode(`hi`, getNode(`hi`), { + name: `tests`, + }) + ) + expect(getNode(`hi`)).toBeUndefined() + const deprecationNotice = `Calling "deleteNode" with a nodeId is deprecated. Please pass an object containing a full node instead: deleteNode({ node })` + expect(console.warn).toHaveBeenCalledWith(deprecationNotice) + console.warn.mockRestore() + }) + + it(`does not crash when delete node is called on undefined`, () => { + actions.deleteNode(undefined, { + name: `tests`, + }) + expect(getNodes()).toHaveLength(0) + }) +}) diff --git a/packages/gatsby/src/db/loki/__tests__/index.js b/packages/gatsby/src/db/loki/__tests__/index.js new file mode 100644 index 0000000000000..45e0988c4f064 --- /dev/null +++ b/packages/gatsby/src/db/loki/__tests__/index.js @@ -0,0 +1,12 @@ +const { colls, getDb, start } = require(`../index`) + +describe(`db`, () => { + start() + it(`should create system collections`, () => { + const db = getDb() + const nodeMetaColl = db.getCollection(colls.nodeMeta.name) + const nodeTypesColl = db.getCollection(colls.nodeTypes.name) + expect(nodeMetaColl).toBeDefined() + expect(nodeTypesColl).toBeDefined() + }) +}) diff --git a/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js b/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js new file mode 100644 index 0000000000000..fbde8ade5970e --- /dev/null +++ b/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js @@ -0,0 +1,56 @@ +if (process.env.GATSBY_DB_NODES === `loki`) { + const _ = require(`lodash`) + const nodeTypes = require(`../../../schema/build-node-types`) + const { store } = require(`../../../redux`) + const runQuery = require(`../nodes-query`) + const { getNodeTypeCollection } = require(`../nodes`) + const lokiDb = require(`../index`) + + function makeNodes() { + return [ + { + id: `1`, + internal: { type: `Test` }, + children: [], + foo: `bar`, + }, + ] + } + + async function runQueries(nodes, n) { + for (const node of nodes) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } + const gqlType = nodeTypes.buildNodeObjectType({ + typeName: `Test`, + nodes, + pluginFields: [], + processedTypes: {}, + }) + const queryArgs = { filter: { foo: { eq: `bar` } } } + const args = { gqlType, queryArgs } + return await Promise.all(_.map(new Array(n), () => runQuery(args))) + } + + describe(`query indexing`, () => { + beforeEach(async () => { + await lokiDb.start() + store.dispatch({ type: `DELETE_CACHE` }) + }) + it(`does not create index when query run 1 time`, async () => { + await runQueries(makeNodes(), 1) + const coll = getNodeTypeCollection(`Test`) + expect(coll.binaryIndices.hasOwnProperty(`foo`)).toEqual(false) + }) + + it(`creates index when query run 5 times`, async () => { + await runQueries(makeNodes(), 5) + const coll = getNodeTypeCollection(`Test`) + expect(coll.binaryIndices.hasOwnProperty(`foo`)).toEqual(true) + }) + }) +} else { + it(`skipping loki nodes-query-test`, () => { + expect(true).toEqual(true) + }) +} diff --git a/packages/gatsby/src/db/loki/__tests__/nodes.js b/packages/gatsby/src/db/loki/__tests__/nodes.js new file mode 100644 index 0000000000000..b520d666a05ac --- /dev/null +++ b/packages/gatsby/src/db/loki/__tests__/nodes.js @@ -0,0 +1,30 @@ +const { start, getDb, colls } = require(`../index`) +const { createNode, deleteNode } = require(`../nodes`) + +const type = `Test` +const node = { + id: `1`, + foo: `bar`, + internal: { type: type }, +} + +beforeAll(start) + +describe(`node`, () => { + it(`should create node ID index`, () => { + createNode(node) + const nodeMetaColl = getDb().getCollection(colls.nodeMeta.name) + expect(nodeMetaColl).toBeDefined() + const nodeMeta = nodeMetaColl.by(`id`, node.id) + const nodeTypeColl = getDb().getCollection(nodeMeta.typeCollName) + expect(nodeTypeColl).toBeDefined() + expect(nodeTypeColl.name).toEqual(`gatsby:nodeType:${type}`) + }) + + it(`should delete node ID index`, () => { + deleteNode(node) + const nodeMetaColl = getDb().getCollection(colls.nodeMeta.name) + const nodeMeta = nodeMetaColl.by(`id`, node.id) + expect(nodeMeta).toBeUndefined() + }) +}) diff --git a/packages/gatsby/src/db/loki/custom-comparators.js b/packages/gatsby/src/db/loki/custom-comparators.js new file mode 100644 index 0000000000000..78eef70924d70 --- /dev/null +++ b/packages/gatsby/src/db/loki/custom-comparators.js @@ -0,0 +1,218 @@ +// Gatsby has very specific sorting requirements. Specifically, +// undefined > null > everything else. So, if an orderby `desc` is +// specified, then nulls and undefined values are of higher rank. This +// is due to the use of lodash's `orderBy` function in +// `run-sift`. +// +// The below functions are alternate versions of the comparators used +// by loki that match lodash's behavior +// +// Note: This is quite hacky and not officially supported by Loki, but +// works quite well. +// +// The below implementation is a direct copy of Loki, except that +// undefined's rank is 11, and null's rank is 10. Whereas in loki, +// they are both of rank 1 + +function ltHelper(prop1, prop2, equal) { + var cv1, cv2, t1, t2 + + // if one of the params is falsy or strictly true or not equal to itself + // 0, 0.0, "", NaN, null, undefined, not defined, false, true + if ( + !prop1 || + !prop2 || + prop1 === true || + prop2 === true || + prop1 !== prop1 || + prop2 !== prop2 + ) { + switch (prop1) { + case undefined: + t1 = 11 + break + case null: + t1 = 10 + break + case false: + t1 = 3 + break + case true: + t1 = 4 + break + case ``: + t1 = 5 + break + // if strict equal probably 0 so sort higher, otherwise + // probably NaN so sort lower than even null + default: + t1 = prop1 === prop1 ? 9 : 0 + break + } + + switch (prop2) { + case undefined: + t2 = 11 + break + case null: + t2 = 10 + break + case false: + t2 = 3 + break + case true: + t2 = 4 + break + case ``: + t2 = 5 + break + default: + t2 = prop2 === prop2 ? 9 : 0 + break + } + + // one or both is edge case + if (t1 !== 9 || t2 !== 9) { + return t1 === t2 ? equal : t1 < t2 + } + } + + // if both are numbers (string encoded or not), compare as numbers + cv1 = Number(prop1) + cv2 = Number(prop2) + + if (cv1 === cv1 && cv2 === cv2) { + if (cv1 < cv2) return true + if (cv1 > cv2) return false + return equal + } + + if (cv1 === cv1 && cv2 !== cv2) { + return true + } + + if (cv2 === cv2 && cv1 !== cv1) { + return false + } + + if (prop1 < prop2) return true + if (prop1 > prop2) return false + if (prop1 == prop2) return equal + + // not strict equal nor less than nor gt so must be mixed types, convert to string and use that to compare + cv1 = prop1.toString() + cv2 = prop2.toString() + + if (cv1 < cv2) { + return true + } + + if (cv1 == cv2) { + return equal + } + + return false +} + +function gtHelper(prop1, prop2, equal) { + var cv1, cv2, t1, t2 + + // 'falsy' and Boolean handling + if ( + !prop1 || + !prop2 || + prop1 === true || + prop2 === true || + prop1 !== prop1 || + prop2 !== prop2 + ) { + switch (prop1) { + case undefined: + t1 = 11 + break + case null: + t1 = 10 + break + case false: + t1 = 3 + break + case true: + t1 = 4 + break + case ``: + t1 = 5 + break + // NaN 0 + default: + t1 = prop1 === prop1 ? 9 : 0 + break + } + + switch (prop2) { + case undefined: + t2 = 11 + break + case null: + t2 = 10 + break + case false: + t2 = 3 + break + case true: + t2 = 4 + break + case ``: + t2 = 5 + break + default: + t2 = prop2 === prop2 ? 9 : 0 + break + } + + // one or both is edge case + if (t1 !== 9 || t2 !== 9) { + return t1 === t2 ? equal : t1 > t2 + } + } + + // if both are numbers (string encoded or not), compare as numbers + cv1 = Number(prop1) + cv2 = Number(prop2) + if (cv1 === cv1 && cv2 === cv2) { + if (cv1 > cv2) return true + if (cv1 < cv2) return false + return equal + } + + if (cv1 === cv1 && cv2 !== cv2) { + return false + } + + if (cv2 === cv2 && cv1 !== cv1) { + return true + } + + if (prop1 > prop2) return true + if (prop1 < prop2) return false + if (prop1 == prop2) return equal + + // not strict equal nor less than nor gt so must be dates or mixed types + // convert to string and use that to compare + cv1 = prop1.toString() + cv2 = prop2.toString() + + if (cv1 > cv2) { + return true + } + + if (cv1 == cv2) { + return equal + } + + return false +} + +module.exports = { + ltHelper, + gtHelper, +} diff --git a/packages/gatsby/src/db/loki/index.js b/packages/gatsby/src/db/loki/index.js new file mode 100644 index 0000000000000..09ab744376788 --- /dev/null +++ b/packages/gatsby/src/db/loki/index.js @@ -0,0 +1,126 @@ +const _ = require(`lodash`) +const fs = require(`fs-extra`) +const path = require(`path`) +const loki = require(`@moocar/lokijs`) +const uuidv4 = require(`uuid/v4`) +const customComparators = require(`./custom-comparators`) + +// Ensure sorting behavior matches old lodash `orderBy` +// implementation. See `custom-comparators.js` for why. +loki.Comparators.lt = customComparators.ltHelper +loki.Comparators.gt = customComparators.gtHelper + +// Loki is a document store with the same semantics as mongo. This +// means there are no tables or relationships. Just a bunch of +// collections, each with objects. +// +// Gatsby stores nodes in collections by splitting them up by their +// `node.internal.type`. All nodes of a particular type go in 1 +// collection. The below `colls` object contains the metadata for +// these collections, and the "meta collections" used to track them. +// +// You won't use these directly. They are used by the collection +// functions in `./nodes.js`. E.g `getTypeCollName()` and +// `getNodeTypeCollection` +const colls = { + // Each object has keys `id` and `typeCollName`. It's a way of + // quickly looking up the collection that a node is contained in. + // E.g { id: `someNodeId`, typeCollName: `gatsby:nodeType:myType` } + nodeMeta: { + name: `gatsby:nodeMeta`, + options: { + unique: [`id`], + indices: [`id`], + }, + }, + // The list of all node type collections. Each object has keys + // `type` and `collName` so you can quickly look up the collection + // name for a node type. + // e.g { type: `myType`, collName: `gatsby:nodeType:myType` } + nodeTypes: { + name: `gatsby:nodeTypes`, + options: { + unique: [`type`, `collName`], + indices: [`type`], + }, + }, +} + +// Must be set using `start()` +let db + +/** + * Ensures that the collections that support nodes have been + * created. See `colls` var in this file + */ +function ensureNodeCollections(db) { + _.forEach(colls, collInfo => { + const { name, options } = collInfo + db.addCollection(name, options) + }) +} + +function startFileDb(saveFile) { + return new Promise((resolve, reject) => { + const dbOptions = { + autoload: true, + autoloadCallback: err => { + if (err) { + reject(err) + } else { + resolve() + } + }, + autosave: true, + autosaveInterval: 1000, + } + db = new loki(saveFile, dbOptions) + }) +} + +async function startInMemory() { + // Use uuid purely for a random name + db = new loki(uuidv4()) +} + +/** + * Starts a loki database. If the file already exists, it will be + * loaded as the database state. If not, a new database will be + * created. If `saveFile` is omitted, an in-memory DB will be created. + * + * @param {string} saveFile on disk file that the database will be + * saved and loaded from. If this is omitted, an in-memory database + * will be created instead + * @returns {Promise} promise that is resolved once the database and + * the existing state has been loaded (if there was an existing + * saveFile) + */ +async function start({ saveFile } = {}) { + if (saveFile && !_.isString(saveFile)) { + throw new Error(`saveFile must be a path`) + } + if (saveFile) { + const saveDir = path.dirname(saveFile) + await fs.ensureDir(saveDir) + await startFileDb(saveFile) + } else { + await startInMemory() + } + ensureNodeCollections(db) +} + +/** + * Returns a reference to the database. If undefined, the db has not been + * initalized yet. Call `start()` + * + * @returns {Object} database, or undefined + */ +function getDb() { + return db +} + +module.exports = { + start, + getDb, + colls, +} diff --git a/packages/gatsby/src/db/loki/nodes-query.js b/packages/gatsby/src/db/loki/nodes-query.js new file mode 100644 index 0000000000000..3620b08c05cb3 --- /dev/null +++ b/packages/gatsby/src/db/loki/nodes-query.js @@ -0,0 +1,309 @@ +const _ = require(`lodash`) +const prepareRegex = require(`../../utils/prepare-regex`) +const { getNodeTypeCollection } = require(`./nodes`) +const sift = require(`sift`) +const { emitter } = require(`../../redux`) + +// Cleared on DELETE_CACHE +const fieldUsages = {} +const FIELD_INDEX_THRESHOLD = 5 + +emitter.on(`DELETE_CACHE`, () => { + for (var field in fieldUsages) { + delete fieldUsages[field] + } +}) + +// Takes a raw graphql filter and converts it into a mongo-like args +// object that can be understood by the `sift` library. E.g `eq` +// becomes `$eq` +function siftifyArgs(object) { + const newObject = {} + _.each(object, (v, k) => { + if (_.isPlainObject(v)) { + if (k === `elemMatch`) { + k = `$elemMatch` + } + newObject[k] = siftifyArgs(v) + } else { + // Compile regex first. + if (k === `regex`) { + newObject[`$regex`] = prepareRegex(v) + } else if (k === `glob`) { + const Minimatch = require(`minimatch`).Minimatch + const mm = new Minimatch(v) + newObject[`$regex`] = mm.makeRe() + } else { + newObject[`$${k}`] = v + } + } + }) + return newObject +} + +// filter nodes using the `sift` library. But isn't this a loki query +// file? Yes, but we need to support all functionality provided by +// `run-sift`, and there are some operators that loki can't +// support. Like `elemMatch`, so for those fields, we fall back to +// sift +function runSift(nodes, query) { + if (nodes) { + const siftQuery = { + $elemMatch: siftifyArgs(query), + } + return sift(siftQuery, nodes) + } else { + return null + } +} + +// Takes a raw graphql filter and converts it into a mongo-like args +// object that can be understood by loki. E.g `eq` becomes +// `$eq`. gqlFilter should be the raw graphql filter returned from +// graphql-js. e.g gqlFilter: +// +// { +// internal: { +// type: { +// eq: "TestNode" +// }, +// content: { +// glob: "et" +// } +// }, +// id: { +// glob: "12*" +// } +// } +// +// would return +// +// { +// internal: { +// type: { +// $eq: "TestNode" // append $ to eq +// }, +// content: { +// $regex: new MiniMatch(v) // convert glob to regex +// } +// }, +// id: { +// $regex: // as above +// } +// } +function toMongoArgs(gqlFilter, lastFieldType) { + const mongoArgs = {} + _.each(gqlFilter, (v, k) => { + if (_.isPlainObject(v)) { + if (k === `elemMatch`) { + // loki doesn't support elemMatch, so use sift (see runSift + // comment above) + mongoArgs[`$where`] = obj => { + const result = runSift(obj, v) + return result && result.length > 0 + } + } else { + const gqlFieldType = lastFieldType.getFields()[k].type + mongoArgs[k] = toMongoArgs(v, gqlFieldType) + } + } else { + // Compile regex first. + if (k === `regex`) { + mongoArgs[`$regex`] = prepareRegex(v) + } else if (k === `glob`) { + const Minimatch = require(`minimatch`).Minimatch + const mm = new Minimatch(v) + mongoArgs[`$regex`] = mm.makeRe() + } else if ( + k === `in` && + lastFieldType && + lastFieldType.constructor.name === `GraphQLList` + ) { + mongoArgs[`$containsAny`] = v + } else if ( + k === `nin` && + lastFieldType.constructor.name === `GraphQLList` + ) { + mongoArgs[`$containsNone`] = v + } else if (k === `ne` && v === null) { + mongoArgs[`$ne`] = undefined + } else if (k === `nin` && lastFieldType.name === `Boolean`) { + mongoArgs[`$nin`] = v.concat([false]) + } else { + mongoArgs[`$${k}`] = v + } + } + }) + return mongoArgs +} + +// Converts a nested mongo args object into a dotted notation. acc +// (accumulator) must be a reference to an empty object. The converted +// fields will be added to it. E.g +// +// { +// internal: { +// type: { +// $eq: "TestNode" +// }, +// content: { +// $regex: new MiniMatch(v) +// } +// }, +// id: { +// $regex: newMiniMatch(v) +// } +// } +// +// After execution, acc would be: +// +// { +// "internal.type": { +// $eq: "TestNode" +// }, +// "internal.content": { +// $regex: new MiniMatch(v) +// }, +// "id": { +// $regex: // as above +// } +// } +function dotNestedFields(acc, o, path = ``) { + if (_.isPlainObject(o)) { + if (_.isPlainObject(_.sample(o))) { + _.forEach(o, (v, k) => { + dotNestedFields(acc, v, path + `.` + k) + }) + } else { + acc[_.trimStart(path, `.`)] = o + } + } +} + +// The query language that Gatsby has used since day 1 is `sift`. Both +// sift and loki are mongo-like query languages, but they have some +// subtle differences. One is that in sift, a nested filter such as +// `{foo: {bar: {ne: true} } }` will return true if the foo field +// doesn't exist, is null, or bar is null. Whereas loki will return +// false if the foo field doesn't exist or is null. This ensures that +// loki queries behave like sift +function fixNeTrue(flattenedFields) { + return _.transform(flattenedFields, (result, v, k) => { + if (v[`$ne`] === true) { + const s = k.split(`.`) + if (s.length > 1) { + result[s[0]] = { + $or: [ + { + $exists: false, + }, + { + $where: obj => obj === null || obj[s[1]] !== true, + }, + ], + } + return result + } + } + result[k] = v + return result + }) +} + +// Converts graphQL args to a loki filter +function convertArgs(gqlArgs, gqlType) { + const dottedFields = {} + dotNestedFields(dottedFields, toMongoArgs(gqlArgs.filter, gqlType)) + return fixNeTrue(dottedFields) +} + +// Converts graphql Sort args into the form expected by loki, which is +// a vector where the first value is a field name, and the second is a +// boolean `isDesc`. Nested fields delimited by `___` are replaced by +// periods. E.g +// +// { +// fields: [ `frontmatter___date`, `id` ], +// order: `desc` +// } +// +// would return +// +// [ [ `frontmatter.date`, true ], [ `id`, false ] ] +// +// Note that the GraphQL Sort API provided by Gatsby doesn't allow the +// order to be specified per field. The sift implementation uses +// lodash `orderBy`, but only applies the sort order to the first +// field. So we do the same here +function toSortFields(sortArgs) { + const { fields, order } = sortArgs + const lokiSortFields = [] + for (let i = 0; i < fields.length; i++) { + const dottedField = fields[i].replace(/___/g, `.`) + const isDesc = i === 0 ? _.lowerCase(order) === `desc` : false + lokiSortFields.push([dottedField, isDesc]) + } + return lokiSortFields +} + +// Every time we run a query, we increment a counter for each of its +// fields, so that we can determine which fields are used the +// most. Any time a field is seen more than `FIELD_INDEX_THRESHOLD` +// times, we create a loki index so that future queries with that +// field will execute faster. +function ensureFieldIndexes(coll, lokiArgs) { + _.forEach(lokiArgs, (v, fieldName) => { + // Increment the usages of the field + _.update(fieldUsages, fieldName, n => (n ? n + 1 : 1)) + // If we have crossed the threshold, then create the index + if (_.get(fieldUsages, fieldName) === FIELD_INDEX_THRESHOLD) { + // Loki ensures that this is a noop if index already exists. E.g + // if it was previously added via a sort field + coll.ensureIndex(fieldName) + } + }) +} + +/** + * Runs the graphql query over the loki nodes db. + * + * @param {Object} args. Object with: + * + * {Object} gqlType: built during `./build-node-types.js` + * + * {Object} queryArgs: The raw graphql query as a js object. E.g `{ + * filter: { fields { slug: { eq: "/somepath" } } } }` + * + * {Object} context: The context from the QueryJob + * + * {boolean} firstOnly: Whether to return the first found match, or + * all matching results + * + * @returns {promise} A promise that will eventually be resolved with + * a collection of matching objects (even if `firstOnly` is true) + */ +async function runQuery({ gqlType, queryArgs, context = {}, firstOnly }) { + // Clone args as for some reason graphql-js removes the constructor + // from nested objects which breaks a check in sift.js. + const gqlArgs = JSON.parse(JSON.stringify(queryArgs)) + const lokiArgs = convertArgs(gqlArgs, gqlType) + const coll = getNodeTypeCollection(gqlType.name) + ensureFieldIndexes(coll, lokiArgs) + let chain = coll.chain().find(lokiArgs, firstOnly) + + if (gqlArgs.sort) { + const sortFields = toSortFields(gqlArgs.sort) + + // Create an index for each sort field. Indexing requires sorting + // so we lose nothing by ensuring an index is added for each sort + // field. Loki ensures this is a noop if the index already exists + for (const sortField of sortFields) { + coll.ensureIndex(sortField[0]) + } + chain = chain.compoundsort(sortFields) + } + + return chain.data() +} + +module.exports = runQuery diff --git a/packages/gatsby/src/db/loki/nodes.js b/packages/gatsby/src/db/loki/nodes.js new file mode 100644 index 0000000000000..9407c552100a7 --- /dev/null +++ b/packages/gatsby/src/db/loki/nodes.js @@ -0,0 +1,341 @@ +const _ = require(`lodash`) +const invariant = require(`invariant`) +const { getDb, colls } = require(`./index`) + +///////////////////////////////////////////////////////////////////// +// Node collection metadata +///////////////////////////////////////////////////////////////////// + +function makeTypeCollName(type) { + return `gatsby:nodeType:${type}` +} + +/** + * Creates a collection that will contain nodes of a certain type. The + * name of the collection for type `MyType` will be something like + * `gatsby:nodeType:MyType` (see `makeTypeCollName`) + */ +function createNodeTypeCollection(type) { + const collName = makeTypeCollName(type) + const nodeTypesColl = getDb().getCollection(colls.nodeTypes.name) + invariant(nodeTypesColl, `Collection ${colls.nodeTypes.name} should exist`) + nodeTypesColl.insert({ type, collName }) + // TODO what if `addCollection` fails? We will have inserted into + // nodeTypesColl but no collection will exist. Need to make this + // into a transaction + const options = { + unique: [`id`], + indices: [`id`], + disableMeta: true, + } + const coll = getDb().addCollection(collName, options) + return coll +} + +/** + * Returns the name of the collection that contains nodes of the + * specified type, where type is the node's `node.internal.type` + */ +function getTypeCollName(type) { + const nodeTypesColl = getDb().getCollection(colls.nodeTypes.name) + invariant(nodeTypesColl, `Collection ${colls.nodeTypes.name} should exist`) + let nodeTypeInfo = nodeTypesColl.by(`type`, type) + return nodeTypeInfo ? nodeTypeInfo.collName : undefined +} + +/** + * Returns a reference to the collection that contains nodes of the + * specified type, where type is the node's `node.internal.type` + */ +function getNodeTypeCollection(type) { + const typeCollName = getTypeCollName(type) + let coll + if (typeCollName) { + coll = getDb().getCollection(typeCollName) + invariant( + coll, + `Type [${type}] Collection doesn't exist for nodeTypeInfo: [${typeCollName}]` + ) + return coll + } else { + return undefined + } +} + +/** + * Deletes all empty node type collections, unless `force` is true, in + * which case it deletes the collections even if they have nodes in + * them + */ +function deleteNodeTypeCollections(force = false) { + const nodeTypesColl = getDb().getCollection(colls.nodeTypes.name) + // find() returns all objects in collection + const nodeTypes = nodeTypesColl.find() + for (const nodeType of nodeTypes) { + let coll = getDb().getCollection(nodeType.collName) + if (coll.count() === 0 || force) { + getDb().removeCollection(coll.name) + nodeTypesColl.remove(nodeType) + } + } +} + +/** + * Deletes all nodes from all the node type collections, including the + * id -> type metadata. There will be no nodes related data in loki + * after this is called + */ +function deleteAll() { + const db = getDb() + if (db) { + deleteNodeTypeCollections(true) + db.getCollection(colls.nodeMeta.name).clear() + } +} + +///////////////////////////////////////////////////////////////////// +// Queries +///////////////////////////////////////////////////////////////////// + +/** + * Returns the node with `id` == id, or null if not found + */ +function getNode(id) { + if (!id) { + return null + } + // First, find out which collection the node is in + const nodeMetaColl = getDb().getCollection(colls.nodeMeta.name) + invariant(nodeMetaColl, `nodeMeta collection should exist`) + const nodeMeta = nodeMetaColl.by(`id`, id) + if (nodeMeta) { + // Now get the collection and query it by the `id` field, which + // has an index on it + const { typeCollName } = nodeMeta + const typeColl = getDb().getCollection(typeCollName) + invariant( + typeColl, + `type collection ${typeCollName} referenced by nodeMeta but doesn't exist` + ) + return typeColl.by(`id`, id) + } else { + return undefined + } +} + +/** + * Returns all nodes of a type (where `typeName == + * node.internal.type`). This is an O(1) operation since nodes are + * already stored in seperate collections by type + */ +function getNodesByType(typeName) { + invariant(typeName, `typeName is null`) + const collName = getTypeCollName(typeName) + const coll = getDb().getCollection(collName) + if (!coll) return [] + return coll.data +} + +/** + * Returns the collection of all nodes. This should be deprecated and + * `getNodesByType` should be used instead. Or at least where possible + */ +function getNodes() { + const nodeTypes = getDb().getCollection(colls.nodeTypes.name).data + return _.flatMap(nodeTypes, nodeType => getNodesByType(nodeType.type)) +} + +/** + * Looks up the node by id, records a dependency between the node and + * the path, and then returns the node + * + * @param {string} id node id to lookup + * @param {string} path the page path to record a node dependency + * against + * @returns {Object} node or undefined if not found + */ +function getNodeAndSavePathDependency(id, path) { + invariant(id, `id is null`) + invariant(id, `path is null`) + const createPageDependency = require(`../../redux/actions/add-page-dependency`) + const node = getNode(id) + createPageDependency({ path, nodeId: id }) + return node +} + +/** + * Determine if node has changed (by comparing its + * `internal.contentDigest` + * + * @param {string} id + * @param {string} digest + * @returns {boolean} + */ +function hasNodeChanged(id, digest) { + const node = getNode(id) + if (!node) { + return true + } else { + return node.internal.contentDigest !== digest + } +} + +///////////////////////////////////////////////////////////////////// +// Create/Update/Delete +///////////////////////////////////////////////////////////////////// + +/** + * Creates a node in the DB. Will create a collection for the node + * type if one hasn't been created yet + * + * @param {Object} node The node to add. Must have an `id` and + * `internal.type` + */ +function createNode(node, oldNode) { + invariant(node.internal, `node has no "internal" field`) + invariant(node.internal.type, `node has no "internal.type" field`) + invariant(node.id, `node has no "id" field`) + + const type = node.internal.type + + // Loki doesn't provide "upsert", so if the node already exists, we + // delete and then create it + if (oldNode) { + deleteNode(oldNode) + } + + let nodeTypeColl = getNodeTypeCollection(type) + if (!nodeTypeColl) { + nodeTypeColl = createNodeTypeCollection(type) + } + + const nodeMetaColl = getDb().getCollection(colls.nodeMeta.name) + invariant(nodeMetaColl, `Collection ${colls.nodeMeta.name} should exist`) + nodeMetaColl.insert({ id: node.id, typeCollName: nodeTypeColl.name }) + // TODO what if this insert fails? We will have inserted the id -> + // collName mapping, but there won't be any nodes in the type + // collection. Need to create a transaction around this + return nodeTypeColl.insert(node) +} + +/** + * Updates a node in the DB. The contents of `node` will completely + * overwrite value in the DB. Note, `node` must be a loki node. i.e it + * has `$loki` and `meta` fields. + * + * @param {Object} node The new node information. This should be all + * the node information. Not just changes + */ +function updateNode(node) { + invariant(node.internal, `node has no "internal" field`) + invariant(node.internal.type, `node has no "internal.type" field`) + invariant(node.id, `node has no "id" field`) + + const type = node.internal.type + + let coll = getNodeTypeCollection(type) + invariant(coll, `${type} collection doesn't exist. When trying to update`) + coll.update(node) +} + +/** + * Deletes a node from its type collection and removes its id -> + * collName mapping. Function is idempotent. If the node has already + * been deleted, this is a noop. + * + * @param {Object} the node to delete. Must have an `id` and + * `internal.type` + */ +function deleteNode(node) { + invariant(node.internal, `node has no "internal" field`) + invariant(node.internal.type, `node has no "internal.type" field`) + invariant(node.id, `node has no "id" field`) + + const type = node.internal.type + + let nodeTypeColl = getNodeTypeCollection(type) + if (!nodeTypeColl) { + invariant( + nodeTypeColl, + `${type} collection doesn't exist. When trying to delete` + ) + } + + if (nodeTypeColl.by(`id`, node.id)) { + const nodeMetaColl = getDb().getCollection(colls.nodeMeta.name) + invariant(nodeMetaColl, `Collection ${colls.nodeMeta.name} should exist`) + nodeMetaColl.findAndRemove({ id: node.id }) + // TODO What if this `remove()` fails? We will have removed the id + // -> collName mapping, but not the actual node in the + // collection. Need to make this into a transaction + nodeTypeColl.remove(node) + } + // idempotent. Do nothing if node wasn't already in DB +} + +/** + * deprecated + */ +function deleteNodes(nodes) { + for (const node of nodes) { + deleteNode(node) + } +} + +///////////////////////////////////////////////////////////////////// +// Reducer +///////////////////////////////////////////////////////////////////// + +function reducer(state = new Map(), action) { + switch (action.type) { + case `DELETE_CACHE`: + deleteAll() + return null + + case `CREATE_NODE`: { + createNode(action.payload, action.oldNode) + return null + } + + case `ADD_FIELD_TO_NODE`: + case `ADD_CHILD_NODE_TO_PARENT_NODE`: + updateNode(action.payload) + return null + + case `DELETE_NODE`: { + deleteNode(action.payload) + return null + } + + case `DELETE_NODES`: { + deleteNodes(action.payload) + return null + } + + default: + return null + } +} + +///////////////////////////////////////////////////////////////////// +// Exports +///////////////////////////////////////////////////////////////////// + +module.exports = { + getNodeTypeCollection, + + getNodes, + getNode, + getNodesByType, + hasNodeChanged, + getNodeAndSavePathDependency, + + createNode, + updateNode, + deleteNode, + + deleteNodeTypeCollections, + deleteAll, + + reducer, +} diff --git a/packages/gatsby/src/schema/node-tracking.js b/packages/gatsby/src/db/node-tracking.js similarity index 89% rename from packages/gatsby/src/schema/node-tracking.js rename to packages/gatsby/src/db/node-tracking.js index 495e720d44bab..fa0e5587facb5 100644 --- a/packages/gatsby/src/schema/node-tracking.js +++ b/packages/gatsby/src/db/node-tracking.js @@ -1,5 +1,5 @@ const _ = require(`lodash`) -const { getNode, getNodes } = require(`../redux`) +const { getNode, getNodes } = require(`./nodes`) /** * Map containing links between inline objects or arrays @@ -57,7 +57,8 @@ const findRootNodeAncestor = (obj, predicate = null) => { while ( (!predicate || !predicate(rootNode)) && (rootNodeId = getRootNodeId(rootNode) || rootNode.parent) && - (getNode(rootNode.parent) !== undefined || getNode(rootNodeId)) && + ((rootNode.parent && getNode(rootNode.parent) !== undefined) || + getNode(rootNodeId)) && whileCount < 101 ) { if (rootNodeId) { @@ -77,14 +78,15 @@ const findRootNodeAncestor = (obj, predicate = null) => { return !predicate || predicate(rootNode) ? rootNode : null } +function trackDbNodes() { + _.each(getNodes(), node => { + trackInlineObjectsInRootNode(node) + }) +} + /** * @callback nodePredicate * @param {Node} node Node that is examined */ - exports.findRootNodeAncestor = findRootNodeAncestor - -// Track nodes that are already in store -_.each(getNodes(), node => { - trackInlineObjectsInRootNode(node) -}) +exports.trackDbNodes = trackDbNodes diff --git a/packages/gatsby/src/db/nodes-query.js b/packages/gatsby/src/db/nodes-query.js new file mode 100644 index 0000000000000..09273499d9ba4 --- /dev/null +++ b/packages/gatsby/src/db/nodes-query.js @@ -0,0 +1,52 @@ +const backend = process.env.GATSBY_DB_NODES || `redux` +const lokiRunQuery = require(`./loki/nodes-query`) +const siftRunQuery = require(`../redux/run-sift`) +const lazyFields = require(`../schema/lazy-fields`) + +function chooseQueryEngine(args) { + const { queryArgs, gqlType } = args + const { filter } = queryArgs + if (backend === `loki` && !lazyFields.contains(filter, gqlType)) { + return lokiRunQuery + } else { + return siftRunQuery + } +} + +/** + * Runs the query over all nodes of type. It must first select the + * appropriate query engine. Sift, or Loki. Sift is used by default, + * or if the query includes "lazy fields", those that need to be + * resolved before being queried. These could be either plugin fields, + * i.e those declared by plugins during the + * `setFieldsOnGraphQLNodeType` API, or they could be linked + * fields. See `../redux/run-sift.js` for more. + * + * If the query does *not* include lazy fields, and environment + * variable `GATSBY_DB_NODES` = `loki` then we can perform a much + * faster pure data query using loki. See `loki/nodes-query.js` for + * more. + * + * @param {Object} args. Object with: + * + * {Object} gqlType: built during `./build-node-types.js` + * + * {Object} queryArgs: The raw graphql query as a js object. E.g `{ + * filter: { fields { slug: { eq: "/somepath" } } } }` + * + * {Object} context: The context from the QueryJob + * + * {boolean} firstOnly: Whether to return the first found match, or + * all matching result. + * + * @returns {promise} A promise that will eventually be resolved with + * a collection of matching objects (even if `firstOnly` is true, in + * which case it will be a collection of length 1 or zero) + */ +function run(args) { + const queryFunction = chooseQueryEngine(args) + + return queryFunction(args) +} + +module.exports.run = run diff --git a/packages/gatsby/src/db/nodes.js b/packages/gatsby/src/db/nodes.js new file mode 100644 index 0000000000000..281c3049597c3 --- /dev/null +++ b/packages/gatsby/src/db/nodes.js @@ -0,0 +1,50 @@ +const _ = require(`lodash`) +const { store } = require(`../redux`) + +const backend = process.env.GATSBY_DB_NODES || `redux` +let nodesDb +switch (backend) { + case `redux`: + nodesDb = require(`../redux/nodes`) + break + case `loki`: + nodesDb = require(`./loki/nodes`) + break + default: + throw new Error( + `Unsupported DB nodes backend (value of env var GATSBY_DB_NODES)` + ) +} + +module.exports = { ...nodesDb } +module.exports.backend = backend + +/** + * Get content for a node from the plugin that created it. + * + * @param {Object} node + * @returns {promise} + */ +module.exports.loadNodeContent = node => { + if (_.isString(node.internal.content)) { + return Promise.resolve(node.internal.content) + } else { + return new Promise(resolve => { + // Load plugin's loader function + const plugin = store + .getState() + .flattenedPlugins.find(plug => plug.name === node.internal.owner) + const { loadNodeContent } = require(plugin.resolve) + if (!loadNodeContent) { + throw new Error( + `Could not find function loadNodeContent for plugin ${plugin.name}` + ) + } + + return loadNodeContent(node).then(content => { + // TODO update node's content field here. + resolve(content) + }) + }) + } +} diff --git a/packages/gatsby/src/internal-plugins/dev-404-page/raw_dev-404-page.js b/packages/gatsby/src/internal-plugins/dev-404-page/raw_dev-404-page.js index 91fa272be4fb5..d23313100179f 100644 --- a/packages/gatsby/src/internal-plugins/dev-404-page/raw_dev-404-page.js +++ b/packages/gatsby/src/internal-plugins/dev-404-page/raw_dev-404-page.js @@ -44,7 +44,9 @@ class Dev404Page extends React.Component {

{this.props.custom404 ? (

- +

) : (

diff --git a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js index a5af127a384de..ce88d751b67b5 100644 --- a/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js +++ b/packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js @@ -6,7 +6,7 @@ const _ = require(`lodash`) const { emitter } = require(`../../redux`) const { boundActionCreators } = require(`../../redux/actions`) -const { getNode } = require(`../../redux`) +const { getNode } = require(`../../db/nodes`) function transformPackageJson(json) { const transformDeps = deps => diff --git a/packages/gatsby/src/internal-plugins/load-babel-config/gatsby-node.js b/packages/gatsby/src/internal-plugins/load-babel-config/gatsby-node.js index 6a6af7af6d9e9..5f0cf62307ef6 100644 --- a/packages/gatsby/src/internal-plugins/load-babel-config/gatsby-node.js +++ b/packages/gatsby/src/internal-plugins/load-babel-config/gatsby-node.js @@ -21,8 +21,15 @@ exports.onPreBootstrap = async ({ store }) => { await apiRunnerNode(`onCreateBabelConfig`, { stage: `build-html`, }) - const babelrcState = store.getState().babelrc - babelrcState.browserslist = browserslist - const babelState = JSON.stringify(babelrcState.stages, null, 4) + + const babelState = JSON.stringify( + { + ...store.getState().babelrc, + browserslist, + }, + null, + 2 + ) + await fs.writeFile(directoryPath(`.cache/babelState.json`), babelState) } diff --git a/packages/gatsby/src/internal-plugins/query-runner/pages-writer.js b/packages/gatsby/src/internal-plugins/query-runner/pages-writer.js index 1d1e6e80bd58b..4c43bdfe0287f 100644 --- a/packages/gatsby/src/internal-plugins/query-runner/pages-writer.js +++ b/packages/gatsby/src/internal-plugins/query-runner/pages-writer.js @@ -36,10 +36,17 @@ const writePages = async () => { }) pagesData = _(pagesData) - // Ensure pages keep the same sorting through builds - // and sort pages with matchPath to end so explicit routes - // will match before general. - .sortBy(p => `${p.matchPath ? 1 : 0}${p.path}`) + // Ensure pages keep the same sorting through builds. + // Pages without matchPath come first, then pages with matchPath, + // where more specific patterns come before less specific patterns. + // This ensures explicit routes will match before general. + // Specificity is inferred from number of path segments. + .sortBy( + p => + `${p.matchPath ? 9999 - p.matchPath.split(`/`).length : `0000`}${ + p.path + }` + ) .value() const newHash = crypto .createHash(`md5`) diff --git a/packages/gatsby/src/internal-plugins/query-runner/query-compiler.js b/packages/gatsby/src/internal-plugins/query-runner/query-compiler.js index 6821940280239..e37e85e3829ab 100644 --- a/packages/gatsby/src/internal-plugins/query-runner/query-compiler.js +++ b/packages/gatsby/src/internal-plugins/query-runner/query-compiler.js @@ -20,6 +20,7 @@ import { multipleRootQueriesError, } from "./graphql-errors" import report from "gatsby-cli/lib/reporter" +const websocketManager = require(`../../utils/websocket-manager`) import type { DocumentNode, GraphQLSchema } from "graphql" @@ -60,9 +61,13 @@ const validationRules = [ VariablesInAllowedPositionRule, ] +let lastRunHadErrors = null +const overlayErrorID = `graphql-compiler` + class Runner { baseDir: string schema: GraphQLSchema + errors: string[] fragmentsDir: string constructor(baseDir: string, fragmentsDir: string, schema: GraphQLSchema) { @@ -72,10 +77,11 @@ class Runner { } reportError(message) { - if (process.env.NODE_ENV === `production`) { - report.panic(`${report.format.red(`GraphQL Error`)} ${message}`) - } else { - report.log(`${report.format.red(`GraphQL Error`)} ${message}`) + const queryErrorMessage = `${report.format.red(`GraphQL Error`)} ${message}` + report.panicOnBuild(queryErrorMessage) + if (process.env.gatsby_executing_command === `develop`) { + websocketManager.emitError(overlayErrorID, queryErrorMessage) + lastRunHadErrors = true } } @@ -200,6 +206,14 @@ class Runner { compiledNodes.set(filePath, query) }) + if ( + process.env.gatsby_executing_command === `develop` && + lastRunHadErrors + ) { + websocketManager.emitError(overlayErrorID, null) + lastRunHadErrors = false + } + return compiledNodes } } diff --git a/packages/gatsby/src/internal-plugins/query-runner/query-queue.js b/packages/gatsby/src/internal-plugins/query-runner/query-queue.js index c4545a52350f1..ecabd5a2b5e7d 100644 --- a/packages/gatsby/src/internal-plugins/query-runner/query-queue.js +++ b/packages/gatsby/src/internal-plugins/query-runner/query-queue.js @@ -61,8 +61,22 @@ const queue = new Queue((plObj, callback) => { ) }, queueOptions) +// Pause running queries when new nodes are added (processing starts). +emitter.on(`CREATE_NODE`, () => { + queue.pause() +}) + +// Resume running queries as soon as the api queue is empty. +emitter.on(`API_RUNNING_QUEUE_EMPTY`, () => { + queue.resume() +}) + queue.on(`drain`, () => { emitter.emit(`QUERY_QUEUE_DRAINED`) }) +queue.on(`task_queued`, () => { + emitter.emit(`QUERY_ENQUEUED`) +}) + module.exports = queue diff --git a/packages/gatsby/src/internal-plugins/query-runner/query-runner.js b/packages/gatsby/src/internal-plugins/query-runner/query-runner.js index f4fb1c318e72c..1e3197efc43f4 100644 --- a/packages/gatsby/src/internal-plugins/query-runner/query-runner.js +++ b/packages/gatsby/src/internal-plugins/query-runner/query-runner.js @@ -32,7 +32,6 @@ module.exports = async (queryJob: QueryJob, component: Any) => { // Run query let result - // Nothing to do if the query doesn't exist. if (!queryJob.query || queryJob.query === ``) { result = {} @@ -55,15 +54,10 @@ module.exports = async (queryJob: QueryJob, component: Any) => { errorDetails.set(`Plugin`, queryJob.pluginCreatorId || `none`) errorDetails.set(`Query`, queryJob.query) - report.log(` + report.panicOnBuild(` The GraphQL query from ${queryJob.componentPath} failed. ${formatErrorDetails(errorDetails)}`) - - // Perhaps this isn't the best way to see if we're building? - if (program._[0] === `build`) { - process.exit(1) - } } // Add the page context onto the results. @@ -102,9 +96,7 @@ ${formatErrorDetails(errorDetails)}`) dataPath = queryJob.hash } - const programType = program._[0] - - if (programType === `develop`) { + if (process.env.gatsby_executing_command === `develop`) { if (queryJob.isPage) { websocketManager.emitPageData({ result, diff --git a/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/gatsby-node.js b/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/gatsby-node.js new file mode 100644 index 0000000000000..daa3e3d2ab76d --- /dev/null +++ b/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/gatsby-node.js @@ -0,0 +1,21 @@ +const GatsbyThemeComponentShadowingResolverPlugin = require(`.`) + +exports.onCreateWebpackConfig = ( + { store, stage, getConfig, rules, loaders, actions }, + pluginOptions +) => { + const { config, program } = store.getState() + + if (config.__experimentalThemes) { + actions.setWebpackConfig({ + resolve: { + plugins: [ + new GatsbyThemeComponentShadowingResolverPlugin({ + themes: config.__experimentalThemes.map(({ resolve }) => resolve), + projectRoot: program.directory, + }), + ], + }, + }) + } +} diff --git a/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/index.js b/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/index.js new file mode 100644 index 0000000000000..506e476404a43 --- /dev/null +++ b/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/index.js @@ -0,0 +1,74 @@ +const path = require(`path`) + +module.exports = class GatsbyThemeComponentShadowingResolverPlugin { + cache = {} + + constructor({ projectRoot, themes }) { + this.themes = themes + this.projectRoot = projectRoot + } + + apply(resolver) { + resolver.plugin(`relative`, (request, callback) => { + // find out which theme's src/components dir we're requiring from + const matchingThemes = this.themes.filter(name => + request.path.includes(path.join(name, `src`, `components`)) + ) + // 0 matching themes happens a lot fo rpaths we don't want to handle + // > 1 matching theme means we have a path like + // `gatsby-theme-blog/src/components/gatsby-theme-something/src/components` + if (matchingThemes.length > 1) { + throw new Error( + `Gatsby can't differentiate between themes ${matchingThemes.join( + ` and ` + )} for path ${request.path}` + ) + } + if (matchingThemes.length !== 1) { + return callback() + } + // theme is the theme package from which we're requiring the relative component + const [theme] = matchingThemes + // get the location of the component relative to src/components + const [, component] = request.path.split( + path.join(theme, `src`, `components`) + ) + + const resolvedComponentPath = require.resolve( + this.resolveComponentPath({ + theme, + component, + projectRoot: this.projectRoot, + }) + ) + // this callback ends the resolver fallthrough chain. + return callback(null, { + directory: request.directory, + path: resolvedComponentPath, + query: request.query, + request: ``, + }) + }) + } + + // check the cache, the user's project, and finally the theme files + resolveComponentPath({ theme, component, projectRoot }) { + if (!this.cache[`${theme}-${component}`]) { + this.cache[`${theme}-${component}`] = [ + path.join(projectRoot, `src`, `components`, theme), + path.join(path.dirname(require.resolve(theme)), `src`, `components`), + ] + .map(dir => path.join(dir, component)) + .find(possibleComponentPath => { + try { + require.resolve(possibleComponentPath) + return true + } catch (e) { + return false + } + }) + } + + return this.cache[`${theme}-${component}`] + } +} diff --git a/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/package.json b/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/package.json new file mode 100644 index 0000000000000..87252b5bd3716 --- /dev/null +++ b/packages/gatsby/src/internal-plugins/webpack-theme-component-shadowing/package.json @@ -0,0 +1,11 @@ +{ + "name": "webpack-theme-component-shadowing", + "version": "1.0.0", + "description": "An internal Gatsby plugin which handles configuring webpack to ensure theme components fall back from the user's site to theme modules.", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Chris Biscardi ", + "license": "MIT" +} diff --git a/packages/gatsby/src/joi-schemas/joi.js b/packages/gatsby/src/joi-schemas/joi.js index 621e60cae3811..8a5056a9e69ca 100644 --- a/packages/gatsby/src/joi-schemas/joi.js +++ b/packages/gatsby/src/joi-schemas/joi.js @@ -1,6 +1,7 @@ const Joi = require(`joi`) export const gatsbyConfigSchema = Joi.object().keys({ + __experimentalThemes: Joi.array(), polyfill: Joi.boolean(), siteMetadata: Joi.object(), pathPrefix: Joi.string(), diff --git a/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap b/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap index 689ce4a6375c2..b5e94554957f9 100644 --- a/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap +++ b/packages/gatsby/src/redux/__tests__/__snapshots__/babelrc.js.snap @@ -167,71 +167,11 @@ Array [ ], Array [ Array [ - "/path/to/module/@babel/preset-env", - Object { - "loose": true, - "modules": false, - "targets": Object { - "browsers": undefined, - }, - "useBuiltIns": "usage", - }, - ], - Object { - "type": "preset", - }, - ], - Array [ - Array [ - "/path/to/module/@babel/preset-react", - Object { - "development": false, - "pragma": "React.createElement", - "useBuiltIns": true, - }, + "/path/to/module/babel-preset-gatsby", ], Object { "type": "preset", }, ], - Array [ - Array [ - "/path/to/module/@babel/plugin-proposal-class-properties", - Object { - "loose": true, - }, - ], - Object { - "type": "plugin", - }, - ], - Array [ - Array [ - "/path/to/module/babel-plugin-macros", - ], - Object { - "type": "plugin", - }, - ], - Array [ - Array [ - "/path/to/module/@babel/plugin-syntax-dynamic-import", - ], - Object { - "type": "plugin", - }, - ], - Array [ - Array [ - "/path/to/module/@babel/plugin-transform-runtime", - Object { - "helpers": true, - "regenerator": true, - }, - ], - Object { - "type": "plugin", - }, - ], ] `; diff --git a/packages/gatsby/src/redux/__tests__/__snapshots__/nodes.js.snap b/packages/gatsby/src/redux/__tests__/__snapshots__/nodes.js.snap index a73ef6c730b9b..18ba526c49176 100644 --- a/packages/gatsby/src/redux/__tests__/__snapshots__/nodes.js.snap +++ b/packages/gatsby/src/redux/__tests__/__snapshots__/nodes.js.snap @@ -24,6 +24,7 @@ Map { exports[`Create and update nodes allows creating nodes 1`] = ` Object { + "oldNode": undefined, "payload": Object { "children": Array [], "id": "hi", @@ -126,16 +127,3 @@ exports[`Create and update nodes throws error if a node sets a value on "fields" \\"name\\": \\"pluginA\\" }" `; - -exports[`Create and update nodes warns when using old deleteNode signature 1`] = ` -Object { - "children": Array [], - "id": "hi", - "internal": Object { - "contentDigest": "hasdfljds", - "owner": "tests", - "type": "Test", - }, - "parent": "test", -} -`; diff --git a/packages/gatsby/src/redux/__tests__/nodes.js b/packages/gatsby/src/redux/__tests__/nodes.js index 3ce2ac9efbd74..f2954a7974678 100644 --- a/packages/gatsby/src/redux/__tests__/nodes.js +++ b/packages/gatsby/src/redux/__tests__/nodes.js @@ -1,8 +1,15 @@ +const Redux = require(`redux`) const { actions } = require(`../actions`) -const { store, getNode } = require(`../index`) const nodeReducer = require(`../reducers/nodes`) const nodeTouchedReducer = require(`../reducers/nodes-touched`) +jest.mock(`../../db/nodes`) +jest.mock(`../nodes`) + +const store = Redux.createStore( + Redux.combineReducers({ nodeReducer, nodeTouchedReducer }), + {} +) describe(`Create and update nodes`, () => { beforeEach(() => { store.dispatch({ @@ -83,349 +90,6 @@ describe(`Create and update nodes`, () => { expect(state.get(`hi`).deep2.boom).toEqual(`foo`) }) - it(`deletes previously transformed children nodes when the parent node is updated`, () => { - store.dispatch( - actions.createNode( - { - id: `hi`, - children: [], - parent: null, - internal: { - contentDigest: `hasdfljds`, - type: `Test`, - }, - }, - { - name: `tests`, - } - ) - ) - - store.dispatch( - actions.createNode( - { - id: `hi-1`, - children: [], - parent: `hi`, - internal: { - contentDigest: `hasdfljds-1`, - type: `Test-1`, - }, - }, - { - name: `tests`, - } - ) - ) - - store.dispatch( - actions.createParentChildLink( - { - parent: store.getState().nodes.get(`hi`), - child: store.getState().nodes.get(`hi-1`), - }, - { - name: `tests`, - } - ) - ) - - store.dispatch( - actions.createNode( - { - id: `hi-1-1`, - children: [], - parent: `hi-1`, - internal: { - contentDigest: `hasdfljds-1-1`, - type: `Test-1-1`, - }, - }, - { - name: `tests`, - } - ) - ) - - store.dispatch( - actions.createParentChildLink( - { - parent: store.getState().nodes.get(`hi-1`), - child: store.getState().nodes.get(`hi-1-1`), - }, - { - name: `tests`, - } - ) - ) - - store.dispatch( - actions.createNode( - { - id: `hi`, - children: [], - parent: `test`, - internal: { - contentDigest: `hasdfljds2`, - type: `Test`, - }, - }, - { - name: `tests`, - } - ) - ) - expect(store.getState().nodes.size).toEqual(1) - }) - - it(`deletes previously transformed children nodes when the parent node is deleted`, () => { - store.dispatch( - actions.createNode( - { - id: `hi`, - children: [], - parent: `test`, - internal: { - contentDigest: `hasdfljds`, - type: `Test`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createNode( - { - id: `hi2`, - children: [], - parent: `test`, - internal: { - contentDigest: `hasdfljds`, - type: `Test`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createNode( - { - id: `hi-1`, - children: [], - parent: `hi`, - internal: { - contentDigest: `hasdfljds-1`, - type: `Test-1`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createParentChildLink( - { - parent: store.getState().nodes.get(`hi`), - child: getNode(`hi-1`), - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createNode( - { - id: `hi-1-1`, - children: [], - parent: `hi-1`, - internal: { - contentDigest: `hasdfljds-1-1`, - type: `Test-1-1`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createParentChildLink( - { - parent: getNode(`hi-1`), - child: getNode(`hi-1-1`), - }, - { - name: `tests`, - } - ) - ) - - store.dispatch( - actions.deleteNode( - { - node: getNode(`hi`), - }, - { - name: `tests`, - } - ) - ) - expect(store.getState().nodes.size).toEqual(1) - }) - - it(`deletes previously transformed children nodes when parent nodes are deleted`, () => { - store.dispatch( - actions.createNode( - { - id: `hi`, - children: [], - parent: `test`, - internal: { - contentDigest: `hasdfljds`, - type: `Test`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createNode( - { - id: `hi-1`, - children: [], - parent: `hi`, - internal: { - contentDigest: `hasdfljds-1`, - type: `Test-1`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createParentChildLink( - { - parent: getNode(`hi`), - child: getNode(`hi-1`), - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createNode( - { - id: `hi-1-1`, - children: [], - parent: `hi-1`, - internal: { - contentDigest: `hasdfljds-1-1`, - type: `Test-1-1`, - }, - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.createParentChildLink( - { - parent: getNode(`hi-1`), - child: getNode(`hi-1-1`), - }, - { - name: `tests`, - } - ) - ) - store.dispatch( - actions.deleteNode( - { node: getNode(`hi`) }, - { - name: `tests`, - } - ) - ) - expect(store.getState().nodes.size).toEqual(0) - }) - - it(`allows deleting nodes`, () => { - actions.createNode( - { - id: `hi`, - children: [], - parent: `test`, - internal: { - contentDigest: `hasdfljds`, - type: `Test`, - }, - pickle: true, - deep: { - array: [ - 0, - 1, - { - boom: true, - }, - ], - }, - }, - { - name: `tests`, - } - ) - actions.deleteNode({ - node: getNode(`hi`), - }) - expect(getNode(`hi`)).toBeUndefined() - }) - - it(`warns when using old deleteNode signature `, () => { - console.warn = jest.fn() - store.dispatch( - actions.createNode( - { - id: `hi`, - children: [], - parent: `test`, - internal: { - contentDigest: `hasdfljds`, - type: `Test`, - }, - }, - { - name: `tests`, - } - ) - ) - - expect(getNode(`hi`)).toMatchSnapshot() - store.dispatch( - actions.deleteNode(`hi`, getNode(`hi`), { - name: `tests`, - }) - ) - - expect(getNode(`hi`)).toBeUndefined() - - const deprecationNotice = `Calling "deleteNode" with a nodeId is deprecated. Please pass an object containing a full node instead: deleteNode({ node })` - expect(console.warn).toHaveBeenCalledWith(deprecationNotice) - - console.warn.mockRestore() - }) - it(`nodes that are added are also "touched"`, () => { const action = actions.createNode( { @@ -585,11 +249,4 @@ describe(`Create and update nodes`, () => { expect(callActionCreator).toThrowErrorMatchingSnapshot() }) - - it(`does not crash when delete node is called on undefined`, () => { - actions.deleteNode(undefined, { - name: `tests`, - }) - expect(store.getState().nodes.size).toEqual(0) - }) }) diff --git a/packages/gatsby/src/redux/__tests__/run-sift.js b/packages/gatsby/src/redux/__tests__/run-sift.js new file mode 100644 index 0000000000000..b305c5a00b166 --- /dev/null +++ b/packages/gatsby/src/redux/__tests__/run-sift.js @@ -0,0 +1,97 @@ +const runSift = require(`../run-sift`) +const { + GraphQLObjectType, + GraphQLNonNull, + GraphQLID, + GraphQLString, +} = require(`graphql`) + +jest.mock(`../../db/node-tracking`, () => { + return { + trackInlineObjectsInRootNode: () => jest.fn(), + } +}) + +const mockNodes = [ + { + id: `id_1`, + string: `foo`, + }, + { + id: `id_2`, + string: `bar`, + }, + { + id: `id_3`, + string: `baz`, + }, +] + +jest.mock(`../../db/nodes`, () => { + return { + getNode: id => mockNodes.find(node => node.id === id), + getNodesByType: () => mockNodes, + } +}) + +describe(`run-sift`, () => { + const typeName = `test` + const gqlType = new GraphQLObjectType({ + name: typeName, + fields: () => { + return { + id: new GraphQLNonNull(GraphQLID), + string: GraphQLString, + } + }, + }) + const nodes = mockNodes + + describe(`filters by just id correctly`, () => { + it(`eq operator`, async () => { + const queryArgs = { + filter: { + id: { eq: `id_2` }, + }, + } + + const resultSingular = await runSift({ + gqlType, + queryArgs, + firstOnly: true, + }) + + const resultMany = await runSift({ + gqlType, + queryArgs, + firstOnly: false, + }) + + expect(resultSingular).toEqual([nodes[1]]) + expect(resultMany).toEqual([nodes[1]]) + }) + + it(`non-eq operator`, async () => { + const queryArgs = { + filter: { + id: { ne: `id_2` }, + }, + } + + const resultSingular = await runSift({ + gqlType, + queryArgs, + firstOnly: true, + }) + + const resultMany = await runSift({ + gqlType, + queryArgs, + firstOnly: false, + }) + + expect(resultSingular).toEqual([nodes[0]]) + expect(resultMany).toEqual([nodes[0], nodes[2]]) + }) + }) +}) diff --git a/packages/gatsby/src/redux/actions.js b/packages/gatsby/src/redux/actions.js index 71e32a25f7488..02a9d0276d072 100644 --- a/packages/gatsby/src/redux/actions.js +++ b/packages/gatsby/src/redux/actions.js @@ -7,9 +7,10 @@ const { stripIndent } = require(`common-tags`) const report = require(`gatsby-cli/lib/reporter`) const path = require(`path`) const fs = require(`fs`) +const url = require(`url`) const kebabHash = require(`kebab-hash`) -const { hasNodeChanged, getNode } = require(`./index`) -const { trackInlineObjectsInRootNode } = require(`../schema/node-tracking`) +const { hasNodeChanged, getNode } = require(`../db/nodes`) +const { trackInlineObjectsInRootNode } = require(`../db/node-tracking`) const { store } = require(`./index`) const fileExistsSync = require(`fs-exists-cached`).sync const joiSchemas = require(`../joi-schemas/joi`) @@ -86,7 +87,7 @@ const fileOkCache = {} /** * Create a page. See [the guide on creating and modifying pages](/docs/creating-and-modifying-pages/) - * for detailed documenation about creating pages. + * for detailed documentation about creating pages. * @param {Object} page a page object * @param {string} page.path Any valid URL. Must start with a forward slash * @param {string} page.component The absolute path to the component for this page @@ -212,12 +213,9 @@ ${reservedFields.map(f => ` * "${f}"`).join(`\n`)} } if (noPageOrComponent) { - console.log(``) - console.log( + report.panic( `See the documentation for createPage https://www.gatsbyjs.org/docs/bound-action-creators/#createPage` ) - console.log(``) - process.exit(1) } let jsonName @@ -268,7 +266,9 @@ ${reservedFields.map(f => ` * "${f}"`).join(`\n`)} if ( !fileContent.includes(`export default`) && !fileContent.includes(`module.exports`) && - !fileContent.includes(`exports.default`) + !fileContent.includes(`exports.default`) && + // this check only applies to js and ts, not mdx + /\.(jsx?|tsx?)/.test(path.extname(fileName)) ) { includesDefaultExport = false } @@ -279,25 +279,16 @@ ${reservedFields.map(f => ` * "${f}"`).join(`\n`)} ) if (!notEmpty) { - console.log(``) - console.log( + report.panicOnBuild( `You have an empty file in the "src/pages" directory at "${relativePath}". Please remove it or make it a valid component` ) - console.log(``) - // TODO actually do die during builds. - // process.exit(1) } if (!includesDefaultExport) { - console.log(``) - console.log( + report.panicOnBuild( `[${fileName}] The page component must export a React component for it to be valid` ) - console.log(``) } - - // TODO actually do die during builds. - // process.exit(1) } fileOkCache[internalPage.component] = true @@ -493,13 +484,12 @@ actions.createNode = ( // Tell user not to set the owner name themself. if (node.internal.owner) { - console.log(JSON.stringify(node, null, 4)) - console.log( + report.error(JSON.stringify(node, null, 4)) + report.panic( chalk.bold.red( `The node internal.owner field is set automatically by Gatsby and not by plugins` ) ) - process.exit(1) } // Add the plugin name to the internal object. @@ -611,6 +601,7 @@ actions.createNode = ( updateNodeAction = { type: `CREATE_NODE`, plugin, + oldNode, ...actionOptions, payload: node, } @@ -890,7 +881,7 @@ actions.replaceWebpackConfig = (config: Object, plugin?: ?Plugin = null) => { /** * Set top-level Babel options. Plugins and presets will be ignored. Use * setBabelPlugin and setBabelPreset for this. - * @param {Object} config An options object in the shape of a normal babelrc javascript object + * @param {Object} config An options object in the shape of a normal babelrc JavaScript object * @example * setBabelOptions({ * options: { @@ -1099,13 +1090,20 @@ actions.createRedirect = ({ pathPrefix = store.getState().config.pathPrefix } + // Parse urls to get their protocols + // url.parse will not cover protocol-relative urls so do a separate check for those + const parsed = url.parse(toPath) + const isRelativeProtocol = toPath.startsWith(`//`) + const toPathPrefix = + parsed.protocol != null || isRelativeProtocol ? `` : pathPrefix + return { type: `CREATE_REDIRECT`, payload: { fromPath: `${pathPrefix}${fromPath}`, isPermanent, redirectInBrowser, - toPath: `${pathPrefix}${toPath}`, + toPath: `${toPathPrefix}${toPath}`, ...rest, }, } diff --git a/packages/gatsby/src/redux/actions/add-page-dependency.js b/packages/gatsby/src/redux/actions/add-page-dependency.js index d971edb4faafa..89d72454472d8 100644 --- a/packages/gatsby/src/redux/actions/add-page-dependency.js +++ b/packages/gatsby/src/redux/actions/add-page-dependency.js @@ -3,7 +3,7 @@ const _ = require(`lodash`) const { store } = require(`../`) const { actions } = require(`../actions.js`) -exports.createPageDependency = ({ path, nodeId, connection }) => { +function createPageDependency({ path, nodeId, connection }) { const state = store.getState() // Check that the dependencies aren't already recorded so we @@ -36,3 +36,5 @@ exports.createPageDependency = ({ path, nodeId, connection }) => { const action = actions.createPageDependency({ path, nodeId, connection }) store.dispatch(action) } + +module.exports = createPageDependency diff --git a/packages/gatsby/src/redux/index.js b/packages/gatsby/src/redux/index.js index 0198062671108..103afb0fb62bb 100644 --- a/packages/gatsby/src/redux/index.js +++ b/packages/gatsby/src/redux/index.js @@ -1,5 +1,4 @@ const Redux = require(`redux`) -const Promise = require(`bluebird`) const _ = require(`lodash`) const fs = require(`fs`) const mitt = require(`mitt`) @@ -78,7 +77,7 @@ const saveState = state => { pickedState.staticQueryComponents ) pickedState.components = mapToObject(pickedState.components) - pickedState.nodes = mapToObject(pickedState.nodes) + pickedState.nodes = pickedState.nodes ? mapToObject(pickedState.nodes) : [] const stringified = stringify(pickedState, null, 2) fs.writeFile( `${process.cwd()}/.cache/redux-state.json`, @@ -119,89 +118,3 @@ exports.emitter = emitter /** Redux store */ exports.store = store - -/** - * Get all nodes from redux store. - * - * @returns {Array} - */ -exports.getNodes = () => { - const nodes = store.getState().nodes - if (nodes) { - return Array.from(nodes.values()) - } else { - return [] - } -} -const getNode = id => store.getState().nodes.get(id) - -/** Get node by id from store. - * - * @param {string} id - * @returns {Object} - */ -exports.getNode = getNode - -/** - * Determine if node has changed. - * - * @param {string} id - * @param {string} digest - * @returns {boolean} - */ -exports.hasNodeChanged = (id, digest) => { - const node = store.getState().nodes.get(id) - if (!node) { - return true - } else { - return node.internal.contentDigest !== digest - } -} - -/** - * Get content for a node from the plugin that created it. - * - * @param {Object} node - * @returns {promise} - */ -exports.loadNodeContent = node => { - if (_.isString(node.internal.content)) { - return Promise.resolve(node.internal.content) - } else { - return new Promise(resolve => { - // Load plugin's loader function - const plugin = store - .getState() - .flattenedPlugins.find(plug => plug.name === node.internal.owner) - const { loadNodeContent } = require(plugin.resolve) - if (!loadNodeContent) { - throw new Error( - `Could not find function loadNodeContent for plugin ${plugin.name}` - ) - } - - return loadNodeContent(node).then(content => { - // TODO update node's content field here. - resolve(content) - }) - }) - } -} - -/** - * Get node and save path dependency. - * - * @param {string} id - * @param {string} path - * @returns {Object} node - */ -exports.getNodeAndSavePathDependency = (id, path) => { - const { createPageDependency } = require(`./actions/add-page-dependency`) - const node = getNode(id) - createPageDependency({ path, nodeId: id }) - return node -} - -// Start plugin runner which listens to the store -// and invokes Gatsby API based on actions. -require(`./plugin-runner`) diff --git a/packages/gatsby/src/redux/nodes.js b/packages/gatsby/src/redux/nodes.js new file mode 100644 index 0000000000000..32fedcba4b3e5 --- /dev/null +++ b/packages/gatsby/src/redux/nodes.js @@ -0,0 +1,59 @@ +const { store } = require(`./index`) + +/** + * Get all nodes from redux store. + * + * @returns {Array} + */ +const getNodes = () => { + const nodes = store.getState().nodes + if (nodes) { + return Array.from(nodes.values()) + } else { + return [] + } +} + +exports.getNodes = getNodes + +const getNode = id => store.getState().nodes.get(id) + +/** Get node by id from store. + * + * @param {string} id + * @returns {Object} + */ +exports.getNode = getNode + +exports.getNodesByType = type => + getNodes().filter(node => node.internal.type === type) + +/** + * Determine if node has changed. + * + * @param {string} id + * @param {string} digest + * @returns {boolean} + */ +exports.hasNodeChanged = (id, digest) => { + const node = store.getState().nodes.get(id) + if (!node) { + return true + } else { + return node.internal.contentDigest !== digest + } +} + +/** + * Get node and save path dependency. + * + * @param {string} id + * @param {string} path + * @returns {Object} node + */ +exports.getNodeAndSavePathDependency = (id, path) => { + const createPageDependency = require(`./actions/add-page-dependency`) + const node = getNode(id) + createPageDependency({ path, nodeId: id }) + return node +} diff --git a/packages/gatsby/src/redux/plugin-runner.js b/packages/gatsby/src/redux/plugin-runner.js index a12a197a8995a..fb19f43cf3448 100644 --- a/packages/gatsby/src/redux/plugin-runner.js +++ b/packages/gatsby/src/redux/plugin-runner.js @@ -1,10 +1,11 @@ // Invoke plugins for certain actions. -const { store, emitter } = require(`./index`) +const { emitter } = require(`./index`) +const { getNode } = require(`../db/nodes`) const apiRunnerNode = require(`../utils/api-runner-node`) emitter.on(`CREATE_NODE`, action => { - const node = store.getState().nodes.get(action.payload.id) + const node = getNode(action.payload.id) const traceTags = { nodeId: node.id, nodeType: node.internal.type } apiRunnerNode(`onCreateNode`, { node, diff --git a/packages/gatsby/src/redux/reducers/__tests__/redirects.js b/packages/gatsby/src/redux/reducers/__tests__/redirects.js new file mode 100644 index 0000000000000..0c6e05ad34b86 --- /dev/null +++ b/packages/gatsby/src/redux/reducers/__tests__/redirects.js @@ -0,0 +1,69 @@ +const reducer = require(`../redirects`) + +describe(`redirects`, () => { + it(`lets you redirect to an internal url`, () => { + const action = { + type: `CREATE_REDIRECT`, + payload: { + fromPath: `/page1`, + toPath: `/page1/`, + }, + } + + let state = reducer(undefined, action) + + expect(state).toEqual([ + { + fromPath: `/page1`, + toPath: `/page1/`, + }, + ]) + }) + + it(`lets you redirect to an external url`, () => { + const action = { + type: `CREATE_REDIRECT`, + payload: { + fromPath: `/page1`, + toPath: `https://example.com`, + }, + } + + let state = reducer(undefined, action) + + expect(state).toEqual([ + { + fromPath: `/page1`, + toPath: `https://example.com`, + }, + ]) + }) + + const protocolArr = [ + [`https`, `https://example.com`], + [`http`, `http://example.com`], + [`//`, `//example.com`], + [`ftp`, `ftp://example.com`], + [`mailto`, `mailto:example@email.com`], + ] + + protocolArr.forEach(([protocol, toPath], index) => { + it(`lets you redirect using ${protocol}`, () => { + const fromPath = `/page${index}` + const action = { + type: `CREATE_REDIRECT`, + payload: { + fromPath, + toPath, + }, + } + + expect(reducer(undefined, action)).toEqual([ + { + fromPath, + toPath, + }, + ]) + }) + }) +}) diff --git a/packages/gatsby/src/redux/reducers/index.js b/packages/gatsby/src/redux/reducers/index.js index 5e53ff8667722..9eb38dd86ce11 100644 --- a/packages/gatsby/src/redux/reducers/index.js +++ b/packages/gatsby/src/redux/reducers/index.js @@ -1,6 +1,28 @@ +const reduxNodes = require(`./nodes`) +const lokiNodes = require(`../../db/loki/nodes`).reducer + +const backend = process.env.GATSBY_DB_NODES || `redux` + +function getNodesReducer() { + let nodesReducer + switch (backend) { + case `redux`: + nodesReducer = reduxNodes + break + case `loki`: + nodesReducer = lokiNodes + break + default: + throw new Error( + `Unsupported DB nodes backend (value of env var GATSBY_DB_NODES)` + ) + } + return nodesReducer +} + module.exports = { program: require(`./program`), - nodes: require(`./nodes`), + nodes: getNodesReducer(), nodesTouched: require(`./nodes-touched`), lastAction: require(`./last-action`), plugins: require(`./plugins`), diff --git a/packages/gatsby/src/redux/run-sift.js b/packages/gatsby/src/redux/run-sift.js new file mode 100644 index 0000000000000..dff3d3681f50f --- /dev/null +++ b/packages/gatsby/src/redux/run-sift.js @@ -0,0 +1,336 @@ +// @flow +const sift = require(`sift`) +const _ = require(`lodash`) +const prepareRegex = require(`../utils/prepare-regex`) +const Promise = require(`bluebird`) +const { trackInlineObjectsInRootNode } = require(`../db/node-tracking`) +const { getNode, getNodesByType } = require(`../db/nodes`) + +const resolvedNodesCache = new Map() +const enhancedNodeCache = new Map() +const enhancedNodePromiseCache = new Map() +const enhancedNodeCacheId = ({ node, args }) => + node && node.internal && node.internal.contentDigest + ? JSON.stringify({ + nodeid: node.id, + digest: node.internal.contentDigest, + ...args, + }) + : null + +const nodesCache = new Map() + +function loadNodes(type) { + let nodes + // this caching can be removed if we move to loki + if (process.env.NODE_ENV === `production` && nodesCache.has(type)) { + nodes = nodesCache.get(type) + } else { + nodes = getNodesByType(type) + nodesCache.set(type, nodes) + } + return nodes +} + +///////////////////////////////////////////////////////////////////// +// Parse filter +///////////////////////////////////////////////////////////////////// + +function siftifyArgs(object) { + const newObject = {} + _.each(object, (v, k) => { + if (_.isPlainObject(v)) { + if (k === `elemMatch`) { + k = `$elemMatch` + } + newObject[k] = siftifyArgs(v) + } else { + // Compile regex first. + if (k === `regex`) { + newObject[`$regex`] = prepareRegex(v) + } else if (k === `glob`) { + const Minimatch = require(`minimatch`).Minimatch + const mm = new Minimatch(v) + newObject[`$regex`] = mm.makeRe() + } else { + newObject[`$${k}`] = v + } + } + }) + return newObject +} + +// Build an object that excludes the innermost leafs, +// this avoids including { eq: x } when resolving fields. +function extractFieldsToSift(prekey, key, preobj, obj, val) { + if (_.isPlainObject(val)) { + _.forEach((val: any), (v, k) => { + if (k === `elemMatch`) { + // elemMatch is operator for arrays and not field we want to prepare + // so we need to skip it + extractFieldsToSift(prekey, key, preobj, obj, v) + return + } + preobj[prekey] = obj + extractFieldsToSift(key, k, obj, {}, v) + }) + } else { + preobj[prekey] = true + } +} + +/** + * Parse filter and returns an object with two fields: + * - siftArgs: the filter in a format that sift understands + * - fieldsToSift: filter with operate leaves (e.g { eq: 3 }) + * removed. Used later to resolve all filter fields + */ +function parseFilter(filter) { + const siftArgs = [] + const fieldsToSift = {} + if (filter) { + _.each(filter, (v, k) => { + // Ignore connection and sorting args. + if (_.includes([`skip`, `limit`, `sort`], k)) return + + siftArgs.push( + siftifyArgs({ + [k]: v, + }) + ) + extractFieldsToSift(``, k, {}, fieldsToSift, v) + }) + } + return { siftArgs, fieldsToSift } +} + +///////////////////////////////////////////////////////////////////// +// Resolve nodes +///////////////////////////////////////////////////////////////////// + +function isEqId(firstOnly, fieldsToSift, siftArgs) { + return ( + firstOnly && + Object.keys(fieldsToSift).length === 1 && + Object.keys(fieldsToSift)[0] === `id` && + Object.keys(siftArgs[0].id).length === 1 && + Object.keys(siftArgs[0].id)[0] === `$eq` + ) +} + +function awaitSiftField(fields, node, k) { + const field = fields[k] + if (field.resolve) { + return field.resolve( + node, + {}, + {}, + { + fieldName: k, + } + ) + } else if (node[k] !== undefined) { + return node[k] + } + + return undefined +} + +// Resolves every field used in the node. +function resolveRecursive(node, siftFieldsObj, gqFields) { + return Promise.all( + _.keys(siftFieldsObj).map(k => + Promise.resolve(awaitSiftField(gqFields, node, k)) + .then(v => { + const innerSift = siftFieldsObj[k] + const innerGqConfig = gqFields[k] + if ( + _.isObject(innerSift) && + v != null && + innerGqConfig && + innerGqConfig.type + ) { + if (_.isFunction(innerGqConfig.type.getFields)) { + // this is single object + return resolveRecursive( + v, + innerSift, + innerGqConfig.type.getFields() + ) + } else if ( + _.isArray(v) && + innerGqConfig.type.ofType && + _.isFunction(innerGqConfig.type.ofType.getFields) + ) { + // this is array + return Promise.all( + v.map(item => + resolveRecursive( + item, + innerSift, + innerGqConfig.type.ofType.getFields() + ) + ) + ) + } + } + + return v + }) + .then(v => [k, v]) + ) + ).then(resolvedFields => { + const myNode = { + ...node, + } + resolvedFields.forEach(([k, v]) => (myNode[k] = v)) + return myNode + }) +} + +function resolveNodes(nodes, typeName, firstOnly, fieldsToSift, gqlFields) { + const nodesCacheKey = JSON.stringify({ + // typeName + count being the same is a pretty good + // indication that the nodes are the same. + typeName, + firstOnly, + nodesLength: nodes.length, + ...fieldsToSift, + }) + if ( + process.env.NODE_ENV === `production` && + resolvedNodesCache.has(nodesCacheKey) + ) { + return Promise.resolve(resolvedNodesCache.get(nodesCacheKey)) + } else { + return Promise.all( + nodes.map(node => { + const cacheKey = enhancedNodeCacheId({ + node, + args: fieldsToSift, + }) + if (cacheKey && enhancedNodeCache.has(cacheKey)) { + return Promise.resolve(enhancedNodeCache.get(cacheKey)) + } else if (cacheKey && enhancedNodePromiseCache.has(cacheKey)) { + return enhancedNodePromiseCache.get(cacheKey) + } + + const enhancedNodeGenerationPromise = new Promise(resolve => { + resolveRecursive(node, fieldsToSift, gqlFields).then(resolvedNode => { + trackInlineObjectsInRootNode(resolvedNode) + if (cacheKey) { + enhancedNodeCache.set(cacheKey, resolvedNode) + } + resolve(resolvedNode) + }) + }) + enhancedNodePromiseCache.set(cacheKey, enhancedNodeGenerationPromise) + return enhancedNodeGenerationPromise + }) + ).then(resolvedNodes => { + resolvedNodesCache.set(nodesCacheKey, resolvedNodes) + return resolvedNodes + }) + } +} + +///////////////////////////////////////////////////////////////////// +// Run Sift +///////////////////////////////////////////////////////////////////// + +function handleFirst(siftArgs, nodes) { + const index = _.isEmpty(siftArgs) + ? 0 + : sift.indexOf( + { + $and: siftArgs, + }, + nodes + ) + + if (index !== -1) { + return [nodes[index]] + } else { + return [] + } +} + +function handleMany(siftArgs, nodes, sort) { + let result = _.isEmpty(siftArgs) + ? nodes + : sift( + { + $and: siftArgs, + }, + nodes + ) + + if (!result || !result.length) return null + + // Sort results. + if (sort) { + // create functions that return the item to compare on + // uses _.get so nested fields can be retrieved + const convertedFields = sort.fields + .map(field => field.replace(/___/g, `.`)) + .map(field => v => _.get(v, field)) + + // Gatsby's sort interface only allows one sort order (e.g `desc`) + // to be specified. However, multiple sort fields can be + // provided. This is inconsistent. The API should allow the + // setting of an order per field. Until the API can be changed + // (probably v3), we apply the sort order to the first field only, + // implying asc order for the remaining fields. + result = _.orderBy(result, convertedFields, [sort.order]) + } + return result +} + +/** + * Filters a list of nodes using mongodb-like syntax. + * + * @param args raw graphql query filter as an object + * @param nodes The nodes array to run sift over (Optional + * will load itself if not present) + * @param type gqlType. Created in build-node-types + * @param firstOnly true if you want to return only the first result + * found. This will return a collection of size 1. Not a single + * element + * @returns Collection of results. Collection will be limited to size + * if `firstOnly` is true + */ +module.exports = (args: Object) => { + const { queryArgs, gqlType, firstOnly = false } = args + // Clone args as for some reason graphql-js removes the constructor + // from nested objects which breaks a check in sift.js. + const clonedArgs = JSON.parse(JSON.stringify(queryArgs)) + + // If nodes weren't provided, then load them from the DB + const nodes = args.nodes || loadNodes(gqlType.name) + + const { siftArgs, fieldsToSift } = parseFilter(clonedArgs.filter) + + // If the the query for single node only has a filter for an "id" + // using "eq" operator, then we'll just grab that ID and return it. + if (isEqId(firstOnly, fieldsToSift, siftArgs)) { + return resolveRecursive( + getNode(siftArgs[0].id[`$eq`]), + fieldsToSift, + gqlType.getFields() + ).then(node => (node ? [node] : [])) + } + + return resolveNodes( + nodes, + gqlType.name, + firstOnly, + fieldsToSift, + gqlType.getFields() + ).then(resolvedNodes => { + if (firstOnly) { + return handleFirst(siftArgs, resolvedNodes) + } else { + return handleMany(siftArgs, resolvedNodes, clonedArgs.sort) + } + }) +} diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-input-type-test.js.snap b/packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields-test.js.snap similarity index 89% rename from packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-input-type-test.js.snap rename to packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields-test.js.snap index e3a3efd24dee7..436d81ea4fb0b 100644 --- a/packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-input-type-test.js.snap +++ b/packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields-test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`GraphQL Input args can query object arrays 1`] = ` +exports[`connection input fields can query object arrays 1`] = ` Object { "data": Object { - "allNode": Object { + "allTest": Object { "edges": Array [ Object { "node": Object { diff --git a/packages/gatsby/src/schema/__tests__/build-node-connections-test.js b/packages/gatsby/src/schema/__tests__/build-node-connections-test.js new file mode 100644 index 0000000000000..8878f4652d929 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/build-node-connections-test.js @@ -0,0 +1,190 @@ +const { graphql, GraphQLObjectType, GraphQLSchema } = require(`graphql`) +const _ = require(`lodash`) +const createPageDependency = require(`../../redux/actions/add-page-dependency`) +jest.mock(`../../redux/actions/add-page-dependency`) +const nodeTypes = require(`../build-node-types`) +const nodeConnections = require(`../build-node-connections`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +describe(`build-node-connections`, () => { + let schema, store, types, connections + + async function runQuery(query) { + let context = { path: `foo` } + let { data, errors } = await graphql(schema, query, context, context) + expect(errors).not.toBeDefined() + return data + } + + beforeEach(async () => { + ;({ store } = require(`../../redux`)) + store.dispatch({ type: `DELETE_CACHE` }) + ;[ + { + id: `p1`, + internal: { type: `Parent` }, + hair: `red`, + children: [`c1`, `c2`, `r1`], + }, + { + id: `r1`, + internal: { type: `Relative` }, + hair: `black`, + children: [], + parent: `p1`, + }, + { + id: `c1`, + internal: { type: `Child` }, + hair: `brown`, + children: [], + parent: `p1`, + }, + { + id: `c2`, + internal: { type: `Child` }, + hair: `blonde`, + children: [], + parent: `p1`, + }, + ].forEach(n => store.dispatch({ type: `CREATE_NODE`, payload: n })) + + types = await nodeTypes.buildAll({}) + connections = await nodeConnections.buildAll(_.values(types)) + + schema = new GraphQLSchema({ + query: new GraphQLObjectType({ + name: `RootQueryType`, + fields: { ...connections, ..._.mapValues(types, `node`) }, + }), + }) + }) + + it(`should build connections`, () => { + expect(Object.keys(connections)).toHaveLength(3) + }) + + it(`should result in a valid queryable schema`, async () => { + let { allParent, allChild, allRelative } = await runQuery( + ` + { + allParent(filter: { id: { eq: "p1" } }) { + edges { + node { + hair + } + } + } + allChild(filter: { id: { eq: "c1" } }) { + edges { + node { + hair + } + } + } + allRelative(filter: { id: { eq: "r1" } }) { + edges { + node { + hair + } + } + } + } + ` + ) + expect(allParent.edges[0].node.hair).toEqual(`red`) + expect(allChild.edges[0].node.hair).toEqual(`brown`) + expect(allRelative.edges[0].node.hair).toEqual(`black`) + }) + + it(`should link children automatically`, async () => { + let { allParent } = await runQuery( + ` + { + allParent(filter: { id: { eq: "p1" } }) { + edges { + node { + children { + id + } + } + } + } + } + ` + ) + expect(allParent.edges[0].node.children).toBeDefined() + expect(allParent.edges[0].node.children.map(c => c.id)).toEqual([ + `c1`, + `c2`, + `r1`, + ]) + }) + + it(`should create typed children fields`, async () => { + let { allParent } = await runQuery( + ` + { + allParent(filter: { id: { eq: "p1" } }) { + edges { + node { + childrenChild { # lol + id + } + } + } + } + } + ` + ) + expect(allParent.edges[0].node.childrenChild).toBeDefined() + expect(allParent.edges[0].node.childrenChild.map(c => c.id)).toEqual([ + `c1`, + `c2`, + ]) + }) + + it(`should create typed child field for singular children`, async () => { + let { allParent } = await runQuery( + ` + { + allParent(filter: { id: { eq: "p1" } }) { + edges { + node { + childRelative { # lol + id + } + } + } + } + } + ` + ) + + expect(allParent.edges[0].node.childRelative).toBeDefined() + expect(allParent.edges[0].node.childRelative.id).toEqual(`r1`) + }) + + it(`should create page dependency`, async () => { + await runQuery( + ` + { + allParent(filter: { id: { eq: "p1" } }) { + edges { + node { + childRelative { # lol + id + } + } + } + } + } + ` + ) + + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + connection: `Parent`, + }) + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/build-node-types-test.js b/packages/gatsby/src/schema/__tests__/build-node-types-test.js index 8b3044533d30d..a30c752bba6a9 100644 --- a/packages/gatsby/src/schema/__tests__/build-node-types-test.js +++ b/packages/gatsby/src/schema/__tests__/build-node-types-test.js @@ -1,6 +1,18 @@ -const { graphql, GraphQLObjectType, GraphQLSchema } = require(`graphql`) +const { + graphql, + GraphQLObjectType, + GraphQLSchema, + GraphQLString, +} = require(`graphql`) const _ = require(`lodash`) -const buildNodeTypes = require(`../build-node-types`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +jest.mock(`../../utils/api-runner-node`) +const apiRunnerNode = require(`../../utils/api-runner-node`) + +const createPageDependency = require(`../../redux/actions/add-page-dependency`) +jest.mock(`../../redux/actions/add-page-dependency`) +const nodeTypes = require(`../build-node-types`) describe(`build-node-types`, () => { let schema, store, types @@ -13,6 +25,17 @@ describe(`build-node-types`, () => { } beforeEach(async () => { + createPageDependency.mockClear() + const apiRunnerResponse = [ + { + pluginField: { + type: GraphQLString, + description: `test description`, + resolve: parent => `pluginFieldValue`, + }, + }, + ] + apiRunnerNode.mockImplementation(() => apiRunnerResponse) ;({ store } = require(`../../redux`)) store.dispatch({ type: `DELETE_CACHE` }) ;[ @@ -45,7 +68,7 @@ describe(`build-node-types`, () => { }, ].forEach(n => store.dispatch({ type: `CREATE_NODE`, payload: n })) - types = await buildNodeTypes({}) + types = await nodeTypes.buildAll({}) schema = new GraphQLSchema({ query: new GraphQLObjectType({ name: `RootQueryType`, @@ -127,4 +150,121 @@ describe(`build-node-types`, () => { expect(parent.childRelative).toBeDefined() expect(parent.childRelative.id).toEqual(`r1`) }) + + it(`should handle plugin fields`, async () => { + const result = await runQuery( + ` + { + parent(id: { eq: "p1" }) { + pluginField + } + } + ` + ) + expect(result.parent.pluginField).toEqual(`pluginFieldValue`) + }) + + it(`should allow filtering on plugin fields`, async () => { + const result = await runQuery( + ` + { + parent(pluginField: { eq: "pluginFieldValue"}) { + pluginField + } + } + ` + ) + expect(result.parent.pluginField).toEqual(`pluginFieldValue`) + }) + + it(`should create root query type page dependency`, async () => { + await runQuery(` { parent(id: { eq: "p1" }) { id } } `) + + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `p1`, + }) + }) + + it(`should create children page dependency`, async () => { + await runQuery( + ` + { + parent { + children { id } + } + } + ` + ) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `c1`, + }) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `c2`, + }) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `r1`, + }) + }) + + it(`should create parent page dependency`, async () => { + await runQuery( + ` + { + child(id: { eq: "c1" }) { + parent { id } + } + } + ` + ) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `p1`, + }) + }) + + it(`should create childX page dependency`, async () => { + await runQuery( + ` + { + parent(id: { eq: "p1" }) { + childRelative { # lol + id + } + } + } + ` + ) + + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `r1`, + }) + }) + + it(`should create childrenX page dependency`, async () => { + await runQuery( + ` + { + parent(id: { eq: "p1" }) { + childrenChild { # lol + id + } + } + } + ` + ) + + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `c1`, + }) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `foo`, + nodeId: `c2`, + }) + }) }) diff --git a/packages/gatsby/src/schema/__tests__/connection-input-fields-test.js b/packages/gatsby/src/schema/__tests__/connection-input-fields-test.js new file mode 100644 index 0000000000000..29a458c3f7321 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/connection-input-fields-test.js @@ -0,0 +1,272 @@ +const _ = require(`lodash`) +const { graphql } = require(`graphql`) +const nodeTypes = require(`../build-node-types`) +const nodeConnections = require(`../build-node-connections`) +const { buildNodesSchema } = require(`../index`) +const { clearUnionTypes } = require(`../infer-graphql-type`) +const { store } = require(`../../redux`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +function makeNodes() { + return [ + { + id: `0`, + internal: { type: `Test` }, + children: [], + index: 0, + name: `The Mad Max`, + string: `a`, + float: 1.5, + hair: 1, + date: `2006-07-22T22:39:53.000Z`, + anArray: [1, 2, 3, 4], + key: { + withEmptyArray: [], + }, + anotherKey: { + withANested: { + nestedKey: `foo`, + emptyArray: [], + anotherEmptyArray: [], + }, + }, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of dash and adventure`, + blue: 100, + }, + anObjectArray: [ + { aString: `some string`, aNumber: 2, aBoolean: true }, + { aString: `some string`, aNumber: 2, anArray: [1, 2] }, + ], + boolean: true, + }, + { + id: `1`, + internal: { type: `Test` }, + children: [], + index: 1, + name: `The Mad Wax`, + string: `b`, + float: 2.5, + hair: 2, + anArray: [1, 2, 5, 4], + anotherKey: { + withANested: { + nestedKey: `foo`, + }, + }, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of slash and adventure`, + blue: 10010, + circle: `happy`, + }, + boolean: false, + data: { + tags: [ + { + tag: { + document: [ + { + data: { + tag: `Design System`, + }, + number: 3, + }, + ], + }, + }, + ], + }, + }, + { + id: `2`, + internal: { type: `Test` }, + children: [], + index: 2, + name: `The Mad Wax`, + string: `c`, + float: 3.5, + hair: 0, + date: `2006-07-29T22:39:53.000Z`, + anotherKey: { + withANested: { + nestedKey: `bar`, + }, + }, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of shave and adventure`, + blue: 10010, + circle: `happy`, + }, + data: { + tags: [ + { + tag: { + document: [ + { + data: { + tag: `Gatsby`, + }, + }, + ], + }, + }, + { + tag: { + document: [ + { + data: { + tag: `Design System`, + }, + number: 5, + }, + ], + }, + }, + ], + }, + }, + ] +} + +async function queryResult(nodesData, query, { types = [] } = {}) { + store.dispatch({ type: `DELETE_CACHE` }) + for (const node of nodesData) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } + clearUnionTypes() + const typesGQL = await nodeTypes.buildAll({}) + const connections = nodeConnections.buildAll(_.values(typesGQL)) + + // Pull off just the graphql node from each type object. + const nodes = _.mapValues(typesGQL, `node`) + + const schema = buildNodesSchema({ ...connections, ...nodes }) + + return graphql(schema, query) +} + +describe(`connection input fields`, () => { + it(`returns list of distinct values in a field`, async () => { + let result = await queryResult( + makeNodes(), + ` + { + allTest { + totalCount + names: distinct(field: name) + array: distinct(field: anArray) + blue: distinct(field: frontmatter___blue) + # Only one node has this field + circle: distinct(field: frontmatter___circle) + nestedField: distinct(field: anotherKey___withANested___nestedKey) + } + } + ` + ) + + expect(result.errors).not.toBeDefined() + + expect(result.data.allTest.names.length).toEqual(2) + expect(result.data.allTest.names[0]).toEqual(`The Mad Max`) + + expect(result.data.allTest.array.length).toEqual(5) + expect(result.data.allTest.array[0]).toEqual(`1`) + + expect(result.data.allTest.blue.length).toEqual(2) + expect(result.data.allTest.blue[0]).toEqual(`100`) + + expect(result.data.allTest.circle.length).toEqual(1) + expect(result.data.allTest.circle[0]).toEqual(`happy`) + + expect(result.data.allTest.nestedField.length).toEqual(2) + expect(result.data.allTest.nestedField[0]).toEqual(`bar`) + expect(result.data.allTest.nestedField[1]).toEqual(`foo`) + }) + + it(`handles the group connection field`, async () => { + let result = await queryResult( + makeNodes(), + ` { + allTest { + blue: group(field: frontmatter___blue) { + field + fieldValue + totalCount + } + anArray: group(field: anArray) { + field + fieldValue + totalCount + } + } + }` + ) + expect(result.errors).not.toBeDefined() + + expect(result.data.allTest.blue).toHaveLength(2) + expect(result.data.allTest.blue[0].fieldValue).toEqual(`100`) + expect(result.data.allTest.blue[0].field).toEqual(`frontmatter.blue`) + expect(result.data.allTest.blue[0].totalCount).toEqual(1) + + expect(result.data.allTest.anArray).toHaveLength(5) + expect(result.data.allTest.anArray[0].fieldValue).toEqual(`1`) + expect(result.data.allTest.anArray[0].field).toEqual(`anArray`) + expect(result.data.allTest.anArray[0].totalCount).toEqual(2) + }) + + it(`handles the nested group connection field`, async () => { + let result = await queryResult( + makeNodes(), + ` { + allTest { + nestedKey: group(field: anotherKey___withANested___nestedKey) { + field + fieldValue + totalCount + } + } + }` + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.nestedKey).toHaveLength(2) + expect(result.data.allTest.nestedKey[0].fieldValue).toEqual(`bar`) + expect(result.data.allTest.nestedKey[0].field).toEqual( + `anotherKey.withANested.nestedKey` + ) + expect(result.data.allTest.nestedKey[0].totalCount).toEqual(1) + expect(result.data.allTest.nestedKey[1].fieldValue).toEqual(`foo`) + expect(result.data.allTest.nestedKey[1].field).toEqual( + `anotherKey.withANested.nestedKey` + ) + expect(result.data.allTest.nestedKey[1].totalCount).toEqual(2) + }) + + it(`can query object arrays`, async () => { + let result = await queryResult( + makeNodes(), + ` + { + allTest { + edges { + node { + anObjectArray { + aString + aNumber + aBoolean + } + } + } + } + } + ` + ) + expect(result.errors).not.toBeDefined() + + expect(result).toMatchSnapshot() + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/connections-filter-on-linked-nodes.js b/packages/gatsby/src/schema/__tests__/connections-filter-on-linked-nodes.js new file mode 100644 index 0000000000000..711eb2dabc10e --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/connections-filter-on-linked-nodes.js @@ -0,0 +1,293 @@ +const _ = require(`lodash`) +const { graphql } = require(`graphql`) +const nodeTypes = require(`../build-node-types`) +const nodeConnections = require(`../build-node-connections`) +const { buildNodesSchema } = require(`../index`) +const { clearUnionTypes } = require(`../infer-graphql-type`) +const { getExampleValues } = require(`../data-tree-utils`) +const { + inferInputObjectStructureFromNodes, +} = require(`../infer-graphql-input-fields`) +const { store } = require(`../../redux`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +function makeNodes() { + return [ + { id: `child_1`, internal: { type: `Child` }, hair: `brown`, children: [] }, + { + id: `child_2`, + internal: { type: `Child` }, + children: [], + hair: `blonde`, + height: 101, + }, + { + id: `linked_A`, + internal: { type: `Linked_A` }, + children: [], + array: [{ linked___NODE: `linked_B` }], + single: { linked___NODE: `linked_B` }, + }, + { id: `linked_B`, internal: { type: `Linked_B` }, children: [] }, + ] +} + +async function queryResult(nodesData, query, { types = [] } = {}) { + for (const node of nodesData) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } + const typesGQL = await nodeTypes.buildAll({}) + const connections = nodeConnections.buildAll(_.values(typesGQL)) + + // Pull off just the graphql node from each type object. + const nodes = _.mapValues(typesGQL, `node`) + + const schema = buildNodesSchema({ ...connections, ...nodes }) + + return graphql(schema, query) +} + +describe(`filtering on linked nodes`, () => { + beforeEach(() => { + store.dispatch({ type: `DELETE_CACHE` }) + }) + clearUnionTypes() + it(`filters on linked nodes via id`, async () => { + let result = await queryResult( + makeNodes().concat([ + { + id: `child_2_link`, + internal: { type: `Test` }, + children: [], + linked___NODE: `child_2`, + foo: `bar`, + }, + { + id: `child_1_linked`, + internal: { type: `Test` }, + children: [], + linked___NODE: `child_1`, + foo: `baz`, + }, + ]), + ` + { + allTest(filter: { linked: { hair: { eq: "blonde" } } }) { + edges { node { linked { hair, height }, foo } } + } + } + ` + ) + expect(result.data.allTest.edges.length).toEqual(1) + expect(result.data.allTest.edges[0].node.linked.hair).toEqual(`blonde`) + expect(result.data.allTest.edges[0].node.linked.height).toEqual(101) + expect(result.data.allTest.edges[0].node.foo).toEqual(`bar`) + }) + + it(`returns nested linked fields`, async () => { + let result = await queryResult( + [ + { + id: `child_2`, + internal: { type: `Child` }, + children: [], + hair: `blonde`, + height: 101, + }, + { + id: `child_1_link`, + internal: { type: `Test` }, + children: [], + nested: { + linked___NODE: `child_2`, + }, + foo: `bar`, + }, + ], + ` + { + allTest(filter: { nested: { linked: { hair: { eq: "blonde" } } } }) { + edges { node { nested { linked { hair, height } }, foo } } + } + } + ` + ) + expect(result.data.allTest.edges[0].node.nested.linked.hair).toEqual( + `blonde` + ) + expect(result.data.allTest.edges[0].node.nested.linked.height).toEqual(101) + expect(result.data.allTest.edges[0].node.foo).toEqual(`bar`) + }) + + it(`returns all matching linked nodes`, async () => { + let result = await queryResult( + makeNodes().concat([ + { + id: `child_2_link`, + internal: { type: `Test` }, + children: [], + linked___NODE: `child_2`, + foo: `bar`, + }, + { + id: `child_2_link2`, + internal: { type: `Test` }, + children: [], + linked___NODE: `child_2`, + foo: `baz`, + }, + ]), + ` + { + allTest(filter: { linked: { hair: { eq: "blonde" } } }) { + edges { node { linked { hair, height }, foo } } + } + } + ` + ) + expect(result.data.allTest.edges[0].node.linked.hair).toEqual(`blonde`) + expect(result.data.allTest.edges[0].node.linked.height).toEqual(101) + expect(result.data.allTest.edges[0].node.foo).toEqual(`bar`) + expect(result.data.allTest.edges[1].node.foo).toEqual(`baz`) + }) + + it(`handles elemMatch operator`, async () => { + let result = await queryResult( + makeNodes().concat([ + { + id: `1`, + internal: { type: `Test` }, + children: [], + linked___NODE: [`child_1`, `child_2`], + foo: `bar`, + }, + { + id: `2`, + internal: { type: `Test` }, + children: [], + linked___NODE: [`child_1`], + foo: `baz`, + }, + { + id: `3`, + internal: { type: `Test` }, + children: [], + linked___NODE: [`child_2`], + foo: `foo`, + }, + { + id: `4`, + internal: { type: `Test` }, + children: [], + array: [{ linked___NODE: [`child_1`, `child_2`] }], + foo: `lorem`, + }, + { + id: `5`, + internal: { type: `Test` }, + children: [], + array: [ + { linked___NODE: [`child_1`] }, + { linked___NODE: [`child_2`] }, + ], + foo: `ipsum`, + }, + { + id: `6`, + internal: { type: `Test` }, + children: [], + array: [{ linked___NODE: [`child_1`] }], + foo: `sit`, + }, + { + id: `7`, + internal: { type: `Test` }, + children: [], + array: [{ linked___NODE: [`child_2`] }], + foo: `dolor`, + }, + { + id: `8`, + internal: { type: `Test` }, + children: [], + foo: `ipsum`, + }, + ]), + ` + { + eq:allTest(filter: { linked: { elemMatch: { hair: { eq: "brown" } } } }) { + edges { node { foo } } + } + in:allTest(filter: { linked: { elemMatch: { hair: { in: ["brown", "blonde"] } } } }) { + edges { node { foo } } + } + insideInlineArrayEq:allTest(filter: { array: { elemMatch: { linked: { elemMatch: { hair: { eq: "brown" } } } } } }) { + edges { node { foo } } + } + insideInlineArrayIn:allTest(filter: { array: { elemMatch: { linked: { elemMatch: { hair: { in: ["brown", "blonde"] } } } } } }) { + edges { node { foo } } + } + } + ` + ) + + const itemToEdge = item => { + return { + node: { + foo: item, + }, + } + } + + expect(result.data.eq.edges).toEqual([`bar`, `baz`].map(itemToEdge)) + expect(result.data.in.edges).toEqual([`bar`, `baz`, `foo`].map(itemToEdge)) + expect(result.data.insideInlineArrayEq.edges).toEqual( + [`lorem`, `ipsum`, `sit`].map(itemToEdge) + ) + expect(result.data.insideInlineArrayIn.edges).toEqual( + [`lorem`, `ipsum`, `sit`, `dolor`].map(itemToEdge) + ) + }) + + it(`doesn't mutate node object`, async () => { + const allTestNodes = makeNodes() + await queryResult( + allTestNodes.concat([ + { + id: `1`, + internal: { type: `Test` }, + children: [], + test: [ + { + linked___NODE: `linked_A`, + }, + ], + }, + ]), + ` + { + allTest { + edges { node { hair } } + } + } + ` + ) + const originalTestNode = allTestNodes.find( + node => node.internal.type === `Linked_A` + ) + delete originalTestNode.children + + expect(getExampleValues({ typeName: `Linked_A` })).toEqual(originalTestNode) + }) + + it(`skips fields with missing nodes`, async () => { + const fields = inferInputObjectStructureFromNodes({ + nodes: [], + exampleValue: { + movie___NODE: `foobar`, + }, + }).inferredFields + + expect(Object.keys(fields)).toHaveLength(0) + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-from-fields-test.js b/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-from-fields-test.js index 46951927c895b..609791827a62d 100644 --- a/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-from-fields-test.js +++ b/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-from-fields-test.js @@ -267,6 +267,14 @@ describe(`GraphQL Input args from fields, test-only`, () => { }, }) ), + baz: typeField( + new GraphQLObjectType({ + name: `Jbo2`, + fields: { + aa: typeField(OddType), + }, + }) + ), }, }), }, @@ -293,6 +301,10 @@ describe(`GraphQL Input args from fields, test-only`, () => { isStringInput(innerObjFields.foo.type) expect(innerObjFields.ba).toBeUndefined() isIntInput(innerObjFields.bar.type) + + // innerObj.baz is object containing only unsupported types + // so it should not be defined + expect(innerObj.baz).toBeUndefined() }) it(`includes the filters of list elements`, async () => { diff --git a/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-test.js b/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-test.js index 77f1381216137..fae2c8441c5ab 100644 --- a/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-test.js +++ b/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-test.js @@ -1,81 +1,34 @@ -const _ = require(`lodash`) -const { - graphql, - GraphQLString, - GraphQLObjectType, - GraphQLSchema, - GraphQLInputObjectType, -} = require(`graphql`) -const { connectionArgs, connectionDefinitions } = require(`graphql-skip-limit`) +const { graphql, GraphQLString, GraphQLObjectType } = require(`graphql`) -const runSift = require(`../run-sift`) const { inferObjectStructureFromNodes } = require(`../infer-graphql-type`) -const buildConnectionFields = require(`../build-connection-fields`) +const nodeConnections = require(`../build-node-connections`) +const { buildNodesSchema } = require(`../index`) const { inferInputObjectStructureFromNodes, } = require(`../infer-graphql-input-fields`) -const createSortField = require(`../create-sort-field`) -const { - getExampleValues, - clearTypeExampleValues, -} = require(`../data-tree-utils`) +const { clearTypeExampleValues } = require(`../data-tree-utils`) +const { store } = require(`../../redux`) +require(`../../db/__tests__/fixtures/ensure-loki`)() function queryResult(nodes, query, { types = [] } = {}) { - const nodeType = new GraphQLObjectType({ - name: `Test`, + for (const node of nodes) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } + const nodeObjectType = new GraphQLObjectType({ + name: `Node`, fields: inferObjectStructureFromNodes({ nodes, - types: [{ name: `Test` }, ...types], + types: [{ name: `Node` }, ...types], }), }) - - const { connectionType: nodeConnection } = connectionDefinitions({ - nodeType, - connectionFields: () => - buildConnectionFields({ - name, - nodes, - nodeObjectType: nodeType, - }), - }) - - const { sort, inferredFields } = inferInputObjectStructureFromNodes({ + const processedType = { nodes, - typeName: `test`, - }) - const schema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: () => { - return { - allNode: { - name: `nodeConnection`, - type: nodeConnection, - args: { - ...connectionArgs, - sort: createSortField(`RootQueryType`, sort), - filter: { - type: new GraphQLInputObjectType({ - name: _.camelCase(`filter test`), - description: `Filter connection on its fields`, - fields: () => inferredFields, - }), - }, - }, - resolve(nvi, args) { - return runSift({ - args, - nodes, - connection: true, - type: nodeType, - }) - }, - }, - } - }, - }), - }) - + name: `Node`, + nodeObjectType, + fieldsFromPlugins: [], + } + const fields = nodeConnections.buildFieldConfigMap(processedType) + const schema = buildNodesSchema(fields) return graphql(schema, query) } @@ -84,123 +37,12 @@ beforeEach(() => { }) describe(`GraphQL Input args`, () => { - const nodes = [ - { - index: 0, - name: `The Mad Max`, - string: `a`, - float: 1.5, - hair: 1, - date: `2006-07-22T22:39:53.000Z`, - anArray: [1, 2, 3, 4], - key: { - withEmptyArray: [], - }, - anotherKey: { - withANested: { - nestedKey: `foo`, - emptyArray: [], - anotherEmptyArray: [], - }, - }, - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of dash and adventure`, - blue: 100, - }, - anObjectArray: [ - { aString: `some string`, aNumber: 2, aBoolean: true }, - { aString: `some string`, aNumber: 2, anArray: [1, 2] }, - ], - boolean: true, - }, - { - index: 1, - name: `The Mad Wax`, - string: `b`, - float: 2.5, - hair: 2, - anArray: [1, 2, 5, 4], - anotherKey: { - withANested: { - nestedKey: `foo`, - }, - }, - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of slash and adventure`, - blue: 10010, - circle: `happy`, - }, - boolean: false, - data: { - tags: [ - { - tag: { - document: [ - { - data: { - tag: `Design System`, - }, - number: 3, - }, - ], - }, - }, - ], - }, - }, - { - index: 2, - name: `The Mad Wax`, - string: `c`, - float: 3.5, - hair: 0, - date: `2006-07-29T22:39:53.000Z`, - anotherKey: { - withANested: { - nestedKey: `bar`, - }, - }, - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of shave and adventure`, - blue: 10010, - circle: `happy`, - }, - data: { - tags: [ - { - tag: { - document: [ - { - data: { - tag: `Gatsby`, - }, - }, - ], - }, - }, - { - tag: { - document: [ - { - data: { - tag: `Design System`, - }, - number: 5, - }, - ], - }, - }, - ], - }, - }, - ] - + beforeEach(() => { + store.dispatch({ type: `DELETE_CACHE` }) + }) it(`filters out null example values`, async () => { let result = await queryResult( - [{ foo: null, bar: `baz` }], + [{ id: `1`, internal: { type: `Bar` }, foo: null, bar: `baz` }], ` { allNode(foo: { eq: "bar" }) { @@ -217,7 +59,7 @@ describe(`GraphQL Input args`, () => { it(`filters out empty objects`, async () => { let result = await queryResult( - [{ foo: {}, bar: `baz` }], + [{ id: `1`, internal: { type: `Bar` }, foo: {}, bar: `baz` }], ` { allNode(foo: { eq: "bar" }) { @@ -234,7 +76,7 @@ describe(`GraphQL Input args`, () => { it(`filters out empty arrays`, async () => { let result = await queryResult( - [{ foo: [], bar: `baz` }], + [{ id: `1`, internal: { type: `Bar` }, foo: [], bar: `baz` }], ` { allNode(foo: { eq: "bar" }) { @@ -251,7 +93,14 @@ describe(`GraphQL Input args`, () => { it(`filters out sparse arrays`, async () => { let result = await queryResult( - [{ foo: [undefined, null, null], bar: `baz` }], + [ + { + id: `1`, + internal: { type: `Bar` }, + foo: [undefined, null, null], + bar: `baz`, + }, + ], ` { allNode(foo: { eq: "bar" }) { @@ -276,7 +125,14 @@ describe(`GraphQL Input args`, () => { }) let result = await queryResult( - [{ linked___NODE: `baz`, foo: `bar` }], + [ + { + id: `1`, + internal: { type: `Bar` }, + linked___NODE: `baz`, + foo: `bar`, + }, + ], ` { allNode(linked___NODE: { eq: "baz" }) { @@ -343,591 +199,4 @@ describe(`GraphQL Input args`, () => { expect(fields.float.type.name.endsWith(`Float`)).toBe(true) expect(fields.longint.type.name.endsWith(`Float`)).toBe(true) }) - - it(`handles eq operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { eq: 2 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(1) - expect(result.data.allNode.edges[0].node.hair).toEqual(2) - }) - - it(`handles eq operator with false value`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {boolean: { eq: false }}) { - edges { node { name }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(1) - expect(result.data.allNode.edges[0].node.name).toEqual(`The Mad Wax`) - }) - - it(`handles eq operator with 0`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { eq: 0 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(1) - expect(result.data.allNode.edges[0].node.hair).toEqual(0) - }) - - it(`handles ne operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { ne: 2 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.hair).toEqual(1) - }) - - it(`handles lt operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { lt: 2 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.hair).toEqual(1) - expect(result.data.allNode.edges[1].node.hair).toEqual(0) - }) - - it(`handles lte operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { lte: 1 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.hair).toEqual(1) - expect(result.data.allNode.edges[1].node.hair).toEqual(0) - }) - - it(`handles gt operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { gt: 0 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.hair).toEqual(1) - expect(result.data.allNode.edges[1].node.hair).toEqual(2) - }) - - it(`handles gte operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {hair: { gte: 1 }}) { - edges { node { hair }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.hair).toEqual(1) - expect(result.data.allNode.edges[1].node.hair).toEqual(2) - }) - - it(`handles the regex operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {name: { regex: "/^the.*wax/i" }}) { - edges { node { name }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.name).toEqual(`The Mad Wax`) - }) - - it(`handles the in operator for scalars`, async () => { - let result = await queryResult( - nodes, - ` - { - string:allNode(filter: { string: { in: ["b", "c"] }}) { - edges { node { index }} - } - int:allNode(filter: { index: { in: [0, 2] }}) { - edges { node { index }} - } - float:allNode(filter: { float: { in: [1.5, 2.5] }}) { - edges { node { index }} - } - boolean:allNode(filter: { boolean: { in: [true, null] }}) { - edges { node { index }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.string.edges.length).toEqual(2) - expect(result.data.string.edges[0].node.index).toEqual(1) - expect(result.data.string.edges[1].node.index).toEqual(2) - expect(result.data.int.edges.length).toEqual(2) - expect(result.data.int.edges[0].node.index).toEqual(0) - expect(result.data.int.edges[1].node.index).toEqual(2) - expect(result.data.float.edges.length).toEqual(2) - expect(result.data.float.edges[0].node.index).toEqual(0) - expect(result.data.float.edges[1].node.index).toEqual(1) - expect(result.data.boolean.edges.length).toEqual(2) - expect(result.data.boolean.edges[0].node.index).toEqual(0) - expect(result.data.boolean.edges[1].node.index).toEqual(2) - }) - - it(`handles the in operator for array`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {anArray: { in: [5] }}) { - edges { node { name }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(1) - expect(result.data.allNode.edges[0].node.name).toEqual(`The Mad Wax`) - }) - - it(`handles the elemMatch operator for array of objects`, async () => { - let result = await queryResult( - nodes, - ` - { - test1:allNode(filter: {data: {tags: {elemMatch: {tag: {document: {elemMatch: {data: {tag: {eq: "Gatsby"}}}}}}}}}) { - edges { node { index }} - } - test2:allNode(filter: {data: {tags: {elemMatch: {tag: {document: {elemMatch: {data: {tag: {eq: "Design System"}}}}}}}}}) { - edges { node { index }} - } - test3:allNode(filter: {data: {tags: {elemMatch: {tag: {document: {elemMatch: {number: {lt: 4}}}}}}}}) { - edges { node { index }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.test1.edges.length).toEqual(1) - expect(result.data.test1.edges[0].node.index).toEqual(2) - expect(result.data.test2.edges.length).toEqual(2) - expect(result.data.test2.edges[0].node.index).toEqual(1) - expect(result.data.test2.edges[1].node.index).toEqual(2) - expect(result.data.test3.edges.length).toEqual(1) - expect(result.data.test3.edges[0].node.index).toEqual(1) - }) - - it(`handles the nin operator for array`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {anArray: { nin: [5] }}) { - edges { node { anArray }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - - result.data.allNode.edges.forEach(edge => { - expect(edge.node.anArray).not.toEqual(expect.arrayContaining([5])) - }) - }) - - it(`handles the nin operator for scalars`, async () => { - let result = await queryResult( - nodes, - ` - { - string:allNode(filter: { string: { nin: ["b", "c"] }}) { - edges { node { string }} - } - int:allNode(filter: { index: { nin: [0, 2] }}) { - edges { node { index }} - } - float:allNode(filter: { float: { nin: [1.5] }}) { - edges { node { float }} - } - boolean:allNode(filter: { boolean: { nin: [true, null] }}) { - edges { node { boolean }} - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - - expect(result.data.string.edges.length).toEqual(1) - result.data.string.edges.forEach(edge => { - expect(edge.node.string).not.toEqual(`b`) - expect(edge.node.string).not.toEqual(`c`) - }) - - expect(result.data.int.edges.length).toEqual(1) - result.data.int.edges.forEach(edge => { - expect(edge.node.index).not.toEqual(0) - expect(edge.node.index).not.toEqual(2) - }) - - expect(result.data.float.edges.length).toEqual(2) - result.data.float.edges.forEach(edge => { - expect(edge.node.float).not.toEqual(1.5) - }) - - expect(result.data.boolean.edges.length).toEqual(1) - result.data.boolean.edges.forEach(edge => { - expect(edge.node.boolean).not.toEqual(null) - expect(edge.node.boolean).not.toEqual(true) - }) - }) - - it(`handles the glob operator`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(limit: 10, filter: {name: { glob: "*Wax" }}) { - edges { node { name }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.name).toEqual(`The Mad Wax`) - }) - - it(`filters date fields`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode(filter: {date: { ne: null }}) { - edges { node { index }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(2) - expect(result.data.allNode.edges[0].node.index).toEqual(0) - expect(result.data.allNode.edges[1].node.index).toEqual(2) - }) - - it(`sorts results`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode( - limit: 10, - sort: { - fields: [frontmatter___blue], - order: DESC - } - ) { - edges { node { name }} - } - } - ` - ) - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.edges.length).toEqual(3) - expect(result.data.allNode.edges[0].node.name).toEqual(`The Mad Wax`) - }) - - it(`returns list of distinct values in a field`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode { - totalCount - names: distinct(field: name) - array: distinct(field: anArray) - blue: distinct(field: frontmatter___blue) - # Only one node has this field - circle: distinct(field: frontmatter___circle) - nestedField: distinct(field: anotherKey___withANested___nestedKey) - } - } - ` - ) - - expect(result.errors).not.toBeDefined() - - expect(result.data.allNode.names.length).toEqual(2) - expect(result.data.allNode.names[0]).toEqual(`The Mad Max`) - - expect(result.data.allNode.array.length).toEqual(5) - expect(result.data.allNode.array[0]).toEqual(`1`) - - expect(result.data.allNode.blue.length).toEqual(2) - expect(result.data.allNode.blue[0]).toEqual(`100`) - - expect(result.data.allNode.circle.length).toEqual(1) - expect(result.data.allNode.circle[0]).toEqual(`happy`) - - expect(result.data.allNode.nestedField.length).toEqual(2) - expect(result.data.allNode.nestedField[0]).toEqual(`bar`) - expect(result.data.allNode.nestedField[1]).toEqual(`foo`) - }) - - it(`handles the group connection field`, async () => { - let result = await queryResult( - nodes, - ` { - allNode { - blue: group(field: frontmatter___blue) { - field - fieldValue - totalCount - } - anArray: group(field: anArray) { - field - fieldValue - totalCount - } - } - }` - ) - expect(result.errors).not.toBeDefined() - - expect(result.data.allNode.blue).toHaveLength(2) - expect(result.data.allNode.blue[0].fieldValue).toEqual(`100`) - expect(result.data.allNode.blue[0].field).toEqual(`frontmatter.blue`) - expect(result.data.allNode.blue[0].totalCount).toEqual(1) - - expect(result.data.allNode.anArray).toHaveLength(5) - expect(result.data.allNode.anArray[0].fieldValue).toEqual(`1`) - expect(result.data.allNode.anArray[0].field).toEqual(`anArray`) - expect(result.data.allNode.anArray[0].totalCount).toEqual(2) - }) - - it(`handles the nested group connection field`, async () => { - let result = await queryResult( - nodes, - ` { - allNode { - nestedKey: group(field: anotherKey___withANested___nestedKey) { - field - fieldValue - totalCount - } - } - }` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.allNode.nestedKey).toHaveLength(2) - expect(result.data.allNode.nestedKey[0].fieldValue).toEqual(`bar`) - expect(result.data.allNode.nestedKey[0].field).toEqual( - `anotherKey.withANested.nestedKey` - ) - expect(result.data.allNode.nestedKey[0].totalCount).toEqual(1) - expect(result.data.allNode.nestedKey[1].fieldValue).toEqual(`foo`) - expect(result.data.allNode.nestedKey[1].field).toEqual( - `anotherKey.withANested.nestedKey` - ) - expect(result.data.allNode.nestedKey[1].totalCount).toEqual(2) - }) - - it(`can query object arrays`, async () => { - let result = await queryResult( - nodes, - ` - { - allNode { - edges { - node { - anObjectArray { - aString - aNumber - aBoolean - } - } - } - } - } - ` - ) - expect(result.errors).not.toBeDefined() - - expect(result).toMatchSnapshot() - }) -}) - -describe(`filtering on linked nodes`, () => { - let types - const allNodes = [ - { id: `child_1`, internal: { type: `Child` }, hair: `brown` }, - { - id: `child_2`, - internal: { type: `Child` }, - hair: `blonde`, - height: 101, - }, - { - id: `linked_A`, - internal: { type: `Linked_A` }, - array: [{ linked___NODE: `linked_B` }], - single: { linked___NODE: `linked_B` }, - }, - { id: `linked_B`, internal: { type: `Linked_B` } }, - ] - const typeMap = _.groupBy(allNodes, node => node.internal.type) - - const { store } = require(`../../redux`) - allNodes.forEach(node => { - store.dispatch({ - type: `CREATE_NODE`, - payload: node, - }) - }) - - types = _.toPairs(typeMap).map(([type, nodes]) => { - return { - name: type, - nodeObjectType: new GraphQLObjectType({ - name: type, - fields: () => - inferObjectStructureFromNodes({ - nodes, - types, - }), - }), - } - }) - - it(`filters on linked nodes via id`, async () => { - let result = await queryResult( - [ - { linked___NODE: `child_2`, foo: `bar` }, - { linked___NODE: `child_1`, foo: `baz` }, - ], - ` - { - allNode(filter: { linked: { hair: { eq: "blonde" } } }) { - edges { node { linked { hair, height }, foo } } - } - } - `, - { types } - ) - expect(result.data.allNode.edges.length).toEqual(1) - expect(result.data.allNode.edges[0].node.linked.hair).toEqual(`blonde`) - expect(result.data.allNode.edges[0].node.linked.height).toEqual(101) - expect(result.data.allNode.edges[0].node.foo).toEqual(`bar`) - }) - - it(`returns all matching linked nodes`, async () => { - let result = await queryResult( - [ - { linked___NODE: `child_2`, foo: `bar` }, - { linked___NODE: `child_2`, foo: `baz` }, - ], - ` - { - allNode(filter: { linked: { hair: { eq: "blonde" } } }) { - edges { node { linked { hair, height }, foo } } - } - } - `, - { types } - ) - expect(result.data.allNode.edges[0].node.linked.hair).toEqual(`blonde`) - expect(result.data.allNode.edges[0].node.linked.height).toEqual(101) - expect(result.data.allNode.edges[0].node.foo).toEqual(`bar`) - expect(result.data.allNode.edges[1].node.foo).toEqual(`baz`) - }) - - it(`doesn't mutate node object`, async () => { - await queryResult( - [ - { - test: [ - { - linked___NODE: `linked_A`, - }, - ], - }, - ], - ` - { - allNode { - edges { node { hair } } - } - } - `, - { types } - ) - const originalNode = allNodes.find( - node => node.internal.type === `Linked_A` - ) - - expect(getExampleValues({ typeName: `Linked_A` })).toEqual(originalNode) - }) }) diff --git a/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js b/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js index 07f354c74b97e..24886bfb7fca8 100644 --- a/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js +++ b/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js @@ -8,7 +8,12 @@ const path = require(`path`) const normalizePath = require(`normalize-path`) const { clearTypeExampleValues } = require(`../data-tree-utils`) const { typeConflictReporter } = require(`../type-conflict-reporter`) -const { inferObjectStructureFromNodes } = require(`../infer-graphql-type`) +const { + inferObjectStructureFromNodes, + clearUnionTypes, +} = require(`../infer-graphql-type`) +const { clearTypeNames } = require(`../create-type-name`) +require(`../../db/__tests__/fixtures/ensure-loki`)() function queryResult(nodes, fragment, { types = [], ignoreFields } = {}) { const schema = new GraphQLSchema({ @@ -83,6 +88,9 @@ describe(`GraphQL type inferance`, () => { "with-hyphen": 2, "with resolver": `1012-11-01`, 123: 42, + 456: { + testingTypeNameCreation: true, + }, aBoolean: true, externalUrl: `https://example.com/awesome.jpg`, domain: `pizza.com`, @@ -238,6 +246,9 @@ describe(`GraphQL type inferance`, () => { with_hyphen with_resolver(formatString:"DD.MM.YYYY") _123 + _456 { + testingTypeNameCreation + } ` ) @@ -250,6 +261,7 @@ describe(`GraphQL type inferance`, () => { expect(result.data.listNode[0].with_resolver).toEqual(`01.11.1012`) expect(result.data.listNode[0]._123).toEqual(42) expect(result.data.listNode[1]._123).toEqual(24) + expect(result.data.listNode[0]._456).toEqual(nodes[0][`456`]) }) describe(`Handles dates`, () => { @@ -511,6 +523,8 @@ describe(`GraphQL type inferance`, () => { beforeEach(() => { ;({ store } = require(`../../redux`)) + store.dispatch({ type: `DELETE_CACHE` }) + const { setFileNodeRootType } = require(`../types/type-file`) const fileType = { name: `File`, @@ -601,6 +615,7 @@ describe(`GraphQL type inferance`, () => { beforeEach(() => { ;({ store } = require(`../../redux`)) + store.dispatch({ type: `DELETE_CACHE` }) types = [ { name: `Child`, @@ -698,30 +713,93 @@ describe(`GraphQL type inferance`, () => { ) }) - it(`Creates union types when an array field is linking to multiple node types`, async () => { - let result = await queryResult( - [{ linked___NODE: [`child_1`, `pet_1`] }], - ` - linked { - __typename - ... on Child { - hair - } - ... on Pet { - species + describe(`Creation of union types when array field is linking to multiple types`, () => { + beforeEach(() => { + clearTypeNames() + clearUnionTypes() + }) + + it(`Creates union types`, async () => { + let result = await queryResult( + [{ linked___NODE: [`child_1`, `pet_1`] }], + ` + linked { + __typename + ... on Child { + hair + } + ... on Pet { + species + } } - } - `, - { types } - ) - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].linked[0].hair).toEqual(`brown`) - expect(result.data.listNode[0].linked[0].__typename).toEqual(`Child`) - expect(result.data.listNode[0].linked[1].species).toEqual(`dog`) - expect(result.data.listNode[0].linked[1].__typename).toEqual(`Pet`) - store.dispatch({ - type: `CREATE_NODE`, - payload: { id: `baz`, internal: { type: `Bar` } }, + `, + { types } + ) + expect(result.errors).not.toBeDefined() + expect(result.data.listNode[0].linked[0].hair).toEqual(`brown`) + expect(result.data.listNode[0].linked[0].__typename).toEqual(`Child`) + expect(result.data.listNode[0].linked[1].species).toEqual(`dog`) + expect(result.data.listNode[0].linked[1].__typename).toEqual(`Pet`) + store.dispatch({ + type: `CREATE_NODE`, + payload: { id: `baz`, internal: { type: `Bar` } }, + }) + }) + + it(`Uses same union type for same child node types and key`, () => { + const fields = inferObjectStructureFromNodes({ + nodes: [{ test___NODE: [`pet_1`, `child_1`] }], + types, + }) + const fields2 = inferObjectStructureFromNodes({ + nodes: [{ test___NODE: [`pet_1`, `child_2`] }], + types, + }) + expect(fields.test.type).toEqual(fields2.test.type) + }) + + it(`Uses a different type for the same child node types with a different key`, () => { + const fields = inferObjectStructureFromNodes({ + nodes: [{ test___NODE: [`pet_1`, `child_1`] }], + types, + }) + const fields2 = inferObjectStructureFromNodes({ + nodes: [{ differentKey___NODE: [`pet_1`, `child_2`] }], + types, + }) + expect(fields.test.type).not.toEqual(fields2.differentKey.type) + }) + + it(`Uses a different type for different child node types with the same key`, () => { + store.dispatch({ + type: `CREATE_NODE`, + payload: { id: `toy_1`, internal: { type: `Toy` } }, + }) + const fields = inferObjectStructureFromNodes({ + nodes: [{ test___NODE: [`pet_1`, `child_1`] }], + types, + }) + const fields2 = inferObjectStructureFromNodes({ + nodes: [{ test___NODE: [`pet_1`, `child_1`, `toy_1`] }], + types: types.concat([{ name: `Toy` }]), + }) + expect(fields.test.type).not.toEqual(fields2.test.type) + }) + + it(`Creates a new type after schema updates clear union types`, () => { + const nodes = [{ test___NODE: [`pet_1`, `child_1`] }] + const fields = inferObjectStructureFromNodes({ nodes, types }) + clearUnionTypes() + const updatedFields = inferObjectStructureFromNodes({ nodes, types }) + expect(fields.test.type).not.toEqual(updatedFields.test.type) + }) + + it(`Uses a reliable naming convention`, () => { + const nodes = [{ test___NODE: [`pet_1`, `child_1`] }] + inferObjectStructureFromNodes({ nodes, types }) + clearUnionTypes() + const updatedFields = inferObjectStructureFromNodes({ nodes, types }) + expect(updatedFields.test.type.ofType.name).toEqual(`unionTestNode_2`) }) }) }) diff --git a/packages/gatsby/src/schema/__tests__/node-tracking-test.js b/packages/gatsby/src/schema/__tests__/node-tracking-test.js deleted file mode 100644 index 9df62557ad2a6..0000000000000 --- a/packages/gatsby/src/schema/__tests__/node-tracking-test.js +++ /dev/null @@ -1,153 +0,0 @@ -const { readFile, writeFile } = require(`fs-extra`) - -jest.mock(`fs`) -jest.mock(`fs-extra`, () => { - return { - readFile: jest.fn(() => `contents`), - writeFile: jest.fn(), - } -}) - -afterEach(() => { - readFile.mockClear() - writeFile.mockClear() -}) - -describe(`Track root nodes`, () => { - const reduxStatePath = `${process.cwd()}/.cache/redux-state.json` - const MOCK_FILE_INFO = {} - MOCK_FILE_INFO[reduxStatePath] = ` - { - "nodes": { - "id1": { - "id": "id1", - "parent": null, - "children": [], - "inlineObject": { - "field": "fieldOfFirstNode" - }, - "inlineArray": [ - 1, 2, 3 - ], - "internal": { - "type": "TestNode", - "contentDigest": "digest1", - "owner": "test" - } - } - } - } - ` - require(`fs`).__setMockFiles(MOCK_FILE_INFO) - - const { getNode, getNodes } = require(`../../redux`) - const { findRootNodeAncestor } = require(`../node-tracking`) - const runSift = require(`../run-sift`) - const buildNodeTypes = require(`../build-node-types`) - const { - boundActionCreators: { createNode }, - } = require(`../../redux/actions`) - - createNode( - { - id: `id2`, - parent: null, - children: [], - inlineObject: { - field: `fieldOfSecondNode`, - }, - inlineArray: [1, 2, 3], - internal: { - type: `TestNode`, - contentDigest: `digest2`, - }, - }, - { - name: `test`, - } - ) - - describe(`Tracks nodes read from redux state cache`, () => { - it(`Tracks inline objects`, () => { - const node = getNode(`id1`) - const inlineObject = node.inlineObject - const trackedRootNode = findRootNodeAncestor(inlineObject) - - expect(trackedRootNode).toEqual(node) - }) - - it(`Tracks inline arrays`, () => { - const node = getNode(`id1`) - const inlineObject = node.inlineArray - const trackedRootNode = findRootNodeAncestor(inlineObject) - - expect(trackedRootNode).toEqual(node) - }) - - it(`Doesn't track copied objects`, () => { - const node = getNode(`id1`) - const copiedInlineObject = { ...node.inlineObject } - const trackedRootNode = findRootNodeAncestor(copiedInlineObject) - - expect(trackedRootNode).not.toEqual(node) - }) - }) - - describe(`Tracks nodes created using createNode action`, () => { - it(`Tracks inline objects`, () => { - const node = getNode(`id2`) - const inlineObject = node.inlineObject - const trackedRootNode = findRootNodeAncestor(inlineObject) - - expect(trackedRootNode).toEqual(node) - }) - }) - - describe(`Tracks nodes returned by running sift`, () => { - let type, nodes - - beforeAll(async () => { - type = (await buildNodeTypes({})).testNode.nodeObjectType - nodes = getNodes() - }) - - it(`Tracks objects when running query without filter`, async () => { - const result = await runSift({ - args: {}, - nodes, - type, - connection: true, - }) - - expect(result.edges.length).toEqual(2) - expect(findRootNodeAncestor(result.edges[0].node.inlineObject)).toEqual( - result.edges[0].node - ) - expect(findRootNodeAncestor(result.edges[1].node.inlineObject)).toEqual( - result.edges[1].node - ) - }) - - it(`Tracks objects when running query with filter`, async () => { - const result = await runSift({ - args: { - filter: { - inlineObject: { - field: { - eq: `fieldOfSecondNode`, - }, - }, - }, - }, - nodes, - type, - connection: true, - }) - - expect(result.edges.length).toEqual(1) - expect(findRootNodeAncestor(result.edges[0].node.inlineObject)).toEqual( - result.edges[0].node - ) - }) - }) -}) diff --git a/packages/gatsby/src/schema/__tests__/page-dependency-resolver.js b/packages/gatsby/src/schema/__tests__/page-dependency-resolver.js new file mode 100644 index 0000000000000..49f33a770cd94 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/page-dependency-resolver.js @@ -0,0 +1,10 @@ +const pageDependencyResolver = require(`../page-dependency-resolver`) + +describe(`page-dependency-resolver`, () => { + it(`should handle nulls in results`, async () => { + const innerResolver = () => [null] + const resolver = pageDependencyResolver(innerResolver) + const result = await resolver({}, {}) + expect(result).toEqual([null]) + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/run-query.js b/packages/gatsby/src/schema/__tests__/run-query.js new file mode 100644 index 0000000000000..d905cd73050f8 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/run-query.js @@ -0,0 +1,470 @@ +const { GraphQLObjectType } = require(`graphql`) +const nodesQuery = require(`../../db/nodes-query`) +const { inferObjectStructureFromNodes } = require(`../infer-graphql-type`) +const { store } = require(`../../redux`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +const makeNodes = () => [ + { + id: `0`, + internal: { type: `Test` }, + index: 0, + name: `The Mad Max`, + string: `a`, + float: 1.5, + hair: 1, + date: `2006-07-22T22:39:53.000Z`, + anArray: [1, 2, 3, 4], + key: { + withEmptyArray: [], + }, + anotherKey: { + withANested: { + nestedKey: `foo`, + emptyArray: [], + anotherEmptyArray: [], + }, + }, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of dash and adventure`, + tags: [`moo`, `foo`], + blue: 100, + }, + anObjectArray: [ + { aString: `some string`, aNumber: 2, aBoolean: true }, + { aString: `some string`, aNumber: 2, anArray: [1, 2] }, + ], + boolean: true, + }, + { + id: `1`, + internal: { type: `Test` }, + index: 1, + name: `The Mad Wax`, + string: `b`, + float: 2.5, + hair: 2, + anArray: [1, 2, 5, 4], + waxOnly: { + foo: true, + }, + anotherKey: { + withANested: { + nestedKey: `foo`, + }, + }, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of slash and adventure`, + blue: 10010, + circle: `happy`, + }, + boolean: false, + data: { + tags: [ + { + tag: { + document: [ + { + data: { + tag: `Design System`, + }, + number: 3, + }, + ], + }, + }, + ], + }, + }, + { + id: `2`, + internal: { type: `Test` }, + index: 2, + name: `The Mad Wax`, + string: `c`, + float: 3.5, + hair: 0, + date: `2006-07-29T22:39:53.000Z`, + waxOnly: null, + anotherKey: { + withANested: { + nestedKey: `bar`, + }, + }, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of shave and adventure`, + blue: 10010, + circle: `happy`, + }, + data: { + tags: [ + { + tag: { + document: [ + { + data: { + tag: `Gatsby`, + }, + }, + ], + }, + }, + { + tag: { + document: [ + { + data: { + tag: `Design System`, + }, + number: 5, + }, + ], + }, + }, + ], + }, + }, +] + +function makeGqlType(nodes) { + return new GraphQLObjectType({ + name: `Test`, + fields: inferObjectStructureFromNodes({ + nodes, + types: [{ name: `Test` }], + }), + }) +} + +function resetDb(nodes) { + store.dispatch({ type: `DELETE_CACHE` }) + for (const node of nodes) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } +} + +async function runQuery(queryArgs) { + const nodes = makeNodes() + resetDb(nodes) + const gqlType = makeGqlType(nodes) + const context = {} + const args = { + gqlType, + context, + firstOnly: false, + queryArgs, + } + return await nodesQuery.run(args) +} + +async function runFilter(filter) { + return await runQuery({ filter }) +} + +describe(`Filter fields`, () => { + it(`handles eq operator`, async () => { + let result = await runFilter({ hair: { eq: 2 } }) + + expect(result.length).toEqual(1) + expect(result[0].hair).toEqual(2) + }) + + it(`handles eq operator with false value`, async () => { + let result = await runFilter({ boolean: { eq: false } }) + + expect(result.length).toEqual(1) + expect(result[0].name).toEqual(`The Mad Wax`) + }) + + it(`handles eq operator with 0`, async () => { + let result = await runFilter({ hair: { eq: 0 } }) + + expect(result.length).toEqual(1) + expect(result[0].hair).toEqual(0) + }) + + it(`handles ne operator`, async () => { + let result = await runFilter({ hair: { ne: 2 } }) + + expect(result.length).toEqual(2) + expect(result[0].hair).toEqual(1) + }) + + it(`handles nested ne: true operator`, async () => { + let result = await runFilter({ waxOnly: { foo: { ne: true } } }) + + expect(result.length).toEqual(2) + }) + + it(`handles lt operator`, async () => { + let result = await runFilter({ hair: { lt: 2 } }) + + expect(result.length).toEqual(2) + expect(result[0].hair).toEqual(1) + expect(result[1].hair).toEqual(0) + }) + + it(`handles lte operator`, async () => { + let result = await runFilter({ hair: { lte: 1 } }) + + expect(result.length).toEqual(2) + expect(result[0].hair).toEqual(1) + expect(result[1].hair).toEqual(0) + }) + + it(`handles gt operator`, async () => { + let result = await runFilter({ hair: { gt: 0 } }) + + expect(result.length).toEqual(2) + expect(result[0].hair).toEqual(1) + expect(result[1].hair).toEqual(2) + }) + + it(`handles gte operator`, async () => { + let result = await runFilter({ hair: { gte: 1 } }) + + expect(result.length).toEqual(2) + expect(result[0].hair).toEqual(1) + expect(result[1].hair).toEqual(2) + }) + + it(`handles the regex operator`, async () => { + let result = await runFilter({ name: { regex: `/^the.*wax/i` } }) + expect(result.length).toEqual(2) + expect(result[0].name).toEqual(`The Mad Wax`) + }) + + it(`handles the in operator for strings`, async () => { + let result = await runFilter({ string: { in: [`b`, `c`] } }) + expect(result.length).toEqual(2) + expect(result[0].index).toEqual(1) + }) + + it(`handles the in operator for ints`, async () => { + let result = await runFilter({ index: { in: [0, 2] } }) + expect(result.length).toEqual(2) + expect(result[0].index).toEqual(0) + expect(result[1].index).toEqual(2) + }) + + it(`handles the in operator for floats`, async () => { + let result = await runFilter({ float: { in: [1.5, 2.5] } }) + expect(result.length).toEqual(2) + expect(result[0].index).toEqual(0) + expect(result[1].index).toEqual(1) + }) + + it(`handles the in operator for booleans`, async () => { + let result = await runFilter({ boolean: { in: [true] } }) + expect(result.length).toEqual(1) // 2 + expect(result[0].index).toEqual(0) + // expect(result[1].index).toEqual(2) + }) + + it(`handles the in operator for array`, async () => { + let result = await runFilter({ anArray: { in: [5] } }) + expect(result.length).toEqual(1) + expect(result[0].name).toEqual(`The Mad Wax`) + }) + + it(`handles the nested in operator for array of strings`, async () => { + let result = await runFilter({ frontmatter: { tags: { in: [`moo`] } } }) + expect(result).toHaveLength(1) + expect(result[0].name).toEqual(`The Mad Max`) + }) + + it(`handles the elemMatch operator for array of objects`, async () => { + let result = await runFilter({ + data: { + tags: { + elemMatch: { + tag: { + document: { + elemMatch: { + data: { + tag: { eq: `Gatsby` }, + }, + }, + }, + }, + }, + }, + }, + }) + + expect(result.length).toEqual(1) + expect(result[0].index).toEqual(2) + }) + + it(`handles the elemMatch operator for array of objects (2)`, async () => { + let result = await runFilter({ + data: { + tags: { + elemMatch: { + tag: { + document: { + elemMatch: { + data: { + tag: { eq: `Design System` }, + }, + }, + }, + }, + }, + }, + }, + }) + + expect(result.length).toEqual(2) + expect(result[0].index).toEqual(1) + expect(result[1].index).toEqual(2) + }) + + it(`handles the elemMatch operator for array of objects (number)`, async () => { + let result = await runFilter({ + data: { + tags: { + elemMatch: { + tag: { + document: { + elemMatch: { + number: { lt: 4 }, + }, + }, + }, + }, + }, + }, + }) + + expect(result.length).toEqual(1) + expect(result[0].index).toEqual(1) + }) + + it(`handles the nin operator for array`, async () => { + let result = await runFilter({ anArray: { nin: [5] } }) + + expect(result.length).toEqual(2) + + result.forEach(edge => { + expect(edge.anArray).not.toEqual(expect.arrayContaining([5])) + }) + }) + + it(`handles the nin operator for strings`, async () => { + let result = await runFilter({ string: { nin: [`b`, `c`] } }) + + expect(result.length).toEqual(1) + result.forEach(edge => { + expect(edge.string).not.toEqual(`b`) + expect(edge.string).not.toEqual(`c`) + }) + }) + + it(`handles the nin operator for ints`, async () => { + let result = await runFilter({ index: { nin: [0, 2] } }) + + expect(result.length).toEqual(1) + result.forEach(edge => { + expect(edge.index).not.toEqual(0) + expect(edge.index).not.toEqual(2) + }) + }) + + it(`handles the nin operator for floats`, async () => { + let result = await runFilter({ float: { nin: [1.5] } }) + + expect(result.length).toEqual(2) + result.forEach(edge => { + expect(edge.float).not.toEqual(1.5) + }) + }) + + it(`handles the nin operator for booleans`, async () => { + let result = await runFilter({ boolean: { nin: [true, null] } }) + + expect(result.length).toEqual(1) + result.forEach(edge => { + expect(edge.boolean).not.toEqual(null) + expect(edge.boolean).not.toEqual(true) + }) + }) + + it(`handles the glob operator`, async () => { + let result = await runFilter({ name: { glob: `*Wax` } }) + + expect(result.length).toEqual(2) + expect(result[0].name).toEqual(`The Mad Wax`) + }) + + it(`filters date fields`, async () => { + let result = await runFilter({ date: { ne: null } }) + + expect(result.length).toEqual(2) + expect(result[0].index).toEqual(0) + expect(result[1].index).toEqual(2) + }) +}) + +describe(`collection fields`, () => { + it(`sorts results`, async () => { + let result = await runQuery({ + limit: 10, + sort: { + fields: [`frontmatter___blue`], + order: `desc`, + }, + }) + + expect(result.length).toEqual(3) + expect(result[0].name).toEqual(`The Mad Wax`) + }) + + it(`sorts results with desc has null fields first`, async () => { + let result = await runQuery({ + limit: 10, + sort: { + fields: [`waxOnly`], + order: `desc`, + }, + }) + + expect(result.length).toEqual(3) + expect(result[0].id).toEqual(`0`) + expect(result[1].id).toEqual(`2`) + expect(result[2].id).toEqual(`1`) + }) + + it(`sorts results with asc has null fields last`, async () => { + let result = await runQuery({ + limit: 10, + sort: { + fields: [`waxOnly`], + order: `asc`, + }, + }) + + expect(result.length).toEqual(3) + expect(result[0].id).toEqual(`1`) + expect(result[1].id).toEqual(`2`) + expect(result[2].id).toEqual(`0`) + }) + + it(`applies order (asc/desc) to all sort fields`, async () => { + let result = await runQuery({ + limit: 10, + sort: { + fields: [`frontmatter___blue`, `id`], + order: `desc`, + }, + }) + + expect(result.length).toEqual(3) + expect(result[0].id).toEqual(`1`) // blue = 10010, id = 1 + expect(result[1].id).toEqual(`2`) // blue = 10010, id = 2 + expect(result[2].id).toEqual(`0`) // blue = 100, id = 0 + }) +}) diff --git a/packages/gatsby/src/schema/build-node-connections.js b/packages/gatsby/src/schema/build-node-connections.js index 0ec2825e2bd3f..6ea3524d86970 100644 --- a/packages/gatsby/src/schema/build-node-connections.js +++ b/packages/gatsby/src/schema/build-node-connections.js @@ -8,81 +8,114 @@ const { const { inferInputObjectStructureFromFields, } = require(`./infer-graphql-input-fields-from-fields`) -const createSortField = require(`./create-sort-field`) +const buildSortArg = require(`./create-sort-field`) const buildConnectionFields = require(`./build-connection-fields`) -const { getNodes } = require(`../redux`) +const createPageDependency = require(`../redux/actions/add-page-dependency`) +const { connectionFromArray } = require(`graphql-skip-limit`) +const { run: runQuery } = require(`../db/nodes-query`) -module.exports = (types: any) => { - const connections = {} +function handleQueryResult({ results, queryArgs, path }) { + if (results && results.length) { + const connection = connectionFromArray(results, queryArgs) + connection.totalCount = results.length - _.each(types, (type /* , fieldName*/) => { - // Don't create a connection for the Site node since there can only be one - // of them. - if (type.name === `Site`) { - return + if (results[0].internal) { + const connectionType = connection.edges[0].node.internal.type + createPageDependency({ + path, + connection: connectionType, + }) } - const nodes = type.nodes - const typeName = `${type.name}Connection` - const { connectionType: typeConnection } = connectionDefinitions({ - nodeType: type.nodeObjectType, - connectionFields: () => buildConnectionFields(type), - }) + return connection + } else { + return null + } +} - const inferredInputFieldsFromNodes = inferInputObjectStructureFromNodes({ - nodes, - typeName, +function buildResolver(gqlType) { + return async (object, queryArgs, b, { rootValue }) => { + let path + if (typeof rootValue !== `undefined`) { + path = rootValue.path + } + const results = await runQuery({ + queryArgs, + firstOnly: false, + gqlType, }) + return handleQueryResult({ results, queryArgs, path }) + } +} - const inferredInputFieldsFromPlugins = inferInputObjectStructureFromFields({ - fields: type.fieldsFromPlugins, - typeName, - }) +function buildFilterArg(typeName, filterFields) { + return { + type: new GraphQLInputObjectType({ + name: _.camelCase(`filter ${typeName}`), + description: `Filter connection on its fields`, + fields: () => filterFields, + }), + } +} - const filterFields = _.merge( - {}, - inferredInputFieldsFromNodes.inferredFields, - inferredInputFieldsFromPlugins.inferredFields - ) - const sortNames = inferredInputFieldsFromNodes.sort.concat( - inferredInputFieldsFromPlugins.sort - ) - const sort = createSortField(typeName, sortNames) +function buildFieldConfig(processedType) { + const { nodes, nodeObjectType } = processedType + const typeName = `${processedType.name}Connection` + const { connectionType: outputType } = connectionDefinitions({ + nodeType: nodeObjectType, + connectionFields: () => buildConnectionFields(processedType), + }) - connections[_.camelCase(`all ${type.name}`)] = { - type: typeConnection, - description: `Connection to all ${type.name} nodes`, - args: { - ...connectionArgs, - sort, - filter: { - type: new GraphQLInputObjectType({ - name: _.camelCase(`filter ${type.name}`), - description: `Filter connection on its fields`, - fields: () => filterFields, - }), - }, - }, - resolve(object, resolveArgs, b, { rootValue }) { - let path - if (typeof rootValue !== `undefined`) { - path = rootValue.path - } - const runSift = require(`./run-sift`) - const latestNodes = _.filter( - getNodes(), - n => n.internal.type === type.name - ) - return runSift({ - args: resolveArgs, - nodes: latestNodes, - connection: true, - path, - typeName: typeName, - type: type.node.type, - }) - }, - } + const inferredInputFieldsFromNodes = inferInputObjectStructureFromNodes({ + nodes, + typeName, + }) + + const inferredInputFieldsFromPlugins = inferInputObjectStructureFromFields({ + fields: processedType.fieldsFromPlugins, + typeName, }) - return connections + const filterFields = _.merge( + {}, + inferredInputFieldsFromNodes.inferredFields, + inferredInputFieldsFromPlugins.inferredFields + ) + const sortNames = inferredInputFieldsFromNodes.sort.concat( + inferredInputFieldsFromPlugins.sort + ) + + const argsMap = { + ...connectionArgs, + sort: buildSortArg(typeName, sortNames), + filter: buildFilterArg(processedType.name, filterFields), + } + + return { + type: outputType, + description: `Connection to all ${processedType.name} nodes`, + args: argsMap, + resolve: buildResolver(nodeObjectType), + } +} + +function buildFieldConfigMap(processedType) { + const fieldName = _.camelCase(`all ${processedType.name}`) + const fieldConfig = buildFieldConfig(processedType) + return { [fieldName]: fieldConfig } +} + +function fieldConfigReducer(fieldConfigMap, type) { + return Object.assign(fieldConfigMap, buildFieldConfigMap(type)) +} + +function buildAll(processedTypes) { + return processedTypes + .filter(type => type.name !== `Site`) + .reduce(fieldConfigReducer, {}) +} + +module.exports = { + buildFieldConfig, + buildFieldConfigMap, + buildAll, } diff --git a/packages/gatsby/src/schema/build-node-types.js b/packages/gatsby/src/schema/build-node-types.js index 7b2e8874b602b..3045878bf878d 100644 --- a/packages/gatsby/src/schema/build-node-types.js +++ b/packages/gatsby/src/schema/build-node-types.js @@ -17,10 +17,12 @@ const { inferInputObjectStructureFromNodes, } = require(`./infer-graphql-input-fields`) const { nodeInterface } = require(`./node-interface`) -const { getNodes, getNode, getNodeAndSavePathDependency } = require(`../redux`) -const { createPageDependency } = require(`../redux/actions/add-page-dependency`) +const { getNodes, getNode } = require(`../db/nodes`) +const pageDependencyResolver = require(`./page-dependency-resolver`) const { setFileNodeRootType } = require(`./types/type-file`) const { clearTypeExampleValues } = require(`./data-tree-utils`) +const { run: runQuery } = require(`../db/nodes-query`) +const lazyFields = require(`./lazy-fields`) import type { ProcessedNodeType } from "./infer-graphql-type" @@ -28,210 +30,245 @@ type TypeMap = { [typeName: string]: ProcessedNodeType, } -const nodesCache = new Map() +const defaultNodeFields = { + id: { + type: new GraphQLNonNull(GraphQLID), + description: `The id of this node.`, + }, + parent: { + type: nodeInterface, + description: `The parent of this node.`, + resolve: pageDependencyResolver(node => getNode(node.parent)), + }, + children: { + type: new GraphQLList(nodeInterface), + description: `The children of this node.`, + resolve: pageDependencyResolver(node => node.children.map(getNode)), + }, +} -module.exports = async ({ parentSpan }) => { - const spanArgs = parentSpan ? { childOf: parentSpan } : {} - const span = tracer.startSpan(`build schema`, spanArgs) +function groupChildNodesByType(nodes) { + return _(nodes) + .flatMap(node => node.children.map(getNode)) + .groupBy( + node => (node.internal ? _.camelCase(node.internal.type) : undefined) + ) + .value() +} - const types = _.groupBy( - getNodes().filter(node => node.internal && !node.internal.ignoreType), - node => node.internal.type +function nodeIsOfType(typeName) { + return node => _.camelCase(node.internal.type) === typeName +} + +function makeChildrenResolver(typeName) { + return node => node.children.map(getNode).filter(nodeIsOfType(typeName)) +} + +function buildChildrenFieldConfigMap(typeName, nodeObjectType) { + const fieldName = _.camelCase(`children ${typeName}`) + const fieldConfig = { + type: new GraphQLList(nodeObjectType), + description: `The children of this node of type ${typeName}`, + resolve: pageDependencyResolver(makeChildrenResolver(typeName)), + } + return { [fieldName]: fieldConfig } +} + +function makeChildResolver(typeName) { + return node => node.children.map(getNode).find(nodeIsOfType(typeName)) +} + +function buildChildFieldConfigMap(typeName, nodeObjectType) { + const fieldName = _.camelCase(`child ${typeName}`) + const fieldConfig = { + type: nodeObjectType, + description: `The child of this node of type ${typeName}`, + resolve: pageDependencyResolver(makeChildResolver(typeName)), + } + return { [fieldName]: fieldConfig } +} + +function inferChildFieldConfigMap(type, typeName, processedTypes) { + const { nodeObjectType } = processedTypes[typeName] + // Does this child type have one child per parent or multiple? + const maxChildCount = _.maxBy( + _.values(_.groupBy(type, c => c.parent)), + g => g.length + ).length + + if (maxChildCount > 1) { + return buildChildrenFieldConfigMap(typeName, nodeObjectType) + } else { + return buildChildFieldConfigMap(typeName, nodeObjectType) + } +} + +function inferChildFields(nodes, processedTypes) { + // Create children fields for each type of children e.g. + // "childrenMarkdownRemark". + const childNodesByType = groupChildNodesByType(nodes) + + const configMaps = _.map(childNodesByType, (type, typeName) => + inferChildFieldConfigMap(type, typeName, processedTypes) ) - const processedTypes: TypeMap = {} + return _.assign.apply(null, [{}, ...configMaps]) +} - clearTypeExampleValues() +function inferFields({ nodes, pluginFields, processedTypes }) { + // Create children fields for each type of children e.g. + // "childrenMarkdownRemark". + const childFields = inferChildFields(nodes, processedTypes) - // Reset stored File type to not point to outdated type definition - setFileNodeRootType(null) + const inferredFields = inferObjectStructureFromNodes({ + nodes, + types: _.values(processedTypes), + ignoreFields: Object.keys(pluginFields), + }) - function createNodeFields(type: ProcessedNodeType) { - const defaultNodeFields = { - id: { - type: new GraphQLNonNull(GraphQLID), - description: `The id of this node.`, - }, - parent: { - type: nodeInterface, - description: `The parent of this node.`, - resolve(node, a, context) { - return getNodeAndSavePathDependency(node.parent, context.path) - }, - }, - children: { - type: new GraphQLList(nodeInterface), - description: `The children of this node.`, - resolve(node, a, { path }) { - return node.children.map(id => getNodeAndSavePathDependency(id, path)) - }, - }, - } + return { + ...defaultNodeFields, + ...childFields, + ...inferredFields, + ...pluginFields, + } +} - // Create children fields for each type of children e.g. - // "childrenMarkdownRemark". - const childNodesByType = _(type.nodes) - .flatMap(({ children }) => children.map(getNode)) - .groupBy( - node => (node.internal ? _.camelCase(node.internal.type) : undefined) - ) - .value() - - Object.keys(childNodesByType).forEach(childNodeType => { - // Does this child type have one child per parent or multiple? - const maxChildCount = _.maxBy( - _.values(_.groupBy(childNodesByType[childNodeType], c => c.parent)), - g => g.length - ).length - - if (maxChildCount > 1) { - defaultNodeFields[_.camelCase(`children ${childNodeType}`)] = { - type: new GraphQLList(processedTypes[childNodeType].nodeObjectType), - description: `The children of this node of type ${childNodeType}`, - resolve(node, a, { path }) { - const filteredNodes = node.children - .map(id => getNode(id)) - .filter( - ({ internal }) => _.camelCase(internal.type) === childNodeType - ) - - // Add dependencies for the path - filteredNodes.forEach(n => - createPageDependency({ - path, - nodeId: n.id, - }) - ) - return filteredNodes - }, - } - } else { - defaultNodeFields[_.camelCase(`child ${childNodeType}`)] = { - type: processedTypes[childNodeType].nodeObjectType, - description: `The child of this node of type ${childNodeType}`, - resolve(node, a, { path }) { - const childNode = node.children - .map(id => getNode(id)) - .find( - ({ internal }) => _.camelCase(internal.type) === childNodeType - ) - - if (childNode) { - // Add dependencies for the path - createPageDependency({ - path, - nodeId: childNode.id, - }) - return childNode - } - return null - }, - } - } - }) +function buildResolver(gqlType) { + return async (a, queryArgs) => { + if (!_.isObject(queryArgs)) { + queryArgs = {} + } - const inferredFields = inferObjectStructureFromNodes({ - nodes: type.nodes, - types: _.values(processedTypes), - ignoreFields: Object.keys(type.fieldsFromPlugins), + const results = await runQuery({ + queryArgs: { + filter: { + ...queryArgs, + }, + }, + firstOnly: true, + gqlType, }) - return { - ...defaultNodeFields, - ...inferredFields, - ...type.fieldsFromPlugins, + if (results.length > 0) { + return results[0] + } else { + return null } } +} - async function createType(nodes, typeName) { - const intermediateType = {} +function buildNodeObjectType({ + typeName, + nodes, + pluginFields, + processedTypes, +}) { + return new GraphQLObjectType({ + name: typeName, + description: `Node of type ${typeName}`, + interfaces: [nodeInterface], + fields: () => inferFields({ nodes, pluginFields, processedTypes }), + isTypeOf: value => value.internal.type === typeName, + }) +} - intermediateType.name = typeName - intermediateType.nodes = nodes +async function buildProcessedType({ nodes, typeName, processedTypes, span }) { + const intermediateType = {} - const fieldsFromPlugins = await apiRunner(`setFieldsOnGraphQLNodeType`, { - type: intermediateType, - traceId: `initial-setFieldsOnGraphQLNodeType`, - parentSpan: span, - }) + intermediateType.name = typeName + intermediateType.nodes = nodes - const mergedFieldsFromPlugins = _.merge(...fieldsFromPlugins) + const pluginFields = await apiRunner(`setFieldsOnGraphQLNodeType`, { + type: intermediateType, + traceId: `initial-setFieldsOnGraphQLNodeType`, + parentSpan: span, + }) - const inferredInputFieldsFromPlugins = inferInputObjectStructureFromFields({ - fields: mergedFieldsFromPlugins, - }) + const mergedFieldsFromPlugins = _.merge(...pluginFields) + + const pluginInputFields = inferInputObjectStructureFromFields({ + fields: mergedFieldsFromPlugins, + }) + _.each(pluginInputFields.inferredFields, (fieldConfig, fieldName) => { + lazyFields.add(typeName, fieldName) + }) + + const gqlType = buildNodeObjectType({ + typeName, + nodes, + pluginFields: mergedFieldsFromPlugins, + processedTypes, + }) - const gqlType = new GraphQLObjectType({ + const nodeInputFields = inferInputObjectStructureFromNodes({ + nodes, + typeName, + }) + + const filterFields = _.merge( + {}, + nodeInputFields.inferredFields, + pluginInputFields.inferredFields + ) + + return { + ...intermediateType, + fieldsFromPlugins: mergedFieldsFromPlugins, + nodeObjectType: gqlType, + node: { name: typeName, - description: `Node of type ${typeName}`, - interfaces: [nodeInterface], - fields: () => createNodeFields(proccesedType), - isTypeOf: value => value.internal.type === typeName, - }) + type: gqlType, + args: filterFields, + resolve: pageDependencyResolver(buildResolver(gqlType)), + }, + } +} - const inferedInputFields = inferInputObjectStructureFromNodes({ - nodes, - typeName, - }) +function groupNodesByType(nodes) { + return _.groupBy( + nodes.filter(node => node.internal && !node.internal.ignoreType), + node => node.internal.type + ) +} - const filterFields = _.merge( - {}, - inferedInputFields.inferredFields, - inferredInputFieldsFromPlugins.inferredFields - ) +async function buildAll({ parentSpan }) { + const spanArgs = parentSpan ? { childOf: parentSpan } : {} + const span = tracer.startSpan(`build schema`, spanArgs) - const proccesedType: ProcessedNodeType = { - ...intermediateType, - fieldsFromPlugins: mergedFieldsFromPlugins, - nodeObjectType: gqlType, - node: { - name: typeName, - type: gqlType, - args: filterFields, - resolve(a, args, context) { - const runSift = require(`./run-sift`) - let latestNodes - if ( - process.env.NODE_ENV === `production` && - nodesCache.has(typeName) - ) { - latestNodes = nodesCache.get(typeName) - } else { - latestNodes = _.filter( - getNodes(), - n => n.internal.type === typeName - ) - nodesCache.set(typeName, latestNodes) - } - if (!_.isObject(args)) { - args = {} - } - return runSift({ - args: { - filter: { - ...args, - }, - }, - nodes: latestNodes, - path: context.path ? context.path : ``, - typeName: typeName, - type: gqlType, - }) - }, - }, - } + const types = groupNodesByType(getNodes()) + const processedTypes: TypeMap = {} - processedTypes[_.camelCase(typeName)] = proccesedType + clearTypeExampleValues() - // Special case to construct linked file type used by type inferring - if (typeName === `File`) { - setFileNodeRootType(gqlType) - } - } + // Reset stored File type to not point to outdated type definition + setFileNodeRootType(null) // Create node types and node fields for nodes that have a resolve function. - await Promise.all(_.map(types, createType)) + await Promise.all( + _.map(types, async (nodes, typeName) => { + const fieldName = _.camelCase(typeName) + const processedType = await buildProcessedType({ + nodes, + typeName, + processedTypes, + span, + }) + processedTypes[fieldName] = processedType + // Special case to construct linked file type used by type inferring + if (typeName === `File`) { + setFileNodeRootType(processedType.nodeObjectType) + } + return + }) + ) span.finish() return processedTypes } + +module.exports = { + buildProcessedType, + buildNodeObjectType, + buildAll, +} diff --git a/packages/gatsby/src/schema/create-type-name.js b/packages/gatsby/src/schema/create-type-name.js index 1a28ea6ca90ee..2e01af34658e6 100644 --- a/packages/gatsby/src/schema/create-type-name.js +++ b/packages/gatsby/src/schema/create-type-name.js @@ -1,14 +1,28 @@ const _ = require(`lodash`) -const seenNames = {} +const seenNames = new Map() + +const typeNameRestriction = /^[_a-zA-Z][_a-zA-Z0-9]*$/ module.exports = function createTypeName(name) { - const cameledName = _.camelCase(name) - if (seenNames[cameledName]) { - seenNames[cameledName] += 1 - return `${cameledName}_${seenNames[cameledName]}` + let cameledName = _.camelCase(name) + + // camelCasing will ensure that name is build from just alphanumeric + // characters, but we still need to ensure that type name + // doesn't start with number (graphql resitriction) + if (!cameledName.match(typeNameRestriction)) { + cameledName = `_` + cameledName + } + + if (seenNames.has(cameledName)) { + seenNames.set(cameledName, seenNames.get(cameledName) + 1) + return `${cameledName}_${seenNames.get(cameledName)}` } else { - seenNames[cameledName] = 1 + seenNames.set(cameledName, 1) return cameledName } } + +module.exports.clearTypeNames = () => { + seenNames.clear() +} diff --git a/packages/gatsby/src/schema/data-tree-utils.js b/packages/gatsby/src/schema/data-tree-utils.js index fae402fd49c24..afcc5bbc2e8ab 100644 --- a/packages/gatsby/src/schema/data-tree-utils.js +++ b/packages/gatsby/src/schema/data-tree-utils.js @@ -21,6 +21,8 @@ const isEmptyObjectOrArray = (obj: any): boolean => { return true } else if (_.isDate(obj)) { return false + } else if (typeof obj === `function`) { + return true // Simple "is object empty" check. } else if (_.isObject(obj) && _.isEmpty(obj)) { return true diff --git a/packages/gatsby/src/schema/index.js b/packages/gatsby/src/schema/index.js index 9911434a50b97..802ed401b7714 100644 --- a/packages/gatsby/src/schema/index.js +++ b/packages/gatsby/src/schema/index.js @@ -3,14 +3,26 @@ const _ = require(`lodash`) const { GraphQLSchema, GraphQLObjectType } = require(`graphql`) const { mergeSchemas } = require(`graphql-tools`) -const buildNodeTypes = require(`./build-node-types`) -const buildNodeConnections = require(`./build-node-connections`) +const nodeTypes = require(`./build-node-types`) +const nodeConnections = require(`./build-node-connections`) const { store } = require(`../redux`) const invariant = require(`invariant`) +const { clearUnionTypes } = require(`./infer-graphql-type`) -module.exports = async ({ parentSpan }) => { - const typesGQL = await buildNodeTypes({ parentSpan }) - const connections = buildNodeConnections(_.values(typesGQL)) +function buildNodesSchema(fields) { + return new GraphQLSchema({ + query: new GraphQLObjectType({ + name: `RootQueryType`, + fields, + }), + }) +} +module.exports.buildNodesSchema = buildNodesSchema + +module.exports.build = async ({ parentSpan }) => { + clearUnionTypes() + const typesGQL = await nodeTypes.buildAll({ parentSpan }) + const connections = nodeConnections.buildAll(_.values(typesGQL)) // Pull off just the graphql node from each type object. const nodes = _.mapValues(typesGQL, `node`) @@ -20,12 +32,7 @@ module.exports = async ({ parentSpan }) => { const thirdPartySchemas = store.getState().thirdPartySchemas || [] - const gatsbySchema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: { ...connections, ...nodes }, - }), - }) + const gatsbySchema = buildNodesSchema({ ...connections, ...nodes }) const schema = mergeSchemas({ schemas: [gatsbySchema, ...thirdPartySchemas], diff --git a/packages/gatsby/src/schema/infer-graphql-input-fields-from-fields.js b/packages/gatsby/src/schema/infer-graphql-input-fields-from-fields.js index eabb760999075..bbe0d66945e6b 100644 --- a/packages/gatsby/src/schema/infer-graphql-input-fields-from-fields.js +++ b/packages/gatsby/src/schema/infer-graphql-input-fields-from-fields.js @@ -138,15 +138,19 @@ function convertToInputFilter( fields: fields, }) } else if (type instanceof GraphQLInputObjectType) { + const fields = _.transform(type.getFields(), (out, fieldConfig, key) => { + const type = convertToInputFilter( + `${prefix}${_.upperFirst(key)}`, + fieldConfig.type + ) + if (type) out[key] = { type } + }) + if (Object.keys(fields).length === 0) { + return null + } return new GraphQLInputObjectType({ name: createTypeName(`${prefix}{type.name}`), - fields: _.transform(type.getFields(), (out, fieldConfig, key) => { - const type = convertToInputFilter( - `${prefix}${_.upperFirst(key)}`, - fieldConfig.type - ) - if (type) out[key] = { type } - }), + fields: fields, }) } else if (type instanceof GraphQLList) { const innerType = type.ofType diff --git a/packages/gatsby/src/schema/infer-graphql-input-fields.js b/packages/gatsby/src/schema/infer-graphql-input-fields.js index f53161d8a2d31..efcb3d425cdbf 100644 --- a/packages/gatsby/src/schema/infer-graphql-input-fields.js +++ b/packages/gatsby/src/schema/infer-graphql-input-fields.js @@ -21,7 +21,7 @@ const { } = require(`./data-tree-utils`) const { findLinkedNode } = require(`./infer-graphql-type`) -const { getNodes } = require(`../redux`) +const { getNodesByType } = require(`../db/nodes`) const is32BitInteger = require(`../utils/is-32-bit-integer`) import type { @@ -210,6 +210,7 @@ function inferGraphQLInputFields({ const EXCLUDE_KEYS = { parent: 1, children: 1, + $loki: 1, } type InferInputOptions = { @@ -269,16 +270,22 @@ export function inferInputObjectStructureFromNodes({ if (_.includes(key, `___NODE`)) { // TODO: Union the objects in array - const nodeToFind = _.isArray(value) ? value[0] : value + const isArray = _.isArray(value) + const nodeToFind = isArray ? value[0] : value const linkedNode = findLinkedNode(nodeToFind) + // Fall back if the linked node can't be found. Prevents crashing, and is + // picked up in infer-graphql-type.js with an error that gives context to + // the user about which node is missing + if (!linkedNode) { + return + } + // Get from cache if found, else store into it if (linkedNodeCache[linkedNode.internal.type]) { value = linkedNodeCache[linkedNode.internal.type] } else { - const relatedNodes = getNodes().filter( - node => node.internal.type === linkedNode.internal.type - ) + const relatedNodes = getNodesByType(linkedNode.internal.type) value = getExampleValues({ nodes: relatedNodes, typeName: linkedNode.internal.type, @@ -287,7 +294,7 @@ export function inferInputObjectStructureFromNodes({ linkedNodeCache[linkedNode.internal.type] = value } - if (_.isArray(value)) { + if (isArray) { value = [value] } @@ -300,7 +307,7 @@ export function inferInputObjectStructureFromNodes({ prefix: `${prefix}${_.upperFirst(key)}`, }) - if (field == null) return + if (field === null) return inferredFields[createKey(key)] = field }) diff --git a/packages/gatsby/src/schema/infer-graphql-type.js b/packages/gatsby/src/schema/infer-graphql-type.js index fc159bb73b922..4e9c24ebd5802 100644 --- a/packages/gatsby/src/schema/infer-graphql-type.js +++ b/packages/gatsby/src/schema/infer-graphql-type.js @@ -12,8 +12,9 @@ const _ = require(`lodash`) const invariant = require(`invariant`) const { oneLine } = require(`common-tags`) -const { store, getNode, getNodes } = require(`../redux`) -const { createPageDependency } = require(`../redux/actions/add-page-dependency`) +const { store } = require(`../redux`) +const { getNode, getNodes, getNodesByType } = require(`../db/nodes`) +const pageDependencyResolver = require(`./page-dependency-resolver`) const createTypeName = require(`./create-type-name`) const createKey = require(`./create-key`) const { @@ -24,6 +25,8 @@ const { const DateType = require(`./types/type-date`) const FileType = require(`./types/type-file`) const is32BitInteger = require(`../utils/is-32-bit-integer`) +const unionTypes = new Map() +const lazyFields = require(`./lazy-fields`) import type { GraphQLOutputType } from "graphql" import type { @@ -111,21 +114,24 @@ function inferGraphQLType({ return { type: GraphQLBoolean } case `string`: return { type: GraphQLString } - case `object`: + case `object`: { + const typeName = createTypeName(fieldName) return { type: new GraphQLObjectType({ - name: createTypeName(fieldName), + name: typeName, fields: _inferObjectStructureFromNodes( { ...otherArgs, selector, nodes, types, + typeName, }, exampleValue ), }), } + } case `number`: return is32BitInteger(exampleValue) ? { type: GraphQLInt } @@ -151,31 +157,20 @@ function inferFromMapping( return null } - const findNode = (fieldValue, path) => { - const linkedNode = _.find( - getNodes(), - n => - n.internal.type === linkedType && _.get(n, linkedField) === fieldValue - ) - if (linkedNode) { - createPageDependency({ path, nodeId: linkedNode.id }) - return linkedNode - } - return null - } + const findNode = fieldValue => + getNodesByType(linkedType).find(n => _.get(n, linkedField) === fieldValue) if (_.isArray(value)) { return { type: new GraphQLList(matchedTypes[0].nodeObjectType), - resolve: (node, a, b, { fieldName }) => { + resolve: pageDependencyResolver((node, a, b, { fieldName }) => { const fieldValue = node[fieldName] - if (fieldValue) { - return fieldValue.map(value => findNode(value, b.path)) + return fieldValue.map(findNode) } else { return null } - }, + }), } } @@ -193,21 +188,20 @@ function inferFromMapping( } } +function findLinkedNodeByField(linkedField, value) { + getNodes().find(n => n[linkedField] === value) +} + export function findLinkedNode(value, linkedField, path) { let linkedNode // If the field doesn't link to the id, use that for searching. if (linkedField) { - linkedNode = getNodes().find(n => n[linkedField] === value) + linkedNode = findLinkedNodeByField(linkedField, value) // Else the field is linking to the node's id, the default. } else { linkedNode = getNode(value) } - - if (linkedNode) { - if (path) createPageDependency({ path, nodeId: linkedNode.id }) - return linkedNode - } - return null + return linkedNode } function inferFromFieldName(value, selector, types): GraphQLFieldConfig<*, *> { @@ -248,7 +242,7 @@ function inferFromFieldName(value, selector, types): GraphQLFieldConfig<*, *> { types.find(type => type.name === node.internal.type) if (isArray) { - const linkedNodes = value.map(v => findLinkedNode(v)) + const linkedNodes = value.map(getNode) linkedNodes.forEach(node => validateLinkedNode(node)) const fields = linkedNodes.map(node => findNodeType(node)) fields.forEach((field, i) => validateField(linkedNodes[i], field)) @@ -256,21 +250,28 @@ function inferFromFieldName(value, selector, types): GraphQLFieldConfig<*, *> { let type // If there's more than one type, we'll create a union type. if (fields.length > 1) { - type = new GraphQLUnionType({ - name: createTypeName( - `Union_${key}_${fields + const typeName = `Union_${key}_${fields + .map(f => f.name) + .sort() + .join(`__`)}` + + if (unionTypes.has(typeName)) { + type = unionTypes.get(typeName) + } + + if (!type) { + type = new GraphQLUnionType({ + name: createTypeName(`Union_${key}`), + description: `Union interface for the field "${key}" for types [${fields .map(f => f.name) .sort() - .join(`__`)}` - ), - description: `Union interface for the field "${key}" for types [${fields - .map(f => f.name) - .sort() - .join(`, `)}]`, - types: fields.map(f => f.nodeObjectType), - resolveType: data => - fields.find(f => f.name == data.internal.type).nodeObjectType, - }) + .join(`, `)}]`, + types: fields.map(f => f.nodeObjectType), + resolveType: data => + fields.find(f => f.name == data.internal.type).nodeObjectType, + }) + unionTypes.set(typeName, type) + } } else { type = fields[0].nodeObjectType } @@ -296,15 +297,9 @@ function inferFromFieldName(value, selector, types): GraphQLFieldConfig<*, *> { validateField(linkedNode, field) return { type: field.nodeObjectType, - resolve: (node, a, b = {}) => { - let fieldValue = node[key] - if (fieldValue) { - const result = findLinkedNode(fieldValue, linkedField, b.path) - return result - } else { - return null - } - }, + resolve: pageDependencyResolver(node => + findLinkedNode(node[key], linkedField) + ), } } @@ -313,18 +308,20 @@ type inferTypeOptions = { types: ProcessedNodeType[], ignoreFields?: string[], selector?: string, + typeName?: string, } const EXCLUDE_KEYS = { id: 1, parent: 1, children: 1, + $loki: 1, } // Call this for the top level node + recursively for each sub-object. // E.g. This gets called for Markdown and then for its frontmatter subobject. function _inferObjectStructureFromNodes( - { nodes, types, selector, ignoreFields }: inferTypeOptions, + { nodes, types, selector, ignoreFields, typeName }: inferTypeOptions, exampleValue: ?Object ): GraphQLFieldConfigMap<*, *> { const config = store.getState().config @@ -334,12 +331,15 @@ function _inferObjectStructureFromNodes( // Ensure nodes have internal key with object. nodes = nodes.map(n => (n.internal ? n : { ...n, internal: {} })) - const typeName: string = nodes[0].internal.type + const rootTypeName: string = nodes[0].internal.type + if (!typeName) { + typeName = rootTypeName + } let resolvedExample: Object = exampleValue != null ? exampleValue - : getExampleValues({ nodes, typeName, ignoreFields }) + : getExampleValues({ nodes, typeName: rootTypeName, ignoreFields }) const inferredFields = {} _.each(resolvedExample, (value, key) => { @@ -350,7 +350,7 @@ function _inferObjectStructureFromNodes( // Several checks to see if a field is pointing to custom type // before we try automatic inference. const nextSelector = selector ? `${selector}.${key}` : key - const fieldSelector = `${typeName}.${nextSelector}` + const fieldSelector = `${rootTypeName}.${nextSelector}` let fieldName = key let inferredField @@ -365,6 +365,7 @@ function _inferObjectStructureFromNodes( } else if (key.includes(`___NODE`)) { ;[fieldName] = key.split(`___`) inferredField = inferFromFieldName(value, nextSelector, types) + lazyFields.add(typeName, fieldName) } // Replace unsupported values @@ -421,3 +422,7 @@ function _inferObjectStructureFromNodes( export function inferObjectStructureFromNodes(options: inferTypeOptions) { return _inferObjectStructureFromNodes(options, null) } + +export function clearUnionTypes() { + unionTypes.clear() +} diff --git a/packages/gatsby/src/schema/lazy-fields.js b/packages/gatsby/src/schema/lazy-fields.js new file mode 100644 index 0000000000000..5d3646a95ae15 --- /dev/null +++ b/packages/gatsby/src/schema/lazy-fields.js @@ -0,0 +1,64 @@ +// A normal Graphql field resolver will accept a node as an argument +// and return a field from that node. Whereas a lazy field will need +// to perform some side effects or non-deterministic behavior to +// return its value. Therefore, when a query filter includes a lazy +// field, we need to evaluate the field resolvers on all nodes before +// running the query. Examples of lazy fields include: +// +// - a markdown `wordcount` field (lazily calculates word count on its +// content) +// - image sharp processing field (lazily generates optimized images) +// +// Lazy fields are declared using the exported `add` function. This +// should be done during schema generation when fields are being +// created. Then at query time, we can use the exported `contains` +// function to figure out if a type/field pair is lazy, and therefore +// use sift for querying instead of loki + +const _ = require(`lodash`) +const { GraphQLList, GraphQLObjectType } = require(`graphql`) + +// Note: fields are never deleted from here. So a long running +// `develop` session, where nodes are being deleted might mean that +// fields exist here that aren't on any DB nodes anymore. This isn't +// ideal, BUT, the worst case is that queries will be executed by +// sift, rather than loki, so not a big deal +const typeFields = new Map() + +function contains(filters, fieldType) { + return _.some(filters, (fieldFilter, fieldName) => { + // If a field has been previously flagged as a lazy field, then + // return true + const storedFields = typeFields.get(fieldType.name) + if (storedFields && storedFields.has(fieldName)) { + return true + } else { + // Otherwise, the filter field might be an array of linked + // nodes, in which case we might filter via an elemMatch + // field. Or, it might be a nested linked object. In either + // case, we recurse + const gqlFieldType = fieldType.getFields()[fieldName]?.type + if (gqlFieldType) { + if (gqlFieldType instanceof GraphQLList && fieldFilter.elemMatch) { + return contains(fieldFilter.elemMatch, gqlFieldType.ofType) + } else if (gqlFieldType instanceof GraphQLObjectType) { + return contains(fieldFilter, gqlFieldType) + } + } + } + return false + }) +} + +function add(typeName, fieldName) { + if (typeFields.get(typeName)) { + typeFields.get(typeName).add(fieldName) + } else { + typeFields.set(typeName, new Set([fieldName])) + } +} + +module.exports = { + contains, + add, +} diff --git a/packages/gatsby/src/schema/page-dependency-resolver.js b/packages/gatsby/src/schema/page-dependency-resolver.js new file mode 100644 index 0000000000000..b98ef80a9204a --- /dev/null +++ b/packages/gatsby/src/schema/page-dependency-resolver.js @@ -0,0 +1,36 @@ +const _ = require(`lodash`) +const createPageDependency = require(`../redux/actions/add-page-dependency`) + +/** + * A Graphql resolver middleware that runs `resolver` and creates a + * page dependency with the returned node. + * + * @param resolver A graphql resolver. A function that take arguments + * (node, args, context, info) and return a node + * @returns A new graphql resolver + */ +function pageDependencyResolver(resolver) { + return async (node, args, context = {}, info = {}) => { + const { path } = context + const result = await resolver(node, args, context, info) + + // Call createPageDependency on each result + if (path) { + const asArray = _.isArray(result) ? result : [result] + for (const node of asArray) { + if (node) { + // using module.exports here so it can be mocked + createPageDependency({ + path, + nodeId: node.id, + }) + } + } + } + + // Finally return the found node + return result + } +} + +module.exports = pageDependencyResolver diff --git a/packages/gatsby/src/schema/run-sift.js b/packages/gatsby/src/schema/run-sift.js deleted file mode 100644 index 237d1a413c19c..0000000000000 --- a/packages/gatsby/src/schema/run-sift.js +++ /dev/null @@ -1,273 +0,0 @@ -// @flow -const sift = require(`sift`) -const _ = require(`lodash`) -const { connectionFromArray } = require(`graphql-skip-limit`) -const { createPageDependency } = require(`../redux/actions/add-page-dependency`) -const prepareRegex = require(`./prepare-regex`) -const Promise = require(`bluebird`) -const { trackInlineObjectsInRootNode } = require(`./node-tracking`) -const { getNode } = require(`../redux`) - -const resolvedNodesCache = new Map() -const enhancedNodeCache = new Map() -const enhancedNodePromiseCache = new Map() -const enhancedNodeCacheId = ({ node, args }) => - node && node.internal && node.internal.contentDigest - ? JSON.stringify({ - nodeid: node.id, - digest: node.internal.contentDigest, - ...args, - }) - : null - -function awaitSiftField(fields, node, k) { - const field = fields[k] - if (field.resolve) { - return field.resolve( - node, - {}, - {}, - { - fieldName: k, - } - ) - } else if (node[k] !== undefined) { - return node[k] - } - - return undefined -} - -/* - * Filters a list of nodes using mongodb-like syntax. - * Returns a single unwrapped element if connection = false. - * - */ -module.exports = ({ - args, - nodes, - type, - typeName, - connection = false, - path = ``, -}: Object) => { - // Clone args as for some reason graphql-js removes the constructor - // from nested objects which breaks a check in sift.js. - const clonedArgs = JSON.parse(JSON.stringify(args)) - - const siftifyArgs = object => { - const newObject = {} - _.each(object, (v, k) => { - if (_.isPlainObject(v)) { - if (k === `elemMatch`) { - k = `$elemMatch` - } - newObject[k] = siftifyArgs(v) - } else { - // Compile regex first. - if (k === `regex`) { - newObject[`$regex`] = prepareRegex(v) - } else if (k === `glob`) { - const Minimatch = require(`minimatch`).Minimatch - const mm = new Minimatch(v) - newObject[`$regex`] = mm.makeRe() - } else { - newObject[`$${k}`] = v - } - } - }) - return newObject - } - - // Build an object that excludes the innermost leafs, - // this avoids including { eq: x } when resolving fields. - function extractFieldsToSift(prekey, key, preobj, obj, val) { - if (_.isPlainObject(val)) { - _.forEach((val: any), (v, k) => { - preobj[prekey] = obj - extractFieldsToSift(key, k, obj, {}, v) - }) - } else { - preobj[prekey] = true - } - } - - const siftArgs = [] - const fieldsToSift = {} - if (clonedArgs.filter) { - _.each(clonedArgs.filter, (v, k) => { - // Ignore connection and sorting args. - if (_.includes([`skip`, `limit`, `sort`], k)) return - - siftArgs.push( - siftifyArgs({ - [k]: v, - }) - ) - extractFieldsToSift(``, k, {}, fieldsToSift, v) - }) - } - - // Resolves every field used in the node. - function resolveRecursive(node, siftFieldsObj, gqFields) { - return Promise.all( - _.keys(siftFieldsObj).map(k => - Promise.resolve(awaitSiftField(gqFields, node, k)) - .then(v => { - const innerSift = siftFieldsObj[k] - const innerGqConfig = gqFields[k] - if ( - _.isObject(innerSift) && - v != null && - innerGqConfig && - innerGqConfig.type && - _.isFunction(innerGqConfig.type.getFields) - ) { - return resolveRecursive( - v, - innerSift, - innerGqConfig.type.getFields() - ) - } else { - return v - } - }) - .then(v => [k, v]) - ) - ).then(resolvedFields => { - const myNode = { - ...node, - } - resolvedFields.forEach(([k, v]) => (myNode[k] = v)) - return myNode - }) - } - - // If the the query only has a filter for an "id", then we'll just grab - // that ID and return it. - if ( - Object.keys(fieldsToSift).length === 1 && - Object.keys(fieldsToSift)[0] === `id` - ) { - const node = resolveRecursive( - getNode(siftArgs[0].id[`$eq`]), - fieldsToSift, - type.getFields() - ) - - if (node) { - createPageDependency({ - path, - nodeId: node.id, - }) - } - - return node - } - - const nodesPromise = () => { - const nodesCacheKey = JSON.stringify({ - // typeName + count being the same is a pretty good - // indication that the nodes are the same. - typeName, - nodesLength: nodes.length, - ...fieldsToSift, - }) - if ( - process.env.NODE_ENV === `production` && - resolvedNodesCache.has(nodesCacheKey) - ) { - return Promise.resolve(resolvedNodesCache.get(nodesCacheKey)) - } else { - return Promise.all( - nodes.map(node => { - const cacheKey = enhancedNodeCacheId({ - node, - args: fieldsToSift, - }) - if (cacheKey && enhancedNodeCache.has(cacheKey)) { - return Promise.resolve(enhancedNodeCache.get(cacheKey)) - } else if (cacheKey && enhancedNodePromiseCache.has(cacheKey)) { - return enhancedNodePromiseCache.get(cacheKey) - } - - const enhancedNodeGenerationPromise = new Promise(resolve => { - resolveRecursive(node, fieldsToSift, type.getFields()).then( - resolvedNode => { - trackInlineObjectsInRootNode(resolvedNode) - if (cacheKey) { - enhancedNodeCache.set(cacheKey, resolvedNode) - } - resolve(resolvedNode) - } - ) - }) - enhancedNodePromiseCache.set(cacheKey, enhancedNodeGenerationPromise) - return enhancedNodeGenerationPromise - }) - ).then(resolvedNodes => { - resolvedNodesCache.set(nodesCacheKey, resolvedNodes) - return resolvedNodes - }) - } - } - const tempPromise = nodesPromise().then(myNodes => { - if (!connection) { - const index = _.isEmpty(siftArgs) - ? 0 - : sift.indexOf( - { - $and: siftArgs, - }, - myNodes - ) - - // If a node is found, create a dependency between the resulting node and - // the path. - if (index !== -1) { - createPageDependency({ - path, - nodeId: myNodes[index].id, - }) - - return myNodes[index] - } else { - return null - } - } - - let result = _.isEmpty(siftArgs) - ? myNodes - : sift( - { - $and: siftArgs, - }, - myNodes - ) - - if (!result || !result.length) return null - - // Sort results. - if (clonedArgs.sort) { - // create functions that return the item to compare on - // uses _.get so nested fields can be retrieved - const convertedFields = clonedArgs.sort.fields - .map(field => field.replace(/___/g, `.`)) - .map(field => v => _.get(v, field)) - - result = _.orderBy(result, convertedFields, clonedArgs.sort.order) - } - - const connectionArray = connectionFromArray(result, args) - connectionArray.totalCount = result.length - if (result.length > 0 && result[0].internal) { - createPageDependency({ - path, - connection: result[0].internal.type, - }) - } - return connectionArray - }) - - return tempPromise -} diff --git a/packages/gatsby/src/schema/type-conflict-reporter.js b/packages/gatsby/src/schema/type-conflict-reporter.js index 1259b6bf234b6..bb7f159f2b76d 100644 --- a/packages/gatsby/src/schema/type-conflict-reporter.js +++ b/packages/gatsby/src/schema/type-conflict-reporter.js @@ -3,7 +3,7 @@ const _ = require(`lodash`) const report = require(`gatsby-cli/lib/reporter`) const typeOf = require(`type-of`) const util = require(`util`) -const { findRootNodeAncestor } = require(`./node-tracking`) +const { findRootNodeAncestor } = require(`../db/node-tracking`) export type TypeConflictExample = { value: mixed, diff --git a/packages/gatsby/src/schema/types/type-file.js b/packages/gatsby/src/schema/types/type-file.js index 301db11b6fce5..24c5c6c7cd47e 100644 --- a/packages/gatsby/src/schema/types/type-file.js +++ b/packages/gatsby/src/schema/types/type-file.js @@ -6,11 +6,9 @@ const isRelativeUrl = require(`is-relative-url`) const normalize = require(`normalize-path`) const systemPath = require(`path`) -const { getNodes } = require(`../../redux`) -const { findRootNodeAncestor } = require(`../node-tracking`) -const { - createPageDependency, -} = require(`../../redux/actions/add-page-dependency`) +const { getNodesByType } = require(`../../db/nodes`) +const { findRootNodeAncestor } = require(`../../db/node-tracking`) +const pageDependencyResolver = require(`../page-dependency-resolver`) const { joinPath } = require(`../../utils/path`) let type, listType @@ -108,7 +106,7 @@ function pointsToFile(nodes, key, value) { } const pathToOtherNode = normalize(joinPath(rootNode.dir, value)) - const otherFileExists = getNodes().some( + const otherFileExists = getNodesByType(`File`).some( n => n.absolutePath === pathToOtherNode ) return otherFileExists @@ -132,7 +130,7 @@ function createType(fileNodeRootType, isArray) { return Object.freeze({ type: isArray ? new GraphQLList(fileNodeRootType) : fileNodeRootType, - resolve: (node, args, { path }, { fieldName }) => { + resolve: pageDependencyResolver((node, args, context, { fieldName }) => { let fieldValue = node[fieldName] if (!fieldValue) { @@ -148,18 +146,10 @@ function createType(fileNodeRootType, isArray) { // Use that path to find the linked File node. const linkedFileNode = _.find( - getNodes(), - n => n.internal.type === `File` && n.absolutePath === fileLinkPath + getNodesByType(`File`), + n => n.absolutePath === fileLinkPath ) - if (linkedFileNode) { - createPageDependency({ - path, - nodeId: linkedFileNode.id, - }) - return linkedFileNode - } else { - return null - } + return linkedFileNode } // Find the File node for this node (we assume the node is something @@ -168,11 +158,11 @@ function createType(fileNodeRootType, isArray) { // Find the linked File node(s) if (isArray) { - return fieldValue.map(relativePath => findLinkedFileNode(relativePath)) + return fieldValue.map(findLinkedFileNode) } else { return findLinkedFileNode(fieldValue) } - }, + }), }) } diff --git a/packages/gatsby/src/utils/__tests__/__snapshots__/create-content-digest.js.snap b/packages/gatsby/src/utils/__tests__/__snapshots__/create-content-digest.js.snap new file mode 100644 index 0000000000000..4ace7f6a98328 --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/__snapshots__/create-content-digest.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Create content digest returns the content digest when the input is a non string 1`] = `"d2ce28b9a7fd7e4407e2b0fd499b7fe4"`; + +exports[`Create content digest returns the content digest when the input is a string 1`] = `"d2ce28b9a7fd7e4407e2b0fd499b7fe4"`; diff --git a/packages/gatsby/src/utils/__tests__/__snapshots__/get-hash-fn.js.snap b/packages/gatsby/src/utils/__tests__/__snapshots__/get-hash-fn.js.snap new file mode 100644 index 0000000000000..c8cd15bb7bf7b --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/__snapshots__/get-hash-fn.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Test hashing function default parameters 1`] = `174577032270956`; + +exports[`Test hashing function guards against collisions 1`] = `[Error: Hash collision at f(my input) = 174577032270956]`; diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/prepare-regex.js.snap b/packages/gatsby/src/utils/__tests__/__snapshots__/prepare-regex.js.snap similarity index 100% rename from packages/gatsby/src/schema/__tests__/__snapshots__/prepare-regex.js.snap rename to packages/gatsby/src/utils/__tests__/__snapshots__/prepare-regex.js.snap diff --git a/packages/gatsby/src/utils/__tests__/browserslist.js b/packages/gatsby/src/utils/__tests__/browserslist.js new file mode 100644 index 0000000000000..f0f794516bee5 --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/browserslist.js @@ -0,0 +1,31 @@ +jest.mock(`browserslist/node`, () => { + return { + findConfig: jest.fn(), + } +}) +const path = require(`path`) +const getBrowsersList = require(`../browserslist`) +const { findConfig: mockedFindConfig } = require(`browserslist/node`) + +const BASE = path.resolve(`.`) + +describe(`browserslist`, () => { + it(`prefers returned browserslist results`, () => { + const defaults = [`IE 11`] + mockedFindConfig.mockReturnValueOnce({ + defaults, + }) + + const list = getBrowsersList(BASE) + + expect(list).toEqual(defaults) + }) + + it(`falls back to defaults`, () => { + mockedFindConfig.mockReturnValueOnce(undefined) + + const list = getBrowsersList(BASE) + + expect(list).toEqual([`>0.25%`, `not dead`]) + }) +}) diff --git a/packages/gatsby/src/utils/__tests__/cache.js b/packages/gatsby/src/utils/__tests__/cache.js index 7d0ddd64b3fb9..e5a48038b191c 100644 --- a/packages/gatsby/src/utils/__tests__/cache.js +++ b/packages/gatsby/src/utils/__tests__/cache.js @@ -1,13 +1,101 @@ -const cache = require(`../cache`) -cache.initCache() - -describe(`site cache`, () => { - it(`can set and get cache items`, async () => { - await cache.set(`a key`, `value`) - await cache.set(`a boolean key`, true) - const value = await cache.get(`a key`) - const value2 = await cache.get(`a boolean key`) - expect(value).toBe(`value`) - expect(value2).toBe(true) +jest.mock(`cache-manager`, () => { + return { + caching: jest.fn(), + multiCaching: jest.fn().mockImplementation(() => { + return { + get: jest.fn(), + set: jest.fn(), + } + }), + } +}) +jest.mock(`fs-extra`, () => { + return { + ensureDirSync: jest.fn(), + } +}) +const Cache = require(`../cache`) +const fs = require(`fs-extra`) +const manager = require(`cache-manager`) + +beforeEach(() => { + manager.caching.mockReset() + fs.ensureDirSync.mockReset() +}) + +const getCache = (options = { name: `__test__` }) => new Cache(options).init() + +describe(`cache`, () => { + it(`it can be instantiated`, () => { + expect(() => new Cache()).not.toThrow() + }) + + it(`it can swap out cache store`, () => { + const store = { + custom: true, + } + + new Cache({ + store, + }).init() + + expect(manager.caching).toHaveBeenLastCalledWith( + expect.objectContaining({ + store, + }) + ) + }) + + it(`it does not set up cache on instantiation`, () => { + expect(manager.caching).not.toHaveBeenCalled() + }) + + it(`uses MAX_SAFE_INTEGER as TTL`, () => { + getCache() + + expect(manager.caching).toHaveBeenCalledWith( + expect.objectContaining({ + options: expect.objectContaining({ + ttl: Number.MAX_SAFE_INTEGER, + }), + }) + ) + }) + + describe(`init`, () => { + it(`it contains an init method`, () => { + const cache = getCache() + expect(cache.init).toEqual(expect.any(Function)) + }) + + it(`it calls ensureDirSync`, () => { + const name = `__TEST_CACHE_NAME__` + getCache({ name }) + + expect(fs.ensureDirSync).toHaveBeenCalledWith( + expect.stringContaining(name) + ) + }) + + it(`it returns cache instance with get/set methods`, () => { + const cache = getCache() + + expect(cache.get).toEqual(expect.any(Function)) + expect(cache.set).toEqual(expect.any(Function)) + }) + }) + + describe(`get/set`, () => { + it(`both are promises`, () => { + const cache = getCache() + + const containsThenMethod = result => + expect(result).toEqual( + expect.objectContaining({ then: expect.any(Function) }) + ) + + containsThenMethod(cache.get(`a`)) + containsThenMethod(cache.set(`a`, `b`)) + }) }) }) diff --git a/packages/gatsby/src/utils/__tests__/create-content-digest.js b/packages/gatsby/src/utils/__tests__/create-content-digest.js new file mode 100644 index 0000000000000..a6e3d1323aff2 --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/create-content-digest.js @@ -0,0 +1,19 @@ +const createContentDigest = require(`../create-content-digest`) + +describe(`Create content digest`, () => { + it(`returns the content digest when the input is a string`, () => { + const input = JSON.stringify({ id: 1 }) + + const contentDigest = createContentDigest(input) + + expect(contentDigest).toMatchSnapshot() + }) + + it(`returns the content digest when the input is a non string`, () => { + const input = { id: 1 } + + const contentDigest = createContentDigest(input) + + expect(contentDigest).toMatchSnapshot() + }) +}) diff --git a/packages/gatsby/src/utils/__tests__/get-hash-fn.js b/packages/gatsby/src/utils/__tests__/get-hash-fn.js new file mode 100644 index 0000000000000..a816ed65f73ee --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/get-hash-fn.js @@ -0,0 +1,16 @@ +const getHashFn = require(`../get-hash-fn`) + +describe(`Test hashing function`, () => { + it(`default parameters`, () => { + const hash = getHashFn({})(`my input`) + expect(hash).toMatchSnapshot() + }) + it(`guards against collisions`, () => { + const hash = getHashFn({})(`my input`) + try { + getHashFn({ cache: new Set([hash]) })(`my input`) + } catch (err) { + expect(err).toMatchSnapshot() + } + }) +}) diff --git a/packages/gatsby/src/utils/__tests__/merge-gatsby-config.js b/packages/gatsby/src/utils/__tests__/merge-gatsby-config.js new file mode 100644 index 0000000000000..292abd5f6fbca --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/merge-gatsby-config.js @@ -0,0 +1,113 @@ +const mergeGatsbyConfig = require(`../merge-gatsby-config`) + +describe(`Merge gatsby config`, () => { + it(`Merging empty config is an identity operation`, () => { + const emptyConfig = {} + const basicConfig = { + plugins: [`gatsby-mdx`], + } + + expect(mergeGatsbyConfig(basicConfig, emptyConfig)).toEqual(basicConfig) + expect(mergeGatsbyConfig(emptyConfig, basicConfig)).toEqual(basicConfig) + }) + + it(`Merging plugins concatenates them`, () => { + const basicConfig = { + plugins: [`gatsby-mdx`], + } + const morePlugins = { + plugins: [`a-plugin`, `b-plugin`, { resolve: `c-plugin`, options: {} }], + } + expect(mergeGatsbyConfig(basicConfig, morePlugins)).toEqual({ + plugins: [ + `gatsby-mdx`, + `a-plugin`, + `b-plugin`, + { resolve: `c-plugin`, options: {} }, + ], + }) + expect(mergeGatsbyConfig(morePlugins, basicConfig)).toEqual({ + plugins: [ + `a-plugin`, + `b-plugin`, + { resolve: `c-plugin`, options: {} }, + `gatsby-mdx`, + ], + }) + }) + + it(`Merging plugins uniqs them, keeping the first occurrence`, () => { + const basicConfig = { + plugins: [`gatsby-mdx`], + } + const morePlugins = { + plugins: [ + `a-plugin`, + `gatsby-mdx`, + `b-plugin`, + { resolve: `c-plugin`, options: {} }, + ], + } + expect(mergeGatsbyConfig(basicConfig, morePlugins)).toEqual({ + plugins: [ + `gatsby-mdx`, + `a-plugin`, + `b-plugin`, + { resolve: `c-plugin`, options: {} }, + ], + }) + expect(mergeGatsbyConfig(morePlugins, basicConfig)).toEqual({ + plugins: [ + `a-plugin`, + `gatsby-mdx`, + `b-plugin`, + { resolve: `c-plugin`, options: {} }, + ], + }) + }) + + it(`Merging siteMetadata is recursive`, () => { + const a = { + siteMetadata: { + title: `my site`, + something: { else: 1 }, + }, + } + + const b = { + siteMetadata: { + something: { nested: 2 }, + }, + } + + expect(mergeGatsbyConfig(a, b)).toEqual({ + siteMetadata: { + title: `my site`, + something: { else: 1, nested: 2 }, + }, + }) + }) + + it(`Merging proxy is overriden`, () => { + const a = { + proxy: { + prefix: `/something-not/api`, + url: `http://examplesite.com/api/`, + }, + } + + const b = { + proxy: { + prefix: `/api`, + url: `http://examplesite.com/api/`, + }, + } + + expect(mergeGatsbyConfig(a, b)).toEqual({ + proxy: { + prefix: `/api`, + url: `http://examplesite.com/api/`, + }, + }) + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/prepare-regex.js b/packages/gatsby/src/utils/__tests__/prepare-regex.js similarity index 100% rename from packages/gatsby/src/schema/__tests__/prepare-regex.js rename to packages/gatsby/src/utils/__tests__/prepare-regex.js diff --git a/packages/gatsby/src/utils/__tests__/webpack-utils.js b/packages/gatsby/src/utils/__tests__/webpack-utils.js new file mode 100644 index 0000000000000..ba6065120c6b1 --- /dev/null +++ b/packages/gatsby/src/utils/__tests__/webpack-utils.js @@ -0,0 +1,29 @@ +const utils = require(`../webpack-utils`) + +let config +beforeAll(async () => { + config = await utils({ + stage: `develop`, + program: { + browserslist: [], + }, + }) +}) + +describe(`webpack utils`, () => { + describe(`mjs`, () => { + it(`adds .mjs rule`, () => { + expect(config.rules.mjs).toEqual(expect.any(Function)) + }) + + it(`returns correct rule`, () => { + const rule = config.rules.mjs() + + expect(rule).toEqual({ + include: /node_modules/, + test: /\.mjs$/, + type: `javascript/auto`, + }) + }) + }) +}) diff --git a/packages/gatsby/src/utils/api-browser-docs.js b/packages/gatsby/src/utils/api-browser-docs.js index d55f36fc07c8f..c1067056b5c6b 100644 --- a/packages/gatsby/src/utils/api-browser-docs.js +++ b/packages/gatsby/src/utils/api-browser-docs.js @@ -159,18 +159,29 @@ exports.wrapRootElement = true * Called when prefetching for a pathname is triggered. Allows * for plugins with custom prefetching logic. * @param {object} $0 - * @param {object} $0.pathname The pathname whose resources should now be prefetched - * @param {object} $0.getResourcesForPathname Function for fetching resources related to pathname + * @param {string} $0.pathname The pathname whose resources should now be prefetched + * @param {function} $0.getResourcesForPathname Function for fetching resources related to pathname */ exports.onPrefetchPathname = true +/** + * Called when prefetching for a pathname is successful. Allows + * for plugins with custom prefetching logic. + * @param {object} $0 + * @param {string} $0.pathname The pathname whose resources have now been prefetched + * @param {function} $0.getResourceURLsForPathname Function for fetching URLs for resources related to the pathname + */ +exports.onPostPrefetchPathname = true + /** * Plugins can take over prefetching logic. If they do, they should call this * to disable the now duplicate core prefetching logic. + * @example + * exports.disableCorePrefetching = () => true */ exports.disableCorePrefetching = true -/* +/** * Allow a plugin to replace the ReactDOM.render function call by a custom renderer. * This method takes no param and should return a function with same signature as ReactDOM.render() * Note it's very important to call the callback after rendering, otherwise Gatsby will not be able to call `onInitialClientRender` diff --git a/packages/gatsby/src/utils/api-node-docs.js b/packages/gatsby/src/utils/api-node-docs.js index cfd449008c66a..b58e414b757ac 100644 --- a/packages/gatsby/src/utils/api-node-docs.js +++ b/packages/gatsby/src/utils/api-node-docs.js @@ -78,13 +78,16 @@ exports.createPages = true exports.createPagesStatefully = true /** - * Extension point to tell plugins to source nodes. + * Extension point to tell plugins to source nodes. This API is called during + * the Gatsby bootstrap sequence. Source plugins use this hook to create nodes. + * This API is called exactly once per plugin (and once for your site's + * `gatsby-config.js` file). If you define this hook in `gatsby-node.js` it + * will be called exactly once after all of your source plugins have finished + * creating nodes. * * See also the documentation for [`createNode`](/docs/actions/#createNode). * @example - * const crypto = require(`crypto`) - * - * exports.sourceNodes = ({ actions, createNodeId }) => { + * exports.sourceNodes = ({ actions, createNodeId, createContentDigest }) => { * const { createNode } = actions * * // Data can come from anywhere, but for now create it manually @@ -95,10 +98,6 @@ exports.createPagesStatefully = true * } * * const nodeContent = JSON.stringify(myData) - * const nodeContentDigest = crypto - * .createHash(`md5`) - * .update(nodeContent) - * .digest(`hex`) * * const nodeMeta = { * id: createNodeId(`my-data-${myData.key}`), @@ -108,7 +107,7 @@ exports.createPagesStatefully = true * type: `MyNodeType`, * mediaType: `text/html`, * content: nodeContent, - * contentDigest: nodeContentDigest + * contentDigest: createContentDigest(myData) * } * } * @@ -179,8 +178,8 @@ exports.onCreatePage = true * args: { * myArgument: { * type: GraphQLString, - * } - * } + * } + * }, * resolve: (source, fieldArgs) => { * return `Id of this node is ${source.id}. * Field was called with argument: ${fieldArgs.myArgument}` @@ -279,3 +278,17 @@ exports.onPostBuild = true * See gatsby-transformer-remark and gatsby-source-contentful for examples. */ exports.onPreExtractQueries = true + +/** + * Run when gatsby develop server is started, its useful to add proxy and middleware + * to the dev server app + * @param {object} $0 + * @param {Express} $0.app The [Express app](https://expressjs.com/en/4x/api.html#app) used to run the dev server + * @example + * exports.onCreateDevServer = ({ app }) => { + * app.get('/hello', function (req, res) { + * res.send('hello world') + * }) + * } + */ +exports.onCreateDevServer = true diff --git a/packages/gatsby/src/utils/api-runner-node.js b/packages/gatsby/src/utils/api-runner-node.js index 412d10dc2d9cd..bfc2fa7574e4e 100644 --- a/packages/gatsby/src/utils/api-runner-node.js +++ b/packages/gatsby/src/utils/api-runner-node.js @@ -4,9 +4,12 @@ const _ = require(`lodash`) const tracer = require(`opentracing`).globalTracer() const reporter = require(`gatsby-cli/lib/reporter`) -const cache = require(`./cache`) +const Cache = require(`./cache`) const apiList = require(`./api-node-docs`) const createNodeId = require(`./create-node-id`) +const createContentDigest = require(`./create-content-digest`) + +let caches = new Map() // Bind action creators per plugin so we can auto-add // metadata to actions they create. @@ -65,15 +68,15 @@ const runAPI = (plugin, api, args) => { pluginSpan.setTag(`plugin`, plugin.name) let pathPrefix = `` + const { store, emitter } = require(`../redux`) const { - store, - emitter, loadNodeContent, getNodes, getNode, + getNodesByType, hasNodeChanged, getNodeAndSavePathDependency, - } = require(`../redux`) + } = require(`../db/nodes`) const { boundActionCreators } = require(`../redux/actions`) const doubleBoundActionCreators = doubleBind( @@ -91,6 +94,12 @@ const runAPI = (plugin, api, args) => { const tracing = initAPICallTracing(pluginSpan) + let cache = caches.get(plugin.name) + if (!cache) { + cache = new Cache({ name: plugin.name }).init() + caches.set(plugin.name, cache) + } + const apiCallArgs = [ { ...args, @@ -102,11 +111,13 @@ const runAPI = (plugin, api, args) => { emitter, getNodes, getNode, + getNodesByType, hasNodeChanged, reporter, getNodeAndSavePathDependency, cache, createNodeId: namespacedCreateNodeId, + createContentDigest, tracing, }, plugin.pluginOptions, @@ -152,8 +163,7 @@ module.exports = async (api, args = {}, pluginSource) => // Check that the API is documented. if (!apiList[api]) { - reporter.error(`api: "${api}" is not a valid Gatsby api`) - process.exit() + reporter.panic(`api: "${api}" is not a valid Gatsby api`) } const { store } = require(`../redux`) @@ -220,64 +230,53 @@ module.exports = async (api, args = {}, pluginSource) => apisRunningByTraceId.set(apiRunInstance.traceId, 1) } - let pluginName = null - Promise.mapSeries(noSourcePluginPlugins, plugin => { - if (plugin.name === `default-site-plugin`) { - pluginName = `gatsby-node.js` - } else { - pluginName = `Plugin ${plugin.name}` - } - return Promise.resolve( - runAPI(plugin, api, { ...args, parentSpan: apiSpan }) - ) - }) - .catch(err => { - if (err) { - if (process.env.NODE_ENV === `production`) { - return reporter.panic(`${pluginName} returned an error`, err) - } - return reporter.error(`${pluginName} returned an error`, err) - } + let pluginName = + plugin.name === `default-site-plugin` + ? `gatsby-node.js` + : `Plugin ${plugin.name}` + + return new Promise(resolve => { + resolve(runAPI(plugin, api, { ...args, parentSpan: apiSpan })) + }).catch(err => { + reporter.panicOnBuild(`${pluginName} returned an error`, err) return null }) - .then(results => { - // Remove runner instance - apisRunningById.delete(apiRunInstance.id) - const currentCount = apisRunningByTraceId.get(apiRunInstance.traceId) - apisRunningByTraceId.set(apiRunInstance.traceId, currentCount - 1) - - if (apisRunningById.size === 0) { - const { emitter } = require(`../redux`) - emitter.emit(`API_RUNNING_QUEUE_EMPTY`) - } + }).then(results => { + // Remove runner instance + apisRunningById.delete(apiRunInstance.id) + const currentCount = apisRunningByTraceId.get(apiRunInstance.traceId) + apisRunningByTraceId.set(apiRunInstance.traceId, currentCount - 1) - // Filter empty results - apiRunInstance.results = results.filter(result => !_.isEmpty(result)) + if (apisRunningById.size === 0) { + const { emitter } = require(`../redux`) + emitter.emit(`API_RUNNING_QUEUE_EMPTY`) + } - // Filter out empty responses and return if the - // api caller isn't waiting for cascading actions to finish. - if (!args.waitForCascadingActions) { - apiSpan.finish() - resolve(apiRunInstance.results) - } + // Filter empty results + apiRunInstance.results = results.filter(result => !_.isEmpty(result)) + + // Filter out empty responses and return if the + // api caller isn't waiting for cascading actions to finish. + if (!args.waitForCascadingActions) { + apiSpan.finish() + resolve(apiRunInstance.results) + } - // Check if any of our waiters are done. - waitingForCasacadeToFinish = waitingForCasacadeToFinish.filter( - instance => { - // If none of its trace IDs are running, it's done. - const apisByTraceIdCount = apisRunningByTraceId.get( - instance.traceId - ) - if (apisByTraceIdCount === 0) { - instance.span.finish() - instance.resolve(instance.results) - return false - } else { - return true - } + // Check if any of our waiters are done. + waitingForCasacadeToFinish = waitingForCasacadeToFinish.filter( + instance => { + // If none of its trace IDs are running, it's done. + const apisByTraceIdCount = apisRunningByTraceId.get(instance.traceId) + if (apisByTraceIdCount === 0) { + instance.span.finish() + instance.resolve(instance.results) + return false + } else { + return true } - ) - return - }) + } + ) + return + }) }) diff --git a/packages/gatsby/src/utils/babel-loader-helpers.js b/packages/gatsby/src/utils/babel-loader-helpers.js index 1559136fcbf3b..8d7b9ea837494 100644 --- a/packages/gatsby/src/utils/babel-loader-helpers.js +++ b/packages/gatsby/src/utils/babel-loader-helpers.js @@ -2,7 +2,11 @@ const path = require(`path`) const _ = require(`lodash`) const loadCachedConfig = () => { - let pluginBabelConfig = { test: { plugins: [], presets: [] } } + let pluginBabelConfig = { + stages: { + test: { plugins: [], presets: [] }, + }, + } if (process.env.NODE_ENV !== `test`) { pluginBabelConfig = require(path.join( process.cwd(), @@ -15,7 +19,7 @@ const loadCachedConfig = () => { const getCustomOptions = () => { const pluginBabelConfig = loadCachedConfig() const stage = process.env.GATSBY_BUILD_STAGE || `test` - return pluginBabelConfig[stage].options + return pluginBabelConfig.stages[stage].options } const prepareOptions = (babel, resolve = require.resolve) => { @@ -48,106 +52,25 @@ const prepareOptions = (babel, resolve = require.resolve) => { ) } - // Fallback presets/plugins + // Fallback preset const fallbackPresets = [] - const fallbackPlugins = [] - - let targets - if (stage === `build-html`) { - targets = { - node: `current`, - } - } else { - targets = { - browsers: pluginBabelConfig.browserslist, - } - } - - fallbackPresets.push( - babel.createConfigItem( - [ - resolve(`@babel/preset-env`), - { - loose: true, - modules: false, - useBuiltIns: `usage`, - targets, - }, - ], - { - type: `preset`, - } - ) - ) fallbackPresets.push( - babel.createConfigItem( - [ - resolve(`@babel/preset-react`), - { - useBuiltIns: true, - pragma: `React.createElement`, - development: stage === `develop`, - }, - ], - { - type: `preset`, - } - ) - ) - - fallbackPlugins.push( - babel.createConfigItem( - [ - resolve(`@babel/plugin-proposal-class-properties`), - { - loose: true, - }, - ], - { - type: `plugin`, - } - ) - ) - - fallbackPlugins.push( - babel.createConfigItem([resolve(`babel-plugin-macros`)], { - type: `plugin`, + babel.createConfigItem([resolve(`babel-preset-gatsby`)], { + type: `preset`, }) ) - - fallbackPlugins.push( - babel.createConfigItem([resolve(`@babel/plugin-syntax-dynamic-import`)], { - type: `plugin`, - }) - ) - - fallbackPlugins.push( - babel.createConfigItem( - [ - resolve(`@babel/plugin-transform-runtime`), - { - helpers: true, - regenerator: true, - }, - ], - { - type: `plugin`, - } - ) - ) - // Go through babel state and create config items for presets/plugins from. const reduxPlugins = [] const reduxPresets = [] - pluginBabelConfig[stage].plugins.forEach(plugin => { + pluginBabelConfig.stages[stage].plugins.forEach(plugin => { reduxPlugins.push( babel.createConfigItem([resolve(plugin.name), plugin.options], { type: `plugin`, }) ) }) - pluginBabelConfig[stage].presets.forEach(preset => { + pluginBabelConfig.stages[stage].presets.forEach(preset => { reduxPresets.push( babel.createConfigItem([resolve(preset.name), preset.options], { type: `preset`, @@ -160,7 +83,6 @@ const prepareOptions = (babel, resolve = require.resolve) => { reduxPlugins, requiredPresets, requiredPlugins, - fallbackPlugins, fallbackPresets, ] } diff --git a/packages/gatsby/src/utils/babel-loader.js b/packages/gatsby/src/utils/babel-loader.js index d88c26f313545..b3a646363cd0a 100644 --- a/packages/gatsby/src/utils/babel-loader.js +++ b/packages/gatsby/src/utils/babel-loader.js @@ -43,7 +43,6 @@ module.exports = babelLoader.custom(babel => { reduxPlugins, requiredPresets, requiredPlugins, - fallbackPlugins, fallbackPresets, ] = prepareOptions(babel) @@ -52,7 +51,7 @@ module.exports = babelLoader.custom(babel => { if (!partialConfig.hasFilesystemConfig()) { options = { ...options, - plugins: [...fallbackPlugins, ...requiredPlugins], + plugins: requiredPlugins, presets: [...fallbackPresets, ...requiredPresets], } } else { diff --git a/packages/gatsby/src/utils/browserslist.js b/packages/gatsby/src/utils/browserslist.js new file mode 100644 index 0000000000000..590acc73d39aa --- /dev/null +++ b/packages/gatsby/src/utils/browserslist.js @@ -0,0 +1,31 @@ +const path = require(`path`) +const browserslist = require(`browserslist/node`) + +function installedGatsbyVersion(directory) { + try { + const { version } = require(path.join( + directory, + `node_modules`, + `gatsby`, + `package.json` + )) + return parseInt(version.split(`.`)[0], 10) + } catch (e) { + return undefined + } +} + +module.exports = function getBrowsersList(directory) { + const fallback = + installedGatsbyVersion(directory) === 1 + ? [`>1%`, `last 2 versions`, `IE >= 9`] + : [`>0.25%`, `not dead`] + + const config = browserslist.findConfig(directory) + + if (config && config.defaults) { + return config.defaults + } + + return fallback +} diff --git a/packages/gatsby/src/utils/cache.js b/packages/gatsby/src/utils/cache.js index a807a69cee0f4..4d005ca26f632 100644 --- a/packages/gatsby/src/utils/cache.js +++ b/packages/gatsby/src/utils/cache.js @@ -1,73 +1,54 @@ -const Promise = require(`bluebird`) const fs = require(`fs-extra`) -const _ = require(`lodash`) +const manager = require(`cache-manager`) +const fsStore = require(`cache-manager-fs-hash`) +const path = require(`path`) -const objectToMap = obj => new Map(Object.entries(obj)) +const MAX_CACHE_SIZE = 250 +const TTL = Number.MAX_SAFE_INTEGER -const mapToObject = map => { - const obj = {} - for (let [key, value] of map) { - obj[key] = value +class Cache { + constructor({ name = `db`, store = fsStore } = {}) { + this.name = name + this.store = store } - return obj -} -let db -let directory -let save + get directory() { + return path.join(process.cwd(), `.cache/caches/${this.name}`) + } -/** - * Initialize cache store. Reuse existing store if available. - */ -exports.initCache = () => { - fs.ensureDirSync(`${process.cwd()}/.cache/cache`) - if (process.env.NODE_ENV === `test`) { - directory = require(`os`).tmpdir() - } else { - directory = process.cwd() + `/.cache/cache` + init() { + fs.ensureDirSync(this.directory) + + const caches = [ + { + store: `memory`, + max: MAX_CACHE_SIZE, + }, + { + store: this.store, + options: { + path: this.directory, + ttl: TTL, + }, + }, + ].map(cache => manager.caching(cache)) + + this.cache = manager.multiCaching(caches) + + return this } - let previousState - try { - previousState = JSON.parse(fs.readFileSync(`${directory}/db.json`)) - } catch (e) { - // ignore + get(key) { + return new Promise(resolve => { + this.cache.get(key, (_, res) => resolve(res)) + }) } - if (previousState) { - db = objectToMap(previousState) - } else { - db = new Map() + set(key, value, args = {}) { + return new Promise(resolve => { + this.cache.set(key, value, args, (_, res) => resolve(res)) + }) } } -/** - * Get value of key - * @param key - * @returns {Promise} - */ -exports.get = key => - new Promise((resolve, reject) => { - resolve(db.get(key)) - }) - -/** - * Create or update key with value - * @param key - * @param value - * @returns {Promise} - Promise object which resolves to 'Ok' if successful. - */ -exports.set = (key, value) => - new Promise((resolve, reject) => { - db.set(key, value) - save() - resolve(`Ok`) - }) - -if (process.env.NODE_ENV !== `test`) { - save = _.debounce(() => { - fs.writeFile(`${directory}/db.json`, JSON.stringify(mapToObject(db))) - }, 250) -} else { - save = _.noop -} +module.exports = Cache diff --git a/packages/gatsby/src/utils/create-content-digest.js b/packages/gatsby/src/utils/create-content-digest.js new file mode 100644 index 0000000000000..3f4910ff72a8a --- /dev/null +++ b/packages/gatsby/src/utils/create-content-digest.js @@ -0,0 +1,19 @@ +const crypto = require(`crypto`) + +/** + * createContentDigest() Encrypts an input using md5 hash of hexadecimal digest. + * + * @param {Object|String|Array} input - The input to encrypt + * + * @return {String} - The content digest + */ +const createContentDigest = input => { + const content = typeof input !== `string` ? JSON.stringify(input) : input + + return crypto + .createHash(`md5`) + .update(content) + .digest(`hex`) +} + +module.exports = createContentDigest diff --git a/packages/gatsby/src/utils/create-node-id.js b/packages/gatsby/src/utils/create-node-id.js index a8c868d0868d1..c139177f4c651 100644 --- a/packages/gatsby/src/utils/create-node-id.js +++ b/packages/gatsby/src/utils/create-node-id.js @@ -1,4 +1,5 @@ const uuidv5 = require(`uuid/v5`) +const report = require(`gatsby-cli/lib/reporter`) const seedConstant = `638f7a53-c567-4eca-8fc1-b23efb1cfb2b` @@ -11,6 +12,14 @@ const seedConstant = `638f7a53-c567-4eca-8fc1-b23efb1cfb2b` * @return {String} - UUID */ function createNodeId(id, namespace) { + if (typeof id === `number`) { + id = id.toString() + } else if (typeof id !== `string`) { + report.panic( + `Parameter passed to createNodeId must be a String or Number (got ${typeof id})` + ) + } + return uuidv5(id, uuidv5(namespace, seedConstant)) } diff --git a/packages/gatsby/src/utils/merge-gatsby-config.js b/packages/gatsby/src/utils/merge-gatsby-config.js new file mode 100644 index 0000000000000..2671de74ed9a3 --- /dev/null +++ b/packages/gatsby/src/utils/merge-gatsby-config.js @@ -0,0 +1,39 @@ +const _ = require(`lodash`) +/** + * Defines how a theme object is merged with the user's config + */ +module.exports = (a, b) => { + // a and b are gatsby configs, If they have keys, that means there are values to merge + const allGatsbyConfigKeysWithAValue = _.uniq( + Object.keys(a).concat(Object.keys(b)) + ) + + // reduce the array of mergable keys into a single gatsby config object + const mergedConfig = allGatsbyConfigKeysWithAValue.reduce( + (config, gatsbyConfigKey) => { + // choose a merge function for the config key if there's one defined, + // otherwise use the default value merge function + const mergeFn = howToMerge[gatsbyConfigKey] || howToMerge.byDefault + return { + ...config, + [gatsbyConfigKey]: mergeFn(a[gatsbyConfigKey], b[gatsbyConfigKey]), + } + }, + {} + ) + + // return the fully merged config + return mergedConfig +} +const howToMerge = { + /** + * pick a truthy value by default. + * This makes sure that if a single value is defined, that one it used. + * We prefer the "right" value, because the user's config will be "on the right" + */ + byDefault: (a, b) => b || a, + siteMetadata: (objA, objB) => _.merge({}, objA, objB), + // plugins are concatenated and uniq'd, so we don't get two of the same plugin value + plugins: (a = [], b = []) => _.uniqWith(a.concat(b), _.isEqual), + mapping: (objA, objB) => _.merge({}, objA, objB), +} diff --git a/packages/gatsby/src/schema/prepare-regex.js b/packages/gatsby/src/utils/prepare-regex.js similarity index 100% rename from packages/gatsby/src/schema/prepare-regex.js rename to packages/gatsby/src/utils/prepare-regex.js diff --git a/packages/gatsby/src/utils/source-nodes.js b/packages/gatsby/src/utils/source-nodes.js index a90fb7e132fb9..ec544feba284b 100644 --- a/packages/gatsby/src/utils/source-nodes.js +++ b/packages/gatsby/src/utils/source-nodes.js @@ -2,7 +2,8 @@ const _ = require(`lodash`) const report = require(`gatsby-cli/lib/reporter`) const apiRunner = require(`./api-runner-node`) -const { store, getNode } = require(`../redux`) +const { store } = require(`../redux`) +const { getNode, getNodes } = require(`../db/nodes`) const { boundActionCreators } = require(`../redux/actions`) const { deleteNode } = boundActionCreators @@ -18,7 +19,7 @@ function discoverPluginsWithoutNodes(storeState) { ) // Find out which plugins own already created nodes const nodeOwners = _.uniq( - Array.from(storeState.nodes.values()).reduce((acc, node) => { + Array.from(getNodes()).reduce((acc, node) => { acc.push(node.internal.owner) return acc }, []) @@ -45,7 +46,7 @@ module.exports = async ({ parentSpan } = {}) => { // Garbage collect stale data nodes const touchedNodes = Object.keys(state.nodesTouched) - const staleNodes = Array.from(state.nodes.values()).filter(node => { + const staleNodes = Array.from(getNodes()).filter(node => { // Find the root node. let rootNode = node let whileCount = 0 diff --git a/packages/gatsby/src/utils/webpack-utils.js b/packages/gatsby/src/utils/webpack-utils.js index 0806a2842a5c9..a9ab55262149a 100644 --- a/packages/gatsby/src/utils/webpack-utils.js +++ b/packages/gatsby/src/utils/webpack-utils.js @@ -68,11 +68,11 @@ export type LoaderUtils = { } /** - * Utils that prodcue webpack rule objects + * Utils that produce webpack rule objects */ export type RuleUtils = { /** - * Handles Javascript compilation via babel + * Handles JavaScript compilation via babel */ js: RuleFactory<*>, yaml: RuleFactory<*>, @@ -282,7 +282,7 @@ module.exports = async ({ const rules = {} /** - * Javascript loader via babel, excludes node_modules + * JavaScript loader via babel, excludes node_modules */ { let js = (options = {}) => { @@ -296,6 +296,25 @@ module.exports = async ({ rules.js = js } + /** + * mjs loader: + * webpack 4 has issues automatically dealing with + * the .mjs extension, thus we need to explicitly + * add this rule to use the default webpack js loader + */ + { + let mjs = (options = {}) => { + return { + test: /\.mjs$/, + include: /node_modules/, + type: `javascript/auto`, + ...options, + } + } + + rules.mjs = mjs + } + { let eslint = schema => { return { @@ -416,7 +435,7 @@ module.exports = async ({ const plugins = { ...builtinPlugins } /** - * Minify javascript code without regard for IE8. Attempts + * Minify JavaScript code without regard for IE8. Attempts * to parallelize the work to save time. Generally only add in Production */ plugins.minifyJs = ({ terserOptions, ...options } = {}) => @@ -426,8 +445,16 @@ module.exports = async ({ exclude: /\.min\.js/, sourceMap: true, terserOptions: { - ecma: 8, ie8: false, + parse: { + ecma: 8, + }, + compress: { + ecma: 5, + }, + output: { + ecma: 5, + }, ...terserOptions, }, ...options, diff --git a/packages/gatsby/src/utils/webpack.config.js b/packages/gatsby/src/utils/webpack.config.js index e5b1603a14e77..61c2152705d94 100644 --- a/packages/gatsby/src/utils/webpack.config.js +++ b/packages/gatsby/src/utils/webpack.config.js @@ -67,14 +67,22 @@ module.exports = async ( envObject.PUBLIC_DIR = JSON.stringify(`${process.cwd()}/public`) envObject.BUILD_STAGE = JSON.stringify(stage) - return Object.assign(envObject, gatsbyVarObject) + const mergedEnvVars = Object.assign(envObject, gatsbyVarObject) + + return Object.keys(mergedEnvVars).reduce( + (acc, key) => { + acc[`process.env.${key}`] = mergedEnvVars[key] + return acc + }, + { + "process.env": JSON.stringify({}), + } + ) } function getHmrPath() { - let hmrBasePath = `${program.ssl ? `https` : `http`}://${ - program.host - }:${webpackPort}/` - + // ref: https://github.com/gatsbyjs/gatsby/issues/8348 + let hmrBasePath = `/` const hmrSuffix = `__webpack_hmr&reload=true&overlay=false` if (process.env.GATSBY_WEBPACK_PUBLICPATH) { @@ -144,7 +152,6 @@ module.exports = async ( case `develop`: return { commons: [ - require.resolve(`react-hot-loader/patch`), `${require.resolve( `webpack-hot-middleware/client` )}?path=${getHmrPath()}`, @@ -175,7 +182,7 @@ module.exports = async ( // Add a few global variables. Set NODE_ENV to production (enables // optimizations for React) and what the link prefix is (__PATH_PREFIX__). plugins.define({ - "process.env": processEnv(stage, `development`), + ...processEnv(stage, `development`), __PATH_PREFIX__: JSON.stringify( program.prefixPaths ? store.getState().config.pathPrefix : `` ), @@ -256,7 +263,7 @@ module.exports = async ( function getDevtool() { switch (stage) { case `develop`: - return `eval` + return `cheap-module-source-map` // use a normal `source-map` for the html phases since // it gives better line and column numbers case `develop-html`: @@ -285,6 +292,7 @@ module.exports = async ( // Common config for every env. // prettier-ignore let configRules = [ + rules.mjs(), rules.js(), rules.yaml(), rules.fonts(), @@ -359,10 +367,7 @@ module.exports = async ( // modules. But also make it possible to install modules within the src // directory if you need to install a specific version of a module for a // part of your site. - modules: [ - directoryPath(path.join(`node_modules`)), - `node_modules`, - ], + modules: [directoryPath(path.join(`node_modules`)), `node_modules`], alias: { gatsby$: directoryPath(path.join(`.cache`, `gatsby-browser-entry.js`)), // Using directories for module resolution is mandatory because diff --git a/packages/gatsby/src/utils/websocket-manager.js b/packages/gatsby/src/utils/websocket-manager.js index 4441d2a7cf825..483b063593aac 100644 --- a/packages/gatsby/src/utils/websocket-manager.js +++ b/packages/gatsby/src/utils/websocket-manager.js @@ -92,6 +92,7 @@ const getRoomNameFromPath = (path: string): string => `path-${path}` class WebsocketManager { pageResults: QueryResultsMap staticQueryResults: QueryResultsMap + errors: Map isInitialised: boolean activePaths: Set programDir: string @@ -101,6 +102,7 @@ class WebsocketManager { this.activePaths = new Set() this.pageResults = new Map() this.staticQueryResults = new Map() + this.errors = new Map() this.websocket this.programDir @@ -108,6 +110,7 @@ class WebsocketManager { this.getSocket = this.getSocket.bind(this) this.emitPageData = this.emitPageData.bind(this) this.emitStaticQueryData = this.emitStaticQueryData.bind(this) + this.emitError = this.emitError.bind(this) } init({ server, directory }) { @@ -133,6 +136,15 @@ class WebsocketManager { payload: result, }) }) + this.errors.forEach((message, errorID) => { + this.websocket.send({ + type: `overlayError`, + payload: { + id: errorID, + message, + }, + }) + }) const leaveRoom = path => { s.leave(getRoomNameFromPath(path)) @@ -194,10 +206,21 @@ class WebsocketManager { } emitPageData(data: QueryResult) { + this.pageResults.set(data.id, data) if (this.isInitialised) { this.websocket.send({ type: `pageQueryResult`, payload: data }) } - this.pageResults.set(data.id, data) + } + emitError(id: string, message?: string) { + if (message) { + this.errors.set(id, message) + } else { + this.errors.delete(id) + } + + if (this.isInitialised) { + this.websocket.send({ type: `overlayError`, payload: { id, message } }) + } } } diff --git a/packages/graphql-skip-limit/.babelrc b/packages/graphql-skip-limit/.babelrc index b5d6b28d4b5ea..9f5de61e0d79e 100644 --- a/packages/graphql-skip-limit/.babelrc +++ b/packages/graphql-skip-limit/.babelrc @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js"] + ["babel-preset-gatsby-package"] ] } diff --git a/packages/graphql-skip-limit/CHANGELOG.md b/packages/graphql-skip-limit/CHANGELOG.md index 75eb73f513277..e63e9efcb0580 100644 --- a/packages/graphql-skip-limit/CHANGELOG.md +++ b/packages/graphql-skip-limit/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + + +## [2.0.2](https://github.com/gatsbyjs/gatsby/tree/master/packages/graphql-skip-limit/compare/graphql-skip-limit@2.0.1...graphql-skip-limit@2.0.2) (2018-11-29) + +**Note:** Version bump only for package graphql-skip-limit + + + +## [2.0.1](https://github.com/gatsbyjs/gatsby/tree/master/packages/graphql-skip-limit/compare/graphql-skip-limit@2.0.0...graphql-skip-limit@2.0.1) (2018-10-29) + +**Note:** Version bump only for package graphql-skip-limit + # [2.0.0](https://github.com/gatsbyjs/gatsby/tree/master/packages/graphql-skip-limit/compare/graphql-skip-limit@2.0.0-rc.3...graphql-skip-limit@2.0.0) (2018-09-17) diff --git a/packages/graphql-skip-limit/package.json b/packages/graphql-skip-limit/package.json index 8e5b2df640e8c..183caba82bb7a 100644 --- a/packages/graphql-skip-limit/package.json +++ b/packages/graphql-skip-limit/package.json @@ -1,7 +1,7 @@ { "name": "graphql-skip-limit", "description": "A library to help construct a graphql-js server supporting skip/relay style pagination. Built for Gatsby but perhaps useful elsewhere.", - "version": "2.0.0", + "version": "2.0.2", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" @@ -9,9 +9,13 @@ "dependencies": { "@babel/runtime": "^7.0.0" }, + "peerDependencies" : { + "graphql": "^0.13.2" + }, "devDependencies": { "@babel/cli": "^7.0.0", "@babel/core": "^7.0.0", + "babel-preset-gatsby-package": "^0.1.3", "cross-env": "^5.1.4", "graphql": "^0.13.2" }, diff --git a/plop-templates/package/.babelrc.hbs b/plop-templates/package/.babelrc.hbs index 49f11f3ac4077..c5aaeee07bfaf 100644 --- a/plop-templates/package/.babelrc.hbs +++ b/plop-templates/package/.babelrc.hbs @@ -1,5 +1,5 @@ { "presets": [ - ["../../.babel-preset.js", { "browser": true }] + ["babel-preset-gatsby-package", { "browser": true }] ] } diff --git a/plop-templates/package/package.json.hbs b/plop-templates/package/package.json.hbs index ccf4fd2cc4409..e9e0b6cea6841 100644 --- a/plop-templates/package/package.json.hbs +++ b/plop-templates/package/package.json.hbs @@ -27,6 +27,7 @@ "devDependencies": { "@babel/cli": "^7.0.0", "@babel/core": "^7.0.0", + "babel-preset-gatsby-package": "^0.1.1", "cross-env": "^5.0.5" } } diff --git a/plopfile.js b/plopfile.js index 8fc54ffc59ecc..b097fb800de1a 100644 --- a/plopfile.js +++ b/plopfile.js @@ -1,7 +1,7 @@ module.exports = function(plop) { // Add new package plop.setGenerator(`package`, { - description: `This is sets up the basic files for a new package.`, + description: `This sets up the basic files for a new package.`, prompts: [ { type: `input`, @@ -19,7 +19,7 @@ module.exports = function(plop) { message: `Will this package contain code that runs in a browser, e.g. have a gatsby-browser.js or gatsby-ssr.js file?`, }, ], - actions: (data) => + actions: data => [ { type: `add`, @@ -59,7 +59,7 @@ module.exports = function(plop) { }) // Add new example site plop.setGenerator(`example`, { - description: `This is sets up the basic files for a new example site.`, + description: `This sets up the basic files for a new example site.`, prompts: [ { type: `input`, diff --git a/scripts/add-npm-owner/index.js b/scripts/add-npm-owner/index.js index 061286769c70f..7ecf3d0bcb561 100644 --- a/scripts/add-npm-owner/index.js +++ b/scripts/add-npm-owner/index.js @@ -1,67 +1,35 @@ #!/usr/bin/env node -const { getPackages } = require(`@lerna/project`) -const PackageGraph = require(`@lerna/package-graph`) -const filterPackages = require(`@lerna/filter-packages`) -const path = require(`path`) const util = require(`util`) const exec = util.promisify(require(`child_process`).exec) const argv = require(`yargs`) .command(`$0 `, `Add new owner to gatsby packages`) .help().argv +const getUnownedPackages = require(`../get-unowned-packages`) -const rootPath = path.join(__dirname, `../..`) +const user = argv.user -const getPackagesWithReadWriteAccess = async user => { - const cmd = `npm access ls-packages ${user}` - const { stdout } = await exec(cmd) - const permissions = JSON.parse(stdout) - return Object.entries(permissions).reduce((acc, [pkgName, access]) => { - if (access === `read-write`) { - acc.push(pkgName) - } - return acc - }, []) -} - -getPackages(rootPath).then(async packages => { - const graph = new PackageGraph(packages, `dependencies`, true) - - // filter out private packages - // adding owner to private packages will fail, because package doesn't exist - const publicGatsbyPackages = filterPackages( - graph.rawPackageList, - [], - [], - false - ) - - const alreadyOwnedPackages = await getPackagesWithReadWriteAccess(argv.user) - - const publicGatsbyPackagesWithoutAccess = publicGatsbyPackages.filter( - pkg => !alreadyOwnedPackages.includes(pkg.name) - ) - - if (!publicGatsbyPackagesWithoutAccess.length) { - console.log(`${argv.user} has write access to all packages`) +getUnownedPackages({ user }).then(async ({ packages }) => { + if (!packages.length) { + console.log(`${user} has write access to all packages`) return } else { - console.log(`Will be adding ${argv.user} to packages:`) - publicGatsbyPackagesWithoutAccess.forEach(pkg => { + console.log(`Will be adding ${user} to packages:`) + packages.forEach(pkg => { console.log(` - ${pkg.name}`) }) } - for (let pkg of publicGatsbyPackagesWithoutAccess) { - const cmd = `npm owner add ${argv.user} ${pkg.name}` + for (let pkg of packages) { + const cmd = `npm owner add ${user} ${pkg.name}` try { const { stderr } = await exec(cmd) if (stderr) { - console.error(`Error adding ${argv.user} to ${pkg.name}:\n`, stderr) + console.error(`Error adding ${user} to ${pkg.name}:\n`, stderr) } else { - console.log(`Added ${argv.user} to ${pkg.name}`) + console.log(`Added ${user} to ${pkg.name}`) } } catch (e) { - console.error(`Error adding ${argv.user} to ${pkg.name}:\n`, e.stderr) + console.error(`Error adding ${user} to ${pkg.name}:\n`, e.stderr) } } }) diff --git a/scripts/add-npm-owner/package.json b/scripts/add-npm-owner/package.json index 4d983a2159b40..82a5ea3d72f61 100644 --- a/scripts/add-npm-owner/package.json +++ b/scripts/add-npm-owner/package.json @@ -8,8 +8,5 @@ }, "author": "", "license": "ISC", - "dependencies": { - "lerna-get-packages": "^1.0.0", - "shelljs": "^0.8.2" - } + "dependencies": {} } diff --git a/scripts/assert-changed-files.sh b/scripts/assert-changed-files.sh index d2677e1c91219..69c25f8daf978 100755 --- a/scripts/assert-changed-files.sh +++ b/scripts/assert-changed-files.sh @@ -1,7 +1,7 @@ #!/bin/bash GREP_PATTERN=$1 -FILES_COUNT="$(git diff-tree --no-commit-id --name-only -r $CIRCLE_SHA1 | grep -E "$GREP_PATTERN" | wc -l)" +FILES_COUNT="$(git diff-tree --no-commit-id --name-only -r $CIRCLE_BRANCH origin/master | grep -E "$GREP_PATTERN" | wc -l)" if [ $FILES_COUNT -eq 0 ]; then echo "0 files matching '$GREP_PATTERN'; exiting and marking successful." diff --git a/scripts/check-publish-access/index.js b/scripts/check-publish-access/index.js new file mode 100644 index 0000000000000..1d0c462d24df2 --- /dev/null +++ b/scripts/check-publish-access/index.js @@ -0,0 +1,12 @@ +#!/usr/bin/env node +const getUnownedPackages = require(`../get-unowned-packages`) + +getUnownedPackages().then(({ packages, user }) => { + if (packages.length > 0) { + console.warn( + `The following packages will fail to publish, please add access for ${user}:` + ) + console.warn(packages.map(pkg => ` - ${pkg.name}`).join(`\n`)) + process.exit(1) + } +}) diff --git a/scripts/check-publish-access/package.json b/scripts/check-publish-access/package.json new file mode 100644 index 0000000000000..829570f658cd0 --- /dev/null +++ b/scripts/check-publish-access/package.json @@ -0,0 +1,6 @@ +{ + "name": "check-publish-access", + "version": "1.0.0", + "main": "index.js", + "license": "MIT" +} diff --git a/scripts/integration-test.sh b/scripts/e2e-test.sh similarity index 66% rename from scripts/integration-test.sh rename to scripts/e2e-test.sh index 0cbdaac185924..ce133c9b6c2c0 100755 --- a/scripts/integration-test.sh +++ b/scripts/e2e-test.sh @@ -3,13 +3,13 @@ SRC_PATH=$1 CUSTOM_COMMAND="${2:-test}" GATSBY_PATH="${CIRCLE_WORKING_DIRECTORY:-../../}" -sudo npm install -g gatsby-dev-cli && +npm install -g gatsby-dev-cli && # setting up child integration test link to gatsby packages cd $SRC_PATH && yarn && gatsby-dev --set-path-to-repo $GATSBY_PATH && gatsby-dev --scan-once --copy-all --quiet && # copies _all_ files in gatsby/packages -sudo chmod +x ./node_modules/.bin/gatsby && # this is sometimes necessary to ensure executable +chmod +x ./node_modules/.bin/gatsby && # this is sometimes necessary to ensure executable yarn $CUSTOM_COMMAND && -echo "Integration test run succeeded" +echo "e2e test run succeeded" diff --git a/scripts/get-unowned-packages/index.js b/scripts/get-unowned-packages/index.js new file mode 100644 index 0000000000000..cc6e8e6e925fe --- /dev/null +++ b/scripts/get-unowned-packages/index.js @@ -0,0 +1,68 @@ +const { getPackages } = require(`@lerna/project`) +const PackageGraph = require(`@lerna/package-graph`) +const filterPackages = require(`@lerna/filter-packages`) +const util = require(`util`) +const path = require(`path`) +const { exec, execSync } = require(`child_process`) + +const execP = util.promisify(exec) + +const getPackagesWithReadWriteAccess = async user => { + const cmd = `npm access ls-packages ${user}` + const { stdout } = await execP(cmd) + const permissions = JSON.parse(stdout) + return Object.entries(permissions).reduce((lookup, [pkgName, access]) => { + if (access === `read-write`) { + lookup[pkgName] = pkgName + } + return lookup + }, {}) +} + +module.exports = function getUnownedPackages({ + rootPath = path.join(__dirname, `../..`), + user, +} = {}) { + return getPackages(rootPath).then(async packages => { + const graph = new PackageGraph(packages, `dependencies`, true) + + // filter out private packages + // adding owner to private packages will fail, because package doesn't exist + const publicGatsbyPackages = filterPackages( + graph.rawPackageList, + [], + [], + false + ) + + // infer user from npm whoami + // set registry because yarn run hijacks registry + if (!user) { + user = await execP(`npm whoami --registry https://registry.npmjs.org`) + .then(({ stdout }) => stdout.trim()) + .catch(() => process.exit(1)) + } + + const alreadyOwnedPackages = await getPackagesWithReadWriteAccess(user) + + const publicGatsbyPackagesWithoutAccess = publicGatsbyPackages.filter( + pkg => { + if (alreadyOwnedPackages[pkg.name]) { + return false + } + + try { + return !execSync(`npm view ${pkg.name} version`, { stdio: `pipe` }) + .stderr + } catch (e) { + return false + } + } + ) + + return { + packages: publicGatsbyPackagesWithoutAccess, + user, + } + }) +} diff --git a/scripts/get-unowned-packages/package.json b/scripts/get-unowned-packages/package.json new file mode 100644 index 0000000000000..a11056731be4b --- /dev/null +++ b/scripts/get-unowned-packages/package.json @@ -0,0 +1,6 @@ +{ + "name": "get-unowned-packages", + "version": "1.0.0", + "main": "index.js", + "license": "MIT" +} diff --git a/scripts/integration-test-travis.sh b/scripts/integration-test-travis.sh deleted file mode 100755 index 0ef14208bc496..0000000000000 --- a/scripts/integration-test-travis.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -INTEGRATION_TEST=$1 -SRC_PATH=$2 -GATSBY_PATH="${TRAVIS_BUILD_DIR:-../../}" # set to third arg if defined, otherwise use ../../ - -is_pull_request='^[0-9]+$' - -if [[ "$INTEGRATION_TEST" = true && "$TRAVIS_PULL_REQUEST" =~ $is_pull_request ]]; then - npm install -g gatsby-dev-cli - - # bootstrapping all packages so we test _this_ PR's changes - echo "=== bootstrapping $(pwd)" - yarn bootstrap - - # setting up child integration test link to gatsby packages - cd $SRC_PATH - echo "=== setting up link to current changes with gatsby-dev in $(pwd)" - gatsby-dev --set-path-to-repo $GATSBY_PATH - gatsby-dev --scan-once --quiet --copy-all # copies _all_ files in gatsby/packages -fi diff --git a/scripts/on-lint-error.js b/scripts/on-lint-error.js new file mode 100644 index 0000000000000..0427fbdb5003f --- /dev/null +++ b/scripts/on-lint-error.js @@ -0,0 +1,12 @@ +console.log( + `Gatsby uses precommit hooks to run our linting and style checks. We do this + to avoid additional hassle during pull request reviews, so please fix any linting + problems before submitting pull request, because all PRs must pass these checks. + + If you're doing something temporary, you can disable this hook with: + git commit --no-verify + + If you want disable this hook for all future commits: + npm run hooks:uninstall + ` +) diff --git a/scripts/publish-site.sh b/scripts/publish-site.sh index b134ffd4c8b48..79915c15a01b7 100755 --- a/scripts/publish-site.sh +++ b/scripts/publish-site.sh @@ -12,7 +12,7 @@ cd "$1" || exit yarn echo "=== Copying built Gatsby to website." -gatsby-dev --scan-once --quiet +gatsby-dev --scan-once # copy file if target dir exists FRAGMENTSDIR="node_modules/gatsby-transformer-sharp/src" diff --git a/translations/es/CONTRIBUTING_ES.md b/translations/es/CONTRIBUTING_ES.md index 6ee9d709c5017..e262ae33b1be4 100644 --- a/translations/es/CONTRIBUTING_ES.md +++ b/translations/es/CONTRIBUTING_ES.md @@ -14,7 +14,7 @@ Queremos contribuir con Gatsby para que sea divertido, agradable y educativo par - Agregar unidades o pruebas funcionales - Ayudar con [problemas de GitHub](https://github.com/gatsbyjs/gatsby/issues) -- especialmente determinando si un problema persiste o es reproducible - [Reportar errores o problemas encontrados](/docs/how-to-file-an-issue/) -- Buscar a Gatsby en Discord o Spectrum y ayudar a alguien más que lo necesite +- Buscar a Gatsby en [Discord](https://discordapp.com/invite/jUFVxtB) o [Spectrum](https://spectrum.chat/gatsby-js) y ayudar a alguien más que lo necesite - ¡Enseñar a otros cómo contribuir al repositorio de Gatsby! Si estás preocupado o no sabes por dónde empezar, siempre puedes comunicarte con Shannon Soper (@shannonb_ux) en Twitter o simplemente presentar el problema en github y una persona encargada del mantenimiento podrá ayudarlo a orientarse. diff --git a/translations/es/docs/tutorial/part-one/index.md b/translations/es/docs/tutorial/part-one/index.md index 5590ad10aa536..f7d27dee0418b 100644 --- a/translations/es/docs/tutorial/part-one/index.md +++ b/translations/es/docs/tutorial/part-one/index.md @@ -333,7 +333,7 @@ Después de guardar el archivo, deberías ver la página de contacto y poder est

Sorry! You browser doesn't support this video.

+

Disculpa! Tu navegador no apoya Este video.

El componente `` de Gatsby es para vincular las páginas de tu sitio. Para enlaces externos a páginas que no maneja tu sitio Gatsby, usa la etiqueta de HTML ``. diff --git a/www/.eslintignore b/www/.eslintignore new file mode 100644 index 0000000000000..85a3904d77ac1 --- /dev/null +++ b/www/.eslintignore @@ -0,0 +1 @@ +/src/**/*.min.js diff --git a/www/.eslintrc.json b/www/.eslintrc.json index 8aff58dae7458..362eb8bf72507 100644 --- a/www/.eslintrc.json +++ b/www/.eslintrc.json @@ -1,8 +1,5 @@ { - "globals": { - "graphql": true - }, - "rules": { - "react/prop-types": [0] - } + "globals": { + "graphql": true + } } diff --git a/www/.gitignore b/www/.gitignore index 9db98d5380bd0..bc8d41f801c2a 100644 --- a/www/.gitignore +++ b/www/.gitignore @@ -33,4 +33,4 @@ src/cache /package-lock.json # Env variables -.env.development +.env* diff --git a/www/README.md b/www/README.md index 7062da407abb3..542b35acac568 100644 --- a/www/README.md +++ b/www/README.md @@ -2,10 +2,12 @@ The main Gatsby site at gatsbyjs.org -Run locally with +Run locally with: - `yarn install` -- `yarn run develop` +- `gatsby develop` + +See the full contributing instructions at https://www.gatsbyjs.org/docs/how-to-contribute/. ## Working with the starter showcase @@ -20,3 +22,7 @@ GITHUB_API_TOKEN=YOUR_TOKEN_HERE ``` The `.env.development` file is ignored by git. Your token should never be committed. + +## Screenshots placeholder + +If you are not working on starter or site showcase, it might be beneficial to use a placeholder image instead of actual screenshots. It will skip downloading screenshots and generating responsive images for all screenshots and replace them with a placeholder image. Check [`gatsby-transformer-screenshot` docs](http://www.gatsbyjs.org/packages/gatsby-transformer-screenshot#placeholder-image) to learn how to use it. diff --git a/www/gatsby-config.js b/www/gatsby-config.js index b28d9fe97729c..603ac7d4ce155 100644 --- a/www/gatsby-config.js +++ b/www/gatsby-config.js @@ -1,8 +1,13 @@ +require(`dotenv`).config({ + path: `.env.${process.env.NODE_ENV}`, +}) + module.exports = { siteMetadata: { - title: `Gatsby`, + title: `GatsbyJS`, siteUrl: `https://www.gatsbyjs.org`, description: `Blazing fast modern site generator for React`, + twitter: `@gatsbyjs`, }, mapping: { "MarkdownRemark.frontmatter.author": `AuthorYaml`, @@ -28,6 +33,13 @@ module.exports = { path: `${__dirname}/../packages/`, }, }, + { + resolve: `gatsby-source-filesystem`, + options: { + name: `ecosystem`, + path: `${__dirname}/src/data/ecosystem/`, + }, + }, { resolve: `gatsby-plugin-typography`, options: { @@ -69,7 +81,7 @@ module.exports = { showSpinner: false, }, }, - `gatsby-plugin-glamor`, + `gatsby-plugin-emotion`, `gatsby-transformer-sharp`, `gatsby-plugin-sharp`, `gatsby-plugin-catch-links`, diff --git a/www/gatsby-node.js b/www/gatsby-node.js index 19b9465bef79d..4d83da54e7e50 100644 --- a/www/gatsby-node.js +++ b/www/gatsby-node.js @@ -7,14 +7,16 @@ const slash = require(`slash`) const slugify = require(`slugify`) const url = require(`url`) const getpkgjson = require(`get-package-json-from-github`) -const parseGHUrl = require("parse-github-url") -const { GraphQLClient } = require("graphql-request") +const parseGHUrl = require(`parse-github-url`) +const { GraphQLClient } = require(`graphql-request`) +const moment = require(`moment`) -require(`dotenv`).config({ - path: `.env.${process.env.NODE_ENV}`, -}) +let ecosystemFeaturedItems -if (process.env.NODE_ENV === "production" && !process.env.GITHUB_API_TOKEN) { +if ( + process.env.gatsby_executing_command === `build` && + !process.env.GITHUB_API_TOKEN +) { throw new Error( `A GitHub token is required to build the site. Check the README.` ) @@ -65,9 +67,8 @@ exports.createPages = ({ graphql, actions }) => { createRedirect({ fromPath: `/docs/netlify-cms/`, - isPermanent: true, - redirectInBrowser: true, toPath: `/docs/sourcing-from-netlify-cms/`, + isPermanent: true, }) createRedirect({ @@ -75,12 +76,47 @@ exports.createPages = ({ graphql, actions }) => { toPath: `/starters/`, isPermanent: true, }) - + createRedirect({ - fromPath: `/docs/adding-third-party-services/`, + fromPath: `/docs/gatsby-starters/`, // Main Gatsby starters page is the starter library + toPath: `/starters/`, isPermanent: true, - redirectInBrowser: true, + }) + + createRedirect({ + fromPath: `/docs/adding-third-party-services/`, toPath: `/docs/adding-website-functionality/`, + isPermanent: true, + }) + + createRedirect({ + fromPath: `/docs/bound-action-creators/`, + toPath: `/docs/actions/`, + isPermanent: true, + }) + + createRedirect({ + fromPath: `/docs/bound-action-creators`, + toPath: `/docs/actions`, + isPermanent: true, + }) + + createRedirect({ + fromPath: `/blog/2019-10-03-gatsby-perf`, + toPath: `/blog/2018-10-03-gatsby-perf`, + isPermanent: true, + }) + + createRedirect({ + fromPath: `/docs/add-a-service-worker`, + toPath: `/docs/add-offline-support-with-a-service-worker`, + isPermanent: true, + }) + + createRedirect({ + fromPath: `/docs/add-offline-support`, + toPath: `/docs/add-offline-support-with-a-service-worker`, + isPermanent: true, }) return new Promise((resolve, reject) => { @@ -104,107 +140,99 @@ exports.createPages = ({ graphql, actions }) => { `src/templates/template-creator-details.js` ) - createRedirect({ - fromPath: `/docs/bound-action-creators/`, - isPermanent: true, - redirectInBrowser: true, - toPath: `/docs/actions/`, - }) - - createRedirect({ - fromPath: `/docs/bound-action-creators`, - isPermanent: true, - redirectInBrowser: true, - toPath: `/docs/actions`, - }) - // Query for markdown nodes to use in creating pages. - - graphql( - ` - query { - allMarkdownRemark( - sort: { order: DESC, fields: [frontmatter___date] } - limit: 10000 - filter: { fileAbsolutePath: { ne: null } } - ) { - edges { - node { - fields { - slug - package - } - frontmatter { - title - draft - canonicalLink - publishedAt - tags - } + graphql(` + query { + allMarkdownRemark( + sort: { order: DESC, fields: [frontmatter___date, fields___slug] } + limit: 10000 + filter: { fileAbsolutePath: { ne: null } } + ) { + edges { + node { + fields { + slug + package + released + } + frontmatter { + title + draft + canonicalLink + publishedAt + tags } } } - allAuthorYaml { - edges { - node { - fields { - slug - } + } + allAuthorYaml { + edges { + node { + fields { + slug } } } - allCreatorsYaml { - edges { - node { - fields { - slug - } + } + allCreatorsYaml { + edges { + node { + fields { + slug } } } - allSitesYaml(filter: { main_url: { ne: null } }) { - edges { - node { - fields { - slug - } + } + allSitesYaml(filter: { main_url: { ne: null } }) { + edges { + node { + fields { + slug } } } - allStartersYaml { - edges { - node { - id - fields { - starterShowcase { - slug - stub - } + } + allStartersYaml { + edges { + node { + id + fields { + starterShowcase { + slug + stub } - url - repo } + url + repo } } - allNpmPackage { - edges { - node { + } + allNpmPackage { + edges { + node { + id + title + slug + readme { id - title - slug - readme { + childMarkdownRemark { id - childMarkdownRemark { - id - html - } + html } } } } } - ` - ).then(result => { + allEcosystemYaml { + edges { + node { + starters + plugins + } + } + } + } + `).then(result => { if (result.errors) { return reject(result.errors) } @@ -221,9 +249,13 @@ exports.createPages = ({ graphql, actions }) => { return undefined }) + const releasedBlogPosts = blogPosts.filter(post => + _.get(post, `node.fields.released`) + ) + // Create blog-list pages. const postsPerPage = 8 - const numPages = Math.ceil(blogPosts.length / postsPerPage) + const numPages = Math.ceil(releasedBlogPosts.length / postsPerPage) Array.from({ length: numPages }).forEach((_, i) => { createPage({ @@ -240,7 +272,9 @@ exports.createPages = ({ graphql, actions }) => { // Create blog-post pages. blogPosts.forEach((edge, index) => { - const next = index === 0 ? null : blogPosts[index - 1].node + let next = index === 0 ? null : blogPosts[index - 1].node + if (next && !_.get(next, `fields.released`)) next = null + const prev = index === blogPosts.length - 1 ? null : blogPosts[index + 1].node @@ -255,7 +289,7 @@ exports.createPages = ({ graphql, actions }) => { }) }) - const tagLists = blogPosts + const tagLists = releasedBlogPosts .filter(post => _.get(post, `node.frontmatter.tags`)) .map(post => _.get(post, `node.frontmatter.tags`)) @@ -280,7 +314,7 @@ exports.createPages = ({ graphql, actions }) => { }) const starterTemplate = path.resolve( - `src/templates/template-starter-showcase.js` + `src/templates/template-starter-page.js` ) starters.forEach((edge, index) => { @@ -371,13 +405,16 @@ exports.createPages = ({ graphql, actions }) => { } }) + // Read featured starters and plugins for Ecosystem + ecosystemFeaturedItems = result.data.allEcosystemYaml.edges[0].node + return resolve() }) }) } -// Create slugs for files. -exports.onCreateNode = ({ node, actions, getNode, getNodes }) => { +// Create slugs for files, set released status for blog posts. +exports.onCreateNode = ({ node, actions, getNode, reporter }) => { const { createNodeField } = actions let slug if (node.internal.type === `File`) { @@ -409,6 +446,16 @@ exports.onCreateNode = ({ node, actions, getNode, getNodes }) => { } else { slug = `/${parsedFilePath.dir}/` } + + // Set released status for blog posts. + if (_.includes(parsedFilePath.dir, `blog`)) { + let released = false + const date = _.get(node, `frontmatter.date`) + if (date) { + released = moment().isSameOrAfter(moment.utc(date)) + } + createNodeField({ node, name: `released`, value: released }) + } } // Add slugs for package READMEs. if ( @@ -443,17 +490,18 @@ exports.onCreateNode = ({ node, actions, getNode, getNodes }) => { // Default fields are to avoid graphql errors. const { owner, name: repoStub } = parseGHUrl(node.repo) const defaultFields = { - slug: ``, - stub: ``, + slug: `/${repoStub}/`, + stub: repoStub, name: ``, description: ``, stars: 0, lastUpdated: ``, owner: ``, githubFullName: ``, - allDependencies: [], - gatsbyDependencies: [], - miscDependencies: [], + gatsbyMajorVersion: [[`no data`, `0`]], + allDependencies: [[`no data`, `0`]], + gatsbyDependencies: [[`no data`, `0`]], + miscDependencies: [[`no data`, `0`]], } if (!process.env.GITHUB_API_TOKEN) { @@ -464,81 +512,89 @@ exports.onCreateNode = ({ node, actions, getNode, getNodes }) => { ...defaultFields, }, }) - } - - Promise.all([ - getpkgjson(node.repo), - githubApiClient.request(` - query { - repository(owner:"${owner}", name:"${repoStub}") { - name - stargazers { - totalCount - } - createdAt - updatedAt - owner { - login + } else { + return Promise.all([ + getpkgjson(node.repo), + githubApiClient.request(` + query { + repository(owner:"${owner}", name:"${repoStub}") { + name + stargazers { + totalCount + } + createdAt + updatedAt + owner { + login + } + nameWithOwner } - nameWithOwner } + `), + ]) + .then(results => { + const [pkgjson, githubData] = results + const { + stargazers: { totalCount: stars }, + updatedAt: lastUpdated, + owner: { login: owner }, + name, + nameWithOwner: githubFullName, + } = githubData.repository + + const { dependencies = [], devDependencies = [] } = pkgjson + const allDependencies = Object.entries(dependencies).concat( + Object.entries(devDependencies) + ) + + const gatsbyMajorVersion = allDependencies + .filter(([key, _]) => key === `gatsby`) + .map(version => { + let [gatsby, versionNum] = version + if (versionNum === `latest` || versionNum === `next`) { + return [gatsby, `2`] + } + return [gatsby, versionNum.replace(/\D/g, ``).charAt(0)] + }) + + // If a new field is added here, make sure a corresponding + // change is made to "defaultFields" to not break DX + const starterShowcaseFields = { + slug: `/${repoStub}/`, + stub: repoStub, + name, + description: pkgjson.description, + stars, + lastUpdated, + owner, + githubFullName, + gatsbyMajorVersion, + allDependencies, + gatsbyDependencies: allDependencies + .filter( + ([key, _]) => ![`gatsby-cli`, `gatsby-link`].includes(key) // remove stuff everyone has + ) + .filter(([key, _]) => key.includes(`gatsby`)), + miscDependencies: allDependencies.filter( + ([key, _]) => !key.includes(`gatsby`) + ), } - `), - ]) - .then(results => { - const [pkgjson, githubData] = results - const { - stargazers: { totalCount: stars }, - updatedAt: lastUpdated, - owner: { login: owner }, - name, - nameWithOwner: githubFullName, - } = githubData.repository - - const { dependencies = [], devDependencies = [] } = pkgjson - const allDependencies = Object.entries(dependencies).concat( - Object.entries(devDependencies) - ) - const starterShowcaseFields = { - slug: `/${repoStub}/`, - stub: repoStub, - name, - description: pkgjson.description, - stars, - lastUpdated, - owner, - githubFullName, - allDependencies, - gatsbyDependencies: allDependencies - .filter( - ([key, _]) => ![`gatsby-cli`, `gatsby-link`].includes(key) // remove stuff everyone has - ) - .filter(([key, _]) => key.includes(`gatsby`)), - miscDependencies: allDependencies.filter( - ([key, _]) => !key.includes(`gatsby`) - ), - } - createNodeField({ - node, - name: `starterShowcase`, - value: starterShowcaseFields, + createNodeField({ + node, + name: `starterShowcase`, + value: starterShowcaseFields, + }) }) - }) - .catch(err => { - console.log( - `\nError getting repo data. Your GitHub token may be invalid` - ) - return createNodeField({ - node, - name: `starterShowcase`, - value: { - ...defaultFields, - }, + .catch(err => { + reporter.panicOnBuild( + `Error getting repo data for starter "${repoStub}":\n + ${err.message}` + ) }) - }) + } } - // Community/Creators Pages + // Creator pages else if (node.internal.type === `CreatorsYaml`) { const validTypes = { individual: `people`, @@ -553,12 +609,27 @@ exports.onCreateNode = ({ node, actions, getNode, getNodes }) => { }” was provided for ${node.name}.` ) } - slug = `/community/${validTypes[node.type]}/${slugify(node.name, { + slug = `/creators/${validTypes[node.type]}/${slugify(node.name, { lower: true, })}` createNodeField({ node, name: `slug`, value: slug }) } - // end Community/Creators Pages + // end Creator pages + return null +} + +exports.onCreatePage = ({ page, actions }) => { + // add lists of featured items to Ecosystem page + if (page.path === `/ecosystem/` || page.path === `/`) { + const { createPage, deletePage } = actions + const oldPage = Object.assign({}, page) + + page.context.featuredStarters = ecosystemFeaturedItems.starters + page.context.featuredPlugins = ecosystemFeaturedItems.plugins + + deletePage(oldPage) + createPage(page) + } } exports.onPostBuild = () => { @@ -567,11 +638,3 @@ exports.onPostBuild = () => { `./public/gatsbygram.mp4` ) } - -// limited logging for debug purposes -let limitlogcount = 0 -function log(max) { - return function(...args) { - if (limitlogcount++ < max) console.log(...args) - } -} diff --git a/www/package.json b/www/package.json index d199b9717f5ab..5b26496fa9c9a 100644 --- a/www/package.json +++ b/www/package.json @@ -4,16 +4,19 @@ "version": "2.0.0-beta", "author": "Kyle Mathews ", "dependencies": { + "@reach/skip-nav": "^0.1.1", "bluebird": "^3.5.1", "dotenv": "^6.0.0", "email-validator": "^1.1.1", + "emotion": "^9.2.12", + "emotion-server": "^9.2.12", "fuse.js": "^3.2.0", - "gatsby": "^2.0.11", + "gatsby": "^2.0.57", "gatsby-image": "^2.0.5", "gatsby-plugin-canonical-urls": "^2.0.5", "gatsby-plugin-catch-links": "^2.0.2", + "gatsby-plugin-emotion": "^2.0.5", "gatsby-plugin-feed": "^2.0.5", - "gatsby-plugin-glamor": "^2.0.5", "gatsby-plugin-google-analytics": "^2.0.5", "gatsby-plugin-google-tagmanager": "^2.0.5", "gatsby-plugin-guess-js": "^1.0.0", @@ -23,30 +26,29 @@ "gatsby-plugin-netlify": "^2.0.0", "gatsby-plugin-netlify-cache": "^0.1.0", "gatsby-plugin-nprogress": "^2.0.5", - "gatsby-plugin-offline": "^2.0.5", + "gatsby-plugin-offline": "^2.0.16", "gatsby-plugin-react-helmet": "^3.0.0", "gatsby-plugin-sharp": "^2.0.5", "gatsby-plugin-sitemap": "^2.0.1", "gatsby-plugin-subfont": "^1.0.1", "gatsby-plugin-twitter": "^2.0.5", "gatsby-plugin-typography": "^2.2.0", - "gatsby-remark-autolink-headers": "^2.0.5", + "gatsby-remark-autolink-headers": "^2.0.10", "gatsby-remark-code-titles": "^1.0.2", "gatsby-remark-copy-linked-files": "^2.0.5", "gatsby-remark-graphviz": "^1.0.0", "gatsby-remark-images": "^2.0.1", - "gatsby-remark-prismjs": "3.0.0-beta.6", + "gatsby-remark-prismjs": "^3.0.2", "gatsby-remark-responsive-iframe": "^2.0.5", "gatsby-remark-smartypants": "^2.0.5", "gatsby-source-filesystem": "^2.0.1", "gatsby-source-npm-package-search": "^2.0.0", "gatsby-transformer-csv": "^2.0.0", "gatsby-transformer-documentationjs": "^2.0.0", - "gatsby-transformer-remark": "^2.1.1", - "gatsby-transformer-screenshot": "^2.0.0", + "gatsby-transformer-remark": "^2.1.8", + "gatsby-transformer-screenshot": "^2.0.4", "gatsby-transformer-sharp": "^2.1.1", "gatsby-transformer-yaml": "^2.1.1", - "glamor": "^2.20.40", "graphql-request": "1.6.0", "gray-percentage": "^2.0.0", "hex2rgba": "^0.0.1", @@ -60,7 +62,9 @@ "query-string": "^6.1.0", "react": "^16.4.1", "react-dom": "^16.4.1", + "react-emotion": "^9.2.12", "react-helmet": "^5.2.0", + "react-highcharts": "^16.0.2", "react-hubspot-form": "^1.3.5", "react-icons": "^2.2.7", "react-instantsearch": "^4.5.1", @@ -70,13 +74,12 @@ "remove-markdown": "^0.3.0", "slash": "^1.0.0", "slugify": "^1.3.0", - "typeface-space-mono": "^0.0.54", "typeface-spectral": "^0.0.54", "typography": "^1.0.0-alpha.4", "typography-plugin-code": "^1.0.0-alpha.0", - "zipkin": "^0.14.0", - "zipkin-javascript-opentracing": "^1.6.0", - "zipkin-transport-http": "^0.14.0" + "zipkin": "^0.14.2", + "zipkin-javascript-opentracing": "^2.0.0", + "zipkin-transport-http": "^0.14.2" }, "keywords": [ "gatsby" @@ -88,22 +91,20 @@ "build": "gatsby build", "deploy": "gatsby build --prefix-paths && gh-pages -d public", "develop": "gatsby develop", + "start": "npm run develop", "serve": "gatsby serve", "test": "echo \"Error: no test specified\" && exit 1", - "scrapeStarters": "cd src/data/StarterShowcase && node scraper.js" + "scrapeStarters": "cd src/data/StarterShowcase && node scraper.js", + "stylelint": "stylelint './src/**/*.js'" }, "devDependencies": { "front-matter": "^2.3.0", "get-package-json-from-github": "^1.2.1", "github-api": "^3.0.0", - "husky": "^1.0.0-rc.14", - "prettier": "^1.14.2", - "pretty-quick": "^1.6.0", + "stylelint": "^9.6.0", + "stylelint-config-standard": "^18.2.0", + "stylelint-config-styled-components": "^0.1.1", + "stylelint-processor-styled-components": "^1.5.0", "webshot": "^0.18.0" - }, - "husky": { - "hooks": { - "pre-commit": "pretty-quick --staged" - } } } diff --git a/www/src/assets/blog.svg b/www/src/assets/blog.svg index e4dc0fea5d62c..fcb68f85d4f09 100644 --- a/www/src/assets/blog.svg +++ b/www/src/assets/blog.svg @@ -1,4 +1,4 @@ - + diff --git a/www/src/assets/ecosystem-icons.js b/www/src/assets/ecosystem-icons.js new file mode 100644 index 0000000000000..1f827731edfe7 --- /dev/null +++ b/www/src/assets/ecosystem-icons.js @@ -0,0 +1,4 @@ +import PluginsIcon from "!raw-loader!./plugins-ecosystem.svg" +import StartersIcon from "!raw-loader!./starters.svg" + +export { PluginsIcon, StartersIcon } diff --git a/www/src/assets/ecosystem.svg b/www/src/assets/ecosystem.svg new file mode 100644 index 0000000000000..b62de54f963ff --- /dev/null +++ b/www/src/assets/ecosystem.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/www/src/assets/logos.js b/www/src/assets/logos.js index 98c4103394fb6..ed91c3865a1c2 100644 --- a/www/src/assets/logos.js +++ b/www/src/assets/logos.js @@ -5,6 +5,7 @@ import ReactJSIcon from "./react.svg" import SegmentIcon from "./segment.svg" import FormidableIcon from "./formidable.svg" import FabricIcon from "./fabric.svg" +import NetlifyIcon from "./netlify.svg" export { JSIcon, @@ -14,4 +15,5 @@ export { SegmentIcon, FormidableIcon, FabricIcon, + NetlifyIcon, } diff --git a/www/src/assets/mobile-nav-icons.js b/www/src/assets/mobile-nav-icons.js index 8e1db81c28005..ea71a7044bdfb 100644 --- a/www/src/assets/mobile-nav-icons.js +++ b/www/src/assets/mobile-nav-icons.js @@ -3,5 +3,13 @@ import DocsIcon from "!raw-loader!./docs.svg" import TutorialIcon from "!raw-loader!./tutorial.svg" import PluginsIcon from "!raw-loader!./plugins.svg" import ShowcaseIcon from "!raw-loader!./showcase.svg" +import EcosystemIcon from "!raw-loader!./ecosystem.svg" -export { BlogIcon, DocsIcon, TutorialIcon, PluginsIcon, ShowcaseIcon } +export { + BlogIcon, + DocsIcon, + TutorialIcon, + PluginsIcon, + ShowcaseIcon, + EcosystemIcon, +} diff --git a/www/src/assets/netlify.svg b/www/src/assets/netlify.svg new file mode 100644 index 0000000000000..2c325d21a5e43 --- /dev/null +++ b/www/src/assets/netlify.svg @@ -0,0 +1,3 @@ + + + diff --git a/www/src/assets/newsletter-form-ornament.svg b/www/src/assets/newsletter-form-ornament.svg new file mode 100644 index 0000000000000..321fd2a746e68 --- /dev/null +++ b/www/src/assets/newsletter-form-ornament.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/www/src/assets/ornaments.js b/www/src/assets/ornaments.js new file mode 100644 index 0000000000000..3ef79d68b3c00 --- /dev/null +++ b/www/src/assets/ornaments.js @@ -0,0 +1,5 @@ +import NewsletterFormOrnament from "!raw-loader!./newsletter-form-ornament.svg" +import StarOrnament from "!raw-loader!./star-ornament.svg" +import QuotationMarkOrnament from "!raw-loader!./quotation-mark-ornament.svg" + +export { NewsletterFormOrnament, StarOrnament, QuotationMarkOrnament } diff --git a/www/src/assets/plugins-ecosystem.svg b/www/src/assets/plugins-ecosystem.svg new file mode 100644 index 0000000000000..0e4675851c8ee --- /dev/null +++ b/www/src/assets/plugins-ecosystem.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/src/assets/plugins.svg b/www/src/assets/plugins.svg index bbb87e300fe87..81b275340f8df 100644 --- a/www/src/assets/plugins.svg +++ b/www/src/assets/plugins.svg @@ -1,5 +1,4 @@ - + + + diff --git a/www/src/assets/showcase-feather.svg b/www/src/assets/showcase-feather.svg index 6d47e19ada9b6..116d59e4c6bdb 100644 --- a/www/src/assets/showcase-feather.svg +++ b/www/src/assets/showcase-feather.svg @@ -1,8 +1,4 @@ - - - - icons/featured - Created with Sketch. + diff --git a/www/src/assets/showcase.svg b/www/src/assets/showcase.svg index d351fb29092e8..f33c297d73d67 100644 --- a/www/src/assets/showcase.svg +++ b/www/src/assets/showcase.svg @@ -1,6 +1,5 @@ - - - - + + + + diff --git a/www/src/assets/star-ornament.svg b/www/src/assets/star-ornament.svg new file mode 100644 index 0000000000000..a5cfb1deb43eb --- /dev/null +++ b/www/src/assets/star-ornament.svg @@ -0,0 +1,3 @@ + + + diff --git a/www/src/assets/starters.svg b/www/src/assets/starters.svg new file mode 100644 index 0000000000000..0ecb6a27d3535 --- /dev/null +++ b/www/src/assets/starters.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/www/src/assets/tutorial.svg b/www/src/assets/tutorial.svg index 6a14ca6c75822..a2c475dc84c38 100644 --- a/www/src/assets/tutorial.svg +++ b/www/src/assets/tutorial.svg @@ -1,5 +1,4 @@ - + + + + + + diff --git a/www/src/assets/webpack.svg b/www/src/assets/webpack.svg index 53edf34ee28f5..438337702f285 100644 --- a/www/src/assets/webpack.svg +++ b/www/src/assets/webpack.svg @@ -1,5 +1,4 @@ - + { - const backgroundColor = background ? background : colors.gatsby - const horizontalPadding = rhythm(1 / 2) - - return ( -
-
-
- {children} -
-
-
- ) +const horizontalPadding = rhythm(1 / 2) +const backgroundColor = props => + props.background ? props.background : colors.gatsby + +const BannerContainer = styled(`div`)` + background-color: ${props => backgroundColor(props)}; + height: ${presets.bannerHeight}; + position: fixed; + width: 100%; + z-index: 3; + padding-left: env(safe-area-inset-left); + padding-right: env(safe-area-inset-right); +` + +const InnerContainer = styled(`div`)` + align-items: center; + display: flex; + height: ${presets.bannerHeight}; + overflow-x: auto; + mask-image: ${`linear-gradient(to right, transparent, ${props => + backgroundColor(props)} ${horizontalPadding}, ${props => + backgroundColor(props)} 96%, transparent)`}; +` + +const Content = styled(`div`)` + color: ${colors.ui.bright}; + font-family: ${options.headerFontFamily.join(`,`)}; + font-size: ${scale(-1 / 5).fontSize}; + padding-left: ${horizontalPadding}; + padding-right: ${horizontalPadding}; + -webkit-font-smoothing: antialiased; + white-space: nowrap; +` + +const Banner = ({ children, background }) => ( + + {children && {children}} + +) + +Banner.propTypes = { + children: PropTypes.node.isRequired, + background: PropTypes.any, } export default Banner diff --git a/www/src/components/blog-post-preview-item.js b/www/src/components/blog-post-preview-item.js index 10d67bc085350..5e60459137557 100644 --- a/www/src/components/blog-post-preview-item.js +++ b/www/src/components/blog-post-preview-item.js @@ -5,123 +5,118 @@ import Img from "gatsby-image" import typography, { rhythm, scale } from "../utils/typography" import presets, { colors } from "../utils/presets" -class BlogPostPreviewItem extends React.Component { - render() { - const post = this.props.post - const avatar = post.frontmatter.author.avatar.childImageSharp.fixed +const BlogPostPreviewItem = ({ post, className }) => { + const avatar = post.frontmatter.author.avatar.childImageSharp.fixed - return ( -
- -

{post.frontmatter.title}

-

- {post.frontmatter.excerpt ? post.frontmatter.excerpt : post.excerpt} -

- -
+ +

{post.frontmatter.title}

+

+ {post.frontmatter.excerpt ? post.frontmatter.excerpt : post.excerpt} +

+ +
+ - - - -
-
- - {post.frontmatter.author.id} - - {` `} - on - {` `} - {post.frontmatter.date} -
-
-
- + +
- Read more - -
- ) - } +
+ + {post.frontmatter.author.id} + + {` `} + on + {` `} + {post.frontmatter.date} +
+
+ + + Read more + + + ) } -export default BlogPostPreviewItem - export const blogPostPreviewFragment = graphql` fragment BlogPostPreview_item on MarkdownRemark { excerpt @@ -157,3 +152,5 @@ export const blogPostPreviewFragment = graphql` } } ` + +export default BlogPostPreviewItem diff --git a/www/src/components/button.js b/www/src/components/button.js index fb8a3ea7dd2ca..7cdc5983fafd9 100644 --- a/www/src/components/button.js +++ b/www/src/components/button.js @@ -16,7 +16,9 @@ const Button = ({ tag, large, small, + tiny, secondary, + ondark, ...rest }) => { const Tag = components[tag || `link`] @@ -24,20 +26,23 @@ const Button = ({ const props = { to: !tag ? to : undefined, href: tag === `href` ? to : undefined, - css: { - "&&": { - ...buttonStyles.default, - ...overrideCSS, - ...(secondary && { ...buttonStyles.secondary }), - ...(large && { ...buttonStyles.large }), - ...(small && { ...buttonStyles.small }), - }, - }, ...rest, } + const css = { + "&&": { + ...buttonStyles.default, + ...overrideCSS, + ...(secondary && buttonStyles.secondary), + ...(large && buttonStyles.large), + ...(small && buttonStyles.small), + ...(tiny && buttonStyles.tiny), + ...(ondark && buttonStyles.ondark), + }, + } + return ( - + {children} {icon && <>{icon}} diff --git a/www/src/components/cards.js b/www/src/components/cards.js index cc906fb7aa4de..a76cb36a3f0c5 100644 --- a/www/src/components/cards.js +++ b/www/src/components/cards.js @@ -11,6 +11,7 @@ const Cards = ({ children }) => ( borderRadius: presets.radiusLg, boxShadow: `0 5px 20px rgba(25, 17, 34, 0.1)`, transform: `translateZ(0)`, + width: `100%`, }} > {children} diff --git a/www/src/components/chart.js b/www/src/components/chart.js new file mode 100644 index 0000000000000..34a374e659daa --- /dev/null +++ b/www/src/components/chart.js @@ -0,0 +1,109 @@ +import React from "react" +import ReactHighcharts from "react-highcharts" + +const dateToUTC = date => { + const d = String(date) + const year = Number(d.slice(0, 4)) + const monthNum = Number(d.slice(5)) + + return Date.UTC(year, monthNum - 1, 0) +} + +const highchartsOptions = { + colors: [`#fd9800`, `#008FD5`, `#77AB43`, `#663399`, `#C4C4C4`], + chart: { + backgroundColor: null, + style: { + fontFamily: `Overpass, sans-serif`, + }, + }, + title: { + style: { + color: `#241236`, + }, + align: `left`, + }, + legend: { + align: `left`, + verticalAlign: `bottom`, + }, + tooltip: { + backgroundColor: `#FFFFFF`, + borderRadius: 2, + }, + credits: { + enabled: false, + }, + xAxis: { + gridLineWidth: 1, + gridLineColor: `#F3F3F3`, + lineColor: `#F3F3F3`, + minorGridLineColor: `#F3F3F3`, + tickColor: `#F3F3F3`, + tickWidth: 1, + }, + yAxis: { + gridLineColor: `#F3F3F3`, + lineColor: `#F3F3F3`, + minorGridLineColor: `#F3F3F3`, + tickColor: `#F3F3F3`, + tickWidth: 1, + }, + plotOptions: { + areaspline: { + fillOpacity: 0.65, + }, + }, +} + +const DateChart = props => { + const seriesData = JSON.parse(props.seriesData || props[`series-data`]) + const yAxisLabel = props.yAxisLabel || props[`y-axis-label`] + const config = { + chart: { + type: `spline`, + zoomType: `x`, + }, + tooltip: { + pointFormat: ` {series.name}: {point.y:.2f}%
`, + }, + title: { + text: props.title, + }, + xAxis: { + type: `datetime`, + title: { + text: `Date`, + }, + }, + yAxis: { + title: { + text: yAxisLabel, + }, + labels: { + format: `{value}%`, + }, + }, + series: seriesData.map(series => { + return { + name: series.name, + data: series.data.map(edge => [ + dateToUTC(edge.date), + 100 * parseFloat(edge.value), + ]), + } + }), + } + return ( +
+ +
+ ) +} + +export default DateChart diff --git a/www/src/components/container.js b/www/src/components/container.js index 9e9a22dd02ced..f4a4b3e2c3011 100644 --- a/www/src/components/container.js +++ b/www/src/components/container.js @@ -5,7 +5,7 @@ import { rhythm, options } from "../utils/typography" const Container = ({ children, - className, + className = ``, hasSideBar = true, overrideCSS = {}, }) => ( diff --git a/www/src/components/debounce-input.js b/www/src/components/debounce-input.js new file mode 100644 index 0000000000000..2e6b0daddbb17 --- /dev/null +++ b/www/src/components/debounce-input.js @@ -0,0 +1,59 @@ +import React, { Component } from "react" +import debounce from "lodash/debounce" +import PropTypes from "prop-types" + +class DebounceInput extends Component { + static propTypes = { + onChange: PropTypes.func.isRequired, + value: PropTypes.string, + delay: PropTypes.number, + } + + static defaultProps = { + value: ``, + delay: 500, + } + + state = { + inputValue: ``, + } + + componentDidMount() { + this.setInputValue(this.props.value) + } + + componentDidUpdate(prevProps) { + if (prevProps.value != this.props.value) + this.setInputValue(this.props.value) + } + + setInputValue = (value = ``) => { + this.setState({ inputValue: value }) + } + + onChangeInputText = e => { + this.setInputValue(e.target.value) + e.persist() + this.debounceOnChange() + } + + onChangeValue = () => { + this.props.onChange(this.state.inputValue) + } + + debounceOnChange = debounce(this.onChangeValue, this.props.delay) + + render() { + const { inputValue } = this.state + return ( + + ) + } +} + +export default DebounceInput diff --git a/www/src/components/diagram.js b/www/src/components/diagram.js index fe4702531e563..e4b0f0d581baf 100644 --- a/www/src/components/diagram.js +++ b/www/src/components/diagram.js @@ -1,5 +1,5 @@ import React from "react" -import { css } from "glamor" +import { keyframes } from "react-emotion" import { rhythm, scale, options } from "../utils/typography" import presets, { colors } from "../utils/presets" @@ -11,7 +11,7 @@ import TechWithIcon from "../components/tech-with-icon" const stripeColor = `255, 255, 255, 0.9` const stripeSize = 15 -const stripeAnimation = css.keyframes({ +const stripeAnimation = keyframes({ "0%": { backgroundPosition: `${rhythm(stripeSize)} ${rhythm(stripeSize * 2)}`, }, @@ -23,7 +23,7 @@ const stripeBg = { backgroundImage: `linear-gradient(45deg, rgba(${stripeColor}) 25%, transparent 25%, transparent 50%, rgba(${stripeColor}) 50%, rgba(${stripeColor}) 75%, transparent 75%, transparent)`, animation: `${stripeAnimation} 14s linear infinite`, } -const lineAnimation = css.keyframes({ +const lineAnimation = keyframes({ to: { strokeDashoffset: 10, }, diff --git a/www/src/components/docsearch-content.js b/www/src/components/docsearch-content.js index bdee3d9845f22..95a7033f146b2 100644 --- a/www/src/components/docsearch-content.js +++ b/www/src/components/docsearch-content.js @@ -1,5 +1,7 @@ import React from "react" export default ({ children }) => ( -
{children}
+
+ {children} +
) diff --git a/www/src/components/ecosystem/ecosystem-board.js b/www/src/components/ecosystem/ecosystem-board.js new file mode 100644 index 0000000000000..0e0b6c0b8d6c7 --- /dev/null +++ b/www/src/components/ecosystem/ecosystem-board.js @@ -0,0 +1,88 @@ +import React, { Component } from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" + +import EcosystemSection from "./ecosystem-section" + +import presets from "../../utils/presets" +import { + setupScrollersObserver, + unobserveScrollers, +} from "../../utils/scrollers-observer" + +const EcosystemBoardRoot = styled(`div`)` + display: flex; + flex-direction: column; + + ${presets.Tablet} { + flex-direction: row; + flex-wrap: wrap; + height: calc( + 100vh - (${presets.bannerHeight} + ${presets.headerHeight} + 1px) + ); + padding: 2rem 1rem 1rem; + } +` + +class EcosystemBoard extends Component { + componentDidMount() { + setupScrollersObserver() + } + + componentWillUnmount() { + unobserveScrollers() + } + + render() { + const { + icons: { plugins: PluginsIcon, starters: StartersIcon }, + starters, + plugins, + } = this.props + + return ( + + + + + + ) + } +} + +EcosystemBoard.propTypes = { + icons: PropTypes.object, + starters: PropTypes.array, + plugins: PropTypes.array, +} + +export default EcosystemBoard diff --git a/www/src/components/ecosystem/ecosystem-featured-item.js b/www/src/components/ecosystem/ecosystem-featured-item.js new file mode 100644 index 0000000000000..2a55fd7c49e6d --- /dev/null +++ b/www/src/components/ecosystem/ecosystem-featured-item.js @@ -0,0 +1,158 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" +import { Link } from "gatsby" +import Img from "gatsby-image" + +import { HorizontalScrollerItem } from "../shared/horizontal-scroller" + +import StarIcon from "react-icons/lib/md/star" +import ArrowDownwardIcon from "react-icons/lib/md/arrow-downward" + +import { rhythm, options } from "../../utils/typography" +import presets, { colors } from "../../utils/presets" + +const MAX_DESCRIPTION_LENGTH = 100 + +const EcosystemFeaturedItemRoot = styled(HorizontalScrollerItem)` + margin-right: ${rhythm(options.blockMarginBottom)}; + + ${presets.Tablet} { + border-bottom: 1px solid ${colors.gray.superLight}; + box-shadow: none; + margin: 0; + padding: 0; + width: auto; + } +` + +export const BlockLink = styled(Link)` + background: #fff; + border-radius: ${presets.radiusLg}px; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + height: 100%; + padding: ${rhythm(3 / 4)}; + + ${presets.Tablet} { + border-radius: 0; + box-shadow: none; + transition: all ${presets.animation.speedDefault} + ${presets.animation.curveDefault}; + } + + ${presets.Desktop} { + :hover { + background: ${colors.ui.whisper}; + } + } +` + +const Header = styled(`header`)` + align-items: flex-start; + display: flex; + justify-content: space-between; + + h3 { + color: ${colors.gatsbyDark}; + font-size: 1rem; + margin: 0; + } + + span { + align-items: center; + color: ${colors.lilac}; + display: flex; + font-size: 0.8125rem; + font-family: ${options.systemFontFamily.join(`,`)}; + padding-left: 5px; + + svg { + fill: ${colors.gray.light}; + height: 1.2em; + margin-left: 2px; + width: 1.2em; + } + } +` + +const Digest = styled(`div`)` + display: flex; + flex-grow: 1; + font-family: ${options.systemFontFamily.join(`,`)}; + justify-content: space-between; + padding: ${rhythm(0.5)} 0 0; +` + +const Thumbnail = styled(`div`)` + height: 64px; + padding-right: ${rhythm(2 / 3)}; + margin-top: ${rhythm(1 / 12)}; + + img { + border: 1px solid ${colors.gray.superLight}; + } +` + +const Description = styled(`p`)` + color: ${colors.gray.lightCopy}; + flex-grow: 1; + font-size: 0.85rem; + margin: 0; +` + +const EcosystemFeaturedItem = ({ item, className }) => { + const { + slug, + name, + description, + stars, + humanDownloadsLast30Days, + thumbnail, + } = item + + const cutTooLongDescription = str => { + if (str.length > MAX_DESCRIPTION_LENGTH) { + return `${str.substring(0, MAX_DESCRIPTION_LENGTH)}...` + } + + return str + } + + return ( + + +
+

{name}

+ {humanDownloadsLast30Days && ( + + {humanDownloadsLast30Days} + + )} + {stars && ( + + {stars} + + )} +
+ + + {thumbnail && ( + + + + )} + {cutTooLongDescription(description)} + +
+
+ ) +} + +EcosystemFeaturedItem.propTypes = { + item: PropTypes.object.isRequired, + className: PropTypes.string, +} + +export default EcosystemFeaturedItem diff --git a/www/src/components/ecosystem/ecosystem-featured-items.js b/www/src/components/ecosystem/ecosystem-featured-items.js new file mode 100644 index 0000000000000..46502614d339d --- /dev/null +++ b/www/src/components/ecosystem/ecosystem-featured-items.js @@ -0,0 +1,67 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" + +import { + HorizontalScroller, + HorizontalScrollerContent, +} from "../shared/horizontal-scroller" + +import presets, { colors } from "../../utils/presets" +import { rhythm, options } from "../../utils/typography" +import { scrollbarStyles } from "../../utils/styles" +import { SCROLLER_CLASSNAME } from "../../utils/scrollers-observer" + +const EcosystemFeaturedItemsRoot = styled(HorizontalScroller)` + margin: ${rhythm(0.1)} -${rhythm(options.blockMarginBottom)}; + + ${presets.Tablet} { + border-top: 1px solid ${colors.gray.superLight}; + margin-top: ${rhythm(0.4)}; + margin-bottom: 0; + overflow-y: scroll; + overflow-x: hidden; + ${scrollbarStyles}; + } +` + +export const ListBase = styled(`ul`)` + display: inline-flex; + list-style: none; + margin: 0; + padding: 0 calc(${rhythm(options.blockMarginBottom)} - 5px) 4px; +` + +const List = styled(HorizontalScrollerContent)` + padding-left: ${rhythm(options.blockMarginBottom)}; + padding-right: ${rhythm(options.blockMarginBottom)}; + + ${presets.Tablet} { + flex-direction: column; + padding: 0; + width: 100%; + } +` + +const EcosystemFeaturedItems = ({ + items, + itemComponent: Item, + className = ``, +}) => ( + + + {items.map(item => { + const { slug } = item + return + })} + + +) + +EcosystemFeaturedItems.propTypes = { + items: PropTypes.array.isRequired, + itemComponent: PropTypes.func.isRequired, + className: PropTypes.string, +} + +export default EcosystemFeaturedItems diff --git a/www/src/components/ecosystem/ecosystem-section.js b/www/src/components/ecosystem/ecosystem-section.js new file mode 100644 index 0000000000000..147212014581e --- /dev/null +++ b/www/src/components/ecosystem/ecosystem-section.js @@ -0,0 +1,150 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" + +import Button from "../button" +import EcosystemFeaturedItems from "./ecosystem-featured-items" +import EcosystemFeaturedItem from "./ecosystem-featured-item" + +import { rhythm, options } from "../../utils/typography" +import presets, { colors } from "../../utils/presets" + +const EcosystemSectionRoot = styled(`section`)` + background: #fff; + padding: 0 ${rhythm(options.blockMarginBottom)}; + margin-bottom: ${rhythm(1 / 2)}; + + ${presets.Tablet} { + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.2); + border-radius: ${presets.radiusLg}px; + display: flex; + flex-basis: calc(50% - 20px); + flex-direction: column; + flex-grow: 0; + margin: 0 10px 20px; + max-height: 60vh; + padding: ${rhythm(options.blockMarginBottom)}; + padding-bottom: 0; + + :last-child { + flex-grow: 1; + } + } + + ${presets.Desktop} { + flex-basis: calc(33.33% - 20px); + max-height: 100%; + + :last-child { + align-self: flex-start; + padding-bottom: ${rhythm(options.blockMarginBottom)}; + } + } + + a { + text-decoration: none; + } +` + +export const Header = styled(`header`)` + align-items: flex-start; +` + +const Title = styled(`h1`)` + align-items: center; + color: ${colors.gatsby}; + display: flex; + font-size: 1.25rem; + line-height: 1; + margin: 0; + margin-bottom: ${rhythm(0.25)}; + min-height: 32px; + + span { + margin: 0 0.3rem 0 -0.1rem; + } +` + +const Icon = styled(`span`)` + display: block; + height: 32px; + width: 32px; +` + +const SubTitle = styled(`h2`)` + color: ${colors.lilac}; + font-size: 0.875rem; + font-weight: 300; + letter-spacing: 0.05em; + margin: 0; + margin-top: ${rhythm(1)}; + text-transform: uppercase; +` + +const Description = styled(`p`)` + color: ${colors.gray.lightCopy}; + font-family: ${options.systemFontFamily.join(`,`)}; + font-size: 0.8125rem; +` + +const Actions = styled(`div`)` + display: flex; + flex-wrap: wrap; + margin-top: -${rhythm(1 / 4)}; + + > a { + margin: 4px 8px 4px 0; + } +` + +const EcosysteSection = ({ + title, + description, + subTitle, + icon, + links, + featuredItems, + className, +}) => ( + +
+ + {icon && <Icon dangerouslySetInnerHTML={{ __html: icon }} />} + <span>{title}</span> + + {description} + + {links.map((item, idx) => { + const { to, label, secondary } = item + + return ( + + ) + })} + + {subTitle && {subTitle}} +
+ + {featuredItems && + featuredItems.length > 0 && ( + + )} +
+) + +EcosysteSection.propTypes = { + title: PropTypes.string.isRequired, + description: PropTypes.string.isRequired, + className: PropTypes.string, + subTitle: PropTypes.string, + icon: PropTypes.string, + links: PropTypes.array, + featuredItems: PropTypes.array, +} + +export default EcosysteSection diff --git a/www/src/components/email-capture-form.js b/www/src/components/email-capture-form.js index 0bd2457e3b3a9..39492fdd6c249 100644 --- a/www/src/components/email-capture-form.js +++ b/www/src/components/email-capture-form.js @@ -1,33 +1,285 @@ import React from "react" +import styled from "react-emotion" + +import SendIcon from "react-icons/lib/md/send" + import { rhythm, options } from "../utils/typography" import presets, { colors } from "../utils/presets" -import { formInput } from "../utils/form-styles" -import HubspotForm from "./hubspot-form" -import { css, merge } from "glamor" import hex2rgba from "hex2rgba" +import { formInput } from "../utils/form-styles" +import { buttonStyles } from "../utils/styles" + +const StyledForm = styled(`form`)` + margin: 0; + + ${presets.Desktop} { + display: ${props => (props.isHomepage ? `flex` : `block`)}; + } +` + +const Label = styled(`label`)` + :after { + content: ${props => (props.isRequired ? `'*'` : ``)}; + color: ${colors.warning}; + } +` + +const SingleLineInput = styled(`input`)` + ${formInput}; + width: 100%; + + :focus { + border-color: ${colors.gatsby}; + outline: 0; + box-shadow: 0 0 0 0.2rem ${hex2rgba(colors.lilac, 0.25)}; + } +` + +const SingleLineInputOnHomepage = styled(SingleLineInput)` + font-family: ${options.systemFontFamily.join(`,`)}; + font-size: 1rem; + padding: 0.6rem; +` + +const ErrorMessage = styled(`div`)` + color: ${colors.warning}; + font-family: ${options.systemFontFamily.join(`,`)}; + font-size: 0.875rem; + margin: calc(1.05rem / 2) 0; +` + +const SuccesMessage = styled(`div`)` + font-family: ${options.systemFontFamily.join(`,`)}; +` + +const Submit = styled(`input`)` + ${buttonStyles.default}; + margin-top: 20px; +` + +const SubmitOnHomepage = styled(`button`)` + ${buttonStyles.default}; + font-size: 1.125rem; + width: 100%; + margin-top: 10px; + + span { + align-items: center; + display: flex; + width: 100%; + justify-content: space-between; + } + + ${presets.Desktop} { + width: auto; + margin-top: 0; + margin-left: 0.5rem; + } +` + +class Form extends React.Component { + constructor(props) { + super(props) + + this.onSubmit = this.onSubmit.bind(this) + + // let's use uncontrolled components https://reactjs.org/docs/uncontrolled-components.html + this.email = null + } + + state = { + errorMessage: ``, + fieldErrors: {}, + } + + onSubmit(e) { + e.preventDefault() + + // validation here or use Formik or something like that + // we can also rely on server side validation like I do right now + + const { portalId, formId, sfdcCampaignId } = this.props + const url = `https://api.hsforms.com/submissions/v3/integration/submit/${portalId}/${formId}` + const data = { + fields: [ + { + name: `email`, + value: this.email.value, + }, + ], + context: { + pageUri: window.location.href, + pageName: document.title, + }, + } + + if (sfdcCampaignId) { + data.context.sfdcCampaignId = sfdcCampaignId + } + + const xhr = new XMLHttpRequest() + xhr.open(`POST`, url, false) + xhr.setRequestHeader(`Content-Type`, `application/json`) + + xhr.onreadystatechange = () => { + if (xhr.readyState == 4) { + const response = JSON.parse(xhr.responseText) + if (xhr.status == 200) { + // https://developers.hubspot.com/docs/methods/forms/submit_form_ajax + // docs mention response should "thankYouMessage" field, + // but I get inlineMessage in my testing + this.props.onSuccess( + response.thankYouMessage || response.inlineMessage + ) + } else { + let errorMessage, + fieldErrors = {} + if (response.errors) { + // {"message":"Error in 'fields.email'. Invalid email address","errorType":"INVALID_EMAIL"} + // {"message":"Error in 'fields.email'. Required field 'email' is missing","errorType":"REQUIRED_FIELD"} + + const errorRe = /^Error in 'fields.([^']+)'. (.+)$/ + response.errors.map(error => { + const [, fieldName, message] = errorRe.exec(error.message) + fieldErrors[fieldName] = message + }) + + // hubspot use "The request is not valid" message, so probably better use custom one + errorMessage = `Errors in the form` + } else { + errorMessage = response.message + } + + this.setState({ fieldErrors, errorMessage }) + } + } + } + + xhr.send(JSON.stringify(data)) + } + + render() { + const { isHomepage } = this.props + + const SingleLineInputComponent = isHomepage + ? SingleLineInputOnHomepage + : SingleLineInput + + return ( + + {!isHomepage && ( + + )} + { + this.email = input + }} + aria-label={isHomepage ? `Email` : ``} + placeholder={isHomepage ? `your.email@example.com` : ``} + /> + {this.state.fieldErrors.email && ( + {this.state.fieldErrors.email} + )} + {this.state.errorMessage && ( + {this.state.errorMessage} + )} + + {isHomepage ? ( + + + Subscribe + + + + ) : ( + + )} + + ) + } +} class EmailCaptureForm extends React.Component { + constructor(props) { + super(props) + this.onSuccess = this.onSuccess.bind(this) + } + + state = { + successMessage: ``, + } + + onSuccess(successMessage) { + this.setState({ successMessage }) + } + render() { - const { signupMessage, confirmMessage, overrideCSS } = this.props + const { signupMessage, overrideCSS, isHomepage, className } = this.props + + const FormComponent = props => ( +
+ ) return ( -
-
-

{signupMessage}

- -
-
+ + {isHomepage ? ( +
+ {this.state.successMessage ? ( + + ) : ( + + )} +
+ ) : ( +
+
+

{signupMessage}

+
+ {this.state.successMessage ? ( +
+ ) : ( + + )} +
+
+
+ )} + ) } } @@ -36,6 +288,8 @@ EmailCaptureForm.defaultProps = { signupMessage: `Enjoyed this post? Receive the next one in your inbox!`, confirmMessage: `Thank you! Youʼll receive your first email shortly.`, overrideCSS: {}, + isHomepage: false, + className: ``, } export default EmailCaptureForm diff --git a/www/src/components/evaluation-cell.js b/www/src/components/evaluation-cell.js index 6597c92fc31ea..d972c39d65775 100644 --- a/www/src/components/evaluation-cell.js +++ b/www/src/components/evaluation-cell.js @@ -1,57 +1,51 @@ -import React, { Component } from "react" +import React from "react" import { rhythm } from "../utils/typography" import presets, { colors } from "../utils/presets" -class EvaluationCell extends Component { - render() { - const bgDefault = `#edebf0` - const bgFeatureAvailability = colors.accent +const bgDefault = `#edebf0` +const bgFeatureAvailability = colors.accent - const getBackground = num => { - switch (num) { - case `3`: { - return `none` - } - case `2`: { - return `linear-gradient(90deg, transparent 50%, ${bgDefault} 50%)` - } - case `1`: { - return `linear-gradient(180deg, transparent 50%, ${bgDefault} 50%), linear-gradient(90deg, transparent 50%, ${bgDefault} 50%)` - } - case `0`: { - return `none` - } - case ``: - case `N/A`: - default: { - return `none` - } - } +const getBackground = num => { + switch (num) { + case `2`: { + return `linear-gradient(90deg, transparent 50%, ${bgDefault} 50%)` } - const basicStyling = { - height: rhythm(3 / 4), - width: rhythm(3 / 4), - borderRadius: `50%`, - margin: `0 auto`, - [presets.Mobile]: { - height: rhythm(0.875), - width: rhythm(0.875), - }, + case `1`: { + return `linear-gradient(180deg, transparent 50%, ${bgDefault} 50%), linear-gradient(90deg, transparent 50%, ${bgDefault} 50%)` + } + case `3`: + case `0`: + case ``: + case `N/A`: + default: { + return `none` } - return ( -
- ) } } +const basicStyling = { + height: rhythm(3 / 4), + width: rhythm(3 / 4), + borderRadius: `50%`, + margin: `0 auto`, + [presets.Mobile]: { + height: rhythm(0.875), + width: rhythm(0.875), + }, +} + +const EvaluationCell = ({ num, style }) => ( +
+) + export default EvaluationCell diff --git a/www/src/components/evaluation-table.js b/www/src/components/evaluation-table.js index 98fe42b909349..20ed160b85ab1 100644 --- a/www/src/components/evaluation-table.js +++ b/www/src/components/evaluation-table.js @@ -43,7 +43,7 @@ class EvaluationTable extends Component { , ] } - const headers = [`Feature`, `Gatsby`, `Jekyll`, `Wordpress`, `Squarespace`] + const headers = [`Feature`, `Gatsby`, `Jekyll`, `WordPress`, `Squarespace`] const renderCell = (text, column) => { switch (column) { case 0: { diff --git a/www/src/components/function-list.js b/www/src/components/function-list.js index 42e8c1966a9c9..2e9d990374dfa 100644 --- a/www/src/components/function-list.js +++ b/www/src/components/function-list.js @@ -96,10 +96,10 @@ export default ({ functions }) => (
{`{${ - ret.type.type === "UnionType" + ret.type.type === `UnionType` ? ret.type.elements .map(el => String(el.name)) - .join("|") + .join(`|`) : ret.type.name }}`} diff --git a/www/src/components/homepage/homepage-blog-post.js b/www/src/components/homepage/homepage-blog-post.js new file mode 100644 index 0000000000000..f5a3a8a04011c --- /dev/null +++ b/www/src/components/homepage/homepage-blog-post.js @@ -0,0 +1,294 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" +import { Link, graphql } from "gatsby" +import Img from "gatsby-image" + +import ArrowForwardIcon from "react-icons/lib/md/arrow-forward" + +import { HorizontalScrollerItem } from "../shared/horizontal-scroller" + +import presets, { colors } from "../../utils/presets" +import { rhythm, options } from "../../utils/typography" + +const HomepageBlogPostRoot = styled( + HorizontalScrollerItem.withComponent(`article`) +)` + display: flex; + flex-direction: column; + font-family: ${options.systemFontFamily.join(`,`)}; + padding-bottom: ${rhythm(2.5)}; + position: relative; + + .main-body & a { + border: none; + box-shadow: none; + font-family: inherit; + + :hover { + background: transparent; + } + } + + ${presets.Tablet} { + width: 320px; + } + + ${presets.Desktop} { + flex-shrink: 0; + margin-right: 0; + margin-bottom: ${rhythm(presets.gutters.default)}; + padding-bottom: ${rhythm(3.5)}; + width: ${props => (props.fullWidth ? `100%` : `80%`)}; + + :hover { + background: ${colors.ui.whisper}; + } + } +` + +const Cover = styled(Img)` + border-radius: ${presets.radiusLg}px ${presets.radiusLg}px 0 0; + display: block; + margin-bottom: -${rhythm(0.5)}; +` + +const Header = styled(`h1`)` + color: ${colors.gatsbyDarker}; + font-size: 1.25rem; + font-weight: bold; + line-height: 1.2; + margin: 0; + padding: ${rhythm(4 / 5)}; + padding-bottom: 0; + + ${presets.Desktop} { + font-size: ${props => (props.first ? `1.75rem` : `1.5rem`)}; + padding: ${rhythm(1.5)}; + padding-bottom: 0; + } +` + +const Meta = styled(`div`)` + align-items: center; + color: ${colors.gray.calm}; + display: flex; + flex-wrap: wrap; + font-size: 0.875rem; + margin-top: 1rem; + padding: 0 ${rhythm(4 / 5)}; + + & > * { + flex-shrink: 0; + } + + ${presets.Desktop} { + margin-top: 1.5rem; + padding: 0 ${rhythm(1.5)}; + } +` + +const Author = styled(Link)` + align-items: center; + display: flex; + z-index: 1; + + img { + border-radius: 50%; + height: 28px; + width: 28px; + } + + span { + color: ${colors.gatsby}; + border-bottom: 1px solid ${colors.ui.bright}; + box-shadow: inset 0 -2px 0px 0px ${colors.ui.bright}; + margin-left: 0.5rem; + } + + a& { + font-weight: normal; + } + + ${presets.Desktop} { + :hover { + span { + background: ${colors.ui.bright}; + } + } + } +` + +const Excerpt = styled(`p`)` + color: ${colors.gray.copy}; + font-size: 0.875rem; + line-height: 1.5; + padding: 0 ${rhythm(4 / 5)}; + + ${presets.Desktop} { + margin: 0; + margin-top: 1.5rem; + padding: 0 ${rhythm(1.5)}; + } +` + +const ReadMore = styled(Link)` + align-items: flex-end; + background: transparent; + bottom: 0; + color: ${colors.gatsby}; + display: flex; + flex-grow: 1; + font-size: 0.875rem; + left: 0; + padding: ${rhythm(4 / 5)}; + position: absolute; + right: 0; + top: 0; + z-index: 0; + + &:hover { + background: yellow; + } + + svg { + height: 18px; + width: 18px; + } + + span { + color: ${colors.gatsby}; + border-bottom: 1px solid ${colors.ui.bright}; + box-shadow: inset 0 -2px 0px 0px ${colors.ui.bright}; + font-weight: bold; + margin-right: 0.2rem; + } + + ${presets.Desktop} { + padding: ${rhythm(1.5)}; + + span { + :hover { + background: ${colors.ui.bright}; + } + } + } +` + +const formatDate = (dateString, desktopViewport = false) => { + const date = new Date(dateString) + + var options = { + month: `long`, + day: `numeric`, + year: `numeric`, + } + + return date.toLocaleDateString(`en-EN`, desktopViewport ? options : {}) +} + +const HomepageBlogPost = ({ + post, + first = false, + fullWidth = false, + desktopViewport = false, +}) => { + const { + excerpt: automaticExcerpt, + fields: { slug }, + frontmatter: { + excerpt: handwrittenExcerpt, + author: { + id: authorName, + avatar: { + childImageSharp: { fixed: authorFixed }, + }, + fields: { slug: authorSlug }, + }, + date, + title, + cover, + }, + } = post + + const excerpt = handwrittenExcerpt ? handwrittenExcerpt : automaticExcerpt + + return ( + + {desktopViewport && + cover && } + + +
+ {title} +
+ + + + + {authorName} + {authorName} + +  on  + {formatDate(date, desktopViewport)} + + {first && {excerpt}} + + Read more + + +
+ ) +} + +HomepageBlogPost.propTypes = { + post: PropTypes.object.isRequired, + first: PropTypes.bool, + fullWidth: PropTypes.bool, + desktopViewport: PropTypes.bool, +} + +export const homepageBlogPostFragment = graphql` + fragment HomepageBlogPostData on MarkdownRemark { + excerpt + fields { + slug + } + frontmatter { + excerpt + title + date + author { + id + fields { + slug + } + avatar { + childImageSharp { + fixed( + width: 30 + height: 30 + quality: 80 + traceSVG: { + turdSize: 10 + background: "#f6f2f8" + color: "#e0d6eb" + } + ) { + ...GatsbyImageSharpFixed_tracedSVG + } + } + } + } + cover { + childImageSharp { + fluid(maxWidth: 700, quality: 80) { + ...GatsbyImageSharpFluid_withWebp + } + } + } + } + } +` + +export default HomepageBlogPost diff --git a/www/src/components/homepage/homepage-blog-posts.js b/www/src/components/homepage/homepage-blog-posts.js new file mode 100644 index 0000000000000..1c2b310cc82c1 --- /dev/null +++ b/www/src/components/homepage/homepage-blog-posts.js @@ -0,0 +1,222 @@ +import React, { Component } from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" +import { Link } from "gatsby" + +import ArrowForwardIcon from "react-icons/lib/md/arrow-forward" + +import HomepageBlogPost from "./homepage-blog-post" +import { + HorizontalScroller, + HorizontalScrollerContent, + HorizontalScrollerItem, +} from "../shared/horizontal-scroller" + +import presets, { colors } from "../../utils/presets" +import { rhythm, options } from "../../utils/typography" +import { SCROLLER_CLASSNAME } from "../../utils/scrollers-observer" + +const HomepageBlogPostsRootMobile = styled(HorizontalScroller)` + margin: -6px -${rhythm(presets.gutters.default / 2)}; +` + +const HorizontalScrollerContentAsDiv = HorizontalScrollerContent.withComponent( + `div` +) + +const HomepageBlogPostsRootDesktop = styled(`div`)` + display: flex; +` + +const PostsColumn = styled(`div`)` + align-items: flex-end; + display: flex; + flex-direction: column; + flex-basis: 45%; + margin-right: ${rhythm(presets.gutters.default)}; + position: relative; + + :last-child { + align-items: flex-start; + margin-right: 0; + top: 30px; + } +` + +const ViewAllStyle = styled(HorizontalScrollerItem.withComponent(`div`))` + display: flex; + font-family: ${options.headerFontFamily.join(`,`)}; + overflow: hidden; + width: auto; + + a { + box-shadow: none; + border: 0; + display: flex; + flex-direction: column; + font-weight: bold; + font-size: 1.25rem; + justify-content: center; + line-height: 1.2; + padding: ${rhythm(1.5)}; + width: 100%; + + span { + align-items: center; + display: flex; + } + + svg { + height: 18px; + margin-left: 0.2rem; + width: 18px; + } + } + + ${presets.Desktop} { + background: ${colors.gatsby}; + color: white; + flex-shrink: 0; + height: 160px; + + margin-left: ${rhythm(presets.gutters.default)}; + width: 125px; + + a { + padding: ${rhythm(1)}; + justify-content: flex-start; + + &:hover { + color: ${colors.gatsby}; + background: ${colors.ui.whisper}; + } + } + } + + ${presets.Hd} { + width: 160px; + } +` + +const LastPost = styled(`div`)` + display: flex; + width: 100%; +` + +const ViewAll = () => ( + + + View all + + posts + + + + +) + +class HomepageBlogPosts extends Component { + desktopMediaQuery + + state = { + desktopViewport: false, + } + + componentDidMount = () => { + this.desktopMediaQuery = window.matchMedia(presets.desktop) + this.desktopMediaQuery.addListener(this.updateViewPortState) + this.setState({ desktopViewport: this.desktopMediaQuery.matches }) + } + + componentWillUnmount = () => { + this.desktopMediaQuery.removeListener(this.updateViewPortState) + } + + updateViewPortState = e => { + this.setState({ desktopViewport: this.desktopMediaQuery.matches }) + } + + splitPostsToColumns = posts => + posts.reduce( + (merge, post, idx) => { + if (idx % 2) { + merge[1].push(post) + } else { + merge[0].push(post) + } + + return merge + }, + [[], []] + ) + + render() { + const { posts } = this.props + const postsInColumns = this.splitPostsToColumns(posts) + const { desktopViewport } = this.state + + return ( + + {desktopViewport ? ( + + {postsInColumns.map((column, colIdx) => ( + + {column.map((post, postIdx) => { + const { + fields: { slug }, + } = post + + const firstPost = !colIdx && !postIdx + const lastPost = colIdx & postIdx + + if (lastPost) { + { + /* add 'View all posts' link as a sibling of the last post card */ + } + return ( + + + + + ) + } + + return ( + + ) + })} + + ))} + + ) : ( + + + {posts.map((post, idx) => { + const { + fields: { slug }, + } = post + return + })} + + + + )} + + ) + } +} + +HomepageBlogPosts.propTypes = { + posts: PropTypes.array.isRequired, +} + +export default HomepageBlogPosts diff --git a/www/src/components/homepage/homepage-blog.js b/www/src/components/homepage/homepage-blog.js new file mode 100644 index 0000000000000..d8f190626c445 --- /dev/null +++ b/www/src/components/homepage/homepage-blog.js @@ -0,0 +1,32 @@ +import React from "react" +import PropTypes from "prop-types" + +import ArrowForwardIcon from "react-icons/lib/md/arrow-forward" + +import HomepageSection from "./homepage-section" +import HomepageBlogPosts from "./homepage-blog-posts" + +import { BlogIcon } from "../../assets/mobile-nav-icons" + +const HomepageBlog = ({ posts }) => ( + + + +) + +HomepageBlog.propTypes = { + posts: PropTypes.array.isRequired, +} + +export default HomepageBlog diff --git a/www/src/components/homepage/homepage-ecosystem.js b/www/src/components/homepage/homepage-ecosystem.js new file mode 100644 index 0000000000000..651b88c2edca9 --- /dev/null +++ b/www/src/components/homepage/homepage-ecosystem.js @@ -0,0 +1,210 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" + +import ArrowForwardIcon from "react-icons/lib/md/arrow-forward" + +import HomepageSection from "./homepage-section" +import EcosystemSection from "../ecosystem/ecosystem-section" +import EcosystemFeaturedItem, { + BlockLink as FeaturedItemBlockLink, +} from "../ecosystem/ecosystem-featured-item" + +import { + HorizontalScroller, + HorizontalScrollerContent, +} from "../shared/horizontal-scroller" + +import { EcosystemIcon } from "../../assets/mobile-nav-icons" +import { PluginsIcon, StartersIcon } from "../../assets/ecosystem-icons" + +import { rhythm, options } from "../../utils/typography" +import presets, { colors } from "../../utils/presets" + +import { SCROLLER_CLASSNAME } from "../../utils/scrollers-observer" + +const Sections = styled(`div`)` + display: flex; + flex-direction: column; + + ${presets.Tablet} { + flex-direction: row; + margin: 0 -8px; + } +` + +const Section = styled(EcosystemSection)` + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.2); + border-radius: ${presets.radiusLg}px; + margin-bottom: ${rhythm(presets.gutters.default / 2)}; + padding: ${rhythm(options.blockMarginBottom)}; + + ${presets.Tablet} { + margin: 0 8px 0px; + padding: ${rhythm(options.blockMarginBottom)}; + + :last-child { + align-self: stretch; + } + } +` + +const SubTitle = styled(`h3`)` + color: ${colors.lemon}; + font-size: 1.2rem; + margin-bottom: 0.25rem; + margin-top: 2rem; + + ${presets.Desktop} { + margin-left: 3rem; + margin-bottom: 1rem; + } +` + +const FeaturedItems = styled(HorizontalScroller)` + margin: 0 -${rhythm(presets.gutters.default / 2)}; + + ${presets.Desktop} { + margin: 0; + overflow-x: visible; + } +` + +const FeaturedItemsList = styled(HorizontalScrollerContent)` + ${presets.Desktop} { + flex-wrap: wrap; + margin: 0; + padding: 0; + width: 100%; + } +` + +const FeaturedItem = styled(EcosystemFeaturedItem)` + margin-right: ${rhythm(presets.gutters.default / 2)}; + + ${presets.Tablet} { + border-bottom: none; + margin: ${rhythm(presets.gutters.default / 2)}; + margin-top: 0; + margin-left: 0; + width: 320px; + } + + ${presets.Desktop} { + flex-basis: 28%; + + :nth-child(4) { + margin-left: 8%; + } + } + + ${FeaturedItemBlockLink} { + padding-left: calc(${rhythm(3 / 4)} + 1.1rem); + position: relative; + + /* this ovveride the .main-body a style*/ + box-shadow: none; + font-weight: normal; + + ${presets.Tablet} { + border-radius: ${presets.radiusLg}px; + } + + ${presets.Desktop} { + :hover { + background: ${colors.ui.whisper}; + } + } + + :before { + background: ${props => + props.item.type === `Starter` ? colors.skyLight : colors.accentLight}; + border-radius: ${presets.radiusLg}px 0 0 ${presets.radiusLg}px; + bottom: 0; + content: ""; + left: 0; + position: absolute; + top: 0; + width: 1.1rem; + } + + :after { + bottom: 0; + content: "${props => props.item.type}"; + color: ${props => + props.item.type === `Starter` ? colors.skyDark : colors.accentDark}; + font-family: ${options.headerFontFamily.join(`,`)}; + font-size: 0.8rem; + left: 0; + letter-spacing: 0.05em; + position: absolute; + transform: rotate(-90deg) translate(-0.5em, -0); + transform-origin: top left; + } + } +` + +const HomepageEcosystem = ({ featuredItems }) => ( + + +
+ +
+
+ + Some of our recent favorites + + + {featuredItems.map(item => { + const { slug } = item + return + })} + + + +) + +HomepageEcosystem.propTypes = { + featuredItems: PropTypes.array.isRequired, +} + +export default HomepageEcosystem diff --git a/www/src/components/homepage/homepage-newsletter.js b/www/src/components/homepage/homepage-newsletter.js new file mode 100644 index 0000000000000..ac019d10fa465 --- /dev/null +++ b/www/src/components/homepage/homepage-newsletter.js @@ -0,0 +1,105 @@ +import React from "react" +import styled from "react-emotion" + +import HomepageSection from "./homepage-section" +import EmailCaptureForm from "../../components/email-capture-form" + +import { NewsletterFormOrnament } from "../../assets/ornaments" + +import { rhythm, options } from "../../utils/typography" +import presets, { colors } from "../../utils/presets" + +const stripedBorderHeight = `8px` + +const Container = styled(`div`)` + border: 1px solid ${colors.ui.light}; + border-radius: ${presets.radiusLg}px; + display: flex; + flex-direction: column; + margin-bottom: ${rhythm(presets.gutters.default)}; + padding: ${rhythm(presets.gutters.default * 1.2)}; + padding-bottom: calc( + ${rhythm(presets.gutters.default * 1.2)} + ${stripedBorderHeight} + ); + position: relative; + + :after { + border-radius: 0 0 ${presets.radiusLg}px ${presets.radiusLg}px; + background: ${colors.ui.whisper} + repeating-linear-gradient( + 135deg, + ${colors.lemon}, + ${colors.lemon} 20px, + transparent 20px, + transparent 40px, + ${colors.mint} 40px, + ${colors.mint} 60px, + transparent 60px, + transparent 80px + ); + bottom: 0; + content: ""; + height: ${stripedBorderHeight}; + left: 0; + right: 0; + position: absolute; + } + + ${presets.Desktop} { + flex-direction: row; + justify-content: space-between; + + > * { + flex-basis: 50%; + } + } +` + +const Ornament = styled(`span`)` + left: -4px; + position: absolute; + top: -8px; +` + +const Name = styled(`h3`)` + color: ${colors.lilac}; + font-family: ${options.headerFontFamily.join(`,`)}; + font-size: 0.875rem; + font-weight: normal; + margin: 0; + text-transform: uppercase; +` + +const Title = styled(`h1`)` + color: ${colors.gatsby}; + font-size: 1.25rem; + line-height: 1.3; + margin: 0; + margin-top: 0.2rem; +` + +const Form = styled(EmailCaptureForm)` + margin-top: 1.25rem; + + ${presets.Desktop} { + margin-top: 0; + } +` + +const HomepageNewsletter = () => ( + + + +
+ The Gatsby Newsletter + Keep up with the latest things Gatsby! +
+ +
+
+) + +export default HomepageNewsletter diff --git a/www/src/components/homepage/homepage-section.js b/www/src/components/homepage/homepage-section.js new file mode 100644 index 0000000000000..0d6fac03a646e --- /dev/null +++ b/www/src/components/homepage/homepage-section.js @@ -0,0 +1,160 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" + +import Button from "../button" + +import { rhythm, options } from "../../utils/typography" +import { vP } from "../gutters" +import presets, { colors } from "../../utils/presets" + +const ICON_SIZE = `32px` + +const HomepageSectionRoot = styled(`section`)` + background: ${props => (props.inverse ? colors.gatsby : `#fff`)}; + color: ${props => (props.inverse ? colors.ui.light : colors.gatsbyDark)}; + margin: 0 -${rhythm(presets.gutters.default / 2)}; + padding: ${rhythm(1)} ${rhythm(presets.gutters.default / 2)}; + width: calc(100% + ${rhythm(presets.gutters.default)}); + + ${presets.Hd} { + margin: -1px -${vP}; + padding: ${rhythm(1)} 5%; + width: calc(100% + (${vP} * 2)); + } + + ${presets.VHd} { + padding: ${rhythm(1.5)} 8%; + } +` +export const Header = styled(`header`)` + ${presets.Tablet} { + max-width: 30rem; + } + + ${presets.Desktop} { + margin-left: 3rem; + } +` + +export const Name = styled(`h3`)` + align-items: center; + color: ${props => (props.inverse ? colors.ui.light : colors.lilac)}; + display: flex; + font-size: 1rem; + font-weight: normal; + margin: 0; + margin-left: calc(${ICON_SIZE} * -0.2); + margin-bottom: 0.5em; + + ${presets.Tablet} { + margin-left: calc(${ICON_SIZE} * -1.2); + } +` + +const Icon = styled(`span`)` + display: block; + + ${presets.Tablet} { + margin-right: calc(${ICON_SIZE} / 5); + } + + svg { + fill: transparent; + height: ${ICON_SIZE}; + stroke: ${props => (props.inverse ? colors.ui.light : colors.lilac)}; + width: ${ICON_SIZE}; + } +` + +export const Title = styled(`h1`)` + color: ${props => (props.inverse ? colors.lemon : colors.gatsby)}; + font-size: 1.75rem; + margin: 0; +` + +const Introduction = styled(`p`)` + color: ${props => (props.inverse ? colors.ui.light : colors.gatsbyDark)}; + font-size: 1.125rem; + font-family: ${options.headerFontFamily.join(`,`)}; + margin: 0; + margin-top: ${rhythm(4 / 5)}; +` + +const Actions = styled(`div`)` + display: flex; + flex-wrap: wrap; + margin: 1rem 0 1.5rem; + + > a { + margin-right: ${rhythm(0.2)}; + } + + ${presets.Desktop} { + margin: 1rem 0 2.5rem; + } +` + +const HomepageSection = ({ + children, + sectionName, + sectionIcon, + title, + introduction, + inverseStyle, + links, + className, +}) => ( + + {sectionName && ( +
+ + {sectionIcon && ( + + )} + {sectionName} + + {title && {title}} + {introduction && ( + {introduction} + )} + {links && ( + + {links.map((item, idx) => { + const { to, label, icon: Icon, secondary } = item + + return ( + + ) + })} + + )} +
+ )} + {children} +
+) + +HomepageSection.propTypes = { + children: PropTypes.node.isRequired, + sectionName: PropTypes.string, + sectionIcon: PropTypes.string, + title: PropTypes.string, + introduction: PropTypes.string, + links: PropTypes.array, + inverseStyle: PropTypes.bool, + className: PropTypes.string, +} + +export default HomepageSection diff --git a/www/src/components/hubspot-form.js b/www/src/components/hubspot-form.js index 4706657bb63bc..216626372580c 100644 --- a/www/src/components/hubspot-form.js +++ b/www/src/components/hubspot-form.js @@ -22,6 +22,9 @@ export default class GatsbyHubspotForm extends Component { color: colors.gatsby, fontFamily: options.headerFontFamily.join(`,`), padding: `15px`, + "& form": { + margin: 0, + }, "& .hs-form fieldset": { maxWidth: `none`, width: `100%`, @@ -38,7 +41,9 @@ export default class GatsbyHubspotForm extends Component { "& .hs-form-required": { color: colors.warning, }, - "& .hs-form input": formInput, + "& .hs-form input": { + ...formInput, + }, '& .hs-form input[type="text"], .hs-form input[type="email"], .hs-form input[type="number"]': { width: `100% !important`, ":focus": { @@ -57,7 +62,7 @@ export default class GatsbyHubspotForm extends Component { formId={formId} sfdcCampaignId={sfdcCampaignId} loading="Loading..." - css="" + {...{ css: `` }} />
) diff --git a/www/src/components/layout.js b/www/src/components/layout.js index f703d272e12cc..75b5d9ff02c17 100644 --- a/www/src/components/layout.js +++ b/www/src/components/layout.js @@ -1,6 +1,7 @@ import React from "react" import Modal from "react-modal" -import Helmet from "react-helmet" +import { SkipNavLink } from "@reach/skip-nav" +import { OutboundLink } from "gatsby-plugin-google-analytics" import MdClose from "react-icons/lib/md/close" import { navigate, PageRenderer } from "gatsby" import presets, { colors } from "../utils/presets" @@ -8,6 +9,7 @@ import Banner from "../components/banner" import Navigation from "../components/navigation" import MobileNavigation from "../components/navigation-mobile" import PageWithSidebar from "../components/page-with-sidebar" +import SiteMetadata from "../components/site-metadata" import mousetrap from "mousetrap" @@ -19,7 +21,6 @@ import "../fonts/Webfonts/futurapt_demiitalic_macroman/stylesheet.css" // Other fonts import "typeface-spectral" -import "typeface-space-mono" let windowWidth @@ -147,39 +148,22 @@ class DefaultLayout extends React.Component { return (
- - - - - - - + + Skip to main content - These are the docs for v2. - {` `} - - View the v1 docs - - {` `} - instead - - - . + Watch + + {`: “Rise of the Content Mesh: Webcast with Contentful and Gatsby”.`}
{ + const { + children, + location: { pathname }, + pageTitle = ``, + pageIcon, + } = props + + const isHomepage = pathname === `/` + + return ( +
+ + {pageTitle ? `${pageTitle} | GatsbyJS` : `GatsbyJS`} + + + + + + + + Skip to main content + + + + Watch + + {`: “Rise of the Content Mesh: Webcast with Contentful and Gatsby”.`} + + + + + + {pageTitle && } + {children} + + + +
+ ) +} + +LayoutWithHeading.propTypes = { + children: PropTypes.node.isRequired, + location: PropTypes.object.isRequired, + pageTitle: PropTypes.string, + pageIcon: PropTypes.string, +} + +export default LayoutWithHeading diff --git a/www/src/components/layout/page-heading.js b/www/src/components/layout/page-heading.js new file mode 100644 index 0000000000000..f5852959f8ebf --- /dev/null +++ b/www/src/components/layout/page-heading.js @@ -0,0 +1,115 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "react-emotion" + +import presets, { colors } from "../../utils/presets" +import { rhythm, options } from "../../utils/typography" + +const PageHeadingContainer = styled(`header`)` + padding: ${rhythm(options.blockMarginBottom)}; + + ${presets.Tablet} { + left: 0; + position: fixed; + padding: 0; + top: ${`calc(${presets.bannerHeight} + ${presets.headerHeight})`}; + } +` + +const H1 = styled(`h1`)` + align-items: center; + color: ${colors.lilac}; + display: flex; + font-size: 1.5rem; + margin: 0; + position: relative; + width: 100%; + + ${presets.Tablet} { + transform: rotate(-90deg) translate(calc(-100% - 2rem), 0.7rem); + transform-origin: top left; + } + + :after { + bottom: 2rem; + content: attr(data-title); + display: none; + font-size: 12rem; + opacity: 0.03; + position: absolute; + right: -0.7rem; + z-index: -1; + + ${presets.Tablet} { + display: block; + } + } +` + +const Icon = styled(`span`)` + display: block; + width: 36px; + height: 32px; + margin: 0.1rem 0.1rem 0 -0.3rem; + + .svg-stroke { + stroke-miterlimit: 10; + stroke-width: 1.4173; + } + + .svg-stroke-accent { + stroke: ${colors.lavender}; + } + .svg-stroke-lilac { + stroke: ${colors.lavender}; + } + .svg-fill-lilac { + fill: ${colors.lavender}; + } + .svg-fill-gatsby { + fill: ${colors.lavender}; + } + .svg-fill-brightest { + fill: #fff; + } + .svg-fill-accent { + fill: ${colors.lavender}; + } + .svg-stroke-gatsby { + stroke: ${colors.lavender}; + } + .svg-fill-gradient-accent-white-top { + fill: transparent; + } + .svg-fill-gradient-accent-white-45deg { + fill: transparent; + } + .svg-fill-gradient-accent-white-bottom: { + fill: #fff; + } + .svg-fill-gradient-purple { + fill: ${colors.lavender}; + } + .svg-stroke-gradient-purple { + stroke: ${colors.lavender}; + } + .svg-fill-wisteria { + fill: transparent; + } +` + +const PageHeading = ({ title, icon }) => ( + +

+ + {title} +

+
+) + +PageHeading.propTypes = { + title: PropTypes.string, + icon: PropTypes.string, +} + +export default PageHeading diff --git a/www/src/components/navigation-mobile.js b/www/src/components/navigation-mobile.js index e32134cc40699..882bc8438c54a 100644 --- a/www/src/components/navigation-mobile.js +++ b/www/src/components/navigation-mobile.js @@ -1,7 +1,6 @@ import React from "react" import { Link } from "gatsby" -import { style } from "glamor" - +import { css } from "react-emotion" import SvgDefs from "../assets/svg-defs" import { BlogIcon, @@ -17,13 +16,17 @@ import typography, { rhythm, scale, options } from "../utils/typography" const getNavItemStyles = ({ isPartiallyCurrent }) => isPartiallyCurrent ? { - ...styles.link.default, - ...styles.link.active, - ...styles.svg.active, + className: css({ + ...styles.link.default, + ...styles.link.active, + ...styles.svg.active, + }), } : { - ...styles.link.default, - ...styles.svg.default, + className: css({ + ...styles.link.default, + ...styles.svg.default, + }), } const MobileNavItem = ({ linkTo, label, icon }) => ( @@ -60,7 +63,7 @@ const MobileNavigation = () => ( zIndex: 1, borderTop: `1px solid ${colors.ui.border}`, background: colors.ui.whisper, - height: presets.headerHeight, + minHeight: presets.headerHeight, fontFamily: typography.options.headerFontFamily.join(`,`), paddingBottom: `env(safe-area-inset-bottom)`, [presets.Tablet]: { @@ -79,13 +82,13 @@ const MobileNavigation = () => ( export default MobileNavigation -const svgActive = style({ +const svgActive = { ...svgStyles.active, -}) +} const styles = { svg: { - default: style({ + default: { "& .svg-stroke": { strokeMiterlimit: 10, strokeWidth: 1.4173, @@ -104,11 +107,11 @@ const styles = { "& .svg-stroke-gradient-purple": { stroke: colors.lavender }, "& .svg-fill-wisteria": { fill: `transparent` }, "&:hover": { ...svgActive }, - }), + }, active: svgActive, }, link: { - default: style({ + default: { color: colors.lavender, borderRadius: presets.radius, fontSize: scale(-1 / 2).fontSize, @@ -130,13 +133,13 @@ const styles = { }`, }, }, - }), - active: style({ + }, + active: { "&&": { color: colors.gatsby, fontWeight: `bold`, // WebkitFontSmoothing: `antialiased`, }, - }), + }, }, } diff --git a/www/src/components/navigation.js b/www/src/components/navigation.js index 88cc7d3a75260..b1f0ea8eb6c4f 100644 --- a/www/src/components/navigation.js +++ b/www/src/components/navigation.js @@ -57,9 +57,7 @@ const Navigation = ({ pathname }) => { ) return ( - + ) } @@ -199,6 +214,13 @@ const styles = { marginRight: navItemHorizontalSpacing, }, navContainer: { + display: `none`, + [presets.Tablet]: { + alignSelf: `flex-end`, + display: `flex`, + }, + }, + ulContainer: { display: `none`, [presets.Tablet]: { alignSelf: `flex-end`, diff --git a/www/src/components/package-readme.js b/www/src/components/package-readme.js index 60d23b710eee2..5ce8f30dfe695 100644 --- a/www/src/components/package-readme.js +++ b/www/src/components/package-readme.js @@ -8,70 +8,61 @@ import Container from "../components/container" import MarkdownPageFooter from "../components/markdown-page-footer" import GithubIcon from "react-icons/lib/go/mark-github" -class PackageReadMe extends React.Component { - render() { - const { - page, - packageName, - excerpt, - html, - githubUrl, - timeToRead, - } = this.props +const PackageReadMe = props => { + const { page, packageName, excerpt, html, githubUrl, timeToRead } = props - return ( - - - {packageName} - - - - - - - - -
- - - - {/* {githubUrl && ( - - See starters that use this - - )} */} -
- -
+ + {packageName} + + + + + + + + +
+ - - - ) - } + href={githubUrl} + > + + + {githubUrl && ( + + See starters that use this + + )} +
+ +
+ + + ) } PackageReadMe.propTypes = { diff --git a/www/src/components/page-with-plugin-searchbar.js b/www/src/components/page-with-plugin-searchbar.js index e776513e2ca64..f7a7bdb2eb4b4 100644 --- a/www/src/components/page-with-plugin-searchbar.js +++ b/www/src/components/page-with-plugin-searchbar.js @@ -1,37 +1,32 @@ -import React, { Component, Fragment } from "react" +import React, { Fragment } from "react" import PluginSearchBar from "./plugin-searchbar-body" import { rhythm } from "../utils/typography" import presets, { colors } from "../utils/presets" import { scrollbarStyles } from "../utils/styles" -class PageWithPluginSearchBar extends Component { - render() { - return ( - -
- -
-
- {this.props.children} -
-
- ) - } -} - -export default PageWithPluginSearchBar +const PageWithPluginSearchBar = ({ isPluginsIndex, location, children }) => ( + +
+ +
+
+ {children} +
+
+) const widthDefault = rhythm(14) const widthLarge = rhythm(16) @@ -64,3 +59,5 @@ const styles = { }, }, } + +export default PageWithPluginSearchBar diff --git a/www/src/components/plugin-searchbar-body.js b/www/src/components/plugin-searchbar-body.js index 3bed7f20e4a46..046469db879fa 100644 --- a/www/src/components/plugin-searchbar-body.js +++ b/www/src/components/plugin-searchbar-body.js @@ -18,7 +18,7 @@ import unescape from "lodash/unescape" import presets from "../utils/presets" import typography, { rhythm, scale } from "../utils/typography" import { scrollbarStyles } from "../utils/styles" -import { css as glam } from "glamor" +import { injectGlobal } from "react-emotion" import removeMD from "remove-markdown" // This is for the urlSync @@ -29,7 +29,8 @@ const searchInputHeight = rhythm(7 / 4) const searchMetaHeight = rhythm(8 / 4) const searchInputWrapperMargin = rhythm(3 / 4) -glam.insert(` +/* stylelint-disable */ +injectGlobal` .ais-SearchBox__input:valid ~ .ais-SearchBox__reset { display: block; } @@ -168,7 +169,8 @@ glam.insert(` .ais-InfiniteHits__loadMore[disabled] { display: none; } -`) +` +/* stylelint-enable */ // Search shows a list of "hits", and is a child of the PluginSearchBar component class Search extends Component { @@ -331,7 +333,7 @@ const Result = ({ hit, pathname, search }) => { "&:before": { background: colors.ui.border, bottom: 0, - content: ` `, + content: `''`, height: 1, left: 0, position: `absolute`, @@ -341,7 +343,7 @@ const Result = ({ hit, pathname, search }) => { "&:after": { background: selected ? colors.gatsby : false, bottom: 0, - content: ` `, + content: `''`, position: `absolute`, left: 0, top: -1, diff --git a/www/src/components/search-form.js b/www/src/components/search-form.js index e5ef532c0aef0..c7ee3a656be58 100644 --- a/www/src/components/search-form.js +++ b/www/src/components/search-form.js @@ -10,25 +10,27 @@ import SearchIcon from "./search-icon" const loadJS = () => import(`./docsearch.min.js`) let loadedJs = false -import { css } from "glamor" +import { injectGlobal } from "react-emotion" const { curveDefault, speedDefault } = presets.animation // Override default search result styles (docsearch.css) -css.insert(` +const searchDropdownOffsetTop = rhythm(2) +const homepageSearchDropdownOffsetTop = rhythm(4.5) + +injectGlobal` .algolia-autocomplete .ds-dropdown-menu { position: fixed !important; - top: ${rhythm(2)} !important; + top: calc(${searchDropdownOffsetTop} + ${presets.bannerHeight}) !important; left: ${rhythm(0.5)} !important; right: ${rhythm(0.5)} !important; min-width: calc(100vw - ${rhythm(1)}) !important; max-width: calc(100vw - 2rem) !important; - max-height: calc(100vh - 5rem) !important; box-shadow: 0 3px 10px 0.05rem ${hex2rgba(colors.lilac, 0.25)} !important; } .is-homepage .algolia-autocomplete .ds-dropdown-menu { - top: ${rhythm(2.5)} !important; + top: ${homepageSearchDropdownOffsetTop} !important; } /* .searchWrap to beat docsearch.css' !important */ @@ -78,10 +80,19 @@ css.insert(` } .algolia-autocomplete .ds-dropdown-menu [class^="ds-dataset-"] { + max-height: calc(100vh - ${presets.headerHeight} - ${ + presets.bannerHeight +}) !important; padding: 0 !important; border-color: ${colors.ui.bright} !important; } + .is-homepage .algolia-autocomplete .ds-dropdown-menu [class^="ds-dataset-"] { + max-height: calc(100vh - ${homepageSearchDropdownOffsetTop} - ${ + presets.headerHeight +} - ${presets.bannerHeight}) !important; + } + .algolia-autocomplete .algolia-docsearch-suggestion--highlight { background-color: ${colors.ui.bright} !important; box-shadow: 0 !important; @@ -169,9 +180,11 @@ css.insert(` padding: ${rhythm(0.5)} ${rhythm(0.75)} !important; } + /* stylelint-disable */ .algolia-autocomplete .algolia-docsearch-suggestion--category-header { padding: ${rhythm(0.5)} ${rhythm(0.75)} !important; } + /* stylelint-enable */ .algolia-autocomplete .algolia-docsearch-suggestion--content { width: 70% !important; @@ -200,14 +213,20 @@ css.insert(` } @media ${presets.tablet} { - .is-homepage .algolia-autocomplete .ds-dropdown-menu, - .algolia-autocomplete .ds-dropdown-menu { + .algolia-autocomplete .ds-dropdown-menu, + .is-homepage .algolia-autocomplete .ds-dropdown-menu { top: 100% !important; position: absolute !important; max-width: 600px !important; min-width: 500px !important; } + .is-homepage .algolia-autocomplete .ds-dropdown-menu [class^="ds-dataset-"] { + max-height: calc(100vh - ${homepageSearchDropdownOffsetTop} - ${ + presets.bannerHeight +}) !important; + } + /* .searchWrap to beat docsearch.css' !important */ .searchWrap .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu { right: 0 !important; @@ -234,7 +253,8 @@ css.insert(` max-width: 65% !important; } } -`) +` + class SearchForm extends Component { constructor() { super() @@ -255,6 +275,10 @@ class SearchForm extends Component { navigate(`${a.pathname}${a.hash}`) } init() { + if (this.algoliaInitialized) { + return + } + window.addEventListener( `autocomplete:selected`, this.autocompleteSelected, @@ -272,6 +296,7 @@ class SearchForm extends Component { keyboardShortcuts: [`s`], }, }) + this.algoliaInitialized = true } componentDidMount() { if ( @@ -288,13 +313,23 @@ class SearchForm extends Component { document.head.appendChild(link) } } + componentWillUnmount() { + window.removeEventListener( + `autocomplete:selected`, + this.autocompleteSelected, + true + ) + } loadAlgoliaJS() { - !loadedJs && + if (!loadedJs) { loadJS().then(a => { loadedJs = true window.docsearch = a.default this.init() }) + } else { + this.init() + } } render() { const { focussed } = this.state diff --git a/www/src/components/share-menu.js b/www/src/components/share-menu.js index 8b633cc8c04b8..fd7dc037977f1 100644 --- a/www/src/components/share-menu.js +++ b/www/src/components/share-menu.js @@ -23,6 +23,36 @@ class ShareMenu extends React.Component { open: false, } this.shareMenu = this.shareMenu.bind(this) + this.clickOutsideShareMenu = this.clickOutsideShareMenu.bind(this) + this.setShareBtnRef = this.setShareBtnRef.bind(this) + this.setShareMenuRef = this.setShareMenuRef.bind(this) + } + + componentDidMount() { + document.addEventListener(`mousedown`, this.clickOutsideShareMenu) + } + + componentWillUnmount() { + document.removeEventListener(`mousedown`, this.clickOutsideShareMenu) + } + + setShareBtnRef(node) { + this.shareBtnref = node + } + + setShareMenuRef(node) { + this.shareMenuRef = node + } + + clickOutsideShareMenu(event) { + const { open } = this.state + if ( + open && + !this.shareBtnref.contains(event.target) && + !this.shareMenuRef.contains(event.target) + ) { + this.shareMenu() + } } shareMenu() { @@ -33,19 +63,20 @@ class ShareMenu extends React.Component { } render() { - const { url, title, image } = this.props + const { url, title, image, theme = `gatsby` } = this.props const { open } = this.state return ( @@ -57,9 +88,11 @@ class ShareMenu extends React.Component { left: `auto`, right: 0, }} + ref={this.setShareMenuRef} > & { + margin: 2.5rem 0; + } + + ${presets.Desktop} { + line-height: 1.7; + margin: 2.5rem -3.5rem; + padding: 2.8rem 3.5rem; + text-indent: 1.8rem; + + p > & { + margin: 2.5rem -3.5rem; + } + } +` + +const QuotationMark = styled(`span`)` + display: flex; + left: 2.5rem; + position: absolute; + top: 2rem; + + svg { + fill: ${colors.gatsbyDark}; + } + + ${presets.Desktop} { + left: 3rem; + top: 2.8rem; + + svg { + fill: ${colors.gatsbyDark}; + transform: scale(1.1); + } + } +` + +const Star = styled(`span`)` + display: flex; + position: absolute; + + svg { + height: 100%; + width: 100%; + } + + :nth-child(1) { + height: 20px; + left: 0; + top: 1.8rem; + transform: translateX(-50%); + width: 20px; + + svg { + fill: ${colors.lemon}; + } + + ${presets.Desktop} { + height: 27px; + width: 27px; + } + + .variantB & { + left: auto; + right: 0; + top: 2rem; + transform: translate(50%, 0); + } + + .variantC & { + bottom: 0; + left: auto; + right: 12rem; + top: auto; + transform: translate(0, 50%); + } + } + + :nth-child(2) { + left: 5rem; + height: 14px; + top: 0; + transform: translateY(-50%); + width: 14px; + + svg { + fill: ${colors.mint}; + } + .variantB & { + bottom: 0; + left: auto; + right: 3rem; + top: auto; + transform: translate(0, 50%); + } + + .variantC & { + left: auto; + right: 9rem; + top: 0; + transform: translate(0, -50%); + } + } + + :nth-child(3) { + bottom: 0; + height: 12px; + right: 4rem; + transform: translateY(50%); + width: 12px; + + svg { + fill: ${colors.warning}; + } + + .variantB & { + bottom: auto; + left: auto; + right: 7rem; + top: 0; + transform: translate(0%, -50%); + } + + .variantC & { + top: 3rem; + left: 0; + transform: translate(-50%, 0); + } + } +` + +const variants = [`A`, `B`, `C`] +let instancesCounter = -1 + +const Pullquote = ({ children }) => { + instancesCounter += 1 + const className = `variant${variants[instancesCounter % variants.length]}` + + return ( + + {children} + +
+ + + +
+
+ ) +} + +Pullquote.propTypes = { + children: PropTypes.node.isRequired, +} + +export default Pullquote diff --git a/www/src/components/showcase-details.js b/www/src/components/showcase-details.js index 3e3dd2714ee52..e3909e42bfd87 100644 --- a/www/src/components/showcase-details.js +++ b/www/src/components/showcase-details.js @@ -1,7 +1,6 @@ import React, { Fragment } from "react" import Helmet from "react-helmet" import url from "url" -import hex2rgba from "hex2rgba" import Img from "gatsby-image" import qs from "qs" @@ -264,7 +263,7 @@ const ShowcaseDetails = ({ parent, data, isModal, categories }) => ( {data.sitesYaml.title} (
(level === 0 ? level + 1 * 40 : level + 1 * 20) @@ -165,7 +165,7 @@ const styles = { "&:after": { background: colors.ui.bright, bottom: `1.5rem`, - content: ` `, + content: `''`, left: 0, position: `absolute`, top: `1.5rem`, @@ -174,7 +174,7 @@ const styles = { "&:before": { borderLeft: `1px dashed ${colors.ui.bright}`, bottom: 0, - content: ` `, + content: `''`, height: `100%`, left: 0, position: `absolute`, diff --git a/www/src/components/sidebar/scroll-sync-sidebar.js b/www/src/components/sidebar/scroll-sync-sidebar.js index 3dddf037c98a1..355a81d7b64d1 100644 --- a/www/src/components/sidebar/scroll-sync-sidebar.js +++ b/www/src/components/sidebar/scroll-sync-sidebar.js @@ -68,7 +68,7 @@ const _getItemIds = section => { let list = [] section.forEach(subSection => { - if (subSection.hasOwnProperty("hash")) list.push(subSection.hash) + if (subSection.hasOwnProperty(`hash`)) list.push(subSection.hash) if (subSection.items) list.push(..._getItemIds(subSection.items)) }) diff --git a/www/src/components/sidebar/section-title.js b/www/src/components/sidebar/section-title.js index dd0701978d726..15c63d267778c 100644 --- a/www/src/components/sidebar/section-title.js +++ b/www/src/components/sidebar/section-title.js @@ -191,7 +191,7 @@ const styles = { ulHorizontalDivider: { background: colors.ui.border, top: 0, - content: ` `, + content: `''`, height: 1, position: `absolute`, right: 0, diff --git a/www/src/components/sidebar/sticky-responsive-sidebar.js b/www/src/components/sidebar/sticky-responsive-sidebar.js index c0646959fcfc6..169c1808dfd6f 100644 --- a/www/src/components/sidebar/sticky-responsive-sidebar.js +++ b/www/src/components/sidebar/sticky-responsive-sidebar.js @@ -32,7 +32,7 @@ class StickyResponsiveSidebar extends Component { } = this.props const SidebarComponent = enableScrollSync ? ScrollSyncSidebar : Sidebar - const iconOffset = open ? 8 : -4 + const iconOffset = open ? 5 : -5 const menuOpacity = open ? 1 : 0 const menuOffset = open ? 0 : rhythm(10) @@ -71,21 +71,22 @@ class StickyResponsiveSidebar extends Component { role="button" aria-label="Show Secondary Navigation" aria-controls="SecondaryNavigation" - aria-expanded={open ? "true" : "false"} + aria-expanded={open ? `true` : `false`} tabIndex={0} >
diff --git a/www/src/components/site-metadata.js b/www/src/components/site-metadata.js new file mode 100644 index 0000000000000..a9125c34a8be0 --- /dev/null +++ b/www/src/components/site-metadata.js @@ -0,0 +1,49 @@ +import React from "react" +import Helmet from "react-helmet" +import { graphql, StaticQuery } from "gatsby" + +import gatsbyIcon from "../assets/gatsby-icon.png" + +const SiteMetadata = ({ pathname }) => ( + ( + + + + + + + + + + + + + + + + + + )} + /> +) + +export default SiteMetadata diff --git a/www/src/components/slider.js b/www/src/components/slider.js index 37b2c6c548376..1f1184f2b5646 100644 --- a/www/src/components/slider.js +++ b/www/src/components/slider.js @@ -1,6 +1,5 @@ import React from "react" - -import { css } from "glamor" +import { keyframes } from "react-emotion" export default ({ items, color }) => (
(
) -const topToBottom = css.keyframes({ +const topToBottom = keyframes({ "0%": { opacity: 0, }, diff --git a/www/src/data/ecosystem/featured-items.yaml b/www/src/data/ecosystem/featured-items.yaml new file mode 100644 index 0000000000000..4e72292b07302 --- /dev/null +++ b/www/src/data/ecosystem/featured-items.yaml @@ -0,0 +1,14 @@ +# use slug to pick a starter +starters: + - "/gatsby-starter-blog/" + - "/gatsby-starter-netlify-cms/" + - "/gatsby-advanced-starter/" + - "/gatsby-starter-default/" + - "/gatsby-material-starter/" +# use name to pick a plugin +plugins: + - gatsby-plugin-react-helmet + - gatsby-plugin-page-creator + - gatsby-source-filesystem + - gatsby-plugin-sharp + - gatsby-transformer-remark diff --git a/www/src/data/sidebars/doc-links.yaml b/www/src/data/sidebars/doc-links.yaml index e880667b9d497..c82306c713c4a 100644 --- a/www/src/data/sidebars/doc-links.yaml +++ b/www/src/data/sidebars/doc-links.yaml @@ -1,33 +1,40 @@ -- title: Quick start +- title: Documentation + link: /docs/ items: - - title: Quick start - link: /docs/ - - title: Starters - link: /docs/gatsby-starters/ + - title: Quick Start + link: /docs/quick-start - title: Recipes link: /docs/recipes/ - - title: Overview of the docs* - link: /docs/overview/ + - title: Awesome Gatsby Resources + link: /docs/awesome-gatsby/ - title: Guides items: - title: Preparing your environment link: /docs/preparing-your-environment/ items: - - title: Basic hardware and software requirements* - link: /docs/basic-hardware-software-requirements/ - title: Browser Support link: /docs/browser-support/ - title: Gatsby on Windows link: /docs/gatsby-on-windows/ + - title: Gatsby on Linux + link: /docs/gatsby-on-linux/ - title: Deploying & hosting link: /docs/deploying-and-hosting/ items: - title: Preparing your site for deployment* link: /docs/preparing-for-deployment/ - - title: Deploying - link: /docs/deploy-gatsby/ - title: Deploying to S3 and CloudFront link: /docs/deploying-to-s3-cloudfront + - title: Deploying to Aerobatic + link: /docs/deploying-to-aerobatic/ + - title: Deploying to Heroku + link: /docs/deploying-to-heroku/ + - title: Deploying to Now + link: /docs/deploying-to-now/ + - title: Deploying to GitLab Pages + link: /docs/deploying-to-gitlab-pages/ + - title: Hosting on Netlify + link: /docs/hosting-on-netlify - title: Path Prefix link: /docs/path-prefix/ - title: How Gatsby works with GitHub pages @@ -37,7 +44,7 @@ items: - title: Babel.js link: /docs/babel/ - - title: Babel plugin macros* + - title: Babel plugin macros link: /docs/babel-plugin-macros/ - title: Custom webpack config link: /docs/add-custom-webpack-config/ @@ -45,7 +52,7 @@ link: /docs/custom-html/ - title: Environment variables link: /docs/environment-variables/ - - title: ESlint* + - title: ESLint link: /docs/eslint/ - title: Proxying API requests link: /docs/api-proxy/ @@ -54,7 +61,7 @@ items: - title: Adding Images, Fonts, and Files link: /docs/adding-images-fonts-files/ - - title: Static folder* + - title: Static folder link: /docs/static-folder/ - title: Dropping images into static folders* link: /docs/dropping-images-into-static-folders/ @@ -68,12 +75,12 @@ link: /docs/working-with-images/ - title: Using gatsby-image link: /docs/using-gatsby-image/ - - title: Sourcing content and data* + - title: Sourcing content and data link: /docs/content-and-data/ items: - - title: Using Unstructured Data + - title: Using unstructured data link: /docs/using-unstructured-data/ - - title: Sourcing from the filesystem* + - title: Sourcing from the filesystem link: /docs/sourcing-from-the-filesystem/ - title: Sourcing from databases* link: /docs/sourcing-from-databases/ @@ -86,18 +93,20 @@ items: - title: Sourcing from Netlify CMS link: /docs/sourcing-from-netlify-cms/ - - title: Sourcing from WordPress* + - title: Sourcing from WordPress link: /docs/sourcing-from-wordpress/ - - title: Sourcing from Drupal* + - title: Sourcing from Drupal link: /docs/sourcing-from-drupal/ - - title: Sourcing from Contentful* + - title: Sourcing from Contentful link: /docs/sourcing-from-contentful/ - - title: Sourcing from Prose* - link: /docs/sourcing-from-prose/ + - title: Sourcing from Prismic + link: /docs/sourcing-from-prismic/ - title: Querying your data with GraphQL link: /docs/graphql/ items: - - title: Introducing GraphiQL* + - title: Understanding GraphQL syntax + link: /docs/graphql-reference/ + - title: Introducing GraphiQL link: /docs/introducing-graphiql/ - title: Creating and modifying pages link: /docs/creating-and-modifying-pages/ @@ -105,33 +114,42 @@ link: /docs/page-query/ - title: Querying data in components with StaticQuery link: /docs/static-query/ + - title: Using GraphQL fragments + link: /docs/using-fragments/ + - title: Creating slugs for pages + link: /docs/creating-slugs-for-pages/ + - title: Creating pages from data programmatically + link: /docs/programmatically-create-pages-from-data/ - title: Using third-party GraphQL APIs link: /docs/third-party-graphql/ - title: Adding Markdown pages link: /docs/adding-markdown-pages/ - title: Adding a list of Markdown blog posts link: /docs/adding-a-list-of-markdown-blog-posts/ - - title: Creating slugs for pages* - link: /docs/creating-slugs-for-pages/ - - title: Programmatically create pages from data* - link: /docs/programmatically-create-pages-from-data/ - title: Plugins link: /docs/plugins/ items: - title: Plugin authoring link: /docs/plugin-authoring/ - - title: Create a Transformer Plugin* + - title: Create a Transformer Plugin link: /docs/create-transformer-plugin/ - title: Create a Source Plugin link: /docs/create-source-plugin/ - title: Source plugin tutorial link: /docs/source-plugin-tutorial/ + - title: Starters + link: /docs/starters/ + items: + - title: Create a Starter* + link: /docs/create-a-starter/ - title: Styling link: /docs/styling/ items: + - title: Layout Components + link: /docs/layout-components/ - title: CSS Modules link: /docs/css-modules/ - - title: Typography.js* + - title: Typography.js link: /docs/typography-js/ - title: Using CSS-in-JS library Glamor link: /docs/glamor/ @@ -139,9 +157,9 @@ link: /docs/styled-components/ - title: Creating global styles link: /docs/creating-global-styles/ - - title: Component CSS* + - title: Component CSS link: /docs/component-css/ - - title: PostCSS* + - title: PostCSS link: /docs/post-css/ - title: Testing link: /docs/testing/ @@ -156,6 +174,8 @@ link: /docs/testing-css-in-js/ - title: Testing React components link: /docs/testing-react-components/ + - title: Visual testing with Storybook + link: /docs/visual-testing-with-storybook/ - title: Debugging link: /docs/debugging/ items: @@ -172,7 +192,7 @@ items: - title: Client data fetching* link: /docs/client-data-fetching/ - - title: Building a site with authentication* + - title: Building a site with authentication link: /docs/building-a-site-with-authentication/ - title: Building an e-commerce site* link: /docs/building-an-e-commerce-site/ @@ -185,26 +205,28 @@ - title: Building an image-heavy site* link: /docs/building-an-image-heavy-site/ - title: Adding website functionality - link: /docs/adding-third-party-services/ + link: /docs/adding-website-functionality/ items: - title: Adding search link: /docs/adding-search/ - - title: Adding analytics* + - title: Adding analytics link: /docs/adding-analytics/ - title: Adding forms* link: /docs/adding-forms/ - title: Adding a 404 Page link: /docs/add-404-page/ + - title: Adding an SEO component + link: /docs/add-seo-component/ - title: Adding tags and categories to blog posts link: /docs/adding-tags-and-categories-to-blog-posts/ - title: Adding pagination link: /docs/adding-pagination/ - - title: Creating a sitemap* + - title: Creating a sitemap link: /docs/creating-a-sitemap/ - - title: Linking between pages* + - title: Linking between pages link: /docs/linking-between-pages/ - - title: Interactive pages* - link: /docs/interactive-pages/ + - title: Making your site accessible + link: /docs/making-your-site-accessible - title: Routing link: /docs/routing/ items: @@ -229,8 +251,8 @@ link: /docs/audit-with-lighthouse/ - title: Add a Manifest File link: /docs/add-a-manifest-file/ - - title: Add Offline Support - link: /docs/add-offline-support/ + - title: Add Offline Support with a Service Worker + link: /docs/add-offline-support-with-a-service-worker - title: Add Page Metadata link: /docs/add-page-metadata/ - title: Search Engine Optimization (SEO) @@ -241,27 +263,25 @@ items: - title: Gatsby Link link: /docs/gatsby-link/ + - title: Gatsby Config + link: /docs/gatsby-config/ - title: Gatsby Node APIs link: /docs/node-apis/ - title: Gatsby Browser APIs link: /docs/browser-apis/ - title: Gatsby SSR APIs link: /docs/ssr-apis/ - - title: Gatsby config - link: /docs/gatsby-config/ - title: Actions link: /docs/actions/ - - title: GraphQL reference - link: /docs/graphql-reference/ - title: Node interface link: /docs/node-interface/ - title: API philosophy link: /docs/api-specification/ - title: Releases & Migration items: - - title: v2 release notes* + - title: v2 release notes link: /docs/v2-release-notes/ - - title: v1 release notes* + - title: v1 release notes link: /docs/v1-release-notes/ - title: Migrating from v1 to v2 link: /docs/migrating-from-v1-to-v2/ @@ -279,8 +299,6 @@ link: /docs/building-with-components/ - title: Lifecycle APIs link: /docs/gatsby-lifecycle-apis/ - - title: Plugins - link: /docs/plugins/ - title: PRPL pattern link: /docs/prpl-pattern/ - title: Querying data with GraphQL @@ -288,7 +306,7 @@ - title: Behind the Scenes link: /docs/behind-the-scenes/ items: - - title: How APIS/Plugins Are Run + - title: How APIs/Plugins Are Run link: /docs/how-plugins-apis-are-run/ - title: Node Creation link: /docs/node-creation/ @@ -325,7 +343,7 @@ - title: Webpack and SSR link: /docs/webpack-and-ssr/ items: - - title: Building the Javascript App + - title: Building the JavaScript App link: /docs/production-app/ - title: Page HTML Generation link: /docs/html-generation/ @@ -339,7 +357,7 @@ link: /docs/behind-the-scenes-terminology/ - title: Advanced Tutorials items: - - title: Making a site with user authentication* + - title: Making a site with user authentication link: /docs/authentication-tutorial/ - title: Making an e-commerce Gatsby site link: /docs/ecommerce-tutorial/ @@ -367,7 +385,7 @@ link: /docs/pair-programming/ - title: Gatsby Style Guide link: /docs/gatsby-style-guide/ - - title: RFC process* + - title: RFC process link: /docs/rfc-process/ - title: Docs templates link: /docs/templates/ @@ -375,13 +393,15 @@ link: /docs/how-to-run-a-gatsby-workshop/ - title: How to pitch Gatsby* link: /docs/how-to-pitch-gatsby/ - - title: Site Showcase Submissions + - title: Submit to Site Showcase link: /docs/site-showcase-submissions/ - title: Submit to Creator Showcase link: /docs/submit-to-creator-showcase/ - - title: Submit to Starter Showcase* - link: /docs/submit-to-starter-showcase/ + - title: Submit to Starter Library + link: /docs/submit-to-starter-library/ + - title: Submit to Plugin Library + link: /docs/submit-to-plugin-library/ - title: Glossary* link: /docs/glossary/ -- title: Commands (Gatsby CLI)* +- title: Commands (Gatsby CLI) link: /docs/gatsby-cli/ diff --git a/www/src/data/sidebars/features-links.yaml b/www/src/data/sidebars/features-links.yaml index b41464e3175dd..37150a649fb10 100644 --- a/www/src/data/sidebars/features-links.yaml +++ b/www/src/data/sidebars/features-links.yaml @@ -52,7 +52,7 @@ link: /features/#asset-pipelines - title: CSS Extensions (eg Sass) link: /features/#css-extensions-(eg-sass) - - title: Advanced Javascript syntax + - title: Advanced JavaScript syntax link: /features/#advanced-javascript-syntax - title: Ecosystem items: diff --git a/www/src/data/sidebars/tutorial-links.yaml b/www/src/data/sidebars/tutorial-links.yaml index 88320790de294..7d789549b8212 100644 --- a/www/src/data/sidebars/tutorial-links.yaml +++ b/www/src/data/sidebars/tutorial-links.yaml @@ -8,18 +8,18 @@ items: - title: Overview of core technologies link: /tutorial/part-zero/#overview-of-core-technologies - - title: Familiarize with command line - link: /tutorial/part-zero/#familiarize-with-command-line + - title: Familiarize with the command line + link: /tutorial/part-zero/#familiarize-with-the-command-line - title: Install Node.js link: /tutorial/part-zero/#install-nodejs - title: Familiarize with npm link: /tutorial/part-zero/#familiarize-with-npm - title: Install Git link: /tutorial/part-zero/#install-git - - title: Install the Gatsby CLI - link: /tutorial/part-zero/#install-the-gatsby-cli + - title: Install Gatsby CLI + link: /tutorial/part-zero/#install-gatsby-cli - title: Create a Gatsby site - link: /tutorial/part-zero/#create-a-site + link: /tutorial/part-zero/#create-a-gatsby-site - title: Set up a code editor link: /tutorial/part-zero/#set-up-a-code-editor - title: 1. Get to know Gatsby building blocks diff --git a/www/src/logo.svg b/www/src/logo.svg index 960636e365f1e..52412a3d1b6be 100644 --- a/www/src/logo.svg +++ b/www/src/logo.svg @@ -1 +1,5 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/www/src/monogram.svg b/www/src/monogram.svg index f9abc546c3949..8fa9cead5bc35 100644 --- a/www/src/monogram.svg +++ b/www/src/monogram.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/www/src/pages/404.js b/www/src/pages/404.js index 30dc49775b6b4..8ec65aeec06cb 100644 --- a/www/src/pages/404.js +++ b/www/src/pages/404.js @@ -1,6 +1,7 @@ import React from "react" import Container from "../components/container" import Layout from "../components/layout" +import { Link } from "gatsby" class FourOhFour extends React.Component { render() { @@ -8,6 +9,12 @@ class FourOhFour extends React.Component {

Page not found

+

+ Oops! The page you are looking for has been removed or relocated. +

+ +

Go Back

+
) diff --git a/www/src/pages/community/agencies.js b/www/src/pages/creators/agencies.js similarity index 75% rename from www/src/pages/community/agencies.js rename to www/src/pages/creators/agencies.js index 0dbc001119e40..2ce4270ade9bd 100644 --- a/www/src/pages/community/agencies.js +++ b/www/src/pages/creators/agencies.js @@ -1,11 +1,11 @@ import React, { Component } from "react" import { graphql } from "gatsby" -import CommunityView from "../../views/community" +import CreatorsView from "../../views/creators" class AgenciesPage extends Component { render() { const { location, data } = this.props - return + return } } diff --git a/www/src/pages/community/companies.js b/www/src/pages/creators/companies.js similarity index 75% rename from www/src/pages/community/companies.js rename to www/src/pages/creators/companies.js index c445545376ecf..9602d1d775907 100644 --- a/www/src/pages/community/companies.js +++ b/www/src/pages/creators/companies.js @@ -1,11 +1,11 @@ import React, { Component } from "react" import { graphql } from "gatsby" -import CommunityView from "../../views/community" +import CreatorsView from "../../views/creators" class CompaniesPage extends Component { render() { const { location, data } = this.props - return + return } } diff --git a/www/src/pages/community/index.js b/www/src/pages/creators/index.js similarity index 59% rename from www/src/pages/community/index.js rename to www/src/pages/creators/index.js index 4e25a8a416f4c..aad6bd5934ab0 100644 --- a/www/src/pages/community/index.js +++ b/www/src/pages/creators/index.js @@ -1,15 +1,15 @@ import React, { Component } from "react" import { graphql } from "gatsby" -import CommunityView from "../../views/community" +import CreatorsView from "../../views/creators" -class CommunityPage extends Component { +class CreatorsPage extends Component { render() { const { location, data } = this.props - return + return } } -export default CommunityPage +export default CreatorsPage export const pageQuery = graphql` query { diff --git a/www/src/pages/community/people.js b/www/src/pages/creators/people.js similarity index 75% rename from www/src/pages/community/people.js rename to www/src/pages/creators/people.js index 3a77bbdf62419..a0b139c35ef38 100644 --- a/www/src/pages/community/people.js +++ b/www/src/pages/creators/people.js @@ -1,11 +1,11 @@ import React, { Component } from "react" import { graphql } from "gatsby" -import CommunityView from "../../views/community" +import CreatorsView from "../../views/creators" class PeoplePage extends Component { render() { const { location, data } = this.props - return + return } } diff --git a/www/src/pages/docs/actions.js b/www/src/pages/docs/actions.js index d08a39aa2b145..3bfe25c895723 100644 --- a/www/src/pages/docs/actions.js +++ b/www/src/pages/docs/actions.js @@ -28,7 +28,7 @@ class ActionCreatorsDocs extends React.Component { {` `}
Redux {` `} - internally to manage state. When you implement a Gatsby API, you're + internally to manage state. When you implement a Gatsby API, you are passed a collection of actions (equivalent to boundActionCreators in redux) which you can use to manipulate state on your site.

diff --git a/www/src/pages/docs/index.js b/www/src/pages/docs/index.js index e5e80c5ac8357..36238e3ad7f1e 100644 --- a/www/src/pages/docs/index.js +++ b/www/src/pages/docs/index.js @@ -7,7 +7,6 @@ import { itemListDocs } from "../../utils/sidebar/item-list" import Container from "../../components/container" import EmailCaptureForm from "../../components/email-capture-form" import DocSearchContent from "../../components/docsearch-content" -import presets from "../../utils/presets" class IndexRoute extends React.Component { render() { @@ -18,96 +17,66 @@ class IndexRoute extends React.Component { Docs -

- Get started +

+ Gatsby.js Documentation

Gatsby is a blazing fast modern site generator for React.

-

- This quick start is intended for intermediate to advanced - developers. For a gentler intro to Gatsby, - {` `} - head to our tutorial! -

-

- Install Gatsby - {`'`}s command line tool -

-

- npm install --global gatsby-cli -

-

Using the Gatsby CLI

+

Get Started

+

There are four main ways to get started with Gatsby:

  1. -

    Create a new site.

    -
    -
    -                    
    -                      gatsby new gatsby-site
    -                      https://github.com/gatsbyjs/gatsby-starter-default
    -                    
    -                  
    -
    + Tutorial: The tutorial is written + to be as accessible as possible to people without much web + development experience.
  2. - cd gatsby-site + Quick start: The quick start + is intended for intermediate to advanced developers who prefer + to dig straight in.
  3. - gatsby develop — Gatsby will start a hot-reloading - development environment accessible at - {` `} - localhost:8000 + Recipes: A happy medium between + the tutorial and the quick start, find some quick answers for + how to accomplish some specific, common tasks with Gatsby.
  4. - Try editing the javascript pages in src/pages. - Saved changes will live reload in the browser. -
  5. -
  6. - gatsby build — Gatsby will perform an optimized - production build for your site generating static HTML and - per-route JavaScript code bundles. -
  7. -
  8. - gatsby serve — Gatsby starts a local HTML server - for testing your built site. + Choose your own adventure and peruse the various sections of the + Gatsby docs:
  9. +
      +
    • + Guides: Dive deeper into different topics + around building with Gatsby, like sourcing data, deployment, + and more. +
    • +
    • + API Reference: Learn more about Gatsby APIs + and configuration. +
    • +
    • + Releases & Migration: Find release notes + and guides for migration between major versions. +
    • +
    • + Conceptual Guide: Read high level overviews + of the Gatsby approach. +
    • +
    • + Behind the Scenes: Dig into how Gatsby works + under the hood. +
    • +
    • + Advanced Tutorials: Learn about topics that + are too large for a doc and warrant a tutorial. +
    • +
    • + Contributing: Find guides on the Gatsby + community, code of conduct, and how to get started + contributing to Gatsby. +
    • +
-

- To see detailed documentation for the CLI commands, run in the - terminal gatsby --help and for specific commands - {` `} - gatsby COMMAND_NAME --help e.g. - {` `} - gatsby develop --help. -

-

Using other starters

-

- Running gatsby new installs the default Gatsby - starter. There are - {` `} - - many other official and community starters - - {` `} - you can use to kickstart building your Gatsby site. -

-

Work through the tutorial

-

- It walks you through building a Gatsby site from scratch to a - finished polished site. - {` `} - Go to the tutorial. -

-
-

Documentation

-
- + diff --git a/www/src/pages/docs/node-apis.js b/www/src/pages/docs/node-apis.js index d152315e85e9b..ed886f075e93d 100644 --- a/www/src/pages/docs/node-apis.js +++ b/www/src/pages/docs/node-apis.js @@ -56,7 +56,7 @@ class NodeAPIDocs extends React.Component { />

- If your plugin doesn't do async work, you can just return directly. + If your plugin does not do async work, you can just return directly.


Usage

diff --git a/www/src/pages/ecosystem.js b/www/src/pages/ecosystem.js new file mode 100644 index 0000000000000..a5290bc7a6ad4 --- /dev/null +++ b/www/src/pages/ecosystem.js @@ -0,0 +1,109 @@ +import React, { Component } from "react" +import { graphql } from "gatsby" + +import Layout from "../components/layout/layout-with-heading" +import EcosystemBoard from "../components/ecosystem/ecosystem-board" + +import { EcosystemIcon } from "../assets/mobile-nav-icons" +import { PluginsIcon, StartersIcon } from "../assets/ecosystem-icons" + +class EcosystemPage extends Component { + render() { + const { + location, + data: { + allStartersYaml: { edges: startersData }, + allNpmPackage: { edges: pluginsData }, + }, + } = this.props + + const starters = startersData.map(item => { + const { + node: { + fields: { + starterShowcase: { slug, name, description, stars }, + }, + childScreenshot: { + screenshotFile: { + childImageSharp: { fixed: thumbnail }, + }, + }, + }, + } = item + + return { + slug: `/starters${slug}`, + name, + description, + stars, + thumbnail, + } + }) + + const plugins = pluginsData.map(item => item.node) + + const pageTitle = `Ecosystem` + const boardIcons = { plugins: PluginsIcon, starters: StartersIcon } + + return ( + + + + ) + } +} + +export default EcosystemPage + +export const ecosystemQuery = graphql` + query EcosystemQuery( + $featuredStarters: [String]! + $featuredPlugins: [String]! + ) { + allStartersYaml( + filter: { + fields: { starterShowcase: { slug: { in: $featuredStarters } } } + } + ) { + edges { + node { + fields { + starterShowcase { + slug + description + stars + name + } + } + childScreenshot { + screenshotFile { + childImageSharp { + fixed(width: 64, height: 64) { + ...GatsbyImageSharpFixed_noBase64 + } + } + } + } + } + } + } + allNpmPackage(filter: { name: { in: $featuredPlugins } }) { + edges { + node { + slug + name + description + humanDownloadsLast30Days + } + } + } + } +` diff --git a/www/src/pages/features.js b/www/src/pages/features.js index 90cca0a3d7d3a..e5cdb2d7fd304 100644 --- a/www/src/pages/features.js +++ b/www/src/pages/features.js @@ -112,12 +112,12 @@ const LegendTable = () => { } const FeaturesHeader = () => ( -
+

Features

- There are many ways to build a website. If you're considering Gatsby, you + There are many ways to build a website. If you’re considering Gatsby, you may also be looking at some alternatives:
    @@ -127,15 +127,15 @@ const FeaturesHeader = () => ( Jekyll let you put text or markdown in a specific directory such as pages/ in a version-controlled codebase. They then build a specific kind of site, - usually a blog, as HTML files from the content you've added. These files + usually a blog, as HTML files from the content you’ve added. These files can be cached and served from a CDN.
  • Content Management Systems (CMSs) like {` `} - Wordpress give you an online text + WordPress give you an online text editor to create content. You customize the look and feel through - choosing themes and plugins, or writing custom PHP or Javascript code. + choosing themes and plugins, or writing custom PHP or JavaScript code. Content is saved in a database, which is retrieved and sent to users when they visit the website. Depending on your requirements you can self-host your website, or use an official hosting provider. @@ -145,12 +145,12 @@ const FeaturesHeader = () => ( {` `} Squarespace are a type of hosted closed-source CMS. They focus on making it fast to build a website; - however, they don't allow self-hosting or enable you to export your + however, they don’t allow self-hosting or enable you to export your website and customize it.
- The chart below details Gatsby's capabilities in comparison with a + The chart below details Gatsby’s capabilities in comparison with a representative from each category. Click on any row to see a more detailed explanation on that feature and our rating for each system. @@ -158,7 +158,7 @@ const FeaturesHeader = () => ( Legend -
+ ) const getFeaturesData = function(data) { @@ -212,12 +212,14 @@ class FeaturesPage extends Component { enableScrollSync={true} > - - - +
+ + + +
) @@ -235,7 +237,7 @@ export const pageQuery = graphql` Subcategory Feature Gatsby - Wordpress + WordPress Squarespace Jekyll Description diff --git a/www/src/pages/index.js b/www/src/pages/index.js index 614208c795e9d..5520242f02e65 100644 --- a/www/src/pages/index.js +++ b/www/src/pages/index.js @@ -3,7 +3,7 @@ import { graphql } from "gatsby" import Helmet from "react-helmet" import Layout from "../components/layout" import presets, { colors } from "../utils/presets" -import { rhythm, options } from "../utils/typography" +import { rhythm } from "../utils/typography" import { WebpackIcon, ReactJSIcon, GraphQLIcon } from "../assets/logos" import { vP } from "../components/gutters" import Container from "../components/container" @@ -14,14 +14,80 @@ import Card from "../components/card" import UsedBy from "../components/used-by" import CardHeadline from "../components/card-headline" import Diagram from "../components/diagram" -import BlogPostPreviewItem from "../components/blog-post-preview-item" import FuturaParagraph from "../components/futura-paragraph" import Button from "../components/button" import TechWithIcon from "../components/tech-with-icon" +import HomepageEcosystem from "../components/homepage/homepage-ecosystem" +import HomepageBlog from "../components/homepage/homepage-blog" +import HomepageNewsletter from "../components/homepage/homepage-newsletter" +import { + setupScrollersObserver, + unobserveScrollers, +} from "../utils/scrollers-observer" class IndexRoute extends React.Component { + componentDidMount() { + setupScrollersObserver() + } + + componentWillUnmount() { + unobserveScrollers() + } + + combineEcosystemFeaturedItems = ({ starters, plugins, numFeatured = 3 }) => + new Array(numFeatured) + .fill(undefined) + .reduce( + (merged, _, index) => merged.concat([starters[index], plugins[index]]), + [] + ) + render() { - const blogPosts = this.props.data.allMarkdownRemark + const { + data: { + allMarkdownRemark: { edges: postsData }, + allStartersYaml: { edges: startersData }, + allNpmPackage: { edges: pluginsData }, + }, + } = this.props + + const starters = startersData.map(item => { + const { + node: { + fields: { + starterShowcase: { slug, name, description, stars }, + }, + childScreenshot: { + screenshotFile: { + childImageSharp: { fixed: thumbnail }, + }, + }, + }, + } = item + + return { + slug: `/starters${slug}`, + name, + description, + stars, + thumbnail, + type: `Starter`, + } + }) + + const plugins = pluginsData.map(item => { + item.node.type = `Plugin` + + return item.node + }) + + const ecosystemFeaturedItems = this.combineEcosystemFeaturedItems({ + plugins, + starters, + }) + + const posts = postsData.map(item => item.node) + return ( @@ -45,15 +111,14 @@ class IndexRoute extends React.Component {
Webpack, {` `} - modern JavaScript and CSS and more — all setup and waiting - for you to start building. + modern JavaScript and CSS and more — all set up and + waiting for you to start building. @@ -82,7 +147,7 @@ class IndexRoute extends React.Component { Gatsby’s rich data plugin ecosystem lets you build sites with the data you want — from one or many sources: Pull data from headless CMSs, SaaS services, APIs, databases, - your file system & more directly into your pages using + your file system, and more directly into your pages using {` `} GraphQL. @@ -100,7 +165,7 @@ class IndexRoute extends React.Component { Future-proof your website - Don't build a website with last decade's tech. The future + Do not build a website with last decade’s tech. The future of the web is mobile, JavaScript and APIs—the {` `} JAMstack. Every website is a web app and every web app is a website. @@ -134,15 +199,13 @@ class IndexRoute extends React.Component { delivered instantly to your users wherever they are. - -

Curious yet?

@@ -159,54 +222,13 @@ class IndexRoute extends React.Component {
- -
- -

- Latest from the Gatsby blog -

- {blogPosts.edges.map(({ node }) => ( - - ))} - -
-
+ + + + + +
@@ -219,7 +241,10 @@ class IndexRoute extends React.Component { export default IndexRoute export const pageQuery = graphql` - query { + query IndexRouteQuery( + $featuredStarters: [String]! + $featuredPlugins: [String]! + ) { file(relativePath: { eq: "gatsby-explanation.png" }) { childImageSharp { fluid(maxWidth: 870) { @@ -230,16 +255,55 @@ export const pageQuery = graphql` } } allMarkdownRemark( - sort: { order: DESC, fields: [frontmatter___date] } - limit: 3 + sort: { order: DESC, fields: [frontmatter___date, fields___slug] } + limit: 4 filter: { frontmatter: { draft: { ne: true } } fileAbsolutePath: { regex: "/docs.blog/" } + fields: { released: { eq: true } } } ) { edges { node { - ...BlogPostPreview_item + ...HomepageBlogPostData + } + } + } + allStartersYaml( + filter: { + fields: { starterShowcase: { slug: { in: $featuredStarters } } } + } + sort: { order: DESC, fields: [fields___starterShowcase___stars] } + ) { + edges { + node { + fields { + starterShowcase { + slug + description + stars + name + } + } + childScreenshot { + screenshotFile { + childImageSharp { + fixed(width: 64, height: 64) { + ...GatsbyImageSharpFixed_noBase64 + } + } + } + } + } + } + } + allNpmPackage(filter: { name: { in: $featuredPlugins } }) { + edges { + node { + slug + name + description + humanDownloadsLast30Days } } } diff --git a/www/src/pages/newsletter.js b/www/src/pages/newsletter.js index 56f375414a65d..41b39986d6e9d 100644 --- a/www/src/pages/newsletter.js +++ b/www/src/pages/newsletter.js @@ -9,7 +9,7 @@ import EmailCaptureForm from "../components/email-capture-form" class NewsLetter extends Component { render() { - const { location, data } = this.props + const { location } = this.props return ( diff --git a/www/src/pages/starters.js b/www/src/pages/starters.js index 7097ba1e4f54c..3620337095d40 100644 --- a/www/src/pages/starters.js +++ b/www/src/pages/starters.js @@ -1,18 +1,18 @@ import React, { Component } from "react" import { graphql } from "gatsby" -import StartersView from "../views/starters" +import StarterLibraryView from "../views/starter-library" -class StartersPage extends Component { +class StarterLibraryWrapper extends Component { render() { const data = this.props.data const location = this.props.location - return + return } } -export default StartersPage +export default StarterLibraryWrapper export const showcaseQuery = graphql` query SiteShowcaseQuery { @@ -30,6 +30,7 @@ export const showcaseQuery = graphql` owner name githubFullName + gatsbyMajorVersion allDependencies gatsbyDependencies miscDependencies diff --git a/www/src/templates/tags.js b/www/src/templates/tags.js index 2e24825d3b252..e0353071fdec3 100644 --- a/www/src/templates/tags.js +++ b/www/src/templates/tags.js @@ -61,10 +61,11 @@ export const pageQuery = graphql` query($tag: String) { allMarkdownRemark( limit: 2000 - sort: { fields: [frontmatter___date], order: DESC } + sort: { fields: [frontmatter___date, fields___slug], order: DESC } filter: { frontmatter: { tags: { in: [$tag] } } fileAbsolutePath: { regex: "/docs.blog/" } + fields: { released: { eq: true } } } ) { totalCount diff --git a/www/src/templates/template-blog-list.js b/www/src/templates/template-blog-list.js index c7d04895f6769..d38971a732965 100644 --- a/www/src/templates/template-blog-list.js +++ b/www/src/templates/template-blog-list.js @@ -18,7 +18,8 @@ class BlogPostsIndex extends React.Component { return ( -
-
+
) } @@ -111,10 +112,11 @@ export default BlogPostsIndex export const pageQuery = graphql` query blogListQuery($skip: Int!, $limit: Int!) { allMarkdownRemark( - sort: { order: DESC, fields: [frontmatter___date] } + sort: { order: DESC, fields: [frontmatter___date, fields___slug] } filter: { frontmatter: { draft: { ne: true } } fileAbsolutePath: { regex: "/docs.blog/" } + fields: { released: { eq: true } } } limit: $limit skip: $skip diff --git a/www/src/templates/template-blog-post.js b/www/src/templates/template-blog-post.js index 18520ae4f3833..1b165759a4579 100644 --- a/www/src/templates/template-blog-post.js +++ b/www/src/templates/template-blog-post.js @@ -12,10 +12,16 @@ import Container from "../components/container" import EmailCaptureForm from "../components/email-capture-form" import TagsSection from "../components/tags-section" import HubspotForm from "../components/hubspot-form" +import Pullquote from "../components/shared/pullquote" +import Chart from "../components/chart" const renderAst = new rehypeReact({ createElement: React.createElement, - components: { "hubspot-form": HubspotForm }, + components: { + "hubspot-form": HubspotForm, + "date-chart": Chart, + pullquote: Pullquote, + }, }).Compiler class BlogPostTemplate extends React.Component { @@ -67,174 +73,192 @@ class BlogPostTemplate extends React.Component { return ( - {/* Add long list of social meta tags */} - - {post.frontmatter.title} - - - - - - - {post.frontmatter.image && ( - + {/* Add long list of social meta tags */} + + {post.frontmatter.title} + - )} - {post.frontmatter.image && ( - )} - - - - - - - - {canonicalLink} - -
-
- - + + + {post.frontmatter.image && ( + - -
-
+ )} + + + + + + + + {canonicalLink} + +
- -

+ - - {post.frontmatter.author.id} - -

- - {post.frontmatter.author.bio} - - {post.timeToRead} min read · {post.frontmatter.date} - {post.frontmatter.canonicalLink && ( - - {` `} - (originally published at - {` `} - - {post.frontmatter.publishedAt} - - ) - - )} - -
-
-

- {this.props.data.markdownRemark.frontmatter.title} -

- {post.frontmatter.image && - !(post.frontmatter.showImageInArticle === false) && ( + /> + +
- - {post.frontmatter.imageAuthor && - post.frontmatter.imageAuthorLink && ( - - Image by + +

+ + {post.frontmatter.author.id} + +

+ + {post.frontmatter.author.bio} + + {post.timeToRead} min read · {post.frontmatter.date} + {post.frontmatter.canonicalLink && ( + + {` `} + (originally published at {` `} - - {post.frontmatter.imageAuthor} + + {post.frontmatter.publishedAt} -
+ ) + )} +
- )} -
- {renderAst(this.props.data.markdownRemark.htmlAst)} -
- - + +

+ {this.props.data.markdownRemark.frontmatter.title} +

+ {post.frontmatter.image && + !(post.frontmatter.showImageInArticle === false) && ( +
+ + {post.frontmatter.imageAuthor && + post.frontmatter.imageAuthorLink && ( + + Image by + {` `} + + {post.frontmatter.imageAuthor} + + + )} +
+ )} +
+ {renderAst(this.props.data.markdownRemark.htmlAst)} +
+ + +
{creator.name} - +
{page.frontmatter.title} - + + + - - diff --git a/www/src/templates/template-starter-page.js b/www/src/templates/template-starter-page.js new file mode 100644 index 0000000000000..def25d4ddfc55 --- /dev/null +++ b/www/src/templates/template-starter-page.js @@ -0,0 +1,177 @@ +import React from "react" +import Helmet from "react-helmet" +import { graphql } from "gatsby" + +import Layout from "../components/layout" + +import presets from "../utils/presets" +import StarterHeader from "../views/starter/header" +import StarterMeta from "../views/starter/meta" +import StarterScreenshot from "../views/starter/screenshot" +import StarterSource from "../views/starter/source" +import StarterDetails from "../views/starter/details" + +class StarterTemplate extends React.Component { + state = { + showAllDeps: false, + } + render() { + const { startersYaml } = this.props.data + const { + url: demoUrl, + repo: repoUrl, + fields: { starterShowcase }, + childScreenshot: { screenshotFile }, + } = startersYaml + + // preprocessing of dependencies + const { miscDependencies = [], gatsbyDependencies = [] } = starterShowcase + const allDeps = [ + ...gatsbyDependencies.map(([name, ver]) => name), + ...miscDependencies.map(([name, ver]) => name), + ] + const shownDeps = this.state.showAllDeps ? allDeps : allDeps.slice(0, 15) + const showMore = + !this.state.showAllDeps && allDeps.length - shownDeps.length > 0 + + // plug for now + const isModal = false + const repoName = starterShowcase.name + return ( + +
+
+ + {`${repoName}: Gatsby Starter`} + + + + + + + + + + + + + +
+ + +
+ + +
+
+
+ ) + } + + showAllDeps = () => { + this.setState({ showAllDeps: true }) + } +} + +export default StarterTemplate + +export const pageQuery = graphql` + query TemplateStarter($slug: String!) { + startersYaml(fields: { starterShowcase: { slug: { eq: $slug } } }) { + id + fields { + starterShowcase { + slug + stub + description + stars + lastUpdated + owner + name + githubFullName + allDependencies + gatsbyDependencies + miscDependencies + } + } + url + repo + description + tags + features + internal { + type + } + childScreenshot { + screenshotFile { + childImageSharp { + fluid(maxWidth: 700) { + ...GatsbyImageSharpFluid + } + resize( + width: 1500 + height: 1500 + cropFocus: CENTER + toFormat: JPG + ) { + src + } + } + } + } + } + } +` diff --git a/www/src/templates/template-starter-showcase.js b/www/src/templates/template-starter-showcase.js deleted file mode 100644 index 697b0a0567294..0000000000000 --- a/www/src/templates/template-starter-showcase.js +++ /dev/null @@ -1,544 +0,0 @@ -import React from "react" -import Helmet from "react-helmet" -import { Link, graphql } from "gatsby" -import Img from "gatsby-image" - -import FaExtLink from "react-icons/lib/fa/external-link" -import Layout from "../components/layout" -import ShareMenu from "../components/share-menu" -import presets, { colors } from "../utils/presets" -import { /*typography, */ rhythm, scale, options } from "../utils/typography" -import sharedStyles from "../views/shared/styles" -import MdLaunch from "react-icons/lib/md/launch" -import GithubIcon from "react-icons/lib/fa/github" - -const gutter = rhythm(3 / 4) -const gutterDesktop = rhythm(6 / 4) - -class StarterTemplate extends React.Component { - state = { - showAllDeps: false, - } - render() { - const { startersYaml } = this.props.data - const { - url: demoUrl, - repo: repoUrl, - tags, - description, - features, - fields: { starterShowcase }, - childScreenshot: { screenshotFile }, - } = startersYaml - - // preprocessing of dependencies - const { miscDependencies = [], gatsbyDependencies = [] } = starterShowcase - const allDeps = [ - ...gatsbyDependencies.map(([name, ver]) => name), - ...miscDependencies.map(([name, ver]) => name), - ] - const shownDeps = this.state.showAllDeps ? allDeps : allDeps.slice(0, 15) - const showMore = - !this.state.showAllDeps && allDeps.length - shownDeps.length > 0 - - // plug for now - const isModal = false - const repoName = starterShowcase.name - return ( - -
-
- - {`${repoName}: Gatsby Starter`} - - - - - - - - - - -
- - {starterShowcase.owner} - - {` `} - / -
-

- {starterShowcase.stub} -

- - - ⭐ - - {` `} - {starterShowcase.stars} - -
-
-
- {repoUrl && ( - - )} - -
- Try this starter - - Deploy to Netlify - -
-
- - Last Updated - - {showDate(starterShowcase.lastUpdated)} -
-
-
- - {screenshotFile && ( - {`Screenshot - )} -
-
-
- Tags -
-
{tags.join(`, `)}
- -
- Description -
-
{description}
- -
- Features -
-
- {features ? ( -
    - {features.map((f, i) =>
  • {f}
  • )} -
- ) : ( - `No features` - )} -
- -
- Dependencies -
- -
-
- {shownDeps && - shownDeps.map( - dep => - /^gatsby-/.test(dep) ? ( -
- {dep} -
- ) : ( - - ) - )} - {showMore && ( - - )} -
-
-
-
-
-
- ) - } -} - -export default StarterTemplate - -export const pageQuery = graphql` - query TemplateStarter($slug: String!) { - startersYaml(fields: { starterShowcase: { slug: { eq: $slug } } }) { - id - fields { - starterShowcase { - slug - stub - description - stars - lastUpdated - owner - name - githubFullName - allDependencies - gatsbyDependencies - miscDependencies - } - } - url - repo - description - tags - features - internal { - type - } - childScreenshot { - screenshotFile { - childImageSharp { - fluid(maxWidth: 700) { - ...GatsbyImageSharpFluid - } - resize( - width: 1500 - height: 1500 - cropFocus: CENTER - toFormat: JPG - ) { - src - } - } - } - } - } - } -` - -const styles = { - link: { - color: colors.gatsby, - textDecoration: `none`, - }, - prevNextLink: { - color: colors.lilac, - fontFamily: options.headerFontFamily.join(`,`), - position: `absolute`, - top: 280, - width: 300, - transform: `translateX(-75px) rotate(90deg)`, - [presets.Desktop]: { - ...scale(-1 / 6), - }, - }, - prevNextLinkSiteTitle: { - color: colors.gatsby, - fontWeight: `bold`, - }, - prevNextImage: { - borderRadius: presets.radius, - boxShadow: `0 0 38px -8px ${colors.gatsby}`, - }, - prevNextPermalinkLabel: { - color: colors.gray.calm, - fontFamily: options.headerFontFamily.join(`,`), - fontWeight: `normal`, - }, - prevNextPermalinkImage: { - marginBottom: 0, - marginTop: rhythm(options.blockMarginBottom), - }, - prevNextPermalinkTitle: { - color: colors.gatsby, - display: `block`, - position: `relative`, - }, - prevNextPermalinkContainer: { - width: `50%`, - }, - truncate: { - whiteSpace: `nowrap`, - overflow: `hidden`, - textOverflow: `ellipsis`, - display: `block`, - width: `100%`, - }, - prevNextPermalinkArrow: { - color: colors.lilac, - marginRight: 4, - verticalAlign: `sub`, - position: `absolute`, - left: `-${rhythm(3 / 4)}`, - top: `50%`, - transform: `translateY(-50%)`, - }, - prevNextPermalinkMeta: { - marginLeft: rhythm(6 / 4), - display: `flex`, - flexDirection: `row`, - justifyContent: `flex-end`, - }, - prevNextPermalinkMetaInner: { - flexBasis: 540, - flexGrow: 0, - flexShrink: 1, - minWidth: 0, - }, - button: { - border: 0, - borderRadius: presets.radius, - cursor: `pointer`, - fontFamily: options.headerFontFamily.join(`,`), - fontWeight: `bold`, - padding: `${rhythm(1 / 5)} ${rhythm(2 / 3)}`, - WebkitFontSmoothing: `antialiased`, - "&&": { - backgroundColor: colors.gatsby, - borderBottom: `none`, - boxShadow: `none`, - color: `white`, - "&:hover": { - backgroundColor: colors.gatsby, - }, - }, - }, -} - -function showDate(dt) { - const date = new Date(dt) - return date.toLocaleDateString(`en-US`, { - month: `short`, - day: `numeric`, - year: `numeric`, - }) -} diff --git a/www/src/utils/colors.js b/www/src/utils/colors.js index 649a594cc1fe6..6e78f906e8c3f 100644 --- a/www/src/utils/colors.js +++ b/www/src/utils/colors.js @@ -4,6 +4,10 @@ const colors = { // original palette by @SachaG // @see https://www.figma.com/file/J6IYJEtdRmwJQOrcZ2DfvxDD/Gatsby gatsby: `#663399`, // was #744c9e + gatsbyDark: `#442266`, + gatsbyDarker: `#221133`, + lemon: `#ffdf37`, + mint: `#73fff7`, lilac: `#8c65b3`, lavender: `#b190d5`, wisteria: `#ccb2e5`, @@ -12,6 +16,10 @@ const colors = { accent: `#ffb238`, // "Mustard", success: `#37b635`, warning: `#ec1818`, + accentLight: `#ffeccd`, + accentDark: `#9e6100`, + skyLight: `#dcfffd`, + skyDark: `#0a75c2`, ui: { border: `#ede7f3`, bright: `#e0d6eb`, @@ -21,9 +29,11 @@ const colors = { gray: { dark: gray(8, 270), copy: gray(12, 270), + lightCopy: gray(35, 270), calm: gray(46, 270), bright: gray(64, 270), light: gray(80, 270), + superLight: gray(96, 270), }, code: { bg: `#fdfaf6`, // colors.a[0] #fcf6f0 diff --git a/www/src/utils/form-styles.js b/www/src/utils/form-styles.js index cdbd98ad12090..512c8a16065f5 100644 --- a/www/src/utils/form-styles.js +++ b/www/src/utils/form-styles.js @@ -1,5 +1,4 @@ import presets, { colors } from "../utils/presets" -import { style } from "glamor" import { rhythm, options } from "../utils/typography" export const formInput = { diff --git a/www/src/utils/presets.js b/www/src/utils/presets.js index 6a1f0c2cc5768..9bf6c7a255f5d 100644 --- a/www/src/utils/presets.js +++ b/www/src/utils/presets.js @@ -37,4 +37,5 @@ module.exports = { headerHeight: `3.5rem`, bannerHeight: `2.5rem`, sidebarUtilityHeight: `2.5rem`, + pageHeadingDesktopWidth: `3.5rem`, } diff --git a/www/src/utils/reach-router-state-manager.js b/www/src/utils/reach-router-state-manager.js index 5a1926d93ff07..9b820b6216e0b 100644 --- a/www/src/utils/reach-router-state-manager.js +++ b/www/src/utils/reach-router-state-manager.js @@ -1,33 +1,55 @@ -import React from "react" +import React, { Component, Fragment } from "react" import queryString from "query-string" import { navigate } from "@reach/router" -// manage your state entirely within the router, so that it's copiable -// https://gist.github.com/sw-yx/efd9ee71669413bca6a895d87e30742f - -export default defaultURLState => Component => props => { - const { location } = props - const urlState = { ...defaultURLState, ...queryString.parse(location.search) } - const setURLState = newState => { - const finalState = { ...urlState, ...newState } // merge with existing urlstate - Object.keys(finalState).forEach(function(k) { - if ( - // Don't save some state values if it meets the conditions below. - !finalState[k] || // falsy - finalState[k] === `` || // string - (Array.isArray(finalState[k]) && !finalState[k].length) || // array - finalState[k] === defaultURLState[k] // same as default state, unnecessary - ) { - delete finalState[k] // Drop query params with new values = falsy +const emptySearchState = { s: ``, c: [], d: [], v: [], sort: `recent` } +class RRSM extends Component { + state = emptySearchState + + static defaultProps = { + defaultSearchState: {}, + } + + setUrlState = newState => { + const finalState = { ...this.state, ...newState } + // update RSSM state + this.setState({ ...finalState }) + + // sync url to RSSM + const params = Object.keys(finalState).reduce((merged, key) => { + // right now the sort behavior is default, it doesn't show in the url + if (finalState[key] && key !== `sort`) { + merged[key] = finalState[key] } - }) - return navigate(`${location.pathname}?${queryString.stringify(finalState)}`) + return merged + }, {}) + + return navigate(`${location.pathname}?${queryString.stringify(params)}`) + } + + componentDidMount() { + const urlState = queryString.parse(location.search) + + // if urlState is empty, default to v2 + if (Object.keys(urlState).length === 0) { + return this.setUrlState(this.props.defaultSearchState) + } + + // otherwise, set to urlState + return this.setUrlState(urlState) + } + + render() { + const { render } = this.props + return ( + + {render({ + setURLState: this.setUrlState, + urlState: this.state, + })} + + ) } - return ( - - ) } + +export default RRSM diff --git a/www/src/utils/scrollers-observer.js b/www/src/utils/scrollers-observer.js new file mode 100644 index 0000000000000..8be840f568e68 --- /dev/null +++ b/www/src/utils/scrollers-observer.js @@ -0,0 +1,60 @@ +let observer +let scrollers = [] + +export const SCROLLER_CLASSNAME = `scrollerWithLead` + +export const setupScrollersObserver = () => { + if (typeof window.IntersectionObserver !== `undefined`) { + const options = { rootMargin: `0px`, threshold: [1] } + observer = new IntersectionObserver(handleIntersect, options) + + scrollers = Array.from(document.querySelectorAll(`.${SCROLLER_CLASSNAME}`)) + + scrollers.forEach(scroller => observer.observe(scroller)) + } +} + +export const unobserveScrollers = () => { + if (typeof window.IntersectionObserver !== `undefined`) { + scrollers.forEach(scroller => observer.unobserve(scroller)) + } +} + +const handleIntersect = (entries, observer) => { + entries.forEach(entry => { + const target = entry.target + + if (entry.intersectionRatio > 0.5) { + setTimeout( + () => turnOnLeadScroll({ target, duration: 1000, distance: 20 }), + 250 + ) + observer.unobserve(target) + } + }) +} + +const turnOnLeadScroll = ({ target, duration, distance }) => { + let startTime = null + + function animation(currentTime) { + if (startTime === null) { + startTime = currentTime + } + + const timeElapsed = currentTime - startTime + const getDistanceToScroll = ease(timeElapsed, 0, distance, duration) + + target.scroll({ top: 0, left: getDistanceToScroll }) + + if (timeElapsed < duration) { + requestAnimationFrame(animation) + } + } + + function ease(t, b, c, d) { + return -c * (t /= d) * (t - 2) + b + } + + requestAnimationFrame(animation) +} diff --git a/www/src/utils/sidebar/create-link.js b/www/src/utils/sidebar/create-link.js index 6aa32bfd94bb7..67388edc4203d 100644 --- a/www/src/utils/sidebar/create-link.js +++ b/www/src/utils/sidebar/create-link.js @@ -27,7 +27,7 @@ const createLink = ({ background: colors.ui.border, bottom: 0, top: `auto`, - content: ` `, + content: `''`, height: 1, position: `absolute`, right: 0, @@ -122,7 +122,7 @@ const styles = { }, "&:before": { borderRadius: `100%`, - content: ` `, + content: `''`, transform: `scale(0.1)`, width: bulletSize, [presets.Tablet]: { @@ -132,7 +132,7 @@ const styles = { "&:after": { background: colors.gatsby, borderRadius: 4, - content: ` `, + content: `''`, left: bulletOffset.default.left + 7, opacity: 0, transform: `translateX(-200px)`, diff --git a/www/src/utils/styles.js b/www/src/utils/styles.js index b5993f8bc0588..8b63f90ae5ee2 100644 --- a/www/src/utils/styles.js +++ b/www/src/utils/styles.js @@ -1,10 +1,10 @@ import hex2rgba from "hex2rgba" -import { css } from "glamor" +import { keyframes } from "react-emotion" import presets, { colors } from "./presets" import { rhythm, scale, options } from "./typography" -const stripeAnimation = css.keyframes({ +const stripeAnimation = keyframes({ "0%": { backgroundPosition: `0 0` }, "100%": { backgroundPosition: `30px 60px` }, }) @@ -60,20 +60,13 @@ export const buttonStyles = { outline: 0, boxShadow: `0 0 0 0.2rem ${hex2rgba(colors.lilac, 0.25)}`, }, - ":after": { - content: ``, - display: `block`, - }, - "& svg": { - marginLeft: `.2em`, - }, + ":after": { content: `''`, display: `block` }, + "& svg": { marginLeft: `.2em` }, [presets.Tablet]: { ...scale(1 / 5), padding: `${rhythm(2 / 6)} ${rhythm(3 / 5)}`, }, - [presets.VHd]: { - padding: `${rhythm(1 / 2)} ${rhythm(1)}`, - }, + [presets.VHd]: { padding: `${rhythm(1 / 2)} ${rhythm(1)}` }, }, secondary: { backgroundColor: `transparent`, @@ -88,9 +81,7 @@ export const buttonStyles = { fontSize: scale(2 / 5).fontSize, padding: `${rhythm(2 / 4)} ${rhythm(3 / 5)}`, }, - [presets.VHd]: { - padding: `${rhythm(1 / 2)} ${rhythm(1)}`, - }, + [presets.VHd]: { padding: `${rhythm(1 / 2)} ${rhythm(1)}` }, }, small: { fontSize: scale(-1 / 3).fontSize, @@ -104,6 +95,19 @@ export const buttonStyles = { padding: `${rhythm(2 / 5)} ${rhythm(1 / 2)}`, }, }, + tiny: { + fontSize: scale(-1 / 3).fontSize, + padding: `${rhythm(1 / 5)} ${rhythm(1 / 3)}`, + [presets.Tablet]: { + fontSize: scale(-1 / 4).fontSize, + padding: `${rhythm(1 / 5)} ${rhythm(1 / 3)}`, + }, + [presets.VHd]: { + fontSize: scale(-1 / 5).fontSize, + padding: `${rhythm(1 / 5)} ${rhythm(1 / 3)}`, + }, + }, + ondark: { border: `1px solid ${colors.ui.light}` }, } export const svgStyles = { diff --git a/www/src/utils/typography.js b/www/src/utils/typography.js index cd0fddfae6835..500a970540fa5 100644 --- a/www/src/utils/typography.js +++ b/www/src/utils/typography.js @@ -22,7 +22,6 @@ const _options = { headerFontFamily, bodyFontFamily: [`Spectral`, `Georgia`, `Times New Roman`, `Times`, `serif`], monospaceFontFamily: [ - `Space Mono`, `SFMono-Regular`, `Menlo`, `Monaco`, @@ -88,22 +87,22 @@ const _options = { hr: { backgroundColor: colors.ui.light, }, + "tt, code, kbd, samp": { + // reset line-height: 1.4rem set by + // https://github.com/KyleAMathews/typography.js/blob/3c99e905414d19cda124a7baabeb7a99295fec79/packages/typography/src/utils/createStyles.js#L198 + lineHeight: `inherit`, + }, "tt, code, kbd": { background: colors.code.bg, - paddingTop: `0.1em`, - paddingBottom: `0.1em`, + paddingTop: `0.2em`, + paddingBottom: `0.2em`, }, "tt, code, kbd, .gatsby-code-title": { fontFamily: options.monospaceFontFamily.join(`,`), fontSize: `80%`, - // Disable ligatures as they look funny w/ Space Mono as code. - fontVariant: `none`, - WebkitFontFeatureSettings: `"clig" 0, "calt" 0`, - fontFeatureSettings: `"clig" 0, "calt" 0`, }, ".gatsby-highlight": { background: colors.code.bg, - boxShadow: `inset 0 0 0 1px ${colors.code.border}`, borderRadius: `${presets.radius}px`, padding: rhythm(options.blockMarginBottom), marginBottom: rhythm(options.blockMarginBottom), @@ -123,8 +122,10 @@ const _options = { }, ".gatsby-highlight pre code": { display: `block`, - fontSize: `95%`, - lineHeight: options.baseLineHeight, + fontSize: `94%`, + lineHeight: 1.5, + // reset code vertical padding declared earlier + padding: 0, }, ".gatsby-highlight-code-line": { background: colors.code.border, @@ -225,14 +226,14 @@ const _options = { }, ".gatsby-code-title": { background: colors.code.bg, - border: `1px solid ${colors.code.border}`, - borderBottomWidth: 0, + borderBottom: `1px solid ${colors.code.border}`, color: colors.code.text, marginLeft: rhythm(-options.blockMarginBottom), marginRight: rhythm(-options.blockMarginBottom), - padding: `${rhythm(options.blockMarginBottom / 2)} ${rhythm( + padding: `${rhythm(options.blockMarginBottom)} ${rhythm( options.blockMarginBottom - )}`, + )} ${rhythm(options.blockMarginBottom / 2)}`, + fontSize: `74%`, }, "@media (max-width:634px)": { ".gatsby-highlight, .gatsby-resp-image-link": { @@ -240,11 +241,6 @@ const _options = { borderLeft: 0, borderRight: 0, }, - ".gatsby-highlight": { - boxShadow: `inset 0 1px 0 0 ${colors.code.border}, inset 0 -1px 0 0 ${ - colors.code.border - }`, - }, }, video: { width: `100%`, @@ -287,9 +283,9 @@ const _options = { )}`, }, ".gatsby-code-title": { - padding: `${rhythm(options.blockMarginBottom / 2)} ${rhythm( + padding: `${rhythm(options.blockMarginBottom)} ${rhythm( options.blockMarginBottom * 1.5 - )}`, + )} ${rhythm(options.blockMarginBottom / 2)}`, }, }, [presets.VVHd]: { diff --git a/www/src/views/community/badge.js b/www/src/views/creators/badge.js similarity index 100% rename from www/src/views/community/badge.js rename to www/src/views/creators/badge.js diff --git a/www/src/views/community/check.svg b/www/src/views/creators/check.svg similarity index 100% rename from www/src/views/community/check.svg rename to www/src/views/creators/check.svg diff --git a/www/src/views/community/community-header.js b/www/src/views/creators/creators-header.js similarity index 80% rename from www/src/views/community/community-header.js rename to www/src/views/creators/creators-header.js index 5600903e53878..d399eb1ec99fd 100644 --- a/www/src/views/community/community-header.js +++ b/www/src/views/creators/creators-header.js @@ -6,42 +6,41 @@ import Checkmark from "./check.svg" import Button from "../../components/button" import ArrowForwardIcon from "react-icons/lib/md/arrow-forward" -const CommunityHeaderLink = ({ linkTo, children }) => ( -
  • - - {children} - -
  • -) +// const CreatorsHeaderLink = ({ linkTo, children }) => ( +//
  • +// +// {children} +// +//
  • +// ) -class CommunityHeader extends Component { +class CreatorsHeader extends Component { render() { - const { forHire, hiring, submissionText } = this.props + const { /*forHire, hiring,*/ submissionText } = this.props return ( -
    - All - + All + People - - + + Agencies - - + + Companies - + */}
    - +
    ) } } -export default CommunityHeader +export default CreatorsHeader const styles = { header: { @@ -163,7 +162,7 @@ const styles = { }, }, }, - communityHeaderLink: { + CreatorsHeaderLink: { "&&": { ...scale(-1 / 3), lineHeight: 1, diff --git a/www/src/views/community/index.js b/www/src/views/creators/index.js similarity index 94% rename from www/src/views/community/index.js rename to www/src/views/creators/index.js index 606ef22636147..9282927be61f3 100644 --- a/www/src/views/community/index.js +++ b/www/src/views/creators/index.js @@ -2,7 +2,7 @@ import React, { Component } from "react" import Helmet from "react-helmet" import typography, { rhythm, scale } from "../../utils/typography" import Layout from "../../components/layout" -import CommunityHeader from "./community-header" +import CreatorsHeader from "./creators-header" import Badge from "./badge" import GithubIcon from "react-icons/lib/go/mark-github" import { navigate } from "gatsby" @@ -12,7 +12,7 @@ import ThumbnailLink from "../shared/thumbnail" import EmptyGridItems from "../shared/empty-grid-items" import sharedStyles from "../shared/styles" -class CommunityView extends Component { +class CreatorsView extends Component { state = { creators: this.props.data.allCreatorsYaml.edges, for_hire: false, @@ -100,14 +100,14 @@ class CommunityView extends Component { {title} - applyFilter(filter)} forHire={this.state.for_hire} hiring={this.state.hiring} submissionText={submissionText} />
    No results

    ) : ( creators.map(item => ( -
    +
    )) )} - {creators.length && } + {creators.length && }
    @@ -184,10 +184,10 @@ class CommunityView extends Component { } } -export default CommunityView +export default CreatorsView const styles = { - showcaseItem: { + creatorCard: { display: `flex`, flexDirection: `column`, margin: rhythm(3 / 4), diff --git a/www/src/views/shared/collapsible.js b/www/src/views/shared/collapsible.js index 460fcd4c981a8..3d970216df39a 100644 --- a/www/src/views/shared/collapsible.js +++ b/www/src/views/shared/collapsible.js @@ -17,7 +17,7 @@ class Collapsible extends Component { } render() { - const { heading, children } = this.props + const { heading, fixed, children } = this.props const { collapsed } = this.state return ( @@ -26,6 +26,9 @@ class Collapsible extends Component { borderBottom: collapsed ? 0 : `1px solid ${colors.ui.light}`, display: collapsed ? false : `flex`, flex: collapsed ? `0 0 auto` : `1 1 auto`, + minHeight: fixed ? `${fixed}px` : `initial`, + maxHeight: fixed ? `${fixed}px` : `initial`, + flexBasis: 0, // paddingBottom: collapsed ? 0 : rhythm(options.blockMarginBottom), }} > diff --git a/www/src/views/shared/sidebar.js b/www/src/views/shared/sidebar.js index 637db20e4c480..c9bc09769747f 100644 --- a/www/src/views/shared/sidebar.js +++ b/www/src/views/shared/sidebar.js @@ -1,10 +1,11 @@ import React from "react" -import { merge, css } from "glamor" import MdFilterList from "react-icons/lib/md/filter-list" import styles from "../shared/styles" -export const SidebarContainer = ({ children }) => ( -
    {children}
    +export const SidebarContainer = ({ children, className }) => ( +
    + {children} +
    ) export const SidebarBody = ({ children }) => ( diff --git a/www/src/views/shared/styles.js b/www/src/views/shared/styles.js index c0fe4e9041e9f..7bf291cb7f8d8 100644 --- a/www/src/views/shared/styles.js +++ b/www/src/views/shared/styles.js @@ -1,12 +1,11 @@ import typography, { options, rhythm, scale } from "../../utils/typography" import presets, { colors } from "../../utils/presets" -import { style } from "glamor" import hex2rgba from "hex2rgba" const { curveDefault, speedDefault } = presets.animation const styles = { - featuredSitesCard: style({ + featuredSitesCard: { display: `flex`, flexDirection: `column`, flexGrow: 0, @@ -21,7 +20,7 @@ const styles = { [presets.VHd]: { width: 400, }, - }), + }, showcaseList: { display: `flex`, flexWrap: `wrap`, @@ -65,7 +64,7 @@ const styles = { margin: `0 auto`, display: `block`, }, - withTitleHover: style({ + withTitleHover: { "& .title": { transition: `box-shadow .3s cubic-bezier(.4,0,.2,1), transform .3s cubic-bezier(.4,0,.2,1)`, boxShadow: `inset 0 0px 0px 0px ${colors.ui.whisper}`, @@ -73,7 +72,7 @@ const styles = { "&:hover .title": { boxShadow: `inset 0 -3px 0px 0px ${colors.ui.bright}`, }, - }), + }, loadMoreButton: { alignItems: `center`, display: `flex`, @@ -261,6 +260,8 @@ const styles = { color: colors.lilac, fontWeight: `normal`, }, + gutter: rhythm(3 / 4), + gutterDesktop: rhythm(6 / 4), } export default styles diff --git a/www/src/views/shared/thumbnail.js b/www/src/views/shared/thumbnail.js index e73f30150362e..26a29b15ca1d6 100644 --- a/www/src/views/shared/thumbnail.js +++ b/www/src/views/shared/thumbnail.js @@ -20,8 +20,8 @@ const ThumbnailLink = ({ slug, image, title, children }) => { ( (
    ( { class FilteredShowcase extends Component { state = { search: ``, - sitesToShow: 9, + sitesToShow: 12, } constructor(props) { diff --git a/www/src/views/showcase/showcase-list.js b/www/src/views/showcase/showcase-list.js index 227a52992e49a..93c18a44222cf 100644 --- a/www/src/views/showcase/showcase-list.js +++ b/www/src/views/showcase/showcase-list.js @@ -17,7 +17,7 @@ const ShowcaseList = ({ items, count }) => { if (count) items = items.slice(0, count) return ( -
    +
    {items.map( ({ node }) => node.fields && @@ -94,7 +94,7 @@ const ShowcaseList = ({ items, count }) => { ) )} {items.length && } -
    + ) } diff --git a/www/src/views/starters/filtered-starters.js b/www/src/views/starter-library/filtered-starters.js similarity index 69% rename from www/src/views/starters/filtered-starters.js rename to www/src/views/starter-library/filtered-starters.js index f755765b45fb1..304c667c07d9f 100644 --- a/www/src/views/starters/filtered-starters.js +++ b/www/src/views/starter-library/filtered-starters.js @@ -1,6 +1,7 @@ import React, { Component } from "react" import SearchIcon from "../../components/search-icon" import MdArrowDownward from "react-icons/lib/md/arrow-downward" +import ArrowForwardIcon from "react-icons/lib/md/arrow-forward" import MdSort from "react-icons/lib/md/sort" import { options, rhythm } from "../../utils/typography" @@ -9,7 +10,7 @@ import presets, { colors } from "../../utils/presets" import styles from "../shared/styles" import LHSFilter from "./lhs-filter" -import StartersList from "./starters-list" +import StarterList from "./starter-list" import Button from "../../components/button" import { SidebarHeader, @@ -20,26 +21,39 @@ import { ContentContainer, } from "../shared/sidebar" import ResetFilters from "../shared/reset-filters" +import DebounceInput from "../../components/debounce-input" export default class FilteredStarterLibrary extends Component { state = { - sitesToShow: 9, + sitesToShow: 12, } - setFiltersCategory = filtersCategory => + setFiltersCategory = filtersCategory => { this.props.setURLState({ c: Array.from(filtersCategory) }) + } setFiltersDependency = filtersDependency => this.props.setURLState({ d: Array.from(filtersDependency) }) + setFiltersVersion = filtersVersion => + this.props.setURLState({ v: Array.from(filtersVersion) }) toggleSort = () => this.props.setURLState({ sort: this.props.urlState.sort === `recent` ? `stars` : `recent`, }) - resetFilters = () => this.props.setURLState({ c: null, d: null, s: `` }) + resetFilters = () => this.props.setURLState({ c: [], d: [], v: [], s: `` }) + showMoreSites = starters => { + let showAll = + this.state.sitesToShow + 15 > starters.length ? starters.length : false + this.setState({ + sitesToShow: showAll ? showAll : this.state.sitesToShow + 15, + }) + } + onChangeUrlWithText = value => this.props.setURLState({ s: value }) render() { - const { data, urlState, setURLState } = this.props + const { data, urlState } = this.props const { setFiltersCategory, setFiltersDependency, + setFiltersVersion, resetFilters, toggleSort, } = this @@ -49,21 +63,29 @@ export default class FilteredStarterLibrary extends Component { const filtersDependency = new Set( Array.isArray(urlState.d) ? urlState.d : [urlState.d] ) + const filtersVersion = new Set( + Array.isArray(urlState.v) ? urlState.v : [urlState.v] + ) // https://stackoverflow.com/a/32001444/1106414 const filters = new Set( [].concat( - ...[filtersCategory, filtersDependency].map(set => Array.from(set)) + ...[filtersCategory, filtersDependency, filtersVersion].map(set => + Array.from(set) + ) ) ) - let starters = data.allStartersYaml.edges + // stopgap for missing gh data (#8763) + let starters = data.allStartersYaml.edges.filter( + ({ node: starter }) => starter.fields && starter.fields.starterShowcase + ) if (urlState.s.length > 0) { - starters = starters.filter(starter => { - return JSON.stringify(starter.node) + starters = starters.filter(starter => + JSON.stringify(starter.node) .toLowerCase() .includes(urlState.s) - }) + ) } if (filtersCategory.size > 0) { @@ -73,14 +95,37 @@ export default class FilteredStarterLibrary extends Component { starters = filterByDependencies(starters, filtersDependency) } + if (filtersVersion.size > 0) { + starters = filterByVersions(starters, filtersVersion) + } + return (
    - + - {(filters.size > 0 || urlState.s.length > 0) && ( // search is a filter too https://gatsbyjs.slack.com/archives/CB4V648ET/p1529224551000008 - - )} +
    + {(filters.size > 0 || urlState.s.length > 0) && ( // search is a filter too https://gatsbyjs.slack.com/archives/CB4V648ET/p1529224551000008 + + )} +
    + + node.fields && + node.fields.starterShowcase.gatsbyMajorVersion.map( + str => str[1] + ) + ) + ) + )} + filters={filtersVersion} + setFilters={setFiltersVersion} + />
    - { - this.setState({ sitesToShow: this.state.sitesToShow + 15 }) - }} + onClick={() => this.showMoreSites(starters)} icon={} > Load More @@ -250,6 +304,19 @@ function filterByDependencies(list, categories) { return starters } +function filterByVersions(list, versions) { + let starters = list + starters = starters.filter( + ({ node }) => + node.fields && + isSuperset( + node.fields.starterShowcase.gatsbyMajorVersion.map(c => c[1]), + versions + ) + ) + return starters +} + function isSuperset(set, subset) { for (var elem of subset) { if (!set.includes(elem)) { diff --git a/www/src/views/starters/index.js b/www/src/views/starter-library/index.js similarity index 62% rename from www/src/views/starters/index.js rename to www/src/views/starter-library/index.js index e2135ce81b83e..5217530824de1 100644 --- a/www/src/views/starters/index.js +++ b/www/src/views/starter-library/index.js @@ -2,6 +2,7 @@ import React, { Component } from "react" import Helmet from "react-helmet" import Layout from "../../components/layout" import RRSM from "../../utils/reach-router-state-manager" +import queryString from "query-string" import FilteredStarters from "./filtered-starters" @@ -11,13 +12,16 @@ class StarterLibraryPage extends Component { return JSON.stringify(this.props) !== JSON.stringify(nextProps) } render() { - const { location, urlState } = this.props + const { location } = this.props + const urlState = queryString.parse(location.search) + const filtersApplied = - urlState.s !== `` + urlState.s !== undefined ? urlState.s // if theres a search term : urlState.d && !Array.isArray(urlState.d) ? urlState.d // if theres a single dependency - : `Showcase` // if no search term or single dependency + : `Library` // if no search term or single dependency + return ( @@ -27,22 +31,33 @@ class StarterLibraryPage extends Component { content={`Gatsby Starters: ${filtersApplied}`} /> - - + + - + ( + + )} + defaultSearchState={{ v: [`2`] }} + /> ) } } -export default RRSM({ s: ``, c: [], d: [], sort: `recent` })(StarterLibraryPage) +export default StarterLibraryPage diff --git a/www/src/views/starters/lhs-filter.js b/www/src/views/starter-library/lhs-filter.js similarity index 95% rename from www/src/views/starters/lhs-filter.js rename to www/src/views/starter-library/lhs-filter.js index b6665c2995416..4da62ab356ba6 100644 --- a/www/src/views/starters/lhs-filter.js +++ b/www/src/views/starter-library/lhs-filter.js @@ -15,9 +15,10 @@ export default function LHSFilter({ data, filters, setFilters, + fixed, }) { return ( - + {data .sort(([a, anum], [b, bnum]) => { if (sortRecent) { @@ -70,3 +71,7 @@ export default function LHSFilter({ ) } + +LHSFilter.defaultProps = { + fixed: false, +} diff --git a/www/src/views/starters/starters-list.js b/www/src/views/starter-library/starter-list.js similarity index 68% rename from www/src/views/starters/starters-list.js rename to www/src/views/starter-library/starter-list.js index 990030e956f9d..b4d66ef5a19fd 100644 --- a/www/src/views/starters/starters-list.js +++ b/www/src/views/starter-library/starter-list.js @@ -1,17 +1,17 @@ import React from "react" +import { Link } from "gatsby" import LaunchDemoIcon from "react-icons/lib/md/launch" import GithubIcon from "react-icons/lib/go/mark-github" -import CopyToClipboardIcon from "react-icons/lib/go/clippy" import MdStar from "react-icons/lib/md/star" -import { options } from "../../utils/typography" +import { options, rhythm } from "../../utils/typography" import { colors } from "../../utils/presets" -import copyToClipboard from "../../utils/copy-to-clipboard" import styles from "../shared/styles" import ThumbnailLink from "../shared/thumbnail" import EmptyGridItems from "../shared/empty-grid-items" +import V2Icon from "../../assets/v2icon.svg" import get from "lodash/get" -const ShowcaseList = ({ urlState, starters, count, sortRecent }) => { +const StartersList = ({ urlState, starters, count, sortRecent }) => { if (!starters.length) { // empty state! const emptyStateReason = @@ -36,10 +36,7 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => { Maybe you should write one and {` `} - - submit it - - ? + submit it?
    @@ -58,7 +55,7 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => { {starters.map(({ node: starter }) => { const { description, - gatsbyDependencies, + gatsbyMajorVersion, name, githubFullName, lastUpdated, @@ -66,15 +63,7 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => { stars, stub, } = starter.fields.starterShowcase - const { url: demoUrl, repo: repoUrl } = starter - const gatsbyVersion = gatsbyDependencies.find( - ([k, v]) => k === `gatsby` - )[1] - const match = gatsbyVersion.match(/([0-9]+)([.])([0-9]+)/) // we just want x.x - const minorVersion = match ? match[0] : gatsbyVersion // default to version if no match - const isGatsbyVersionWarning = !/(2..+|next|latest)/g.test( - minorVersion - ) // either 2.x or next or latest + const { url: demoUrl } = starter return ( starter.fields && ( // have to filter out null fields from bad data @@ -82,8 +71,8 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => { key={starter.id} css={{ ...styles.showcaseItem, + ...styles.withTitleHover, }} - {...styles.withTitleHover} > { css={{ display: `flex`, justifyContent: `space-between` }} > {owner} / - - - copyToClipboard( - `https://github.com/${githubFullName}` - ) - } - css={{ ...styles.shortcutIcon }} - > - - - {` `} - - - - {` `} - - - {` `} - + + {gatsbyMajorVersion[0][1] === `2` && ( + Gatsby v2 + )} +
    + + {stars} +
    - +
    - {name} + {name}
    -
    + {/* {isGatsbyVersionWarning ? Outdated Version: {minorVersion} : Gatsby Version: {minorVersion} @@ -148,6 +123,7 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => { textOverflow: `ellipsis`, overflow: `hidden`, whiteSpace: `nowrap`, + marginBottom: rhythm(1 / 8), }} > {description || `No description`} @@ -155,18 +131,34 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => {
    -
    - - {stars} -
    Updated {new Date(lastUpdated).toLocaleDateString()}
    + + + + + {` `} + + + +
    @@ -177,14 +169,15 @@ const ShowcaseList = ({ urlState, starters, count, sortRecent }) => {
    ) } + return null } -export default ShowcaseList +export default StartersList function sortingFunction(sortRecent) { return function({ node: nodeA }, { node: nodeB }) { - const metricA = get(nodeA, "fields.starterShowcase.stars", 0) - const metricB = get(nodeB, "fields.starterShowcase.stars", 0) + const metricA = get(nodeA, `fields.starterShowcase.stars`, 0) + const metricB = get(nodeB, `fields.starterShowcase.stars`, 0) return metricB - metricA } } diff --git a/www/src/views/starter/details.js b/www/src/views/starter/details.js new file mode 100644 index 0000000000000..d791aad96aea4 --- /dev/null +++ b/www/src/views/starter/details.js @@ -0,0 +1,142 @@ +import React from "react" +import { Link } from "gatsby" +import presets, { colors } from "../../utils/presets" +import { options, rhythm } from "../../utils/typography" +import sharedStyles from "../shared/styles" +import FaExtLink from "react-icons/lib/fa/external-link" + +const Details = ({ + allDeps, + shownDeps, + showAllDeps, + showMore, + startersYaml, +}) => ( +
    +
    + Tags +
    +
    {startersYaml.tags.join(`, `)}
    + +
    + Description +
    +
    {startersYaml.description}
    + +
    + Features +
    +
    + {startersYaml.features ? ( +
      + {startersYaml.features.map((f, i) => ( +
    • {f}
    • + ))} +
    + ) : ( + `No features` + )} +
    + +
    + Dependencies +
    + +
    +
    + {shownDeps && + shownDeps.map( + dep => + /^gatsby-/.test(dep) ? ( +
    + {dep} +
    + ) : ( + + ) + )} + {showMore && ( + + )} +
    +
    +
    +) + +export default Details + +const styles = { + showMoreButton: { + border: 0, + borderRadius: presets.radius, + cursor: `pointer`, + fontFamily: options.headerFontFamily.join(`,`), + fontWeight: `bold`, + padding: `${rhythm(1 / 5)} ${rhythm(2 / 3)}`, + WebkitFontSmoothing: `antialiased`, + "&&": { + backgroundColor: colors.gatsby, + borderBottom: `none`, + boxShadow: `none`, + color: `white`, + "&:hover": { + backgroundColor: colors.gatsby, + }, + }, + }, +} diff --git a/www/src/views/starter/header.js b/www/src/views/starter/header.js new file mode 100644 index 0000000000000..288b20fe2c750 --- /dev/null +++ b/www/src/views/starter/header.js @@ -0,0 +1,59 @@ +import React from "react" +import { Link } from "gatsby" +import presets, { colors } from "../../utils/presets" +import { rhythm, scale, options } from "../../utils/typography" +import sharedStyles from "../shared/styles" +import MdArrowBack from "react-icons/lib/md/arrow-back" + +const Header = ({ stub }) => ( +
    +
    + + +   + All Starters + +
    +
    +

    {stub}

    +
    +
    +) + +export default Header diff --git a/www/src/views/starter/meta.js b/www/src/views/starter/meta.js new file mode 100644 index 0000000000000..168db3eeea76d --- /dev/null +++ b/www/src/views/starter/meta.js @@ -0,0 +1,185 @@ +import React from "react" +import presets, { colors } from "../../utils/presets" +import { rhythm, options } from "../../utils/typography" +import sharedStyles from "../shared/styles" +import ShareMenu from "../../components/share-menu" +import MdLaunch from "react-icons/lib/md/launch" +import MdStar from "react-icons/lib/md/star" + +const Meta = ({ starter, repoName, imageSharp, demo }) => ( +
    +
    +
    + + + {` `} + {starter.stars} + +
    + +
    + + Updated + + {showDate(starter.lastUpdated)} +
    +
    + +
    +
    + {`By `} + + {starter.owner} + +
    +
    + +
    +
    +
    +) + +function showDate(dt) { + const date = new Date(dt) + return date.toLocaleDateString(`en-US`, { + month: `short`, + day: `numeric`, + year: `numeric`, + }) +} + +export default Meta diff --git a/www/src/views/starter/screenshot.js b/www/src/views/starter/screenshot.js new file mode 100644 index 0000000000000..d2ee75160ff2d --- /dev/null +++ b/www/src/views/starter/screenshot.js @@ -0,0 +1,24 @@ +import React from "react" +import sharedStyles from "../shared/styles" +import Img from "gatsby-image" + +const Screenshot = ({ imageSharp, repoName }) => ( +
    + {imageSharp && ( + {`Screenshot + )} +
    +) + +export default Screenshot diff --git a/www/src/views/starter/source.js b/www/src/views/starter/source.js new file mode 100644 index 0000000000000..2c0df87e6b613 --- /dev/null +++ b/www/src/views/starter/source.js @@ -0,0 +1,115 @@ +import React from "react" +import presets, { colors } from "../../utils/presets" +import { options, scale } from "../../utils/typography" +import sharedStyles from "../shared/styles" +import TechWithIcon from "../../components/tech-with-icon" +import GithubIcon from "react-icons/lib/fa/github" +import { NetlifyIcon } from "../../assets/logos" + +const Source = ({ startersYaml, repoUrl }) => ( +
    + {repoUrl && ( +
    + + + Source + +
    + )} + +
    + + Try this starter + + + Netlify + +
    +
    +) + +export default Source diff --git a/www/static/lighthouse.mp4 b/www/static/lighthouse.mp4 new file mode 100644 index 0000000000000..85d353b927c1d Binary files /dev/null and b/www/static/lighthouse.mp4 differ diff --git a/www/static/monogram.svg b/www/static/monogram.svg index f9abc546c3949..8fa9cead5bc35 100644 --- a/www/static/monogram.svg +++ b/www/static/monogram.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/www/static/safari-pinned-tab.svg b/www/static/safari-pinned-tab.svg index 6b2689f364fdf..7ffc0a4f03f21 100644 --- a/www/static/safari-pinned-tab.svg +++ b/www/static/safari-pinned-tab.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/www/stylelint.config.js b/www/stylelint.config.js new file mode 100644 index 0000000000000..04a683827b01e --- /dev/null +++ b/www/stylelint.config.js @@ -0,0 +1,16 @@ +module.exports = { + processors: [`stylelint-processor-styled-components`], + extends: [ + `stylelint-config-recommended`, + `stylelint-config-styled-components`, + ], + rules: { + "no-descending-specificity": null, + "property-no-unknown": [ + true, + { + ignoreProperties: [`webkit-font-smoothing`], + }, + ], + }, +} diff --git a/yarn.lock b/yarn.lock index 989c766868455..1b4d7a1b49f66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,7 @@ "@angular/compiler-cli@^5.2.9": version "5.2.11" resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.2.11.tgz#71a2885ac394a3c7a407c6ba0b920b52d73add99" + integrity sha512-dwrQ0yxoCM/XzKzlm7pTsyg4/6ECjT9emZufGj8t12bLMO8NDn1IJOsqXJA1+onEgQKhlr0Ziwi+96TvDTb1Cg== dependencies: chokidar "^1.4.2" minimist "^1.2.0" @@ -14,18 +15,21 @@ "@angular/compiler@^5.2.9": version "5.2.11" resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.2.11.tgz#ca2c38cda6ddde52b5948b8cff6551ff19d5e9de" + integrity sha512-ICvB1ud1mxaXUYLb8vhJqiLhGBVocAZGxoHTglv6hMkbrRYcnlB3FZJFOzBvtj+krkd1jamoYLI43UAmesqQ6Q== dependencies: tslib "^1.7.1" "@angular/core@^5.2.9": version "5.2.11" resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.2.11.tgz#0e38fdf4fa038a3c168c72952682f2ee3721f1a3" + integrity sha512-h2vpvXNAdOqKzbVaZcHnHGMT5A8uDnizk6FgGq6SPyw9s3d+/VxZ9LJaPjUk3g2lICA7og1tUel+2YfF971MlQ== dependencies: tslib "^1.7.1" "@babel/cli@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.0.0.tgz#108b395fd43fff6681d36fb41274df4d8ffeb12e" + integrity sha512-SH/x7W1dz4FSSBeJZXIiYSbHIOU3ZxNgwQPLTG+I8KXyTS81pzmLouPa2st6hji7VbVrEF/D8EQzQbXAYj1TsA== dependencies: commander "^2.8.1" convert-source-map "^1.1.0" @@ -42,6 +46,7 @@ "@babel/code-frame@7.0.0-beta.36": version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz#2349d7ec04b3a06945ae173280ef8579b63728e4" + integrity sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w== dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -50,24 +55,28 @@ "@babel/code-frame@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g== dependencies: "@babel/highlight" "7.0.0-beta.44" "@babel/code-frame@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz#bd71d9b192af978df915829d39d4094456439a0c" + integrity sha1-vXHZsZKvl435FYKdOdQJRFZDmgw= dependencies: "@babel/highlight" "7.0.0-beta.51" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" "@babel/core@^7.0.0": version "7.0.1" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.1.tgz#406658caed0e9686fa4feb5c2f3cefb6161c0f41" + integrity sha512-7Yy2vRB6KYbhWeIrrwJmKv9UwDxokmlo43wi6AV84oNs4Gi71NTNGh3YxY/hK3+CxuSc6wcKSl25F2tQOhm1GQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.0.0" @@ -87,6 +96,7 @@ "@babel/generator@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" + integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ== dependencies: "@babel/types" "7.0.0-beta.44" jsesc "^2.5.1" @@ -97,6 +107,7 @@ "@babel/generator@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" + integrity sha1-bHV1/952HQdIXgS67cA5LG2eMPY= dependencies: "@babel/types" "7.0.0-beta.51" jsesc "^2.5.1" @@ -107,6 +118,7 @@ "@babel/generator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" + integrity sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q== dependencies: "@babel/types" "^7.0.0" jsesc "^2.5.1" @@ -117,12 +129,14 @@ "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== dependencies: "@babel/types" "^7.0.0" "@babel/helper-builder-binary-assignment-operator-visitor@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz#ba26336beb2abb547d58b6eba5b84d77975a39eb" + integrity sha512-9HdU8lrAc4FUZOy+y2w//kUhynSpkGIRYDzJW1oKJx7+v8m6UEAbAd2tSvxirsq2kJTXJZZS6Eo8FnUDUH0ZWw== dependencies: "@babel/helper-explode-assignable-expression" "^7.0.0" "@babel/types" "^7.0.0" @@ -130,6 +144,7 @@ "@babel/helper-builder-react-jsx@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" + integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw== dependencies: "@babel/types" "^7.0.0" esutils "^2.0.0" @@ -137,6 +152,7 @@ "@babel/helper-call-delegate@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz#e036956bb33d76e59c07a04a1fff144e9f62ab78" + integrity sha512-HdYG6vr4KgXHK0q1QRZ8guoYCF5rZjIdPlhcVY+j4EBK/FDR+cXRM5/6lQr3NIWDc7dO1KfgjG5rfH6lM89VBw== dependencies: "@babel/helper-hoist-variables" "^7.0.0" "@babel/traverse" "^7.0.0" @@ -145,6 +161,7 @@ "@babel/helper-define-map@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz#a5684dd2adf30f0137cf9b0bde436f8c2db17225" + integrity sha512-acbCxYS9XufWxsBiclmXMK1CFz7en/XSYvHFcbb3Jb8BqjFEBrA46WlIsoSQTRG/eYN60HciUnzdyQxOZhrHfw== dependencies: "@babel/helper-function-name" "^7.0.0" "@babel/types" "^7.0.0" @@ -153,6 +170,7 @@ "@babel/helper-explode-assignable-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz#fdfa4c88603ae3e954d0fc3244d5ca82fb468497" + integrity sha512-5gLPwdDnYf8GfPsjS+UmZUtYE1jaXTFm1P+ymGobqvXbA0q3ANgpH60+C6zDrRAWXYbQXYvzzQC/r0gJVNNltQ== dependencies: "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" @@ -160,6 +178,7 @@ "@babel/helper-function-name@7.0.0-beta.36": version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz#366e3bc35147721b69009f803907c4d53212e88d" + integrity sha512-/SGPOyifPf20iTrMN+WdlY2MbKa7/o4j7B/4IAsdOusASp2icT+Wcdjf4tjJHaXNX8Pe9bpgVxLNxhRvcf8E5w== dependencies: "@babel/helper-get-function-arity" "7.0.0-beta.36" "@babel/template" "7.0.0-beta.36" @@ -168,6 +187,7 @@ "@babel/helper-function-name@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg== dependencies: "@babel/helper-get-function-arity" "7.0.0-beta.44" "@babel/template" "7.0.0-beta.44" @@ -176,6 +196,7 @@ "@babel/helper-function-name@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz#21b4874a227cf99ecafcc30a90302da5a2640561" + integrity sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE= dependencies: "@babel/helper-get-function-arity" "7.0.0-beta.51" "@babel/template" "7.0.0-beta.51" @@ -184,6 +205,7 @@ "@babel/helper-function-name@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" + integrity sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q== dependencies: "@babel/helper-get-function-arity" "^7.0.0" "@babel/template" "^7.0.0" @@ -192,48 +214,56 @@ "@babel/helper-get-function-arity@7.0.0-beta.36": version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz#f5383bac9a96b274828b10d98900e84ee43e32b8" + integrity sha512-vPPcx2vsSoDbcyWr9S3nd0FM3B4hEXnt0p1oKpwa08GwK0fSRxa98MyaRGf8suk8frdQlG1P3mDrz5p/Rr3pbA== dependencies: "@babel/types" "7.0.0-beta.36" "@babel/helper-get-function-arity@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw== dependencies: "@babel/types" "7.0.0-beta.44" "@babel/helper-get-function-arity@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz#3281b2d045af95c172ce91b20825d85ea4676411" + integrity sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE= dependencies: "@babel/types" "7.0.0-beta.51" "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== dependencies: "@babel/types" "^7.0.0" "@babel/helper-hoist-variables@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== dependencies: "@babel/types" "^7.0.0" "@babel/helper-member-expression-to-functions@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== dependencies: "@babel/types" "^7.0.0" "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== dependencies: "@babel/types" "^7.0.0" "@babel/helper-module-transforms@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz#b01ee7d543e81e8c3fc404b19c9f26acb6e4cf4c" + integrity sha512-QdwmTTlPmT7TZcf30dnqm8pem+o48tVt991xXogE5CQCwqSpWKuzH2E9v8VWeccQ66a6/CmrLZ+bwp66JYeM5A== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-simple-access" "^7.0.0" @@ -245,22 +275,26 @@ "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== dependencies: "@babel/types" "^7.0.0" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== "@babel/helper-regex@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== dependencies: lodash "^4.17.10" "@babel/helper-remap-async-to-generator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz#6512273c2feb91587822335cf913fdf680c26901" + integrity sha512-3o4sYLOsK6m0A7t1P0saTanBPmk5MAlxVnp9773Of4L8PMVLukU7loZix5KoJgflxSo2c2ETTzseptc0rQEp7A== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-wrap-function" "^7.0.0" @@ -271,6 +305,7 @@ "@babel/helper-replace-supers@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz#b6f21237280e0be54f591f63a464b66627ced707" + integrity sha512-fsSv7VogxzMSmGch6DwhKHGsciVXo7hbfhBgH9ZrgJMXKMjO7ASQTUfbVL7MU1uCfviyqjucazGK7TWPT9weuQ== dependencies: "@babel/helper-member-expression-to-functions" "^7.0.0" "@babel/helper-optimise-call-expression" "^7.0.0" @@ -280,6 +315,7 @@ "@babel/helper-simple-access@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz#ff36a27983ae4c27122da2f7f294dced80ecbd08" + integrity sha512-CNeuX52jbQSq4j1n+R+21xrjbTjsnXa9n1aERbgHRD/p9h4Udkxr1n24yPMQmnTETHdnQDvkVSYWFw/ETAymYg== dependencies: "@babel/template" "^7.0.0" "@babel/types" "^7.0.0" @@ -287,24 +323,28 @@ "@babel/helper-split-export-declaration@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA== dependencies: "@babel/types" "7.0.0-beta.44" "@babel/helper-split-export-declaration@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz#8a6c3f66c4d265352fc077484f9f6e80a51ab978" + integrity sha1-imw/ZsTSZTUvwHdIT59ugKUauXg= dependencies: "@babel/types" "7.0.0-beta.51" "@babel/helper-split-export-declaration@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== dependencies: "@babel/types" "^7.0.0" "@babel/helper-wrap-function@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz#1c8e42a2cfb0808e3140189dfe9490782a6fa740" + integrity sha512-kjprWPDNVPZ/9pyLRXcZBvfjnFwqokmXTPTaC4AV8Ns7WRl7ewSxrB19AWZzQsC/WSPQLOw1ciR8uPYkAM1znA== dependencies: "@babel/helper-function-name" "^7.0.0" "@babel/template" "^7.0.0" @@ -314,6 +354,7 @@ "@babel/helpers@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0.tgz#7213388341eeb07417f44710fd7e1d00acfa6ac0" + integrity sha512-jbvgR8iLZPnyk6m/UqdXYsSxbVtRi7Pd3CzB4OPwPBnmhNG1DWjiiy777NTuoyIcniszK51R40L5pgfXAfHDtw== dependencies: "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" @@ -322,6 +363,7 @@ "@babel/highlight@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ== dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -330,6 +372,7 @@ "@babel/highlight@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d" + integrity sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0= dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -338,6 +381,7 @@ "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -346,6 +390,7 @@ "@babel/node@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.0.0.tgz#20e55bb0e015700a0f6ff281c712de7619ad56f4" + integrity sha512-mKbN8Bb1TzH9YnKMWMhBRX+o5MVJHtUSalNcsiGa4FRgVfY7ozqkbttuIDWqeXxZ3rwI9ZqmCUr9XsPV2VYlSw== dependencies: "@babel/polyfill" "^7.0.0" "@babel/register" "^7.0.0" @@ -358,14 +403,17 @@ "@babel/parser@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" + integrity sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY= "@babel/parser@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" + integrity sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g== "@babel/plugin-proposal-async-generator-functions@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz#5d1eb6b44fd388b97f964350007ab9da090b1d70" + integrity sha512-QsXmmjLrFADCcDQAfdQn7tfBRLjpTzRWaDpKpW4ZXW1fahPG4SvjcF1xfvVnXGC662RSExYXL+6DAqbtgqMXeA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.0.0" @@ -374,6 +422,7 @@ "@babel/plugin-proposal-class-properties@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0.tgz#a16b5c076ba6c3d87df64d2480a380e979543731" + integrity sha512-mVgsbdySh6kuzv4omXvw0Kuh+3hrUrQ883qTCf75MqfC6zctx2LXrP3Wt+bbJmB5fE5nfhf/Et2pQyrRy4j0Pg== dependencies: "@babel/helper-function-name" "^7.0.0" "@babel/helper-member-expression-to-functions" "^7.0.0" @@ -385,6 +434,7 @@ "@babel/plugin-proposal-json-strings@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" + integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.0.0" @@ -392,6 +442,7 @@ "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.0.0" @@ -399,6 +450,7 @@ "@babel/plugin-proposal-optional-catch-binding@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" + integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" @@ -406,6 +458,7 @@ "@babel/plugin-proposal-optional-chaining@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.0.0.tgz#3d344d4152253379b8758e7d041148e8787c4a9d" + integrity sha512-7x8HLa71OzNiofbQUVakS0Kmg++6a+cXNfS7QKHbbv03SuSaumJyaWsfNgw+T7aqrJlqurYpZqrkPgXu0iZK0w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-chaining" "^7.0.0" @@ -413,6 +466,7 @@ "@babel/plugin-proposal-unicode-property-regex@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" + integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" @@ -421,72 +475,84 @@ "@babel/plugin-syntax-async-generators@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" + integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-class-properties@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" + integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-dynamic-import@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" + integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" + integrity sha512-zGcuZWiWWDa5qTZ6iAnpG0fnX/GOu49pGR5PFvkQ9GmKNaSphXQnlNXh/LG20sqWtNrx/eB6krzfEzcwvUyeFA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" + integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" + integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" + integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" + integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-chaining@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.0.0.tgz#1e6ecba124310b5d3a8fc1e00d50b1c4c2e05e68" + integrity sha512-QXedQsZf8yua1nNrXSePT0TsGSQH9A1iK08m9dhCMdZeJaaxYcQfXdgHWVV6Cp7WE/afPVvSKIsAHK5wP+yxDA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0.tgz#90f4fe0a741ae9c0dcdc3017717c05a0cbbd5158" + integrity sha512-5fxmdqiAQVQTIS+KSvYeZuTt91wKtBTYi6JlIkvbQ6hmO+9fZE81ezxmMiFMIsxE7CdRSgzn7nQ1BChcvK9OpA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-arrow-functions@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" + integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-async-to-generator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz#feaf18f4bfeaf2236eea4b2d4879da83006cc8f5" + integrity sha512-CiWNhSMZzj1n3uEKUUS/oL+a7Xi8hnPQB6GpC1WfL/ZYvxBLDBn14sHMo5EyOaeArccSonyk5jFIKMRRbrHOnQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -495,12 +561,14 @@ "@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" + integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-block-scoping@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" + integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.10" @@ -508,6 +576,7 @@ "@babel/plugin-transform-classes@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz#9e65ca401747dde99e344baea90ab50dccb4c468" + integrity sha512-8LBm7XsHQiNISEmb+ejBiHi1pUihwUf+lrIwyVsXVbQ1vLqgkvhgayK5JnW3WXvQD2rmM0qxFAIyDE5vtMem2A== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-define-map" "^7.0.0" @@ -521,18 +590,21 @@ "@babel/plugin-transform-computed-properties@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" + integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-destructuring@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz#68e911e1935dda2f06b6ccbbf184ffb024e9d43a" + integrity sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-dotall-regex@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" + integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" @@ -541,12 +613,14 @@ "@babel/plugin-transform-duplicate-keys@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" + integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-exponentiation-operator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz#c51b45e090a01876f64d32b5b46c0799c85ea56c" + integrity sha512-Ig74elCuFQ0mvHkWUq5qDCNI3qHWlop5w4TcDxdtJiOk8Egqe2uxDRY9XnXGSlmWClClmnixcoYumyvbAuj4dA== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -554,6 +628,7 @@ "@babel/plugin-transform-flow-strip-types@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0.tgz#c40ced34c2783985d90d9f9ac77a13e6fb396a01" + integrity sha512-WhXUNb4It5a19RsgKKbQPrjmy4yWOY1KynpEbNw7bnd1QTcrT/EIl3MJvnGgpgvrKyKbqX7nUNOJfkpLOnoDKA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow" "^7.0.0" @@ -561,12 +636,14 @@ "@babel/plugin-transform-for-of@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" + integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-function-name@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz#eeda18dc22584e13c3581a68f6be4822bb1d1d81" + integrity sha512-mR7JN9vkwsAIot74pSwzn/2Gq4nn2wN0HKtQyJLc1ghAarsymdBMTfh+Q/aeR2N3heXs3URQscTLrKe3yUU7Yw== dependencies: "@babel/helper-function-name" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -574,12 +651,14 @@ "@babel/plugin-transform-literals@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" + integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-amd@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz#2430ab73db9960c4ca89966f425b803f5d0d0468" + integrity sha512-CtSVpT/0tty/4405qczoIHm41YfFbPChplsmfBwsi3RTq/M9cHgVb3ixI5bqqgdKkqWwSX2sXqejvMKLuTVU+Q== dependencies: "@babel/helper-module-transforms" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -587,6 +666,7 @@ "@babel/plugin-transform-modules-commonjs@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz#20b906e5ab130dd8e456b694a94d9575da0fd41f" + integrity sha512-BIcQLgPFCxi7YygtNpz5xj+7HxhOprbCGZKeLW6Kxsn1eHS6sJZMw4MfmqFZagl/v6IVa0AJoMHdDXLVrpd3Aw== dependencies: "@babel/helper-module-transforms" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -595,6 +675,7 @@ "@babel/plugin-transform-modules-systemjs@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz#8873d876d4fee23209decc4d1feab8f198cf2df4" + integrity sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g== dependencies: "@babel/helper-hoist-variables" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -602,6 +683,7 @@ "@babel/plugin-transform-modules-umd@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz#e7bb4f2a6cd199668964241951a25013450349be" + integrity sha512-EMyKpzgugxef+R1diXDwqw/Hmt5ls8VxfI8Gq5Lo8Qp3oKIepkYG4L/mvE2dmZSRalgL9sguoPKbnQ1m96hVFw== dependencies: "@babel/helper-module-transforms" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -609,12 +691,14 @@ "@babel/plugin-transform-new-target@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-object-super@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz#b8587d511309b3a0e96e9e38169908b3e392041e" + integrity sha512-BfAiF1l18Xr1shy1NyyQgLiHDvh/S7APiEM5+0wxTsQ+e3fgXO+NA47u4PvppzH0meJS21y0gZHcjnvUAJj8tQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.0.0" @@ -622,6 +706,7 @@ "@babel/plugin-transform-parameters@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz#da864efa111816a6df161d492f33de10e74b1949" + integrity sha512-eWngvRBWx0gScot0xa340JzrkA+8HGAk1OaCHDfXAjkrTFkp73Lcf+78s7AStSdRML5nzx5aXpnjN1MfrjkBoA== dependencies: "@babel/helper-call-delegate" "^7.0.0" "@babel/helper-get-function-arity" "^7.0.0" @@ -630,12 +715,14 @@ "@babel/plugin-transform-react-display-name@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" + integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-jsx-self@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" + integrity sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" @@ -643,6 +730,7 @@ "@babel/plugin-transform-react-jsx-source@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" + integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" @@ -650,6 +738,16 @@ "@babel/plugin-transform-react-jsx@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" + integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-react-jsx@^7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.1.6.tgz#e6188e7d2a2dcd2796d45a87f8b0a8c906f57d1a" + integrity sha512-iU/IUlPEYDRwuqLwqVobzPAZkBOQoZ9xRTBmj6ANuk5g/Egn/zdNGnXlSoKeNmKoYVeIRxx5GZhWmMhLik8dag== dependencies: "@babel/helper-builder-react-jsx" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -658,12 +756,14 @@ "@babel/plugin-transform-regenerator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== dependencies: regenerator-transform "^0.13.3" "@babel/plugin-transform-runtime@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0.tgz#0f1443c07bac16dba8efa939e0c61d6922740062" + integrity sha512-yECRVxRu25Nsf6IY5v5XrXhcW9ZHomUQiq30VO8H7r3JYPcBJDTcxZmT+6v1O3QKKrDp1Wp40LinGbcd+jlp9A== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -672,18 +772,21 @@ "@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" + integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-spread@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" + integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-sticky-regex@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" + integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" @@ -691,6 +794,7 @@ "@babel/plugin-transform-template-literals@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" + integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -698,12 +802,14 @@ "@babel/plugin-transform-typeof-symbol@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" + integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.0.0.tgz#71bf13cae08117ae5dc1caec5b90938d8091a01e" + integrity sha512-UNhEa+Wt8tq3bfLKJWsuZplYEdwdX2y8Cn1gHeIwnL7OqT6L+NZzVe6VTkR1AKqAhH7z3Krs61TpxgVkp5aHCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.0.0" @@ -711,6 +817,7 @@ "@babel/plugin-transform-unicode-regex@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" + integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" @@ -719,6 +826,7 @@ "@babel/polyfill@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.0.0.tgz#c8ff65c9ec3be6a1ba10113ebd40e8750fb90bff" + integrity sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q== dependencies: core-js "^2.5.7" regenerator-runtime "^0.11.1" @@ -726,6 +834,7 @@ "@babel/preset-env@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0.tgz#f450f200c14e713f98cb14d113bf0c2cfbb89ca9" + integrity sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -772,6 +881,7 @@ "@babel/preset-flow@^7.0.0", "@babel/preset-flow@^7.0.0-rc.1": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-flow-strip-types" "^7.0.0" @@ -779,6 +889,7 @@ "@babel/preset-react@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-display-name" "^7.0.0" @@ -789,6 +900,7 @@ "@babel/preset-typescript@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.0.0.tgz#1e65c8b863ff5b290f070d999c810bb48a8e3904" + integrity sha512-rFq0bsJjXJo+PyRyBeHDIUGD7+4btHzYcNbL8kgk/7UOxuC9s53ziXxaIL7Ehz4zbsLMREXmUzeamuHwh7BHZg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript" "^7.0.0" @@ -796,6 +908,7 @@ "@babel/register@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" + integrity sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g== dependencies: core-js "^2.5.7" find-cache-dir "^1.0.0" @@ -808,12 +921,14 @@ "@babel/runtime@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== dependencies: regenerator-runtime "^0.12.0" "@babel/template@7.0.0-beta.36": version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.36.tgz#02e903de5d68bd7899bce3c5b5447e59529abb00" + integrity sha512-mUBi90WRyZ9iVvlWLEdeo8gn/tROyJdjKNC4W5xJTSZL+9MS89rTJSqiaJKXIkxk/YRDL/g/8snrG/O0xl33uA== dependencies: "@babel/code-frame" "7.0.0-beta.36" "@babel/types" "7.0.0-beta.36" @@ -823,6 +938,7 @@ "@babel/template@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng== dependencies: "@babel/code-frame" "7.0.0-beta.44" "@babel/types" "7.0.0-beta.44" @@ -832,6 +948,7 @@ "@babel/template@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.51.tgz#9602a40aebcf357ae9677e2532ef5fc810f5fbff" + integrity sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8= dependencies: "@babel/code-frame" "7.0.0-beta.51" "@babel/parser" "7.0.0-beta.51" @@ -841,6 +958,7 @@ "@babel/template@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" + integrity sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -849,6 +967,7 @@ "@babel/traverse@7.0.0-beta.36": version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.36.tgz#1dc6f8750e89b6b979de5fe44aa993b1a2192261" + integrity sha512-OTUb6iSKVR/98dGThRJ1BiyfwbuX10BVnkz89IpaerjTPRhDfMBfLsqmzxz5MiywUOW4M0Clta0o7rSxkfcuzw== dependencies: "@babel/code-frame" "7.0.0-beta.36" "@babel/helper-function-name" "7.0.0-beta.36" @@ -862,6 +981,7 @@ "@babel/traverse@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA== dependencies: "@babel/code-frame" "7.0.0-beta.44" "@babel/generator" "7.0.0-beta.44" @@ -877,6 +997,7 @@ "@babel/traverse@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.51.tgz#981daf2cec347a6231d3aa1d9e1803b03aaaa4a8" + integrity sha1-mB2vLOw0emIx06odnhgDsDqqpKg= dependencies: "@babel/code-frame" "7.0.0-beta.51" "@babel/generator" "7.0.0-beta.51" @@ -892,6 +1013,7 @@ "@babel/traverse@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" + integrity sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.0.0" @@ -906,6 +1028,7 @@ "@babel/types@7.0.0-beta.36": version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.36.tgz#64f2004353de42adb72f9ebb4665fc35b5499d23" + integrity sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q== dependencies: esutils "^2.0.2" lodash "^4.2.0" @@ -914,6 +1037,7 @@ "@babel/types@7.0.0-beta.44": version "7.0.0-beta.44" resolved "http://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ== dependencies: esutils "^2.0.2" lodash "^4.2.0" @@ -922,6 +1046,7 @@ "@babel/types@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.51.tgz#d802b7b543b5836c778aa691797abf00f3d97ea9" + integrity sha1-2AK3tUO1g2x3iqaReXq/APPZfqk= dependencies: esutils "^2.0.2" lodash "^4.17.5" @@ -930,6 +1055,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" + integrity sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -938,13 +1064,46 @@ "@contentful/axios@^0.18.0": version "0.18.0" resolved "https://registry.yarnpkg.com/@contentful/axios/-/axios-0.18.0.tgz#576e0e6047411a66971e82d40688a8c795e62f27" + integrity sha512-4r4Ww1IJlmRolKgovLTTmdS6CsdvXYVxgXRFwWSh1x36T/0Wg9kTwdaVaApZXcv1DfYyw9RSNdxIGSwTP2/Lag== dependencies: follow-redirects "^1.2.5" is-buffer "^1.1.5" +"@emotion/hash@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.1.tgz#9833722341379fb7d67f06a4b00ab3c37913da53" + integrity sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA== + +"@emotion/memoize@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" + integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== + +"@emotion/serialize@0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.0.tgz#9332b483a112af7b515d20470a7bf1aa5f8dcf6c" + integrity sha512-SpUumzuN7CxEGvJKe3bul8+VKdcNleACokv5YgS+k4KQIurdq7dbm4sM7aT9hBx3ccMpDfg5BYVfR3NPoeU5PA== + dependencies: + "@emotion/hash" "0.7.1" + "@emotion/memoize" "0.7.1" + "@emotion/unitless" "0.7.3" + "@emotion/utils" "0.11.1" + csstype "^2.5.7" + +"@emotion/unitless@0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" + integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== + +"@emotion/utils@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.1.tgz#8529b7412a6eb4b48bdf6e720cc1b8e6e1e17628" + integrity sha512-8M3VN0hetwhsJ8dH8VkVy7xo5/1VoBsDOk/T4SJOeXwTO1c4uIqVNx2qyecLFnnUWD5vvUqHQ1gASSeUN6zcTg== + "@lerna/add@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.3.2.tgz#767a879ecb117be06414e7e76d4d93bb9934fa57" + integrity sha512-nKRRRKb4wt/GAywi8P++NY1TUiyhMs2g2KHSb41I4/qiCFQnTj2zkeshPyNmtBGjKzFXnOqrmc/8Wa2vmHHZVg== dependencies: "@lerna/bootstrap" "^3.3.2" "@lerna/command" "^3.3.0" @@ -960,6 +1119,7 @@ "@lerna/batch-packages@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.1.2.tgz#74b5312a01a8916204cbc71237ffbe93144b99df" + integrity sha512-HAkpptrYeUVlBYbLScXgeCgk6BsNVXxDd53HVWgzzTWpXV4MHpbpeKrByyt7viXlNhW0w73jJbipb/QlFsHIhQ== dependencies: "@lerna/package-graph" "^3.1.2" "@lerna/validation-error" "^3.0.0" @@ -968,6 +1128,7 @@ "@lerna/bootstrap@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.3.2.tgz#01e894295dea89dcc0c62ee188f49f78873e08c9" + integrity sha512-f0/FZ6iCXHNpHoUiM3wfmiJebHetrquP9mdNT7t//2iTGm1nz8iuKSLhfu9APazDXtqo3aDFx7JvuYKMg+GiXQ== dependencies: "@lerna/batch-packages" "^3.1.2" "@lerna/command" "^3.3.0" @@ -996,6 +1157,7 @@ "@lerna/changed@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.3.2.tgz#679c9fd353a82d00e2a27847c79f061d5abdea67" + integrity sha512-wLH6RzYPQAryrsJakc9I3k0aFWE/cJyWoUD8dQy186jxwtLgeQdVc0+NegNyab7MIPi7Hsv9A3hx6lM1rPH94A== dependencies: "@lerna/collect-updates" "^3.3.2" "@lerna/command" "^3.3.0" @@ -1006,6 +1168,7 @@ "@lerna/check-working-tree@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.3.0.tgz#2118f301f28ccb530812e5b27a341b1e6b3c84e2" + integrity sha512-oeEP1dNhiiKUaO0pmcIi73YXJpaD0n5JczNctvVNZ8fGZmrALZtEnmC28o6Z7JgQaqq5nd2kO7xbnjoitrC51g== dependencies: "@lerna/describe-ref" "^3.3.0" "@lerna/validation-error" "^3.0.0" @@ -1013,6 +1176,7 @@ "@lerna/child-process@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.3.0.tgz#71184a763105b6c8ece27f43f166498d90fe680f" + integrity sha512-q2d/OPlNX/cBXB6Iz1932RFzOmOHq6ZzPjqebkINNaTojHWuuRpvJJY4Uz3NGpJ3kEtPDvBemkZqUBTSO5wb1g== dependencies: chalk "^2.3.1" execa "^1.0.0" @@ -1021,6 +1185,7 @@ "@lerna/clean@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.3.2.tgz#9a7e8a1e400e580de260fa124945b2939a025069" + integrity sha512-mvqusgSp2ou5SGqQgTEoTvGJpGfH4+L6XSeN+Ims+eNFGXuMazmKCf+rz2PZBMFufaHJ/Os+JF0vPCcWI1Fzqg== dependencies: "@lerna/command" "^3.3.0" "@lerna/filter-options" "^3.3.2" @@ -1033,6 +1198,7 @@ "@lerna/cli@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.2.0.tgz#3ed25bcbc0b8f0878bc6a102ee0296f01476cfdf" + integrity sha512-JdbLyTxHqxUlrkI+Ke+ltXbtyA+MPu9zR6kg/n8Fl6uaez/2fZWtReXzYi8MgLxfUFa7+1OHWJv4eAMZlByJ+Q== dependencies: "@lerna/global-options" "^3.1.3" dedent "^0.7.0" @@ -1042,6 +1208,7 @@ "@lerna/collect-updates@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.3.2.tgz#54df5ce59ca05e8aa04ff8a9299f89cc253a9304" + integrity sha512-9WyBJI2S5sYgEZEScu525Lbi6nknNrdBKop35sCDIC9y6AIGvH6Dr5tkTd+Kg3n1dE+kHwW/xjERkx3+h7th3w== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/describe-ref" "^3.3.0" @@ -1052,6 +1219,7 @@ "@lerna/command@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.3.0.tgz#e81c4716a676b02dbe9d3f548d5f45b4ba32c25a" + integrity sha512-NTOkLEKlWcBLHSvUr9tzVpV7RJ4GROLeOuZ6RfztGOW/31JPSwVVBD2kPifEXNZunldOx5GVWukR+7+NpAWhsg== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/package-graph" "^3.1.2" @@ -1067,6 +1235,7 @@ "@lerna/conventional-commits@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.3.0.tgz#68302b6ca58b3ab7e91807664deeda2eac025ab0" + integrity sha512-nUFardc5G4jG5LI/Jlw0kblzlRLJ08ut6uJjHXTnUE/QJuKYaqBZm6goGG8OSxp/WltklndkQUOtThyZpefviA== dependencies: "@lerna/validation-error" "^3.0.0" conventional-changelog-angular "^1.6.6" @@ -1082,6 +1251,7 @@ "@lerna/create-symlink@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.3.0.tgz#91de00fd576018ba4251f0c6a5b4b7f768f22a82" + integrity sha512-0lb88Nnq1c/GG+fwybuReOnw3+ah4dB81PuWwWwuqUNPE0n50qUf/M/7FfSb5JEh/93fcdbZI0La8t3iysNW1w== dependencies: cmd-shim "^2.0.2" fs-extra "^7.0.0" @@ -1090,6 +1260,7 @@ "@lerna/create@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.3.1.tgz#cfd7e0cb30d1f45133691165e103d26318d90ebf" + integrity sha512-4VASkTLvN66euTcWMPN2vIzEoP07hgutx7V70CXSOc+DiWV8S22z0PjXATi2yli83TC/Qj4gHYtU2futQrdY1A== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/command" "^3.3.0" @@ -1111,6 +1282,7 @@ "@lerna/describe-ref@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.3.0.tgz#d373adb530d5428ab91e303ccbfcf51a98374a3a" + integrity sha512-4t7M4OupnYMSPNLrLUau8qkS+dgLEi4w+DkRkV0+A+KNYga1W0jVgNLPIIsxta7OHfodPkCNAqZCzNCw/dmAwA== dependencies: "@lerna/child-process" "^3.3.0" npmlog "^4.1.2" @@ -1118,6 +1290,7 @@ "@lerna/diff@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.3.0.tgz#c8130a5f508b47fad5fec81404498bc3acdf9cb5" + integrity sha512-sIoMjsm3NVxvmt6ofx8Uu/2fxgldQqLl0zmC9X1xW00j831o5hBffx1EoKj9CnmaEvoSP6j/KFjxy2RWjebCIg== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/command" "^3.3.0" @@ -1127,6 +1300,7 @@ "@lerna/exec@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.3.2.tgz#95ecaca617fd85abdb91e9a378ed06ec1763d665" + integrity sha512-mN6vGxNir7JOGvWLwKr3DW3LNy1ecCo2ziZj5rO9Mw5Rew3carUu1XLmhF/4judtsvXViUY+rvGIcqHe0vvb+w== dependencies: "@lerna/batch-packages" "^3.1.2" "@lerna/child-process" "^3.3.0" @@ -1138,6 +1312,7 @@ "@lerna/filter-options@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.3.2.tgz#ac90702b7876ff4980dcdeaeac049c433dd01773" + integrity sha512-0WHqdDgAnt5WKoByi1q+lFw8HWt5tEKP2DnLlGqWv3YFwVF5DsPRlO7xbzjY9sJgvyJtZcnkMtccdBPFhGGyIQ== dependencies: "@lerna/collect-updates" "^3.3.2" "@lerna/filter-packages" "^3.0.0" @@ -1146,6 +1321,7 @@ "@lerna/filter-packages@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.0.0.tgz#5eb25ad1610f3e2ab845133d1f8d7d40314e838f" + integrity sha512-zwbY1J4uRjWRZ/FgYbtVkq7I3Nduwsg2V2HwLKSzwV2vPglfGqgovYOVkND6/xqe2BHwDX4IyA2+e7OJmLaLSA== dependencies: "@lerna/validation-error" "^3.0.0" multimatch "^2.1.0" @@ -1154,16 +1330,19 @@ "@lerna/get-npm-exec-opts@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.0.0.tgz#8fc7866e8d8e9a2f2dc385287ba32eb44de8bdeb" + integrity sha512-arcYUm+4xS8J3Palhl+5rRJXnZnFHsLFKHBxznkPIxjwGQeAEw7df38uHdVjEQ+HNeFmHnBgSqfbxl1VIw5DHg== dependencies: npmlog "^4.1.2" "@lerna/global-options@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.1.3.tgz#cf85e24655a91d04d4efc9a80c1f83fc768d08ae" + integrity sha512-LVeZU/Zgc0XkHdGMRYn+EmHfDmmYNwYRv3ta59iCVFXLVp7FRFWF7oB1ss/WRa9x/pYU0o6L8as/5DomLUGASA== "@lerna/has-npm-version@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.3.0.tgz#8a73c2c437a0e1e68a19ccbd0dd3c014d4d39135" + integrity sha512-GX7omRep1eBRZHgjZLRw3MpBJSdA5gPZFz95P7rxhpvsiG384Tdrr/cKFMhm0A09yq27Tk/nuYTaZIj7HsVE6g== dependencies: "@lerna/child-process" "^3.3.0" semver "^5.5.0" @@ -1171,6 +1350,7 @@ "@lerna/import@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.3.1.tgz#deca8c93c9cc03c5844b975c6da9937dd7530440" + integrity sha512-2OzTQDkYKbBPpyP2iOI1sWfcvMjNLjjHjmREq/uOWJaSIk5J3Ukt71OPpcOHh4V2CBOlXidCcO+Hyb4FVIy8fw== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/command" "^3.3.0" @@ -1183,6 +1363,7 @@ "@lerna/init@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.3.0.tgz#998f3497da3d891867c593b808b6db4b8fc4ccb9" + integrity sha512-HvgRLkIG6nDIeAO6ix5sUVIVV+W9UMk2rSSmFT66CDOefRi7S028amiyYnFUK1QkIAaUbVUyOnYaErtbJwICuw== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/command" "^3.3.0" @@ -1193,6 +1374,7 @@ "@lerna/link@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.3.0.tgz#c0c05ff52d0f0c659fcf221627edfcd58e477a5c" + integrity sha512-8CeXzGL7okrsVXsy2sHXI2KuBaczw3cblAnA2+FJPUqSKMPNbUTRzeU3bOlCjYtK0LbxC4ngENJTL3jJ8RaYQQ== dependencies: "@lerna/command" "^3.3.0" "@lerna/package-graph" "^3.1.2" @@ -1203,6 +1385,7 @@ "@lerna/list@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.3.2.tgz#1412b3cce2a83b1baa4ff6fb962d50b46c28ec98" + integrity sha512-XXEVy7w+i/xx8NeJmGirw4upEoEF9OfD6XPLjISNQc24VgQV+frXdVJ02QcP7Y/PkY1rdIVrOjvo3ipKVLUxaQ== dependencies: "@lerna/command" "^3.3.0" "@lerna/filter-options" "^3.3.2" @@ -1212,6 +1395,7 @@ "@lerna/listable@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.0.0.tgz#27209b1382c87abdbc964220e75c247d803d4199" + integrity sha512-HX/9hyx1HLg2kpiKXIUc1EimlkK1T58aKQ7ovO7rQdTx9ForpefoMzyLnHE1n4XrUtEszcSWJIICJ/F898M6Ag== dependencies: chalk "^2.3.1" columnify "^1.5.4" @@ -1219,6 +1403,7 @@ "@lerna/log-packed@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.0.4.tgz#6d1f6ce5ca68b9971f2a27f0ecf3c50684be174a" + integrity sha512-vVQHgMagE2wnbxhNY9nFkdu+Cx2TsyWalkJfkxbNzmo6gOCrDsxCBDj9vTEV8Q+4aWx0C0Bsc0sB2Eb8y/+ofA== dependencies: byte-size "^4.0.3" columnify "^1.5.4" @@ -1228,6 +1413,7 @@ "@lerna/npm-conf@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.0.0.tgz#7a4b8304a0ecd1e366208f656bd3d7f4dcb3b5e7" + integrity sha512-xXG7qt349t+xzaHTQELmIDjbq8Q49HOMR8Nx/gTDBkMl02Fno91LXFnA4A7ErPiyUSGqNSfLw+zgij0hgpeN7w== dependencies: config-chain "^1.1.11" pify "^3.0.0" @@ -1235,6 +1421,7 @@ "@lerna/npm-dist-tag@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.3.0.tgz#e1c5ab67674216d901266a16846b21cc81ff6afd" + integrity sha512-EtZJXzh3w5tqXEev+EBBPrWKWWn0WgJfxm4FihfS9VgyaAW8udIVZHGkIQ3f+tBtupcAzA9Q8cQNUkGF2efwmA== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/get-npm-exec-opts" "^3.0.0" @@ -1243,6 +1430,7 @@ "@lerna/npm-install@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.3.0.tgz#16d00ffd668d11b2386b3ac68bdac2cf8320e533" + integrity sha512-WoVvKdS8ltROTGSNQwo6NDq0YKnjwhvTG4li1okcN/eHKOS3tL9bxbgPx7No0wOq5DKBpdeS9KhAfee6LFAZ5g== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/get-npm-exec-opts" "^3.0.0" @@ -1255,6 +1443,7 @@ "@lerna/npm-publish@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.3.1.tgz#30384665d7ee387343332ece62ca231207bbabea" + integrity sha512-bVTlWIcBL6Zpyzqvr9C7rxXYcoPw+l7IPz5eqQDNREj1R39Wj18OWB2KTJq8l7LIX7Wf4C2A1uT5hJaEf9BuvA== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/get-npm-exec-opts" "^3.0.0" @@ -1267,6 +1456,7 @@ "@lerna/npm-run-script@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.3.0.tgz#3c79601c27c67121155b20e039be53130217db72" + integrity sha512-YqDguWZzp4jIomaE4aWMUP7MIAJAFvRAf6ziQLpqwoQskfWLqK5mW0CcszT1oLjhfb3cY3MMfSTFaqwbdKmICg== dependencies: "@lerna/child-process" "^3.3.0" "@lerna/get-npm-exec-opts" "^3.0.0" @@ -1275,12 +1465,14 @@ "@lerna/output@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.0.0.tgz#4ed4a30ed2f311046b714b3840a090990ba3ce35" + integrity sha512-EFxnSbO0zDEVKkTKpoCUAFcZjc3gn3DwPlyTDxbeqPU7neCfxP4rA4+0a6pcOfTlRS5kLBRMx79F2TRCaMM3DA== dependencies: npmlog "^4.1.2" "@lerna/package-graph@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.1.2.tgz#b70298a3a8c82e12090da33233bf242223a38f20" + integrity sha512-9wIWb49I1IJmyjPdEVZQ13IAi9biGfH/OZHOC04U2zXGA0GLiY+B3CAx6FQvqkZ8xEGfqzmXnv3LvZ0bQfc1aQ== dependencies: "@lerna/validation-error" "^3.0.0" npm-package-arg "^6.0.0" @@ -1289,6 +1481,7 @@ "@lerna/package@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.0.0.tgz#14afc9a6cb1f7f7b23c1d7c7aa81bdac7d44c0e5" + integrity sha512-djzEJxzn212wS8d9znBnlXkeRlPL7GqeAYBykAmsuq51YGvaQK67Umh5ejdO0uxexF/4r7yRwgrlRHpQs8Rfqg== dependencies: npm-package-arg "^6.0.0" write-pkg "^3.1.0" @@ -1296,6 +1489,7 @@ "@lerna/project@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.0.0.tgz#4320d2a2b4080cabcf95161d9c48475217d8a545" + integrity sha512-XhDFVfqj79jG2Speggd15RpYaE8uiR25UKcQBDmumbmqvTS7xf2cvl2pq2UTvDafaJ0YwFF3xkxQZeZnFMwdkw== dependencies: "@lerna/package" "^3.0.0" "@lerna/validation-error" "^3.0.0" @@ -1313,6 +1507,7 @@ "@lerna/prompt@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.3.1.tgz#ec53f9034a7a02a671627241682947f65078ab88" + integrity sha512-eJhofrUCUaItMIH6et8kI7YqHfhjWqGZoTsE+40NRCfAraOMWx+pDzfRfeoAl3qeRAH2HhNj1bkYn70FbUOxuQ== dependencies: inquirer "^6.2.0" npmlog "^4.1.2" @@ -1320,6 +1515,7 @@ "@lerna/publish@^3.4.0": version "3.4.0" resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.4.0.tgz#d2665f7b16eb3b2b8962c47fcf31fe901ff9a288" + integrity sha512-wcqWDKbkDjyj6F9Mw4/LL2CtpCN61RazNKxYm+fyJ20P2zfcAwLEwxttA6ZWIO8xUiLXkCTFIhwOulHyAPAq3w== dependencies: "@lerna/batch-packages" "^3.1.2" "@lerna/check-working-tree" "^3.3.0" @@ -1351,6 +1547,7 @@ "@lerna/resolve-symlink@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.3.0.tgz#c5d99a60cb17e2ea90b3521a0ba445478d194a44" + integrity sha512-KmoPDcFJ2aOK2inYHbrsiO9SodedUj0L1JDvDgirVNIjMUaQe2Q6Vi4Gh+VCJcyB27JtfHioV9R2NxU72Pk2hg== dependencies: fs-extra "^7.0.0" npmlog "^4.1.2" @@ -1359,6 +1556,7 @@ "@lerna/rimraf-dir@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.3.0.tgz#687e9bb3668a9e540e281302a52d9a573860f5db" + integrity sha512-vSqOcZ4kZduiSprbt+y40qziyN3VKYh+ygiCdnbBbsaxpdKB6CfrSMUtrLhVFrqUfBHIZRzHIzgjTdtQex1KLw== dependencies: "@lerna/child-process" "^3.3.0" npmlog "^4.1.2" @@ -1368,6 +1566,7 @@ "@lerna/run-lifecycle@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.3.1.tgz#13a03f353aab6c1639bf8953f58f0c45585785ac" + integrity sha512-xy4K3amlXk0LjSa5d3VqmrW9SsxMyvI7lw2dHDMb5PqjjcjMQgb6+nFbycwyJMhCP8u7MwQIZ4hFYF9XYbWSzQ== dependencies: "@lerna/npm-conf" "^3.0.0" npm-lifecycle "^2.0.0" @@ -1376,6 +1575,7 @@ "@lerna/run-parallel-batches@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.0.0.tgz#468704934084c74991d3124d80607857d4dfa840" + integrity sha512-Mj1ravlXF7AkkewKd9YFq9BtVrsStNrvVLedD/b2wIVbNqcxp8lS68vehXVOzoL/VWNEDotvqCQtyDBilCodGw== dependencies: p-map "^1.2.0" p-map-series "^1.0.0" @@ -1383,6 +1583,7 @@ "@lerna/run@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.3.2.tgz#f521f4a22585c90758f34a584cb1871f8bb2a83e" + integrity sha512-cruwRGZZWnQ5I0M+AqcoT3Xpq2wj3135iVw4n59/Op6dZu50sMFXZNLiTTTZ15k8rTKjydcccJMdPSpTHbH7/A== dependencies: "@lerna/batch-packages" "^3.1.2" "@lerna/command" "^3.3.0" @@ -1396,6 +1597,7 @@ "@lerna/symlink-binary@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.3.0.tgz#99ea570b21baabd61ecab27582eeb1d7b2c5f9cf" + integrity sha512-zRo6CimhvH/VJqCFl9T4IC6syjpWyQIxEfO2sBhrapEcfwjtwbhoGgKwucsvt4rIpFazCw63jQ/AXMT27KUIHg== dependencies: "@lerna/create-symlink" "^3.3.0" "@lerna/package" "^3.0.0" @@ -1406,6 +1608,7 @@ "@lerna/symlink-dependencies@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.3.0.tgz#13bcaed3e37986ab01b13498a459c7f609397dc3" + integrity sha512-IRngSNCmuD5uBKVv23tHMvr7Mplti0lKHilFKcvhbvhAfu6m/Vclxhkfs/uLyHzG+DeRpl/9o86SQET3h4XDhg== dependencies: "@lerna/create-symlink" "^3.3.0" "@lerna/resolve-symlink" "^3.3.0" @@ -1418,12 +1621,14 @@ "@lerna/validation-error@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.0.0.tgz#a27e90051c3ba71995e2a800a43d94ad04b3e3f4" + integrity sha512-5wjkd2PszV0kWvH+EOKZJWlHEqCTTKrWsvfHnHhcUaKBe/NagPZFWs+0xlsDPZ3DJt5FNfbAPAnEBQ05zLirFA== dependencies: npmlog "^4.1.2" "@lerna/version@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.3.2.tgz#b1f4be43f61edf97428efca09dddc47ffd769bb4" + integrity sha512-2MHP6mA1f0t3UdzqPpfgAhsT1L64HOedlJxrQUoHrkou/G25Od4wjmKr9OZ0Oc4CLDbXD/sYEmE/9fZi1GGgKg== dependencies: "@lerna/batch-packages" "^3.1.2" "@lerna/check-working-tree" "^3.3.0" @@ -1450,13 +1655,20 @@ "@lerna/write-log-file@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.0.0.tgz#2f95fee80c6821fe1ee6ccf8173d2b4079debbd2" + integrity sha512-SfbPp29lMeEVOb/M16lJwn4nnx5y+TwCdd7Uom9umd7KcZP0NOvpnX0PHehdonl7TyHZ1Xx2maklYuCLbQrd/A== dependencies: npmlog "^4.1.2" write-file-atomic "^2.3.0" +"@moocar/lokijs@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@moocar/lokijs/-/lokijs-1.0.1.tgz#545227c173030dd0e6b1e6bdcef528012a6c325c" + integrity sha512-7kqLSxGjYTJ+a+DkJ71bJSF3LLuOShSFCXfv5Eg2qVpCQp/E1JTlAp+rHgVy2HAu8QLuePKx57xURwt6o1EuFA== + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" @@ -1464,10 +1676,12 @@ "@nodelib/fs.stat@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz#54c5a964462be3d4d78af631363c18d6fa91ac26" + integrity sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw== "@reach/router@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.1.1.tgz#24a5b20f1cc9e55e2cbcdc454fb82c94db479a81" + integrity sha1-JKWyDxzJ5V4svNxFT7gslNtHmoE= dependencies: create-react-context "^0.2.1" invariant "^2.2.3" @@ -1475,33 +1689,52 @@ react-lifecycles-compat "^3.0.4" warning "^3.0.0" +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + dependencies: + any-observable "^0.3.0" + +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" + integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== "@types/configstore@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" + integrity sha1-zR6FU2M60xhcPy8jns/10mQ+krY= "@types/debug@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.29.tgz#a1e514adfbd92f03a224ba54d693111dbf1f3754" + integrity sha1-oeUUrfvZLwOiJLpU1pMRHb8fN1Q= "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/events@*": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + integrity sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA== "@types/get-port@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-0.0.4.tgz#eb6bb7423d9f888b632660dc7d2fd3e69a35643e" + integrity sha1-62u3Qj2fiItjJmDcfS/T5po1ZD4= "@types/glob@^5.0.30": version "5.0.35" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.35.tgz#1ae151c802cece940443b5ac246925c85189f32a" + integrity sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg== dependencies: "@types/events" "*" "@types/minimatch" "*" @@ -1510,46 +1743,56 @@ "@types/graphql@0.12.6": version "0.12.6" resolved "http://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz#3d619198585fcabe5f4e1adfb5cf5f3388c66c13" + integrity sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ== "@types/history@*": version "4.7.0" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.0.tgz#2fac51050c68f7d6f96c5aafc631132522f4aa3f" + integrity sha512-1A/RUAX4VtmGzNTGLSfmiPxQ3XwUSe/1YN4lW9GRa+j307oFK6MPjhlvw6jEHDodUBIvSvrA7/iHDchr5LS+0Q== "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/mkdirp@^0.3.29": version "0.3.29" resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.3.29.tgz#7f2ad7ec55f914482fc9b1ec4bb1ae6028d46066" + integrity sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY= "@types/node@*": version "10.9.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz#0f4cb2dc7c1de6096055357f70179043c33e9897" + integrity sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw== "@types/node@^7.0.11": version "7.0.70" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.70.tgz#688aaeb6e6d374ed016c4dc2c46de695859d6887" + integrity sha512-bAcW/1aM8/s5iFKhRpu/YJiQf/b1ZwnMRqqsWRCmAqEDQF2zY8Ez3Iu9AcZKFKc3vCJc8KJVpJ6Pn54sJ1BvXQ== "@types/node@^9.4.6": version "9.6.31" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.31.tgz#4d1722987f8d808b4c194dceb8c213bd92f028e5" + integrity sha512-kIVlvUBizL51ALNMPbmcZoM7quHyB7J6fLRwQe22JsMp39nrVSHdBeVVS3fnQCK1orxI3O8LScmb8cuiihkAfA== "@types/opn@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/opn/-/opn-5.1.0.tgz#bff7bc371677f4bdbb37884400e03fd81f743927" + integrity sha512-TNPrB7Y1xl06zDI0aGyqkgxjhIev3oJ+cdqlZ52MTAHauWpEL/gIUdHebIfRHFZk9IqSBpE2ci1DT48iZH81yg== dependencies: "@types/node" "*" "@types/prop-types@*": version "15.5.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.5.tgz#17038dd322c2325f5da650a94d5f9974943625e3" + integrity sha512-mOrlCEdwX3seT3n0AXNt4KNPAZZxcsABUHwBgFXOt+nvFUXkxCAO6UBJHPrDxWEa2KDMil86355fjo8jbZ+K0Q== dependencies: "@types/react" "*" "@types/reach__router@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.0.1.tgz#f927a0c6ae198e032b5990196c2b7606a9fb14a1" + integrity sha512-i2bswRNBtAxtxEThrYBTCnDtMPosywAJVBT05JsJaczhaIRMbjqmlZ5wUDde1cUl7OJs9WfM3FUkZE9NRF3pMQ== dependencies: "@types/history" "*" "@types/react" "*" @@ -1557,6 +1800,7 @@ "@types/react@*": version "16.4.14" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.14.tgz#47c604c8e46ed674bbdf4aabf82b34b9041c6a04" + integrity sha512-Gh8irag2dbZ2K6vPn+S8+LNrULuG3zlCgJjVUrvuiUK7waw9d9CFk2A/tZFyGhcMDUyO7tznbx1ZasqlAGjHxA== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -1564,10 +1808,12 @@ "@types/tmp@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.32.tgz#0d3cb31022f8427ea58c008af32b80da126ca4e3" + integrity sha1-DTyzECL4Qn6ljACK8yuA2hJspOM= "@webassemblyjs/ast@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" + integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== dependencies: "@webassemblyjs/helper-module-context" "1.7.6" "@webassemblyjs/helper-wasm-bytecode" "1.7.6" @@ -1577,38 +1823,46 @@ "@webassemblyjs/floating-point-hex-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" + integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== "@webassemblyjs/helper-api-error@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" + integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== "@webassemblyjs/helper-buffer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" + integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== "@webassemblyjs/helper-code-frame@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" + integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== dependencies: "@webassemblyjs/wast-printer" "1.7.6" "@webassemblyjs/helper-fsm@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" + integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== "@webassemblyjs/helper-module-context@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" + integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== dependencies: mamacro "^0.0.3" "@webassemblyjs/helper-wasm-bytecode@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" + integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== "@webassemblyjs/helper-wasm-section@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" + integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -1618,22 +1872,26 @@ "@webassemblyjs/ieee754@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" + integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" + integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== dependencies: "@xtuc/long" "4.2.1" "@webassemblyjs/utf8@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" + integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== "@webassemblyjs/wasm-edit@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" + integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -1647,6 +1905,7 @@ "@webassemblyjs/wasm-gen@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" + integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-wasm-bytecode" "1.7.6" @@ -1657,6 +1916,7 @@ "@webassemblyjs/wasm-opt@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" + integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -1666,6 +1926,7 @@ "@webassemblyjs/wasm-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" + integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-api-error" "1.7.6" @@ -1677,6 +1938,7 @@ "@webassemblyjs/wast-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" + integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/floating-point-hex-parser" "1.7.6" @@ -1689,6 +1951,7 @@ "@webassemblyjs/wast-printer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" + integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/wast-parser" "1.7.6" @@ -1697,14 +1960,17 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== JSONStream@^1.0.3, JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e" + integrity sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg== dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -1712,14 +1978,17 @@ JSONStream@^1.0.3, JSONStream@^1.0.4, JSONStream@^1.3.4: abab@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== accepts@^1.3.0, accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= dependencies: mime-types "~2.1.18" negotiator "0.6.1" @@ -1727,40 +1996,55 @@ accepts@^1.3.0, accepts@~1.3.4, accepts@~1.3.5: acorn-dynamic-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== dependencies: acorn "^5.0.0" acorn-globals@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" + integrity sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ== dependencies: acorn "^5.0.0" acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= dependencies: acorn "^3.0.4" +acorn-jsx@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" + integrity sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== + dependencies: + acorn "^5.0.3" + acorn@^3.0.4: version "3.3.0" resolved "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^5.0.0, acorn@^5.2.1, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.1: +acorn@^5.0.0, acorn@^5.0.3, acorn@^5.2.1, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.0, acorn@^5.6.2, acorn@^5.7.1: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= address@1.0.3, address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== adler-32@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25" + integrity sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU= dependencies: exit-on-epipe "~1.0.1" printj "~1.1.0" @@ -1768,26 +2052,31 @@ adler-32@~1.2.0: after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" agentkeepalive@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef" + integrity sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8= agentkeepalive@^3.4.1: version "3.5.1" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.1.tgz#4eba75cf2ad258fc09efd506cdb8d8c2971d35a4" + integrity sha512-Cte/sTY9/XcygXjJ0q58v//SnEQ7ViWExKyJpLJlLqomDbQyMLh6Is4KuWJ/wmxzhiwkGRple7Gqv1zf6Syz5w== dependencies: humanize-ms "^1.2.1" aggregate-error@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-1.0.0.tgz#888344dad0220a72e3af50906117f48771925fac" + integrity sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w= dependencies: clean-stack "^1.0.0" indent-string "^3.0.0" @@ -1795,6 +2084,7 @@ aggregate-error@^1.0.0: ajax-request@^1.2.0: version "1.2.3" resolved "https://registry.yarnpkg.com/ajax-request/-/ajax-request-1.2.3.tgz#99fcbec1d6d2792f85fa949535332bd14f5f3790" + integrity sha1-mfy+wdbSeS+F+pSVNTMr0U9fN5A= dependencies: file-system "^2.1.1" utils-extend "^1.0.7" @@ -1802,27 +2092,42 @@ ajax-request@^1.2.0: ajv-errors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= -ajv-keywords@^3.1.0, ajv-keywords@^3.2.0: +ajv-keywords@^3.0.0, ajv-keywords@^3.1.0, ajv-keywords@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" +ajv@^6.0.1, ajv@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59" + integrity sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.1.0, ajv@^6.5.0: version "6.5.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -1832,6 +2137,7 @@ ajv@^6.1.0, ajv@^6.5.0: algoliasearch@^3.25.1: version "3.30.0" resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-3.30.0.tgz#355585e49b672e5f71d45b9c2b371ecdff129cd1" + integrity sha512-FuinyPgNn0MeAHm9pan6rLgY6driY3mcTo4AWNBMY1MUReeA5PQA8apV/3SNXqA5bbsuvMvmA0ZrVzrOmEeQTA== dependencies: agentkeepalive "^2.2.0" debug "^2.6.8" @@ -1852,6 +2158,7 @@ algoliasearch@^3.25.1: align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= dependencies: kind-of "^3.0.2" longest "^1.0.1" @@ -1860,68 +2167,88 @@ align-text@^0.1.1, align-text@^0.1.3: alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" ansi-colors@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" + integrity sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg== ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= dependencies: ansi-wrap "0.1.0" ansi-html@0.0.7, ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.0.1, ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: micromatch "^2.1.5" normalize-path "^2.0.0" @@ -1929,6 +2256,7 @@ anymatch@^1.3.0: anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" @@ -1936,12 +2264,14 @@ anymatch@^2.0.0: apollo-link-http-common@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.4.tgz#877603f7904dc8f70242cac61808b1f8d034b2c3" + integrity sha512-4j6o6WoXuSPen9xh4NBaX8/vL98X1xY2cYzUEK1F8SzvHe2oFONfxJBTekwU8hnvapcuq8Qh9Uct+gelu8T10g== dependencies: apollo-link "^1.2.2" apollo-link-http@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.4.tgz#b80b7b4b342c655b6a5614624b076a36be368f43" + integrity sha512-e9Ng3HfnW00Mh3TI6DhNRfozmzQOtKgdi+qUAsHBOEcTP0PTAmb+9XpeyEEOueLyO0GXhB92HUCIhzrWMXgwyg== dependencies: apollo-link "^1.2.2" apollo-link-http-common "^0.2.4" @@ -1949,6 +2279,7 @@ apollo-link-http@^1.5.4: apollo-link@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.1.tgz#c120b16059f9bd93401b9f72b94d2f80f3f305d2" + integrity sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg== dependencies: "@types/node" "^9.4.6" apollo-utilities "^1.0.0" @@ -1957,6 +2288,7 @@ apollo-link@1.2.1: apollo-link@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.2.tgz#54c84199b18ac1af8d63553a68ca389c05217a03" + integrity sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw== dependencies: "@types/graphql" "0.12.6" apollo-utilities "^1.0.0" @@ -1965,6 +2297,7 @@ apollo-link@^1.2.2: apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: version "1.0.21" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.21.tgz#cb8b5779fe275850b16046ff8373f4af2de90765" + integrity sha512-ZcxELlEl+sDCYBgEMdNXJAsZtRVm8wk4HIA58bMsqYfd1DSAJQEtZ93F0GZgYNAGy3QyaoBeZtbb0/01++G8JQ== dependencies: fast-json-stable-stringify "^2.0.0" fclone "^1.0.11" @@ -1972,38 +2305,38 @@ apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: append-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= dependencies: buffer-equal "^1.0.0" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - append-transform@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== dependencies: default-require-extensions "^2.0.0" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== archive-type@^3.0.0, archive-type@^3.0.1: version "3.2.0" resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6" + integrity sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y= dependencies: file-type "^3.1.0" are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -2011,16 +2344,19 @@ are-we-there-yet@~1.1.2: argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argv@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= aria-query@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= dependencies: ast-types-flow "0.0.7" commander "^2.11.0" @@ -2028,56 +2364,69 @@ aria-query@^3.0.0: arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= dependencies: arr-flatten "^1.0.1" arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-flatten@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= array-includes@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= dependencies: define-properties "^1.1.2" es-abstract "^1.7.0" @@ -2085,52 +2434,64 @@ array-includes@^3.0.3: array-iterate@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.2.tgz#f66a57e84426f8097f4197fbb6c051b8e5cdf7d8" + integrity sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ== array-map@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= array-reduce@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= array-slice@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -2139,26 +2500,31 @@ asn1.js@^4.0.0: asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= dependencies: util "0.10.3" assertion-error@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== assetgraph@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/assetgraph/-/assetgraph-5.2.0.tgz#6cfeb1295692ffd4e88d4374a394537240a316f1" + integrity sha512-WWrEsw5/bL5vgYl6tFLlp6/++4Zd/jVmgCT1EmMY+2oECP1w7OPjBe5rGtBD5wu59svkqBMVrmJ1awpmrJDFUQ== dependencies: bluebird "^3.5.1" capitalize "^1.0.0" @@ -2206,10 +2572,12 @@ assetgraph@^5.1.1: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= ast-transform@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/ast-transform/-/ast-transform-0.0.0.tgz#74944058887d8283e189d954600947bc98fe0062" + integrity sha1-dJRAWIh9goPhidlUYAlHvJj+AGI= dependencies: escodegen "~1.2.0" esprima "~1.0.4" @@ -2218,56 +2586,69 @@ ast-transform@0.0.0: ast-types-flow@0.0.7, ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= ast-types@0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.2.tgz#aef76a04fde54634976fc94defaad1a67e2eadb0" + integrity sha512-ufWX953VU1eIuWqxS0nRDMYlGyFH+yxln5CsmIHlpzEt3fdYqUnRtsFt0XAsQot8OaVCwFqxT1RiwvtzYjeYeg== ast-types@0.11.5: version "0.11.5" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" + integrity sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw== ast-types@^0.7.0: version "0.7.8" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" + integrity sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk= astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-each-series@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" + integrity sha1-9C/YFV048hpbjqB8KOBj7RcAsTg= async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@^1.4.0, async@^1.5.0, async@^1.5.2: +async@1.5.2, async@^1.4.0, async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.1.2, async@^2.1.4, async@^2.5.0: +async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== dependencies: lodash "^4.17.10" asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^8.6.5: version "8.6.5" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" + integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig== dependencies: browserslist "^3.2.8" caniuse-lite "^1.0.30000864" @@ -2279,14 +2660,17 @@ autoprefixer@^8.6.5: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== axios@^0.18.0: version "0.18.0" resolved "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= dependencies: follow-redirects "^1.3.0" is-buffer "^1.1.5" @@ -2294,12 +2678,14 @@ axios@^0.18.0: axobject-query@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.1.tgz#05dfa705ada8ad9db993fa6896f22d395b0b0a07" + integrity sha1-Bd+nBa2orZ25k/polvItOVsLCgc= dependencies: ast-types-flow "0.0.7" babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -2308,10 +2694,12 @@ babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: babel-core@7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== babel-core@^6.0.0, babel-core@^6.26.0: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: babel-code-frame "^6.26.0" babel-generator "^6.26.0" @@ -2336,6 +2724,7 @@ babel-core@^6.0.0, babel-core@^6.26.0: babel-eslint@8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.1.tgz#136888f3c109edc65376c23ebf494f36a3e03951" + integrity sha512-RzdVOyWKQRUnLXhwLk+eKb4oyW+BykZSkpYwFhM4tnfzAG5OWfvG0w/uyzMp5XKEU0jN82+JefHr39bG2+KhRQ== dependencies: "@babel/code-frame" "7.0.0-beta.36" "@babel/traverse" "7.0.0-beta.36" @@ -2347,6 +2736,7 @@ babel-eslint@8.2.1: babel-eslint@^8.2.2: version "8.2.6" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" + integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA== dependencies: "@babel/code-frame" "7.0.0-beta.44" "@babel/traverse" "7.0.0-beta.44" @@ -2358,12 +2748,14 @@ babel-eslint@^8.2.2: babel-extract-comments@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== dependencies: babylon "^6.18.0" babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: babel-messages "^6.23.0" babel-runtime "^6.26.0" @@ -2377,6 +2769,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0: babel-helper-bindify-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA= dependencies: babel-runtime "^6.22.0" babel-traverse "^6.24.1" @@ -2385,6 +2778,7 @@ babel-helper-bindify-decorators@^6.24.1: babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= dependencies: babel-helper-explode-assignable-expression "^6.24.1" babel-runtime "^6.22.0" @@ -2393,6 +2787,7 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-helper-builder-react-jsx@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA= dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" @@ -2401,6 +2796,7 @@ babel-helper-builder-react-jsx@^6.24.1: babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -2410,6 +2806,7 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.26.0" @@ -2419,6 +2816,7 @@ babel-helper-define-map@^6.24.1: babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= dependencies: babel-runtime "^6.22.0" babel-traverse "^6.24.1" @@ -2427,6 +2825,7 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-helper-explode-class@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes= dependencies: babel-helper-bindify-decorators "^6.24.1" babel-runtime "^6.22.0" @@ -2436,6 +2835,7 @@ babel-helper-explode-class@^6.24.1: babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= dependencies: babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" @@ -2446,6 +2846,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2453,6 +2854,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2460,6 +2862,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2467,6 +2870,7 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" @@ -2475,6 +2879,7 @@ babel-helper-regex@^6.24.1: babel-helper-remap-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -2485,6 +2890,7 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= dependencies: babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" @@ -2496,6 +2902,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -2503,6 +2910,7 @@ babel-helpers@^6.24.1: babel-jest@^22.4.3: version "22.4.4" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.4.tgz#977259240420e227444ebe49e226a61e49ea659d" + integrity sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ== dependencies: babel-plugin-istanbul "^4.1.5" babel-preset-jest "^22.4.4" @@ -2510,6 +2918,15 @@ babel-jest@^22.4.3: babel-jest@^23.4.2: version "23.4.2" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.2.tgz#f276de67798a5d68f2d6e87ff518c2f6e1609877" + integrity sha512-wg1LJ2tzsafXqPFVgAsYsMCVD5U7kwJZAvbZIxVm27iOewsQw1BR7VZifDlMTEWVo3wasoPPyMdKXWCsfFPr3Q== + dependencies: + babel-plugin-istanbul "^4.1.6" + babel-preset-jest "^23.2.0" + +babel-jest@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" + integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== dependencies: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" @@ -2517,6 +2934,7 @@ babel-jest@^23.4.2: babel-loader@8.0.0-beta.4: version "8.0.0-beta.4" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.4.tgz#c3fab00696c385c70c04dbe486391f0eb996f345" + integrity sha512-fQMCj8jRpF/2CPuVnpFrOb8+8pRuquKqoC+tspy5RWBmL37/2qc104sLLLqpwWltrFzpYb30utPpKc3H6P3ETQ== dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -2526,32 +2944,54 @@ babel-loader@8.0.0-beta.4: babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= dependencies: babel-runtime "^6.22.0" babel-plugin-add-module-exports@^0.2.1: version "0.2.1" resolved "http://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25" + integrity sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU= babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= dependencies: babel-runtime "^6.22.0" babel-plugin-dev-expression@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz#d4a7beefefbb50e3f2734990a82a2486cf9eb9ee" + integrity sha1-1Ke+7++7UOPyc0mQqCokhs+eue4= babel-plugin-dynamic-import-node@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz#f91631e703e0595e47d4beafbb088576c87fbeee" + integrity sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ== dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" +babel-plugin-emotion@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.0.tgz#ceb177a64d5ccba3c28d7de4a0697d0f3a66315f" + integrity sha512-O0ykSwaJQVHuZcAd0/TuMbG6QzuArGheL9XeEoQfgBeFlcyrGEj/2JexsCk4iMMiykxW7hfulm0zKy864PWOSw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/hash" "0.7.1" + "@emotion/memoize" "0.7.1" + "@emotion/serialize" "0.11.0" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + babel-plugin-istanbul@^4.1.5, babel-plugin-istanbul@^4.1.6: version "4.1.6" resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== dependencies: babel-plugin-syntax-object-rest-spread "^6.13.0" find-up "^2.1.0" @@ -2561,14 +3001,24 @@ babel-plugin-istanbul@^4.1.5, babel-plugin-istanbul@^4.1.6: babel-plugin-jest-hoist@^22.4.4: version "22.4.4" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b" + integrity sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ== babel-plugin-jest-hoist@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" + integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= + +babel-plugin-jsx-pragmatic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-1.0.2.tgz#41e2beb8642235f34b2a7ab12ca39e07201b8e59" + integrity sha1-QeK+uGQiNfNLKnqxLKOeByAbjlk= + dependencies: + babel-plugin-syntax-jsx "^6.0.0" babel-plugin-lodash@^3.2.11: version "3.3.4" resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" + integrity sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg== dependencies: "@babel/helper-module-imports" "^7.0.0-beta.49" "@babel/types" "^7.0.0-beta.49" @@ -2576,15 +3026,18 @@ babel-plugin-lodash@^3.2.11: lodash "^4.17.10" require-package-name "^2.0.1" -babel-plugin-macros@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.0.tgz#6c5f9836e1f6c0a9743b3bab4af29f73e437e544" +babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz#21b1a2e82e2130403c5ff785cba6548e9b644b28" + integrity sha512-NBVpEWN4OQ/bHnu1fyDaAaTPAjnhXCEPqr1RwqxrU7b6tZ2hypp+zX4hlNfmVGfClD5c3Sl6Hfj5TJNF5VG5aA== dependencies: cosmiconfig "^5.0.5" + resolve "^1.8.1" babel-plugin-react-css-modules@^3.2.1: version "3.4.2" resolved "https://registry.yarnpkg.com/babel-plugin-react-css-modules/-/babel-plugin-react-css-modules-3.4.2.tgz#4c1db8d4bc8b2973f6c689da7dbd56b0cb8f099c" + integrity sha512-pU7owkj5IO6rlleRzaF27ME/eCG7ZhO+EM+WfthfeykYe0eZzK51JD7nlcUr4UU9y4Zlc+QsTH+139L7PSwYtQ== dependencies: ajv "^6.5.0" ajv-keywords "^3.2.0" @@ -2602,68 +3055,84 @@ babel-plugin-react-css-modules@^3.2.1: babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= babel-plugin-syntax-async-generators@^6.5.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= babel-plugin-syntax-class-constructor-call@^6.18.0: version "6.18.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + integrity sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY= babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs= babel-plugin-syntax-do-expressions@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" + integrity sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0= babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= babel-plugin-syntax-export-extensions@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + integrity sha1-cKFITw+QiaToStRLrDU8lbmxJyE= babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.8.0: version "6.18.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0= babel-plugin-syntax-function-bind@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" + integrity sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y= -babel-plugin-syntax-jsx@^6.18.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: +babel-plugin-syntax-jsx@^6.0.0, babel-plugin-syntax-jsx@^6.18.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: version "6.18.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= babel-plugin-syntax-trailing-function-commas@^6.22.0, babel-plugin-syntax-trailing-function-commas@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= babel-plugin-system-import-transformer@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-system-import-transformer/-/babel-plugin-system-import-transformer-3.1.0.tgz#d37f0cae8e61ef39060208331d931b5e630d7c5f" + integrity sha1-038Mro5h7zkGAggzHZMbXmMNfF8= dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-plugin-transform-async-generator-functions@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= dependencies: babel-helper-remap-async-to-generator "^6.24.1" babel-plugin-syntax-async-generators "^6.5.0" @@ -2672,6 +3141,7 @@ babel-plugin-transform-async-generator-functions@^6.24.1: babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= dependencies: babel-helper-remap-async-to-generator "^6.24.1" babel-plugin-syntax-async-functions "^6.8.0" @@ -2680,6 +3150,7 @@ babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async- babel-plugin-transform-class-constructor-call@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + integrity sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk= dependencies: babel-plugin-syntax-class-constructor-call "^6.18.0" babel-runtime "^6.22.0" @@ -2688,6 +3159,7 @@ babel-plugin-transform-class-constructor-call@^6.24.1: babel-plugin-transform-class-properties@^6.24.1, babel-plugin-transform-class-properties@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= dependencies: babel-helper-function-name "^6.24.1" babel-plugin-syntax-class-properties "^6.8.0" @@ -2697,6 +3169,7 @@ babel-plugin-transform-class-properties@^6.24.1, babel-plugin-transform-class-pr babel-plugin-transform-decorators-legacy@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1" + integrity sha512-jYHwjzRXRelYQ1uGm353zNzf3QmtdCfvJbuYTZ4gKveK7M9H1fs3a5AKdY1JUDl0z97E30ukORW1dzhWvsabtA== dependencies: babel-plugin-syntax-decorators "^6.1.18" babel-runtime "^6.2.0" @@ -2705,6 +3178,7 @@ babel-plugin-transform-decorators-legacy@^1.3.4: babel-plugin-transform-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0= dependencies: babel-helper-explode-class "^6.24.1" babel-plugin-syntax-decorators "^6.13.0" @@ -2715,6 +3189,7 @@ babel-plugin-transform-decorators@^6.24.1: babel-plugin-transform-do-expressions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" + integrity sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs= dependencies: babel-plugin-syntax-do-expressions "^6.8.0" babel-runtime "^6.22.0" @@ -2722,18 +3197,21 @@ babel-plugin-transform-do-expressions@^6.22.0: babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1, babel-plugin-transform-es2015-block-scoping@^6.8.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= dependencies: babel-runtime "^6.26.0" babel-template "^6.26.0" @@ -2744,6 +3222,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es20 babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= dependencies: babel-helper-define-map "^6.24.1" babel-helper-function-name "^6.24.1" @@ -2758,6 +3237,7 @@ babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-cla babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1, babel-plugin-transform-es2015-computed-properties@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -2765,12 +3245,14 @@ babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transfor babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0, babel-plugin-transform-es2015-destructuring@^6.8.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2778,12 +3260,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2 babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0, babel-plugin-transform-es2015-for-of@^6.8.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es2015-function-name@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -2792,12 +3276,14 @@ babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es20 babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" @@ -2806,6 +3292,7 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015 babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.8.0: version "6.26.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== dependencies: babel-plugin-transform-strict-mode "^6.24.1" babel-runtime "^6.26.0" @@ -2815,6 +3302,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -2823,6 +3311,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-e babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" @@ -2831,6 +3320,7 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015 babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1, babel-plugin-transform-es2015-object-super@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" @@ -2838,6 +3328,7 @@ babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es201 babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1, babel-plugin-transform-es2015-parameters@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= dependencies: babel-helper-call-delegate "^6.24.1" babel-helper-get-function-arity "^6.24.1" @@ -2849,6 +3340,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015- babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1, babel-plugin-transform-es2015-shorthand-properties@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2856,12 +3348,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transfo babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -2870,18 +3364,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es201 babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -2890,18 +3387,21 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es20 babel-plugin-transform-es3-member-expression-literals@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz#733d3444f3ecc41bef8ed1a6a4e09657b8969ebb" + integrity sha1-cz00RPPsxBvvjtGmpOCWV7iWnrs= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es3-property-literals@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz#b2078d5842e22abf40f73e8cde9cd3711abd5758" + integrity sha1-sgeNWELiKr9A9z6M3pzTcRq9V1g= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= dependencies: babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" babel-plugin-syntax-exponentiation-operator "^6.8.0" @@ -2910,6 +3410,7 @@ babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-e babel-plugin-transform-export-extensions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + integrity sha1-U3OLR+deghhYnuqUbLvTkQm75lM= dependencies: babel-plugin-syntax-export-extensions "^6.8.0" babel-runtime "^6.22.0" @@ -2917,6 +3418,7 @@ babel-plugin-transform-export-extensions@^6.22.0: babel-plugin-transform-flow-strip-types@^6.22.0, babel-plugin-transform-flow-strip-types@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988= dependencies: babel-plugin-syntax-flow "^6.18.0" babel-runtime "^6.22.0" @@ -2924,6 +3426,7 @@ babel-plugin-transform-flow-strip-types@^6.22.0, babel-plugin-transform-flow-str babel-plugin-transform-function-bind@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" + integrity sha1-xvuOlqwpajELjPjqQBRiQH3fapc= dependencies: babel-plugin-syntax-function-bind "^6.8.0" babel-runtime "^6.22.0" @@ -2931,6 +3434,7 @@ babel-plugin-transform-function-bind@^6.22.0: babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0, babel-plugin-transform-object-rest-spread@^6.8.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= dependencies: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" @@ -2938,12 +3442,14 @@ babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object babel-plugin-transform-react-display-name@^6.23.0, babel-plugin-transform-react-display-name@^6.8.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" + integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE= dependencies: babel-runtime "^6.22.0" babel-plugin-transform-react-jsx-self@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" + integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24= dependencies: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" @@ -2951,6 +3457,7 @@ babel-plugin-transform-react-jsx-self@^6.22.0: babel-plugin-transform-react-jsx-source@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY= dependencies: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" @@ -2958,6 +3465,7 @@ babel-plugin-transform-react-jsx-source@^6.22.0: babel-plugin-transform-react-jsx@^6.24.1, babel-plugin-transform-react-jsx@^6.8.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM= dependencies: babel-helper-builder-react-jsx "^6.24.1" babel-plugin-syntax-jsx "^6.8.0" @@ -2966,12 +3474,14 @@ babel-plugin-transform-react-jsx@^6.24.1, babel-plugin-transform-react-jsx@^6.8. babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= dependencies: regenerator-transform "^0.10.0" babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2979,6 +3489,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-polyfill@^6.20.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= dependencies: babel-runtime "^6.26.0" core-js "^2.5.0" @@ -2987,6 +3498,7 @@ babel-polyfill@^6.20.0: babel-preset-env@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-syntax-trailing-function-commas "^6.22.0" @@ -3022,6 +3534,7 @@ babel-preset-env@^1.6.1: babel-preset-es2015@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-transform-es2015-arrow-functions "^6.22.0" @@ -3051,6 +3564,7 @@ babel-preset-es2015@^6.9.0: babel-preset-fbjs@^2.1.4: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-2.3.0.tgz#92ff81307c18b926895114f9828ae1674c097f80" + integrity sha512-ZOpAI1/bN0Y3J1ZAK9gRsFkHy9gGgJoDRUjtUCla/129LC7uViq9nIK22YdHfey8szohYoZY3f9L2lGOv0Edqw== dependencies: babel-plugin-check-es2015-constants "^6.8.0" babel-plugin-syntax-class-properties "^6.8.0" @@ -3084,12 +3598,14 @@ babel-preset-fbjs@^2.1.4: babel-preset-flow@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" + integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0= dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" babel-preset-jest@^22.4.4: version "22.4.4" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz#ec9fbd8bcd7dfd24b8b5320e0e688013235b7c39" + integrity sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA== dependencies: babel-plugin-jest-hoist "^22.4.4" babel-plugin-syntax-object-rest-spread "^6.13.0" @@ -3097,6 +3613,7 @@ babel-preset-jest@^22.4.4: babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" + integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= dependencies: babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" @@ -3104,6 +3621,7 @@ babel-preset-jest@^23.2.0: babel-preset-react@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A= dependencies: babel-plugin-syntax-jsx "^6.3.13" babel-plugin-transform-react-display-name "^6.23.0" @@ -3115,6 +3633,7 @@ babel-preset-react@^6.24.1: babel-preset-stage-0@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" + integrity sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo= dependencies: babel-plugin-transform-do-expressions "^6.22.0" babel-plugin-transform-function-bind "^6.22.0" @@ -3123,6 +3642,7 @@ babel-preset-stage-0@^6.24.1: babel-preset-stage-1@^6.24.1, babel-preset-stage-1@^6.5.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + integrity sha1-dpLNfc1oSZB+auSgqFWJz7niv7A= dependencies: babel-plugin-transform-class-constructor-call "^6.24.1" babel-plugin-transform-export-extensions "^6.22.0" @@ -3131,6 +3651,7 @@ babel-preset-stage-1@^6.24.1, babel-preset-stage-1@^6.5.0: babel-preset-stage-2@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE= dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-plugin-transform-class-properties "^6.24.1" @@ -3140,6 +3661,7 @@ babel-preset-stage-2@^6.24.1: babel-preset-stage-3@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= dependencies: babel-plugin-syntax-trailing-function-commas "^6.22.0" babel-plugin-transform-async-generator-functions "^6.24.1" @@ -3150,6 +3672,7 @@ babel-preset-stage-3@^6.24.1: babel-register@^6.26.0, babel-register@^6.9.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -3162,6 +3685,7 @@ babel-register@^6.26.0, babel-register@^6.9.0: babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -3169,6 +3693,7 @@ babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtim babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -3176,9 +3701,10 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0, babel-te babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@6.26.0, babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -3193,6 +3719,7 @@ babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-tra babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -3202,46 +3729,57 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24. babelify@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/babelify/-/babelify-8.0.0.tgz#6f60f5f062bfe7695754ef2403b842014a580ed3" + integrity sha512-xVr63fKEvMWUrrIbqlHYsMcc5Zdw4FSVesAHgkgajyCE1W8gbm9rbMakqavhxKvikGYMhEcqxTwB/gQmQ6lBtw== babylon@7.0.0-beta.36: version "7.0.0-beta.36" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.36.tgz#3a3683ba6a9a1e02b0aa507c8e63435e39305b9e" + integrity sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ== babylon@7.0.0-beta.40: version "7.0.0-beta.40" resolved "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz#91fc8cd56d5eb98b28e6fde41045f2957779940a" + integrity sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg== babylon@7.0.0-beta.44: version "7.0.0-beta.44" resolved "http://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g== babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== babylon@^7.0.0-beta, babylon@^7.0.0-beta.47: version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" + integrity sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ== backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= bail@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3" + integrity sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg== balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= base64-img@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/base64-img/-/base64-img-1.0.4.tgz#3e22d55d6c74a24553d840d2b1bc12a7db078d35" + integrity sha1-PiLVXWx0okVT2EDSsbwSp9sHjTU= dependencies: ajax-request "^1.2.0" file-system "^2.1.0" @@ -3249,18 +3787,22 @@ base64-img@^1.0.3: base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + integrity sha1-EQHpVE9KdrG8OybUUsqW16NeeXg= base64-js@^1.0.2, base64-js@^1.1.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -3273,30 +3815,36 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= dependencies: callsite "1.0.0" better-queue-memory@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/better-queue-memory/-/better-queue-memory-1.0.3.tgz#4e71fbb5f5976188656e0c5610da7b411af41493" + integrity sha512-QLFkfV+k/7e4L4FR7kqkXKtRi22kl68c/3AaBs0ArDSz0iiuAl0DjVlb6gM220jW7izLE5TRy7oXOd4Cxa0wog== better-queue@^3.8.10, better-queue@^3.8.6, better-queue@^3.8.7: version "3.8.10" resolved "https://registry.yarnpkg.com/better-queue/-/better-queue-3.8.10.tgz#1c93b9ec4cb3d1b72eb91d0efcb84fc80e8c6835" + integrity sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA== dependencies: better-queue-memory "^1.0.1" node-eta "^0.9.0" @@ -3305,14 +3853,17 @@ better-queue@^3.8.10, better-queue@^3.8.6, better-queue@^3.8.7: big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== bignumber.js@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8" + integrity sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg= bin-build@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" + integrity sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw= dependencies: archive-type "^3.0.1" decompress "^3.0.0" @@ -3325,6 +3876,7 @@ bin-build@^2.2.0: bin-build@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== dependencies: decompress "^4.0.0" download "^6.2.2" @@ -3335,12 +3887,14 @@ bin-build@^3.0.0: bin-check@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930" + integrity sha1-hvjm9CU4k99g3DFpV/WvAqywWTA= dependencies: executable "^1.0.0" bin-version-check@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0" + integrity sha1-5OXfKQuQaffRETJAMe/BP90RpbA= dependencies: bin-version "^1.0.0" minimist "^1.1.0" @@ -3350,12 +3904,14 @@ bin-version-check@^2.1.0: bin-version@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e" + integrity sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144= dependencies: find-versions "^1.0.0" bin-wrapper@^3.0.0, bin-wrapper@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb" + integrity sha1-Z9MwYmLksaXy+I7iNGT2plVneus= dependencies: bin-check "^2.0.0" bin-version-check "^2.1.0" @@ -3367,10 +3923,12 @@ bin-wrapper@^3.0.0, bin-wrapper@^3.0.1: binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + integrity sha1-RqoXUftqL5PuXmibsQh9SxTGwgU= bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -3378,32 +3936,39 @@ bl@^1.0.0: blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: inherits "~2.0.0" bluebird@2.9.34: version "2.9.34" resolved "http://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz#2f7b4ec80216328a9fddebdf69c8d4942feff7d8" + integrity sha1-L3tOyAIWMoqf3evfacjUlC/v99g= -bluebird@^3.5.0, bluebird@^3.5.1: +bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== bmp-js@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.3.tgz#64113e9c7cf1202b376ed607bf30626ebe57b18a" + integrity sha1-ZBE+nHzxICs3btYHvzBibr5XsYo= bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= dependencies: bytes "3.0.0" content-type "~1.0.4" @@ -3419,6 +3984,7 @@ body-parser@1.18.2: body@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" + integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= dependencies: continuable-cache "^0.3.1" error "^7.0.0" @@ -3428,6 +3994,7 @@ body@^5.1.0: bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -3439,18 +4006,17 @@ bonjour@^3.5.0: boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boolify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/boolify/-/boolify-1.0.1.tgz#b5c09e17cacd113d11b7bb3ed384cc012994d86b" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= bowser@^1.7.3: version "1.9.4" resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -3463,6 +4029,7 @@ boxen@^1.2.1: brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -3470,6 +4037,7 @@ brace-expansion@^1.0.0, brace-expansion@^1.1.7: braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= dependencies: expand-range "^1.8.1" preserve "^0.2.0" @@ -3478,6 +4046,7 @@ braces@^1.8.2: braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -3493,6 +4062,7 @@ braces@^2.3.0, braces@^2.3.1: brfs@^1.4.0: version "1.6.1" resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" + integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ== dependencies: quote-stream "^1.0.1" resolve "^1.1.5" @@ -3502,30 +4072,36 @@ brfs@^1.4.0: brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= brotli@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.2.tgz#525a9cad4fcba96475d7d388f6aecb13eed52f46" + integrity sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y= dependencies: base64-js "^1.1.2" browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" + integrity sha1-Ql1opY00R/AqBKqJQYf86K+Le44= browser-resolve@^1.11.3, browser-resolve@^1.7.0, browser-resolve@^1.8.1: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -3537,6 +4113,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" browserify-des "^1.0.0" @@ -3545,6 +4122,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" des.js "^1.0.0" @@ -3554,6 +4132,7 @@ browserify-des@^1.0.0: browserify-optional@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-optional/-/browserify-optional-1.0.1.tgz#1e13722cfde0d85f121676c2a72ced533a018869" + integrity sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk= dependencies: ast-transform "0.0.0" ast-types "^0.7.0" @@ -3562,6 +4141,7 @@ browserify-optional@^1.0.0: browserify-rsa@^4.0.0: version "4.0.1" resolved "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" randombytes "^2.0.1" @@ -3569,6 +4149,7 @@ browserify-rsa@^4.0.0: browserify-sign@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= dependencies: bn.js "^4.1.1" browserify-rsa "^4.0.0" @@ -3581,12 +4162,14 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" -browserslist@^3.2.6, browserslist@^3.2.8: +browserslist@3.2.8, browserslist@^3.2.6, browserslist@^3.2.8: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== dependencies: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" @@ -3594,6 +4177,7 @@ browserslist@^3.2.6, browserslist@^3.2.8: browserslist@^4.0.0, browserslist@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.1.tgz#328eb4ff1215b12df6589e9ab82f8adaa4fc8cd6" + integrity sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q== dependencies: caniuse-lite "^1.0.30000884" electron-to-chromium "^1.3.62" @@ -3602,20 +4186,24 @@ browserslist@^4.0.0, browserslist@^4.1.0: bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= dependencies: node-int64 "^0.4.0" bson@~1.0.4: version "1.0.9" resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57" + integrity sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg== buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== buffer-alloc@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" @@ -3623,38 +4211,47 @@ buffer-alloc@^1.1.0: buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= buffer-equal@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= buffer-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== buffer-shims@^1.0.0, buffer-shims@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= buffer-to-vinyl@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" + integrity sha1-APFfruOreh3aLN5tkSG//dB7ImI= dependencies: file-type "^3.1.0" readable-stream "^2.0.2" @@ -3664,10 +4261,12 @@ buffer-to-vinyl@^1.0.0: buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^3.0.1: version "3.6.0" resolved "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" + integrity sha1-pyyTb3e5a/UvX357RnGAYoVR3vs= dependencies: base64-js "0.0.8" ieee754 "^1.1.4" @@ -3676,6 +4275,7 @@ buffer@^3.0.1: buffer@^4.3.0: version "4.9.1" resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -3684,34 +4284,42 @@ buffer@^4.3.0: builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.3.tgz#b7c095efc68eadf82985fccd9a2df43a74fa2ccd" + integrity sha512-JGC3EV2bCzJH/ENSh3afyJrH4vwxbHTuO5ljLoI5+2iJOcEpMgP8T782jH9b5qGxf2mSUIp1lfGnfKNrRHpvVg== bytes@1: version "1.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" + integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -3730,6 +4338,7 @@ cacache@^10.0.4: cacache@^11.0.1, cacache@^11.0.2: version "11.2.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -3749,6 +4358,7 @@ cacache@^11.0.1, cacache@^11.0.2: cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -3760,9 +4370,26 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cache-manager-fs-hash@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.6.tgz#fccc5a6b579080cbe2186697e51b5b8ff8ca9fd0" + integrity sha512-p1nmcCQH4/jyKqEqUqPSDDcCo0PjFdv56OvtSdUrSIB7s8rAfwETLZ0CHXWdAPyg0QaER/deTvl1dCXyjZ5xAA== + dependencies: + es6-promisify "^6.0.0" + lockfile "^1.0.4" + +cache-manager@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.9.0.tgz#5e1f6317ca1a25e40ddf365a7162757af152353e" + integrity sha1-Xh9jF8oaJeQN3zZacWJ1evFSNT4= + dependencies: + async "1.5.2" + lru-cache "4.0.0" + cacheable-request@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= dependencies: clone-response "1.0.2" get-stream "3.0.0" @@ -3772,39 +4399,37 @@ cacheable-request@^2.1.1: normalize-url "2.0.1" responselike "1.0.2" -caching-transform@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" - dependencies: - md5-hex "^1.2.0" - mkdirp "^0.5.1" - write-file-atomic "^1.1.4" - call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= dependencies: callsites "^0.2.0" callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= camel-case@3.0.x, camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= dependencies: no-case "^2.2.0" upper-case "^1.1.1" @@ -3812,13 +4437,15 @@ camel-case@3.0.x, camel-case@^3.0.0: camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= dependencies: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase-keys@^4.0.0, camelcase-keys@^4.1.0: +camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= dependencies: camelcase "^4.1.0" map-obj "^2.0.0" @@ -3827,22 +4454,22 @@ camelcase-keys@^4.0.0, camelcase-keys@^4.1.0: camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: browserslist "^4.0.0" caniuse-lite "^1.0.0" @@ -3852,28 +4479,34 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30000884: version "1.0.30000885" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz#e889e9f8e7e50e769f2a49634c932b8aee622984" + integrity sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ== capitalize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-1.0.0.tgz#dc802c580aee101929020d2ca14b4ca8a0ae44be" + integrity sha1-3IAsWAruEBkpAg0soUtMqKCuRL4= capture-exit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= dependencies: rsvp "^3.3.3" capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= caw@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" + integrity sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ= dependencies: get-proxy "^1.0.1" is-obj "^1.0.0" @@ -3883,19 +4516,22 @@ caw@^1.0.1: caw@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== dependencies: get-proxy "^2.0.0" isurl "^1.0.0-alpha5" tunnel-agent "^0.6.0" url-to-options "^1.0.1" -ccount@^1.0.0: +ccount@^1.0.0, ccount@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.3.tgz#f1cec43f332e2ea5a569fd46f9f5bde4e6102aff" + integrity sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw== center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= dependencies: align-text "^0.1.3" lazy-cache "^1.0.3" @@ -3903,6 +4539,7 @@ center-align@^0.1.1: cfb@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.1.0.tgz#44fb1b30eee014fa5633a0ed5f26c87fd765799a" + integrity sha512-ZqfxNGWTMKhd0a/n6YKJLq8hWbd5kR3cA4kXwUj9vVEdHlwJ09werR8gN15Z7Y1FTXqdD6dE3GGCxv4uc28raA== dependencies: adler-32 "~1.2.0" commander "^2.16.0" @@ -3912,6 +4549,7 @@ cfb@^1.1.0: chai@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" + integrity sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw= dependencies: assertion-error "^1.0.1" check-error "^1.0.1" @@ -3923,6 +4561,7 @@ chai@^4.1.2: chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -3930,17 +4569,10 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -3949,6 +4581,7 @@ chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1 chalk@~0.4.0: version "0.4.0" resolved "http://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= dependencies: ansi-styles "~1.0.0" has-color "~0.1.0" @@ -3957,6 +4590,7 @@ chalk@~0.4.0: change-case@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" + integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== dependencies: camel-case "^3.0.0" constant-case "^2.0.0" @@ -3980,38 +4614,47 @@ change-case@^3.0.1: character-entities-html4@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz#c44fdde3ce66b52e8d321d6c1bf46101f0150610" + integrity sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw== character-entities-legacy@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz#7c6defb81648498222c9855309953d05f4d63a9c" + integrity sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA== character-entities@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.2.tgz#58c8f371c0774ef0ba9b2aca5f00d8f100e6e363" + integrity sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ== character-reference-invalid@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz#21e421ad3d84055952dab4a43a04e73cd425d3ed" + integrity sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ== chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= check-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= cheerio@^1.0.0-rc.2: version "1.0.0-rc.2" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" + integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs= dependencies: css-select "~1.2.0" dom-serializer "~0.1.0" @@ -4023,6 +4666,7 @@ cheerio@^1.0.0-rc.2: chokidar@^1.4.2, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= dependencies: anymatch "^1.3.0" async-each "^1.0.0" @@ -4038,6 +4682,7 @@ chokidar@^1.4.2, chokidar@^1.7.0: chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: anymatch "^2.0.0" async-each "^1.0.0" @@ -4057,20 +4702,24 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= chrome-trace-event@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== dependencies: tslib "^1.9.0" ci-info@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.5.1.tgz#17e8eb5de6f8b2b6038f0cbb714d410bfa9f3030" + integrity sha512-fKFIKXaYiL1exImwJ0AhR/6jxFPSKQBk2ayV5NiNoruUs2+rxC2kNw0EG+1Z9dugZRdCrppskQ8DN2cyaUM1Hw== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -4078,16 +4727,19 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== clap@^1.0.9: version "1.2.3" resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== dependencies: chalk "^1.1.3" class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -4097,36 +4749,58 @@ class-utils@^0.3.5: clean-css@4.2.x: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== dependencies: source-map "~0.6.0" clean-stack@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" + integrity sha1-noIVAa6XmYbEax1m0tQy2y/UrjE= cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= + dependencies: + restore-cursor "^1.0.1" -cli-cursor@^2.1.0: +cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-table@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= dependencies: colors "1.0.3" +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= clipboard@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.1.tgz#a12481e1c13d8a50f5f036b0560fe5d16d74e46a" + integrity sha512-7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ== dependencies: good-listener "^1.2.2" select "^1.1.2" @@ -4135,6 +4809,7 @@ clipboard@^2.0.0: cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= dependencies: center-align "^0.1.1" right-align "^0.1.1" @@ -4143,6 +4818,7 @@ cliui@^2.1.0: cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -4151,6 +4827,7 @@ cliui@^3.2.0: cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -4159,10 +4836,12 @@ cliui@^4.0.0: clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== dependencies: for-own "^1.0.0" is-plain-object "^2.0.4" @@ -4172,32 +4851,39 @@ clone-deep@^2.0.1: clone-response@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: mimic-response "^1.0.0" clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= clone@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8= clone@^1.0.0, clone@^1.0.1, clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= cloneable-readable@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + integrity sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg== dependencies: inherits "^2.0.1" process-nextick-args "^2.0.0" @@ -4206,6 +4892,7 @@ cloneable-readable@^1.0.0: cmd-shim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= dependencies: graceful-fs "^4.1.2" mkdirp "~0.5.0" @@ -4213,30 +4900,36 @@ cmd-shim@^2.0.2: co@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" + integrity sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g= co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= coa@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= dependencies: q "^1.1.2" coa@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af" + integrity sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ== dependencies: q "^1.1.2" code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= codepage@~1.14.0: version "1.14.0" resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.14.0.tgz#8cbe25481323559d7d307571b0fff91e7a1d2f99" + integrity sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k= dependencies: commander "~2.14.1" exit-on-epipe "~1.0.1" @@ -4244,24 +4937,29 @@ codepage@~1.14.0: coffee-loader@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/coffee-loader/-/coffee-loader-0.9.0.tgz#6deabd336062ddc6d773da4dfd16367fc7107bd6" + integrity sha512-VSoQ5kWr6Yfjn4RDpVbba2XMs3XG1ZXtLakPRt8dNfUcNU9h+1pocpdUUEd7NK9rLDwrju4yonhxrL8aMr5tww== dependencies: loader-utils "^1.0.2" coffee-react-transform@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/coffee-react-transform/-/coffee-react-transform-5.0.0.tgz#b62e8ae1b113fce9b1a5990b06c9bc44651ae9c5" + integrity sha1-ti6K4bET/OmxpZkLBsm8RGUa6cU= coffeescript@^2.2.3: version "2.3.1" resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-2.3.1.tgz#a25f69c251d25805c9842e57fc94bfc453ef6aed" + integrity sha512-DNJmSPMyiz+OjWYyuDXNBcFutDjP2TS2owsZ8YvT65hA8c5IdHWIBqdA3Yf/XHoK23d/f1HqLjQbEJJZJoeV1w== collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.4.tgz#ce05cf49e54c3277ae573036a26851ba430a0091" + integrity sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw== collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -4269,16 +4967,19 @@ collection-visit@^1.0.0: color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3, color-name@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-string@^1.5.2: version "1.5.3" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -4286,10 +4987,12 @@ color-string@^1.5.2: color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== color@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== dependencies: color-convert "^1.9.1" color-string "^1.5.2" @@ -4297,18 +5000,22 @@ color@^3.0.0: colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= colors@^1.1.2: version "1.3.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" + integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ== colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= dependencies: strip-ansi "^3.0.0" wcwidth "^1.0.0" @@ -4316,68 +5023,83 @@ columnify@^1.5.4: combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= dependencies: delayed-stream "~1.0.0" comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz#b13793131d9ea2d2431cf5b507ddec258f0ce0db" + integrity sha512-Cg90/fcK93n0ecgYTAz1jaA3zvnQ0ExlmKY1rdbyHqAx6BHxwoJc+J7HDu0iuQ7ixEs1qaa+WyQ6oeuBpYP1iA== dependencies: trim "0.0.1" command-exists@^1.2.2: version "1.2.7" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.7.tgz#16828f0c3ff2b0c58805861ef211b64fc15692a8" + integrity sha512-doWDvhXCcW5LK0cIUWrOQ8oMFXJv3lEQCkJpGVjM8v9SV0uhqYXB943538tEA2CiaWqSyuYUGAm5ezDwEx9xlw== command-join@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/command-join/-/command-join-2.0.0.tgz#52e8b984f4872d952ff1bdc8b98397d27c7144cf" + integrity sha1-Uui5hPSHLZUv8b3IuYOX0nxxRM8= commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== commander@2.17.x, commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0, commander@^2.16.0, commander@^2.8.1, commander@^2.9.0: +commander@^2.11.0, commander@^2.14.1, commander@^2.16.0, commander@^2.8.1, commander@^2.9.0: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== commander@~2.14.1: version "2.14.1" resolved "http://registry.npmjs.org/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + integrity sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw== commander@~2.8.1: version "2.8.1" resolved "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= dependencies: graceful-readlink ">= 1.0.0" comment-regex@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/comment-regex/-/comment-regex-1.0.1.tgz#e070d2c4db33231955d0979d27c918fcb6f93565" + integrity sha512-IWlN//Yfby92tOIje7J18HkNmWRR7JESA/BK8W7wqY/akITpU5B0JQWnbTjCfdChSrDNb0DrdA9jfAxiiBXyiQ== common-path-prefix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" + integrity sha1-zVL28HEuC6q5fW+XModPIvR3UsA= common-tags@^1.4.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= compare-func@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= dependencies: array-ify "^1.0.0" dot-prop "^3.0.0" @@ -4385,32 +5107,39 @@ compare-func@^1.3.1: compare-versions@2.0.1: version "2.0.1" resolved "http://registry.npmjs.org/compare-versions/-/compare-versions-2.0.1.tgz#1edc1f93687fd97a325c59f55e45a07db106aca6" + integrity sha1-Htwfk2h/2XoyXFn1XkWgfbEGrKY= compare-versions@^3.1.0: version "3.4.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" + integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg== component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= compressible@~2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7" + integrity sha1-MmxfUH+7BV9UEWeCuWmoG2einac= dependencies: mime-db ">= 1.34.0 < 2" compression@^1.5.2, compression@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== dependencies: accepts "~1.3.5" bytes "3.0.0" @@ -4423,10 +5152,12 @@ compression@^1.5.2, compression@^1.7.3: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -4436,6 +5167,7 @@ concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream concat-stream@~1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY= dependencies: inherits "~2.0.1" readable-stream "~2.0.0" @@ -4444,6 +5176,7 @@ concat-stream@~1.5.0: config-chain@^1.1.11: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -4451,6 +5184,7 @@ config-chain@^1.1.11: configstore@^3.0.0, configstore@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: dot-prop "^4.1.0" graceful-fs "^4.1.2" @@ -4462,28 +5196,34 @@ configstore@^3.0.0, configstore@^3.1.0: confusing-browser-globals@2.0.0-next.66cc7a90: version "2.0.0-next.66cc7a90" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-2.0.0-next.66cc7a90.tgz#438e83bb16602abf1cd5c5aa9d6e4d61d924743e" + integrity sha512-pVhpqs/CvjFgJm6pIamnHI7xxutxywZr4WaG7/g3+1uTrJldBS+jKe/4NvGv0etgAAY6z2+iaogt4pkXM+6wag== connect-history-api-fallback@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= dependencies: date-now "^0.1.4" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= console-stream@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= constant-case@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + integrity sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY= dependencies: snake-case "^2.1.0" upper-case "^1.1.1" @@ -4491,28 +5231,34 @@ constant-case@^2.0.0: constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= content-disposition@0.5.2, content-disposition@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= content-type@^1.0.4, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== contentful-resolve-response@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/contentful-resolve-response/-/contentful-resolve-response-1.1.4.tgz#9eb656876eecb2cd00444f0adf26bd91a5ec1992" + integrity sha512-oFq6n6zjbiwD9/7mBa8YHPwvPM0B0D4uOgg1n/rVzpQPhCrzeIixNj6fbJAbDiJt05rZqxiY3K1Db7pPRhRaZw== dependencies: lodash "^4.17.4" contentful-sdk-core@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/contentful-sdk-core/-/contentful-sdk-core-6.0.1.tgz#522a8e928fccbc0a5ecb2163782c6aae28173623" + integrity sha512-Rd0jbjmiIbScbothezO08DPkfRrByB0Y4onAWAhthKSXagMBx8oAP9kVvEKJpluc57Rb/slG3NcHuD09bAiWkw== dependencies: lodash "^4.17.10" qs "^6.5.2" @@ -4520,6 +5266,7 @@ contentful-sdk-core@^6.0.1: contentful@^6.1.0: version "6.1.3" resolved "https://registry.yarnpkg.com/contentful/-/contentful-6.1.3.tgz#272f59e070807321ed6985882803bf804af65d6b" + integrity sha512-uf4MQey/aP/buRo4oCuyIfSD/r+ruxDyXN2z/n0XCi7s2x5NjKiKbbRIjRiYu5ylNiAvc+smLIXBooujtmqWEw== dependencies: "@contentful/axios" "^0.18.0" contentful-resolve-response "^1.1.4" @@ -4530,10 +5277,12 @@ contentful@^6.1.0: continuable-cache@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" + integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= conventional-changelog-angular@^1.6.6: version "1.6.6" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" + integrity sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg== dependencies: compare-func "^1.3.1" q "^1.5.1" @@ -4541,12 +5290,14 @@ conventional-changelog-angular@^1.6.6: conventional-changelog-atom@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14" + integrity sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g== dependencies: q "^1.5.1" conventional-changelog-cli@^1.3.13: version "1.3.22" resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405" + integrity sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg== dependencies: add-stream "^1.0.0" conventional-changelog "^1.1.24" @@ -4557,12 +5308,14 @@ conventional-changelog-cli@^1.3.13: conventional-changelog-codemirror@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" + integrity sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ== dependencies: q "^1.5.1" conventional-changelog-core@^2.0.11, conventional-changelog-core@^2.0.5: version "2.0.11" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287" + integrity sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg== dependencies: conventional-changelog-writer "^3.0.9" conventional-commits-parser "^2.1.7" @@ -4581,36 +5334,42 @@ conventional-changelog-core@^2.0.11, conventional-changelog-core@^2.0.5: conventional-changelog-ember@^0.3.12: version "0.3.12" resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400" + integrity sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ== dependencies: q "^1.5.1" conventional-changelog-eslint@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3" + integrity sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q== dependencies: q "^1.5.1" conventional-changelog-express@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c" + integrity sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q== dependencies: q "^1.5.1" conventional-changelog-jquery@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" + integrity sha1-Agg5cWLjhGmG5xJztsecW1+A9RA= dependencies: q "^1.4.1" conventional-changelog-jscs@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" + integrity sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw= dependencies: q "^1.4.1" conventional-changelog-jshint@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8" + integrity sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig== dependencies: compare-func "^1.3.1" q "^1.5.1" @@ -4618,10 +5377,12 @@ conventional-changelog-jshint@^0.3.8: conventional-changelog-preset-loader@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373" + integrity sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw== conventional-changelog-writer@^3.0.9: version "3.0.9" resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634" + integrity sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q== dependencies: compare-func "^1.3.1" conventional-commits-filter "^1.1.6" @@ -4637,6 +5398,7 @@ conventional-changelog-writer@^3.0.9: conventional-changelog@^1.1.24: version "1.1.24" resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" + integrity sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q== dependencies: conventional-changelog-angular "^1.6.6" conventional-changelog-atom "^0.2.8" @@ -4653,6 +5415,7 @@ conventional-changelog@^1.1.24: conventional-commits-filter@^1.1.1, conventional-commits-filter@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" + integrity sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q== dependencies: is-subset "^0.1.1" modify-values "^1.0.0" @@ -4660,6 +5423,7 @@ conventional-commits-filter@^1.1.1, conventional-commits-filter@^1.1.6: conventional-commits-parser@^2.1.1, conventional-commits-parser@^2.1.7: version "2.1.7" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" + integrity sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.0" @@ -4672,6 +5436,7 @@ conventional-commits-parser@^2.1.1, conventional-commits-parser@^2.1.7: conventional-recommended-bump@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz#1b7137efb5091f99fe009e2fe9ddb7cc490e9375" + integrity sha512-oJjG6DkRgtnr/t/VrPdzmf4XZv8c4xKVJrVT4zrSHd92KEL+EYxSbYoKq8lQ7U5yLMw7130wrcQTLRjM/T+d4w== dependencies: concat-stream "^1.4.10" conventional-commits-filter "^1.1.1" @@ -4684,6 +5449,7 @@ conventional-recommended-bump@^1.2.1: conventional-recommended-bump@^2.0.6: version "2.0.9" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-2.0.9.tgz#7392421e7d0e3515f3df2040572a23cc73a68a93" + integrity sha512-YE6/o+648qkX3fTNvfBsvPW3tSnbZ6ec3gF0aBahCPgyoVHU2Mw0nUAZ1h1UN65GazpORngrgRC8QCltNYHPpQ== dependencies: concat-stream "^1.6.0" conventional-changelog-preset-loader "^1.1.8" @@ -4697,24 +5463,29 @@ conventional-recommended-bump@^2.0.6: convert-hrtime@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-2.0.0.tgz#19bfb2c9162f9e11c2f04c2c79de2b7e8095c627" + integrity sha1-Gb+yyRYvnhHC8Ewsed4rfoCVxic= -convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.3.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -4726,10 +5497,12 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-webpack-plugin@^4.5.1: version "4.5.2" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" + integrity sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ== dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -4743,6 +5516,7 @@ copy-webpack-plugin@^4.5.1: copyfiles@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-1.2.0.tgz#a8da3ac41aa2220ae29bd3c58b6984294f2c593c" + integrity sha1-qNo6xBqiIgrim9PFi2mEKU8sWTw= dependencies: glob "^7.0.5" ltcdr "^2.2.1" @@ -4754,27 +5528,32 @@ copyfiles@^1.2.0: core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= core-js@^2.0.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cosmiconfig@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== dependencies: is-directory "^0.3.1" js-yaml "^3.9.0" parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.0.5: +cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.0.5, cosmiconfig@^5.0.6: version "5.0.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" + integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== dependencies: is-directory "^0.3.1" js-yaml "^3.9.0" @@ -4783,6 +5562,7 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.0.5: crc-32@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== dependencies: exit-on-epipe "~1.0.1" printj "~1.1.0" @@ -4790,6 +5570,7 @@ crc-32@~1.2.0: create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: bn.js "^4.1.0" elliptic "^6.0.0" @@ -4797,12 +5578,14 @@ create-ecdh@^4.0.0: create-error-class@^3.0.0, create-error-class@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: capture-stack-trace "^1.0.0" create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" inherits "^2.0.1" @@ -4813,6 +5596,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" resolved "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -4824,6 +5608,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: create-react-context@^0.2.1, create-react-context@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" + integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== dependencies: fbjs "^0.8.0" gud "^1.0.0" @@ -4831,18 +5616,22 @@ create-react-context@^0.2.1, create-react-context@^0.2.2: createerror@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/createerror/-/createerror-1.1.0.tgz#2a711f589cc7ca38586414398856b8a30ea4a06b" + integrity sha1-KnEfWJzHyjhYZBQ5iFa4ow6koGs= createerror@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/createerror/-/createerror-1.2.0.tgz#5881f9abdfc2826fd1c3cf09adffe6da2ec74909" + integrity sha1-WIH5q9/Cgm/Rw88Jrf/m2i7HSQk= createerror@1.3.0, createerror@^1.2.0, createerror@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/createerror/-/createerror-1.3.0.tgz#c666bd4cd6b94e35415396569d4649dd0cdb3313" + integrity sha512-w9UZUtkaGd8MfS7eMG7Sa0lV5vCJghqQfiOnwNVrPhbZScUp5h0jwYoAF933MKlotlG1JAJOCCT3xU6r+SDKNw== cross-env@^5.0.5, cross-env@^5.1.4: version "5.2.0" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" + integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== dependencies: cross-spawn "^6.0.5" is-windows "^1.0.0" @@ -4850,6 +5639,7 @@ cross-env@^5.0.5, cross-env@^5.1.4: cross-fetch@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" + integrity sha1-pH/09/xxLauo9qaVoRyUhEDUVyM= dependencies: node-fetch "2.1.2" whatwg-fetch "2.0.4" @@ -4857,21 +5647,16 @@ cross-fetch@2.2.2: cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -4882,10 +5667,12 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -4902,14 +5689,17 @@ crypto-browserify@^3.11.0: crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= css-declaration-sorter@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-3.0.1.tgz#d0e3056b0fd88dc1ea9dceff435adbe9c702a7f8" + integrity sha512-jH4024SHZ3e0M7ann9VxpFpH3moplRXNz9ZBqvFMZqi09Yo5ARbs2wdPH8GqN9iRTlQynrbGbraNbBxBLei85Q== dependencies: postcss "^6.0.0" timsort "^0.3.0" @@ -4917,14 +5707,17 @@ css-declaration-sorter@^3.0.0: css-font-parser@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/css-font-parser/-/css-font-parser-0.2.3.tgz#9a391d2e47086be5401e47274e687ec06e238c0e" + integrity sha512-QhdfNV+RjQLVg24d/ls4I8UrA/5WCeEfUmi1je8ISPr7RGZJXwWU2AwZpCiUmWuLZW7dKaB3ER0Bq1W9UhEUag== css-font-weight-names@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/css-font-weight-names/-/css-font-weight-names-0.2.1.tgz#5710d485ad295f6b3f1ceec41f882e324a46b516" + integrity sha1-VxDUha0pX2s/HO7EH4guMkpGtRY= css-in-js-utils@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== dependencies: hyphenate-style-name "^1.0.2" isobject "^3.0.1" @@ -4932,10 +5725,12 @@ css-in-js-utils@^2.0.0: css-list-helpers@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/css-list-helpers/-/css-list-helpers-2.0.0.tgz#7cb3d6f9ec9e5087ae49d834cead282806e8818f" + integrity sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ== css-loader@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" + integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" @@ -4953,6 +5748,7 @@ css-loader@^1.0.0: css-modules-loader-core@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" + integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= dependencies: icss-replace-symbols "1.1.0" postcss "6.0.1" @@ -4964,14 +5760,17 @@ css-modules-loader-core@^1.1.0: css-parse@1.7.x: version "1.7.0" resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= css-select-base-adapter@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990" + integrity sha1-AQKz0UYw34bD65+p9UVicBBs+ZA= css-select@^1.1.0, css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= dependencies: boolbase "~1.0.0" css-what "2.1" @@ -4981,6 +5780,7 @@ css-select@^1.1.0, css-select@~1.2.0: css-select@~1.3.0-rc0: version "1.3.0-rc0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.3.0-rc0.tgz#6f93196aaae737666ea1036a8cb14a8fcb7a9231" + integrity sha1-b5MZaqrnN2ZuoQNqjLFKj8t6kjE= dependencies: boolbase "^1.0.0" css-what "2.1" @@ -4990,10 +5790,12 @@ css-select@~1.3.0-rc0: css-selector-parser@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.3.0.tgz#5f1ad43e2d8eefbfdc304fcd39a521664943e3eb" + integrity sha1-XxrUPi2O77/cME/NOaUhZklD4+s= css-selector-tokenizer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY= dependencies: cssesc "^0.1.0" fastparse "^1.1.1" @@ -5002,6 +5804,7 @@ css-selector-tokenizer@^0.7.0: css-tree@1.0.0-alpha.29: version "1.0.0-alpha.29" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== dependencies: mdn-data "~1.1.0" source-map "^0.5.3" @@ -5009,6 +5812,7 @@ css-tree@1.0.0-alpha.29: css-tree@1.0.0-alpha25: version "1.0.0-alpha25" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha25.tgz#1bbfabfbf6eeef4f01d9108ff2edd0be2fe35597" + integrity sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A== dependencies: mdn-data "^1.0.0" source-map "^0.5.3" @@ -5016,22 +5820,37 @@ css-tree@1.0.0-alpha25: css-unit-converter@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= css-url-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= + +css@2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= cssnano-preset-default@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.0.tgz#c334287b4f7d49fb2d170a92f9214655788e3b6b" + integrity sha1-wzQoe099SfstFwqS+SFGVXiOO2s= dependencies: css-declaration-sorter "^3.0.0" cssnano-util-raw-cache "^4.0.0" @@ -5067,24 +5886,29 @@ cssnano-preset-default@^4.0.0: cssnano-util-get-arguments@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= cssnano-util-get-match@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= cssnano-util-raw-cache@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.0.tgz#be0a2856e25f185f5f7a2bcc0624e28b7f179a9f" + integrity sha1-vgooVuJfGF9feivMBiTii38Xmp8= dependencies: postcss "^6.0.0" cssnano-util-same-parent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.0.tgz#d2a3de1039aa98bc4ec25001fa050330c2a16dac" + integrity sha1-0qPeEDmqmLxOwlAB+gUDMMKhbaw= cssnano@4.1.0, cssnano@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.0.tgz#682c37b84b9b7df616450a5a8dc9269b9bd10734" + integrity sha512-7x24b/ghbrQv2QRgqMR12H3ZZ38xYCKJSXfg21YCtnIE177/NyvMkeiuQdWauIgMjySaTZ+cd5PN2qvfbsGeSw== dependencies: cosmiconfig "^5.0.0" cssnano-preset-default "^4.0.0" @@ -5094,12 +5918,14 @@ cssnano@4.1.0, cssnano@^4.1.0: csso@^3.5.0: version "3.5.1" resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== dependencies: css-tree "1.0.0-alpha.29" csso@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= dependencies: clap "^1.0.9" source-map "^0.5.3" @@ -5107,20 +5933,24 @@ csso@~2.3.1: cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== cssstyle@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" + integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== dependencies: cssom "0.3.x" -csstype@^2.2.0: +csstype@^2.2.0, csstype@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.7.tgz#bf9235d5872141eccfb2d16d82993c6b149179ff" + integrity sha512-Nt5VDyOTIIV4/nRFswoCKps1R5CD1hkiyjBE9/thNaNZILLEviVw9yWQw15+O+CpNjQKB/uvdcxFFOrSflY3Yw== csvtojson@^1.1: version "1.1.12" resolved "https://registry.yarnpkg.com/csvtojson/-/csvtojson-1.1.12.tgz#3872eef9588080f74c222ffe53cfdd416f9bb7d5" + integrity sha512-gJg1II2uXh8H6XP7L1YzX/6H8rrUbSTiEg4SaI6/pHOcnZovwAR3Rmm9TizSsGQBBXl1pb/JJPlaImV2YIuMrg== dependencies: lodash "^4.17.3" strip-bom "^2.0.0" @@ -5128,12 +5958,14 @@ csvtojson@^1.1: currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: array-find-index "^1.0.1" cwebp-bin@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-4.0.0.tgz#ee2b7f6333d3426fb52bb405fa6f2ec8b62894f4" + integrity sha1-7it/YzPTQm+1K7QF+m8uyLYolPQ= dependencies: bin-build "^2.2.0" bin-wrapper "^3.0.1" @@ -5142,88 +5974,117 @@ cwebp-bin@^4.0.0: cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= dependencies: es5-ext "^0.10.9" damerau-levenshtein@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" + integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ= dargs@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= dependencies: number-is-nan "^1.0.0" dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" data-urls@^1.0.0, data-urls@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" + integrity sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg== dependencies: abab "^2.0.0" whatwg-mimetype "^2.1.0" whatwg-url "^7.0.0" +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + integrity sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw== + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= death@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" + integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= debug@*: version "4.0.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b" + integrity sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw== dependencies: ms "^2.1.1" debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@3.1.0, debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" debug@^3.0.1, debug@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== + dependencies: + ms "^2.1.1" + +debug@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== dependencies: ms "^2.1.1" debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= decamelize-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= dependencies: decamelize "^1.1.0" map-obj "^1.0.0" @@ -5231,26 +6092,31 @@ decamelize-keys@^1.0.0: decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decamelize@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== dependencies: xregexp "4.0.0" decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= decompress-response@^3.2.0, decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" decompress-tar@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466" + integrity sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY= dependencies: is-tar "^1.0.0" object-assign "^2.0.0" @@ -5262,6 +6128,7 @@ decompress-tar@^3.0.0: decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== dependencies: file-type "^5.2.0" is-stream "^1.1.0" @@ -5270,6 +6137,7 @@ decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: decompress-tarbz2@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d" + integrity sha1-iyOTVoE1X58YnYclag+L3ZbZZm0= dependencies: is-bzip2 "^1.0.0" object-assign "^2.0.0" @@ -5282,6 +6150,7 @@ decompress-tarbz2@^3.0.0: decompress-tarbz2@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== dependencies: decompress-tar "^4.1.0" file-type "^6.1.0" @@ -5292,6 +6161,7 @@ decompress-tarbz2@^4.0.0: decompress-targz@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0" + integrity sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA= dependencies: is-gzip "^1.0.0" object-assign "^2.0.0" @@ -5303,6 +6173,7 @@ decompress-targz@^3.0.0: decompress-targz@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== dependencies: decompress-tar "^4.1.1" file-type "^5.2.0" @@ -5311,6 +6182,7 @@ decompress-targz@^4.0.0: decompress-unzip@^3.0.0: version "3.4.0" resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb" + integrity sha1-YUdbQVIGa74/7hL51inRX+ZHjus= dependencies: is-zip "^1.0.0" read-all-stream "^3.0.0" @@ -5323,6 +6195,7 @@ decompress-unzip@^3.0.0: decompress-unzip@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= dependencies: file-type "^3.8.0" get-stream "^2.2.0" @@ -5332,6 +6205,7 @@ decompress-unzip@^4.0.1: decompress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed" + integrity sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0= dependencies: buffer-to-vinyl "^1.0.0" concat-stream "^1.4.6" @@ -5346,6 +6220,7 @@ decompress@^3.0.0: decompress@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= dependencies: decompress-tar "^4.0.0" decompress-tarbz2 "^4.0.0" @@ -5359,28 +6234,34 @@ decompress@^4.0.0: dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-eql@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: type-detect "^4.0.0" deep-equal@^1.0.0, deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= deep-map-keys@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/deep-map-keys/-/deep-map-keys-1.2.0.tgz#43418b828ca43d261a8e877b4927e49d0c478cd9" + integrity sha1-Q0GLgoykPSYajod7SSfknQxHjNk= dependencies: es6-weak-map "^2.0.1" lodash "^4.13.1" @@ -5388,6 +6269,7 @@ deep-map-keys@^1.2.0: deep-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/deep-map/-/deep-map-1.5.0.tgz#eaa595cb81783ca2800f26a42e09f16e7d4fb890" + integrity sha1-6qWVy4F4PKKADyakLgnxbn1PuJA= dependencies: es6-weak-map "^2.0.2" lodash "^4.17.4" @@ -5396,53 +6278,55 @@ deep-map@^1.5.0: deepmerge@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.1.tgz#e862b4e45ea0555072bf51e7fd0d9845170ae768" + integrity sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w== default-gateway@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== dependencies: execa "^0.10.0" ip-regex "^2.1.0" -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - default-require-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= dependencies: strip-bom "^3.0.0" defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= dependencies: clone "^1.0.2" -define-properties@^1.1.1, define-properties@^1.1.2: +define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" @@ -5450,10 +6334,12 @@ define-property@^2.0.2: defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -5466,6 +6352,7 @@ del@^2.0.2: del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= dependencies: globby "^6.1.0" is-path-cwd "^1.0.0" @@ -5477,30 +6364,37 @@ del@^3.0.0: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegate@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= deprecated-decorator@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" + integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -5508,42 +6402,51 @@ des.js@^1.0.0: destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detab@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.1.tgz#531f5e326620e2fd4f03264a905fb3bcc8af4df4" + integrity sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ== dependencies: repeat-string "^1.5.4" detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= dependencies: repeating "^2.0.0" detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= detect-node@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== detect-port-alt@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.3.tgz#a4d2f061d757a034ecf37c514260a98750f2b131" + integrity sha1-pNLwYddXoDTs83xRQmCph1DysTE= dependencies: address "^1.0.1" debug "^2.6.0" @@ -5551,6 +6454,7 @@ detect-port-alt@1.1.3: detect-port@^1.2.1: version "1.2.3" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.3.tgz#15bf49820d02deb84bfee0a74876b32d791bf610" + integrity sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug== dependencies: address "^1.0.1" debug "^2.6.0" @@ -5558,6 +6462,7 @@ detect-port@^1.2.1: detective@^4.0.0: version "4.7.1" resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig== dependencies: acorn "^5.2.1" defined "^1.0.0" @@ -5565,6 +6470,7 @@ detective@^4.0.0: devcert-san@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/devcert-san/-/devcert-san-0.3.3.tgz#aa77244741b2d831771c011f22ee25e396ad4ba9" + integrity sha1-qnckR0Gy2DF3HAEfIu4l45atS6k= dependencies: "@types/configstore" "^2.1.1" "@types/debug" "^0.0.29" @@ -5586,6 +6492,7 @@ devcert-san@^0.3.3: dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= dependencies: asap "^2.0.0" wrappy "1" @@ -5593,24 +6500,29 @@ dezalgo@^1.0.0: dfa@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.1.0.tgz#d30218bd10d030fa421df3ebbc82285463a31781" + integrity sha1-0wIYvRDQMPpCHfPrvIIoVGOjF4E= dependencies: babel-runtime "^6.11.6" diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" + integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== diff@^1.3.2: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8= diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diffie-hellman@^5.0.0: version "5.0.3" resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" @@ -5619,6 +6531,7 @@ diffie-hellman@^5.0.0: dir-glob@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== dependencies: arrify "^1.0.1" path-type "^3.0.0" @@ -5626,21 +6539,20 @@ dir-glob@^2.0.0: disparity@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/disparity/-/disparity-2.0.0.tgz#57ddacb47324ae5f58d2cc0da886db4ce9eeb718" + integrity sha1-V92stHMkrl9Y0swNqIbbTOnutxg= dependencies: ansi-styles "^2.0.1" diff "^1.3.2" -dlv@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.2.tgz#270f6737b30d25b6657a7e962c784403f85137e5" - dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.1.0, dns-packet@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -5648,18 +6560,21 @@ dns-packet@^1.1.0, dns-packet@^1.3.1: dns-socket@^1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/dns-socket/-/dns-socket-1.6.3.tgz#5268724fad4aa46ad9c5ca4ffcd16e1de5342aab" + integrity sha512-/mUy3VGqIP69dAZjh2xxHXcpK9wk2Len1Dxz8mWAdrIgFC8tnR/aQAyU4a+UTXzOcTvEvGBdp1zFiwnpWKaXng== dependencies: dns-packet "^1.1.0" dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= dependencies: buffer-indexof "^1.0.0" dnserrors@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/dnserrors/-/dnserrors-2.1.2.tgz#febfcaeb225608ed196ecf417baeef054fb794d0" + integrity sha1-/r/K6yJWCO0Zbs9Be67vBU+3lNA= dependencies: createerror "^1.2.0" httperrors "^2.2.0" @@ -5669,12 +6584,14 @@ dnserrors@2.1.2: doctrine-temporary-fork@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/doctrine-temporary-fork/-/doctrine-temporary-fork-2.0.1.tgz#23f0b6275c65f48893324b02338178e496b2e4bf" + integrity sha512-+GQh3niRkKtSr7cKDo8po+NHkJZyC2Ebwvjz9fvq0ReQr9kIDS6BY9MDrzx+KbbLxvSj3vD/eUaeIoURHzEAFQ== dependencies: esutils "^2.0.2" doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -5682,12 +6599,14 @@ doctrine@1.5.0: doctrine@^2.0.0, doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" documentation@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/documentation/-/documentation-7.1.0.tgz#c7c51b12c65f1fdff5cd1c94c2df2036a5f48b4f" + integrity sha512-4MB5FoZ+6oGpjYGpKx+TwqDuS3Jy3wmrhShZaKoHIus8x3qRkoPYRvyC4qkVhrc4c3XRQzL31jFLJawhX0t3Vw== dependencies: ansi-html "^0.0.7" babel-core "^6.26.0" @@ -5742,81 +6661,96 @@ documentation@^7.1.0: dom-converter@~0.1: version "0.1.4" resolved "http://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + integrity sha1-pF71cnuJDJv/5tfIduexnLDhfzs= dependencies: utila "~0.3" dom-helpers@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" + integrity sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg== dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= dependencies: domelementtype "~1.1.1" entities "~1.1.1" -dom-testing-library@^3.1.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/dom-testing-library/-/dom-testing-library-3.5.1.tgz#980cabd123ae7744ec430b669ad1ddcd1f8cbb9e" +dom-testing-library@^3.9.0: + version "3.11.2" + resolved "https://registry.yarnpkg.com/dom-testing-library/-/dom-testing-library-3.11.2.tgz#11ecb840641f89fbbdcf8cc625009c24e7779615" + integrity sha512-4p3q+nQjjmvNzUMef23mqiAgzw1dVUVJmjErHGENZ3N4EKSNHmKMDTFvYCZALJP1WRNw13LLwD136dWFM7jKYg== dependencies: - mutationobserver-shim "^0.3.2" - pretty-format "^22.4.3" + "@sheerun/mutationobserver-shim" "^0.3.2" + pretty-format "^23.6.0" wait-for-expect "^1.0.0" dom-urls@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dom-urls/-/dom-urls-1.1.0.tgz#001ddf81628cd1e706125c7176f53ccec55d918e" + integrity sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4= dependencies: urijs "^1.16.1" dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" domhandler@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= dependencies: domelementtype "1" domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== dependencies: domelementtype "1" domready@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/domready/-/domready-1.0.8.tgz#91f252e597b65af77e745ae24dd0185d5e26d58c" + integrity sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw= domutils@1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= dependencies: domelementtype "1" domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= dependencies: dom-serializer "0" domelementtype "1" @@ -5824,6 +6758,7 @@ domutils@1.5.1: domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" domelementtype "1" @@ -5831,28 +6766,33 @@ domutils@^1.5.1: dot-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= dependencies: no-case "^2.2.0" dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= dependencies: is-obj "^1.0.0" dot-prop@^4.1.0, dot-prop@^4.1.1, dot-prop@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== dependencies: is-obj "^1.0.0" dotenv@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= download@^4.0.0, download@^4.1.2: version "4.4.3" resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" + integrity sha1-qlX9rTktldS2jowr4D4MKqIbqaw= dependencies: caw "^1.0.1" concat-stream "^1.4.7" @@ -5873,6 +6813,7 @@ download@^4.0.0, download@^4.1.2: download@^6.2.2: version "6.2.5" resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== dependencies: caw "^2.0.0" content-disposition "^0.5.2" @@ -5889,26 +6830,31 @@ download@^6.2.2: duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= dependencies: readable-stream "~1.1.9" duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= dependencies: readable-stream "^2.0.2" duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1, duplexer@~0.1.1: +duplexer@^0.1.1: version "0.1.1" resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -5918,6 +6864,7 @@ duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.6.0: each-async@^1.0.0, each-async@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" + integrity sha1-3uUim98KtrogEqOV4bhpq/iBNHM= dependencies: onetime "^1.0.0" set-immediate-shim "^1.0.0" @@ -5925,6 +6872,7 @@ each-async@^1.0.0, each-async@^1.1.1: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -5932,20 +6880,29 @@ ecc-jsbn@~0.1.1: ecdsa-sig-formatter@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + integrity sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM= dependencies: safe-buffer "^5.0.1" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.62: version "1.3.67" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.67.tgz#5e8f3ffac89b4b0402c7e1a565be06f3a109abbc" + integrity sha512-h3zEBLdHvsKfaXv1SHAtykJyNtwYFEKkrWGSFyW1BzGgPQ4ykAzD5Hd8C5MZGTAEhkCKmtyIwYUrapsI0xfKww== + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -5958,34 +6915,41 @@ elliptic@^6.0.0: "emoji-regex@>=6.0.0 <=6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" + integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= emoji-regex@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= dependencies: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -6002,6 +6966,7 @@ engine.io-client@~3.2.0: engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + integrity sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" @@ -6012,6 +6977,7 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: engine.io@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" + integrity sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -6023,6 +6989,7 @@ engine.io@~3.2.0: enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" @@ -6031,10 +6998,12 @@ enhanced-resolve@^4.1.0: entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= envify@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/envify/-/envify-4.1.0.tgz#f39ad3db9d6801b4e6b478b61028d3f0b6819f7e" + integrity sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw== dependencies: esprima "^4.0.0" through "~2.3.4" @@ -6042,36 +7011,43 @@ envify@^4.0.0: envinfo@^5.8.1: version "5.10.0" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.10.0.tgz#503a9774ae15b93ea68bdfae2ccd6306624ea6df" + integrity sha512-rXbzXWvnQxy+TcqZlARbWVQwgGVVouVJgFZhLVN5htjLxl1thstrP2ZGi0pXC309AbK7gVOPU+ulz/tmpCI7iw== eol@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/eol/-/eol-0.8.1.tgz#defc3224990c7eca73bb34461a56cf9dc24761d0" + integrity sha1-3vwyJJkMfspzuzRGGlbPncJHYdA= err-code@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" error-stack-parser@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" + integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw== dependencies: stackframe "^1.0.4" error@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI= dependencies: string-template "~0.2.1" xtend "~4.0.0" @@ -6079,6 +7055,7 @@ error@^7.0.0: es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -6089,6 +7066,7 @@ es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: es-to-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= dependencies: is-callable "^1.1.1" is-date-object "^1.0.1" @@ -6097,6 +7075,7 @@ es-to-primitive@^1.1.1: es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.46" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw== dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" @@ -6105,6 +7084,7 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: es6-iterator@^2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" @@ -6113,24 +7093,34 @@ es6-iterator@^2.0.1, es6-iterator@~2.0.3: es6-promise@3.2.1: version "3.2.1" resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" + integrity sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q= es6-promise@^3.0.2: version "3.3.1" resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= es6-promise@^4.0.3, es6-promise@^4.0.5, es6-promise@^4.1.0: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= dependencies: es6-promise "^4.0.3" +es6-promisify@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.0.tgz#b526a75eaa5ca600e960bf3d5ad98c40d75c7203" + integrity sha512-8Tbqjrb8lC85dd81haajYwuRmiU2rkqNAFnlvQOJeeKqdUloIlI+JcUqeJruV4rCm5Y7oNU7jfs2FbmxhRR/2g== + es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= dependencies: d "1" es5-ext "~0.10.14" @@ -6138,6 +7128,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= dependencies: d "1" es5-ext "^0.10.14" @@ -6147,6 +7138,7 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: esanimate@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/esanimate/-/esanimate-1.1.0.tgz#e71712b6d8b2bb2e6d5d40a6392a7bf9c7c20857" + integrity sha1-5xcSttiyuy5tXUCmOSp7+cfCCFc= dependencies: escodegen "^1.7.0" esprima "^2.6.0" @@ -6154,14 +7146,17 @@ esanimate@^1.1.0: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.11.0, escodegen@^1.7.0, escodegen@^1.8.1, escodegen@^1.9.1: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -6173,6 +7168,7 @@ escodegen@^1.11.0, escodegen@^1.7.0, escodegen@^1.8.1, escodegen@^1.9.1: escodegen@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.2.0.tgz#09de7967791cc958b7f89a2ddb6d23451af327e1" + integrity sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E= dependencies: esprima "~1.0.4" estraverse "~1.5.0" @@ -6183,6 +7179,7 @@ escodegen@~1.2.0: escodegen@~1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -6191,25 +7188,29 @@ escodegen@~1.9.0: optionalDependencies: source-map "~0.6.1" -eslint-config-google@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.9.1.tgz#83353c3dba05f72bb123169a4094f4ff120391eb" +eslint-config-google@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.10.0.tgz#09adb5b1514aa99618ad0515e0cce59b8ca82d90" + integrity sha512-PGlMufI13kljog4HlDkwtyqJ7ZZFOcl0ppEvhDoE1lq+8+nMe0lQs0WIZrXpQJhwxhii3SZuCHW2g/weS6Xpyw== -eslint-config-prettier@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.10.0.tgz#ec07bc1d01f87d09f61d3840d112dc8a9791e30b" +eslint-config-prettier@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-3.1.0.tgz#2c26d2cdcfa3a05f0642cd7e6e4ef3316cdabfa2" + integrity sha512-QYGfmzuc4q4J6XIhlp8vRKdI/fI0tQfQPy1dME3UOLprE+v4ssH/3W9LM2Q7h5qBcy5m0ehCrBDU2YF8q6OY8w== dependencies: - get-stdin "^5.0.1" + get-stdin "^6.0.0" eslint-config-react-app@3.0.0-next.66cc7a90: version "3.0.0-next.66cc7a90" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-3.0.0-next.66cc7a90.tgz#f8c7bb3cca0f1e8f60bbf567ec71f6af1cce7edd" + integrity sha512-6J+fEOLy7uE+fxpGERi8Yts9vNEgul6AXbHhdvGRj+4Xpus7jR7Q4fu1oXmnuRwVPBxJ/MQkcpdFa2m8iBG20Q== dependencies: confusing-browser-globals "2.0.0-next.66cc7a90" eslint-import-resolver-node@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== dependencies: debug "^2.6.9" resolve "^1.5.0" @@ -6217,6 +7218,7 @@ eslint-import-resolver-node@^0.3.1: eslint-loader@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.0.tgz#61334c548aeb0b8e20ec3a552fb7a88c47261c6a" + integrity sha512-f4A/Yk7qF+HcFSz5Tck2QoKIwJVHlX0soJk5MkROYahb5uvspad5Ba60rrz4u/V2/MEj1dtp/uBi6LlLWVaY7Q== dependencies: loader-fs-cache "^1.0.0" loader-utils "^1.0.2" @@ -6227,6 +7229,7 @@ eslint-loader@^2.0.0: eslint-module-utils@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= dependencies: debug "^2.6.8" pkg-dir "^1.0.0" @@ -6234,23 +7237,34 @@ eslint-module-utils@^2.2.0: eslint-plugin-flow-vars@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flow-vars/-/eslint-plugin-flow-vars-0.5.0.tgz#a7fb78fd873c86e0e5839df3b3c90d47bc68c6d2" + integrity sha1-p/t4/Yc8huDlg53zs8kNR7xoxtI= eslint-plugin-flowtype@^2.46.1: version "2.50.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.0.tgz#953e262fa9b5d0fa76e178604892cf60dfb916da" + integrity sha512-10FnBXCp8odYcpUFXGAh+Zko7py0hUWutTd3BN/R9riukH360qNPLYPR3/xV9eu9K7OJDjJrsflBnL6RwxFnlw== + dependencies: + lodash "^4.17.10" + +eslint-plugin-flowtype@^2.50.3: + version "2.50.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" + integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== dependencies: lodash "^4.17.10" eslint-plugin-graphql@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-2.1.1.tgz#dae5d597080075320ea8e98795056309ffe73a18" + integrity sha512-JT2paUyu3e9ZDnroSshwUMc6pKcnkfXTsZInX1+/rPotvqOLVLtdrx/cmfb7PTJwjiEAshwcpm3/XPdTpsKJPw== dependencies: graphql-config "^2.0.1" lodash "^4.11.1" -eslint-plugin-import@^2.9.0: +eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.9.0: version "2.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== dependencies: contains-path "^0.1.0" debug "^2.6.8" @@ -6263,9 +7277,10 @@ eslint-plugin-import@^2.9.0: read-pkg-up "^2.0.0" resolve "^1.6.0" -eslint-plugin-jsx-a11y@^6.0.2, eslint-plugin-jsx-a11y@^6.0.3: +eslint-plugin-jsx-a11y@^6.0.3: version "6.1.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz#7bf56dbe7d47d811d14dbb3ddff644aa656ce8e1" + integrity sha512-JsxNKqa3TwmPypeXNnI75FntkUktGzI1wSa1LgNZdSOMI+B4sxnr1lSF8m8lPiz4mKiC+14ysZQM4scewUrP7A== dependencies: aria-query "^3.0.0" array-includes "^3.0.3" @@ -6276,16 +7291,31 @@ eslint-plugin-jsx-a11y@^6.0.2, eslint-plugin-jsx-a11y@^6.0.3: has "^1.0.3" jsx-ast-utils "^2.0.1" -eslint-plugin-prettier@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad" +eslint-plugin-jsx-a11y@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88" + integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw== dependencies: - fast-diff "^1.1.1" - jest-docblock "^21.0.0" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.1" + damerau-levenshtein "^1.0.4" + emoji-regex "^6.5.1" + has "^1.0.3" + jsx-ast-utils "^2.0.1" -eslint-plugin-react@^7.7.0, eslint-plugin-react@^7.8.2: +eslint-plugin-prettier@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.0.tgz#f6b823e065f8c36529918cdb766d7a0e975ec30c" + integrity sha512-4g11opzhqq/8+AMmo5Vc2Gn7z9alZ4JqrbZ+D4i8KlSyxeQhZHlmIrY8U9Akf514MoEhogPa87Jgkq87aZ2Ohw== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react@^7.11.1, eslint-plugin-react@^7.8.2: version "7.11.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" @@ -6296,6 +7326,7 @@ eslint-plugin-react@^7.7.0, eslint-plugin-react@^7.8.2: eslint-scope@3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -6303,6 +7334,7 @@ eslint-scope@3.7.1: eslint-scope@^3.7.1, eslint-scope@~3.7.1: version "3.7.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -6310,17 +7342,25 @@ eslint-scope@^3.7.1, eslint-scope@~3.7.1: eslint-scope@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@^4.0.0, eslint@^4.19.1, eslint@^4.5.0: +eslint@^4.19.1: version "4.19.1" resolved "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" @@ -6361,105 +7401,163 @@ eslint@^4.0.0, eslint@^4.19.1, eslint@^4.5.0: table "4.0.2" text-table "~0.2.0" -espree@^3.5.2, espree@^3.5.4: +eslint@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.6.1.tgz#348134e32ccc09abb2df1bf282b3f6eed8c7b480" + integrity sha512-hgrDtGWz368b7Wqf+v1Z69O3ZebNR0+GA7PtDdbmuz4rInFVUV9uw7whjZEiWyLzCjVb5Rs5WRN1TAS6eo7AYA== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + imurmurhash "^0.1.4" + inquirer "^6.1.0" + is-resolvable "^1.1.0" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^3.5.4: version "3.5.4" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== dependencies: acorn "^5.5.0" acorn-jsx "^3.0.0" +espree@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" + integrity sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg== + dependencies: + acorn "^5.6.0" + acorn-jsx "^4.1.1" + esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esprima@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= espurify@^1.7.0: version "1.8.1" resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056" + integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg== dependencies: core-js "^2.0.0" -esquery@^1.0.0: +esquery@^1.0.0, esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== dependencies: estraverse "^4.0.0" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse-fb@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/estraverse-fb/-/estraverse-fb-1.3.2.tgz#d323a4cb5e5ac331cea033413a9253e1643e07c4" + integrity sha1-0yOky15awzHOoDNBOpJT4WQ+B8Q= estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= estraverse@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" + integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4= esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= esutils@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" + integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - -event-stream@~3.3.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz#cac1230890e07e73ec9cacd038f60a5b66173eef" - dependencies: - duplexer "^0.1.1" - flatmap-stream "^0.1.0" - from "^0.1.7" - map-stream "0.0.7" - pause-stream "^0.0.11" - split "^1.0.1" - stream-combiner "^0.2.2" - through "^2.3.8" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== events@^1.0.0, events@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= eventsource@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= dependencies: original ">=0.0.5" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" @@ -6467,6 +7565,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: exec-buffer@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA== dependencies: execa "^0.7.0" p-finally "^1.0.0" @@ -6477,6 +7576,7 @@ exec-buffer@^3.0.0: exec-series@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a" + integrity sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo= dependencies: async-each-series "^1.1.0" object-assign "^4.1.0" @@ -6484,12 +7584,14 @@ exec-series@^1.0.0: exec-sh@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== dependencies: merge "^1.2.0" execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== dependencies: cross-spawn "^6.0.0" get-stream "^3.0.0" @@ -6502,6 +7604,7 @@ execa@^0.10.0: execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -6514,6 +7617,20 @@ execa@^0.7.0: execa@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01" + integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA== dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -6526,6 +7643,7 @@ execa@^0.8.0: execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" @@ -6538,30 +7656,41 @@ execa@^1.0.0: executable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" + integrity sha1-h3mA6REvM5EGbaNyZd562ENKtNk= dependencies: meow "^3.1.0" exif-parser@^0.1.9: version "0.1.12" resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" + integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= dependencies: is-posix-bracket "^0.1.0" expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -6574,22 +7703,26 @@ expand-brackets@^2.1.4: expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= dependencies: fill-range "^2.1.0" expand-template@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" + integrity sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg== expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: homedir-polyfill "^1.0.1" expect@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed" + integrity sha512-aG083W63tBloy8YgafWuC44EakjYe0Q6Mg35aujBPvyNU38DvLat9BVzOihNP2NZDLaCJiFNe0vejbtO6knnlA== dependencies: ansi-styles "^3.2.0" jest-diff "^23.5.0" @@ -6598,9 +7731,22 @@ expect@^23.5.0: jest-message-util "^23.4.0" jest-regex-util "^23.3.0" +expect@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" + integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== + dependencies: + ansi-styles "^3.2.0" + jest-diff "^23.6.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + express-graphql@^0.6.12: version "0.6.12" resolved "http://registry.npmjs.org/express-graphql/-/express-graphql-0.6.12.tgz#dfcb2058ca72ed5190b140830ad8cdbf76a9128a" + integrity sha512-ouLWV0hRw4hnaLtXzzwhdC79ewxKbY2PRvm05mPc/zOH5W5WVCHDQ1SmNxEPBQdUeeSNh29aIqW9zEQkA3kMuA== dependencies: accepts "^1.3.0" content-type "^1.0.4" @@ -6610,6 +7756,7 @@ express-graphql@^0.6.12: express@^4.16.2, express@^4.16.3: version "4.16.3" resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= dependencies: accepts "~1.3.5" array-flatten "1.1.1" @@ -6645,12 +7792,14 @@ express@^4.16.2, express@^4.16.3: ext-list@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== dependencies: mime-db "^1.28.0" ext-name@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== dependencies: ext-list "^2.0.0" sort-keys-length "^1.0.0" @@ -6658,12 +7807,14 @@ ext-name@^5.0.0: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -6671,10 +7822,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0, extend@^3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^2.0.4: version "2.2.0" resolved "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== dependencies: chardet "^0.4.0" iconv-lite "^0.4.17" @@ -6683,6 +7836,7 @@ external-editor@^2.0.4: external-editor@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -6691,12 +7845,14 @@ external-editor@^3.0.0: extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= dependencies: is-extglob "^1.0.0" extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -6710,18 +7866,22 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= faker@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" + integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= falafel@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" + integrity sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw= dependencies: acorn "^5.0.0" foreach "^2.0.5" @@ -6731,6 +7891,7 @@ falafel@^2.1.0: fancy-log@^1.1.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + integrity sha1-9BEl49hPLn2JpD0G2VjI94vha+E= dependencies: ansi-gray "^0.1.1" color-support "^1.1.3" @@ -6739,18 +7900,22 @@ fancy-log@^1.1.0: fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-diff@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^2.0.0, fast-glob@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf" + integrity sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.0.1" @@ -6762,36 +7927,43 @@ fast-glob@^2.0.0, fast-glob@^2.0.2: fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= faye-websocket@^0.10.0, faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= dependencies: websocket-driver ">=0.5.1" faye-websocket@~0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= dependencies: bser "^2.0.0" fbjs@^0.8.0, fbjs@^0.8.14: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= dependencies: core-js "^1.0.0" isomorphic-fetch "^2.1.1" @@ -6804,20 +7976,24 @@ fbjs@^0.8.0, fbjs@^0.8.14: fclone@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640" + integrity sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA= fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= dependencies: pend "~1.2.0" figgy-pudding@^3.1.0, figgy-pudding@^3.2.1, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^1.3.5: +figures@^1.3.5, figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= dependencies: escape-string-regexp "^1.0.5" object-assign "^4.1.0" @@ -6825,12 +8001,14 @@ figures@^1.3.5: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" @@ -6838,6 +8016,7 @@ file-entry-cache@^2.0.0: file-loader@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg== dependencies: loader-utils "^1.0.2" schema-utils "^0.4.5" @@ -6845,12 +8024,14 @@ file-loader@^1.1.11: file-match@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/file-match/-/file-match-1.0.2.tgz#c9cad265d2c8adf3a81475b0df475859069faef7" + integrity sha1-ycrSZdLIrfOoFHWw30dYWQafrvc= dependencies: utils-extend "^1.0.6" file-system@^2.1.0, file-system@^2.1.1: version "2.2.2" resolved "https://registry.yarnpkg.com/file-system/-/file-system-2.2.2.tgz#7d65833e3a2347dcd956a813c677153ed3edd987" + integrity sha1-fWWDPjojR9zZVqgTxncVPtPt2Yc= dependencies: file-match "^1.0.1" utils-extend "^1.0.4" @@ -6858,38 +8039,52 @@ file-system@^2.1.0, file-system@^2.1.1: file-type@5.2.0, file-type@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.2.0.tgz#91177ceb904963e2be53add360b213c2dc273f64" + integrity sha512-eqX81S1PWdLDPW39yyB214TVVOsUQjSmPcyUjeVH6ksH+94Y2YA/ItiIwa53rJiSofJZLK6lGsuCE3rwt0vp4w== file-type@^3.1.0, file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= file-type@^4.3.0: version "4.4.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= file-type@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== file-type@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= filename-reserved-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + integrity sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q= filename-reserved-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= filenamify@^1.0.1: version "1.2.1" resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + integrity sha1-qfL/0RxQO+0wABUCknI3jx8TZaU= dependencies: filename-reserved-regex "^1.0.0" strip-outer "^1.0.0" @@ -6898,6 +8093,7 @@ filenamify@^1.0.1: filenamify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== dependencies: filename-reserved-regex "^2.0.0" strip-outer "^1.0.0" @@ -6906,6 +8102,7 @@ filenamify@^2.0.0: fileset@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= dependencies: glob "^7.0.3" minimatch "^3.0.3" @@ -6913,10 +8110,12 @@ fileset@^2.0.2: filesize@3.5.11: version "3.5.11" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee" + integrity sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g== fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" isobject "^2.0.0" @@ -6927,6 +8126,7 @@ fill-range@^2.1.0: fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -6936,6 +8136,7 @@ fill-range@^4.0.0: finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== dependencies: debug "2.6.9" encodeurl "~1.0.2" @@ -6948,6 +8149,7 @@ finalhandler@1.1.1: find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= dependencies: commondir "^1.0.1" mkdirp "^0.5.1" @@ -6956,6 +8158,7 @@ find-cache-dir@^0.1.1: find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= dependencies: commondir "^1.0.1" make-dir "^1.0.0" @@ -6964,14 +8167,26 @@ find-cache-dir@^1.0.0: find-cache-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== dependencies: commondir "^1.0.1" make-dir "^1.0.0" pkg-dir "^3.0.0" -find-up@^1.0.0, find-up@^1.1.2: +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -6979,18 +8194,21 @@ find-up@^1.0.0, find-up@^1.1.2: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-versions@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" + integrity sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I= dependencies: array-uniq "^1.0.0" get-stdin "^4.0.1" @@ -7000,6 +8218,7 @@ find-versions@^1.0.0: findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= dependencies: detect-file "^1.0.0" is-glob "^3.1.0" @@ -7009,6 +8228,7 @@ findup-sync@^2.0.0: fined@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + integrity sha1-s33IRLdqL15wgeiE98CuNE8VNHY= dependencies: expand-tilde "^2.0.2" is-plain-object "^2.0.3" @@ -7019,14 +8239,17 @@ fined@^1.0.1: first-chunk-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04= flagged-respawn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" + integrity sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c= flat-cache@^1.2.1, flat-cache@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= dependencies: circular-json "^0.3.1" del "^2.0.2" @@ -7036,28 +8259,29 @@ flat-cache@^1.2.1, flat-cache@^1.3.0: flat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== dependencies: is-buffer "~2.0.3" -flatmap-stream@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.0.tgz#ed54e01422cd29281800914fcb968d58b685d5f1" - flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= flow-bin@^0.42.0: version "0.42.0" resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.42.0.tgz#05dd754b6b052de7b150f9210e2160746961e3cf" + integrity sha1-Bd11S2sFLeexUPkhDiFgdGlh488= flow-parser@^0.*: version "0.81.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.81.0.tgz#cda0ce856b8b87bc32790c02abd039d5048a4711" + integrity sha512-9zCcBUsuVFEcBRLBSaDUT5evmDW1jFUnvku8pHNo6TLy+8TRhbYFWIHosHGPT+3AHW6kxknAZ1oiRNCc6lUEZA== flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== dependencies: inherits "^2.0.1" readable-stream "^2.0.4" @@ -7065,12 +8289,14 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: follow-redirects@^1.0.0, follow-redirects@^1.2.5, follow-redirects@^1.3.0: version "1.5.8" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" + integrity sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg== dependencies: debug "=3.1.0" fontkit@^1.7.7: version "1.7.7" resolved "https://registry.yarnpkg.com/fontkit/-/fontkit-1.7.7.tgz#ebaf2d8f3fedf302ae3c64b4beeaddc247fcdbb1" + integrity sha1-668tjz/t8wKuPGS0vurdwkf827E= dependencies: babel-runtime "^6.11.6" brfs "^1.4.0" @@ -7087,47 +8313,48 @@ fontkit@^1.7.7: for-each@^0.3.2: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= dependencies: for-in "^1.0.1" for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= dependencies: for-in "^1.0.1" foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -foreground-child@^1.5.3, foreground-child@^1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" - dependencies: - cross-spawn "^4" - signal-exit "^3.0.0" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= dependencies: asynckit "^0.4.0" combined-stream "^1.0.5" @@ -7136,6 +8363,7 @@ form-data@2.1.4: form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= dependencies: asynckit "^0.4.0" combined-stream "1.0.6" @@ -7144,24 +8372,29 @@ form-data@~2.3.2: forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= frac@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= friendly-errors-webpack-plugin@^1.6.1, friendly-errors-webpack-plugin@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136" + integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw== dependencies: chalk "^1.1.3" error-stack-parser "^2.0.0" @@ -7170,29 +8403,30 @@ friendly-errors-webpack-plugin@^1.6.1, friendly-errors-webpack-plugin@^1.7.0: from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" -from@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-copy-file-sync@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fs-copy-file-sync/-/fs-copy-file-sync-1.1.1.tgz#11bf32c096c10d126e5f6b36d06eece776062918" + integrity sha512-2QY5eeqVv4m2PfyMiEuy9adxNP+ajf+8AR05cEi+OAzPcOj90hvFImeZhTmKLBgSd9EvG33jsD7ZRxsx9dThkQ== -fs-exists-cached@^1.0.0: +fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" + integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84= fs-extra@^4.0.1, fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -7201,6 +8435,7 @@ fs-extra@^4.0.1, fs-extra@^4.0.2: fs-extra@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -7209,6 +8444,7 @@ fs-extra@^5.0.0: fs-extra@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" + integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -7217,12 +8453,14 @@ fs-extra@^7.0.0: fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: minipass "^2.2.1" fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= dependencies: graceful-fs "^4.1.11" through2 "^2.0.3" @@ -7230,10 +8468,12 @@ fs-mkdirp-stream@^1.0.0: fs-readdir-recursive@^1.0.0, fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -7243,10 +8483,12 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" @@ -7254,6 +8496,7 @@ fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.3: fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -7263,18 +8506,31 @@ fstream@^1.0.0, fstream@^1.0.2: function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +g-status@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" + integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== + dependencies: + arrify "^1.0.1" + matcher "^1.0.0" + simple-git "^1.85.0" gather-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" + integrity sha1-szmUr0V6gRVwDUEPMXczy+egkEs= gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -7288,6 +8544,7 @@ gauge@~2.7.3: gcp-metadata@^0.6.3: version "0.6.3" resolved "http://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz#4550c08859c528b370459bd77a7187ea0bdbc4ab" + integrity sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg== dependencies: axios "^0.18.0" extend "^3.0.1" @@ -7296,28 +8553,34 @@ gcp-metadata@^0.6.3: generic-names@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" + integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc= dependencies: loader-utils "^0.2.16" genfun@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" + integrity sha1-7RAEHy5KfxsKOEZtF6XD4n3x38E= get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= get-own-enumerable-property-symbols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" + integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug== get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= dependencies: hosted-git-info "^2.1.4" meow "^3.3.0" @@ -7328,34 +8591,41 @@ get-pkg-repo@^1.0.0: get-port@^3.0.0, get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= get-proxy@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" + integrity sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus= dependencies: rc "^1.1.2" get-proxy@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== dependencies: npm-conf "^1.1.0" get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stdin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-stream@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= dependencies: object-assign "^4.0.1" pinkie-promise "^2.0.0" @@ -7363,26 +8633,31 @@ get-stream@^2.2.0: get-stream@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.0.0.tgz#9e074cb898bd2b9ebabb445a1766d7f43576d977" + integrity sha512-FneLKMENeOR7wOK0/ZXCh+lwqtnPwkeunJjRN28LPqzGvNAhYvrTAhXv6xDm4vsJ0M7lcRbIYHQudKsSy2RtSQ== dependencies: pump "^3.0.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" gettemporaryfilepath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gettemporaryfilepath/-/gettemporaryfilepath-1.0.0.tgz#2354791f0f5cdbbc881ab8bd79d478c166a12305" + integrity sha1-I1R5Hw9c27yIGri9edR4wWahIwU= git-raw-commits@^1.3.0, git-raw-commits@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" + integrity sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg== dependencies: dargs "^4.0.1" lodash.template "^4.0.2" @@ -7393,6 +8668,7 @@ git-raw-commits@^1.3.0, git-raw-commits@^1.3.6: git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= dependencies: gitconfiglocal "^1.0.0" pify "^2.3.0" @@ -7400,6 +8676,7 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^1.3.0, git-semver-tags@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" + integrity sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig== dependencies: meow "^4.0.0" semver "^5.5.0" @@ -7407,6 +8684,7 @@ git-semver-tags@^1.3.0, git-semver-tags@^1.3.6: git-up@^2.0.0: version "2.0.10" resolved "https://registry.yarnpkg.com/git-up/-/git-up-2.0.10.tgz#20fe6bafbef4384cae253dc4f463c49a0c3bd2ec" + integrity sha512-2v4UN3qV2RGypD9QpmUjpk+4+RlYpW8GFuiZqQnKmvei08HsFPd0RfbDvEhnE4wBvnYs8ORVtYpOFuuCEmBVBw== dependencies: is-ssh "^1.3.0" parse-url "^1.3.0" @@ -7414,6 +8692,7 @@ git-up@^2.0.0: git-url-parse@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-9.0.1.tgz#2905b897a3db6e5cb9e10819f0fac2e740b4481b" + integrity sha512-HDXfw3X5PZaPBRFxELatfoYCV4EaYkAGmIApnnAaVPFCJBkpfWTB2/hhQcK0dVX+MsKnkL5uAn30Lfu2KUKLmg== dependencies: git-up "^2.0.0" parse-domain "^2.0.0" @@ -7421,22 +8700,26 @@ git-url-parse@^9.0.0: gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= dependencies: ini "^1.3.2" github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= github-slugger@1.2.0, github-slugger@^1.0.0, github-slugger@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.0.tgz#8ada3286fd046d8951c3c952a8d7854cfd90fd9a" + integrity sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q== dependencies: emoji-regex ">=6.0.0 <=6.1.1" glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= dependencies: glob-parent "^2.0.0" is-glob "^2.0.0" @@ -7444,12 +8727,14 @@ glob-base@^0.3.0: glob-parent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= dependencies: is-glob "^2.0.0" glob-parent@^3.0.0, glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -7457,6 +8742,7 @@ glob-parent@^3.0.0, glob-parent@^3.1.0: glob-stream@^5.3.2: version "5.3.5" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" + integrity sha1-pVZlqajM3EGRWofHAeMtTgFvrSI= dependencies: extend "^3.0.0" glob "^5.0.3" @@ -7470,6 +8756,7 @@ glob-stream@^5.3.2: glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= dependencies: extend "^3.0.0" glob "^7.1.1" @@ -7485,10 +8772,12 @@ glob-stream@^6.1.0: glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@7.0.x, glob@~7.0.6: +glob@7.0.x: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -7500,6 +8789,7 @@ glob@7.0.x, glob@~7.0.6: glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -7511,6 +8801,7 @@ glob@7.1.2: glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= dependencies: inflight "^1.0.4" inherits "2" @@ -7521,6 +8812,7 @@ glob@^5.0.3: glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -7532,12 +8824,14 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= dependencies: ini "^1.3.4" global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" is-windows "^1.0.1" @@ -7546,6 +8840,7 @@ global-modules@1.0.0, global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= dependencies: expand-tilde "^2.0.2" homedir-polyfill "^1.0.1" @@ -7556,6 +8851,7 @@ global-prefix@^1.0.1: global@^4.3.0, global@^4.3.2, global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= dependencies: min-document "^2.19.0" process "~0.5.1" @@ -7563,18 +8859,22 @@ global@^4.3.0, global@^4.3.2, global@~4.3.0: globals-docs@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/globals-docs/-/globals-docs-2.4.0.tgz#f2c647544eb6161c7c38452808e16e693c2dafbb" + integrity sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ== -globals@^11.0.1, globals@^11.1.0: +globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: version "11.7.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -7586,6 +8886,7 @@ globby@^5.0.0: globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -7596,6 +8897,7 @@ globby@^6.1.0: globby@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= dependencies: array-union "^1.0.1" dir-glob "^2.0.0" @@ -7607,6 +8909,7 @@ globby@^7.1.1: globby@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" + integrity sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw== dependencies: array-union "^1.0.1" dir-glob "^2.0.0" @@ -7619,18 +8922,21 @@ globby@^8.0.1: glogg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + integrity sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw== dependencies: sparkles "^1.0.0" good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= dependencies: delegate "^3.1.2" google-auth-library@^1.1.0, google-auth-library@^1.3.1: version "1.6.1" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-1.6.1.tgz#9c73d831ad720c0c3048ab89d0ffdec714d07dd2" + integrity sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg== dependencies: axios "^0.18.0" gcp-metadata "^0.6.3" @@ -7643,6 +8949,7 @@ google-auth-library@^1.1.0, google-auth-library@^1.3.1: google-oauth2-node@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/google-oauth2-node/-/google-oauth2-node-0.0.2.tgz#90fde2969e2570379f54846c341cab3f660288ed" + integrity sha512-A6ZFP2MIT4AM8b2gaTD6ZpW8q5f5DDxv56cW+A9jib6Fu5kPTKnF7Ja322QdK+IZH9U+yA9Qq6w9g9f0+H6/PQ== dependencies: "@types/opn" "^5.1.0" opn "^5.3.0" @@ -7651,6 +8958,7 @@ google-oauth2-node@0.0.2: google-p12-pem@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-1.0.2.tgz#c8a3843504012283a0dbffc7430b7c753ecd4b07" + integrity sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg== dependencies: node-forge "^0.7.4" pify "^3.0.0" @@ -7658,6 +8966,7 @@ google-p12-pem@^1.0.0: googleapis@^26.0.1: version "26.0.1" resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-26.0.1.tgz#e1efb43b00546b1ad8c055a83cf210d5422b7f42" + integrity sha512-kmvohBpoZYue5bQIFAG0TK9WWkqfamRgQCf0yYBT4YqYjM4vjWRAoLDYkYYVbMp3yOLB7P6zm8p9FJSqcHtJBA== dependencies: google-auth-library "^1.1.0" qs "^6.5.1" @@ -7667,6 +8976,7 @@ googleapis@^26.0.1: googleapis@^29.0.0: version "29.0.0" resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-29.0.0.tgz#b1b2c080b7c5722621671f732a278a879758f4dd" + integrity sha512-qac2RSPObw80AOvSPV9hus8VyRxrdaTnsUmttdO6hO12fBE5jI/R9XytUOuB3Z/4LP+1NpprNyKSHm9xXuJx2w== dependencies: google-auth-library "^1.3.1" pify "^3.0.0" @@ -7677,6 +8987,7 @@ googleapis@^29.0.0: got@^5.0.0: version "5.7.1" resolved "http://registry.npmjs.org/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + integrity sha1-X4FjWmHkplifGAVp6k44FoClHzU= dependencies: create-error-class "^3.0.1" duplexer2 "^0.1.4" @@ -7697,6 +9008,7 @@ got@^5.0.0: got@^6.7.1: version "6.7.1" resolved "http://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" duplexer3 "^0.1.4" @@ -7713,6 +9025,7 @@ got@^6.7.1: got@^7.0.0, got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== dependencies: decompress-response "^3.2.0" duplexer3 "^0.1.4" @@ -7732,6 +9045,7 @@ got@^7.0.0, got@^7.1.0: got@^8.0.0, got@^8.0.1: version "8.3.2" resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== dependencies: "@sindresorhus/is" "^0.7.0" cacheable-request "^2.1.1" @@ -7754,14 +9068,17 @@ got@^8.0.0, got@^8.0.1: graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= graphql-config@^2.0.1: version "2.2.0" resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-2.2.0.tgz#fe1529eb5b77d0bf5cb32b8bbda2f5e7db622d97" + integrity sha512-qBwLauRfsVUDiGXdpiQC0mJhsOXx7cJkbfevl7lFpZgiSG3Kb+6pE+9RaAhQKyBowf79U5/lbMR8GqnOTR5wsg== dependencies: graphql-import "^0.7.1" graphql-request "^1.5.0" @@ -7772,6 +9089,7 @@ graphql-config@^2.0.1: graphql-import@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.7.1.tgz#4add8d91a5f752d764b0a4a7a461fcd93136f223" + integrity sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw== dependencies: lodash "^4.17.4" resolve-from "^4.0.0" @@ -7779,16 +9097,19 @@ graphql-import@^0.7.1: graphql-relay@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.5.5.tgz#d6815e6edd618e878d5d921c13fc66033ec867e2" + integrity sha1-1oFebt1hjoeNXZIcE/xmAz7IZ+I= graphql-request@^1.5.0: version "1.8.2" resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" + integrity sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg== dependencies: cross-fetch "2.2.2" graphql-tools@^3.0.4: version "3.1.1" resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.1.1.tgz#d593358f01e7c8b1671a17b70ddb034dea9dbc50" + integrity sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg== dependencies: apollo-link "^1.2.2" apollo-utilities "^1.0.1" @@ -7799,16 +9120,19 @@ graphql-tools@^3.0.4: graphql-type-json@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.1.tgz#d2c177e2f1b17d87f81072cd05311c0754baa420" + integrity sha1-0sF34vGxfYf4EHLNBTEcB1S6pCA= -graphql@^0.13.0, graphql@^0.13.2: +graphql@0.13.2, graphql@^0.13.0, graphql@^0.13.2: version "0.13.2" resolved "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270" + integrity sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog== dependencies: iterall "^1.2.1" gray-matter@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.1.tgz#375263c194f0d9755578c277e41b1c1dfdf22c7d" + integrity sha512-p0MADBEBl1CohV7nRZ8sVinBexEe3CKVhh0A0QIHKpcbRoxB0VgeMpRPjW/HBHIPLAKrpIIIm5mZ6hKu3E+iQg== dependencies: js-yaml "^3.11.0" kind-of "^6.0.2" @@ -7818,14 +9142,17 @@ gray-matter@^4.0.0: growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gtoken@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.0.tgz#4e0ffc16432d7041a1b3dbc1d97aac17a5dc964a" + integrity sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw== dependencies: axios "^0.18.0" google-p12-pem "^1.0.0" @@ -7836,16 +9163,19 @@ gtoken@^2.3.0: gud@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== guess-ga@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/guess-ga/-/guess-ga-0.1.5.tgz#e74037ae08654ac5cad18605b6d2c5e1e202ee05" + integrity sha512-cEa11TAZAX/odoR3G0k4UdZSmwtdNz+8yMfHWZlm25FvDoac1T5QkUP6PU6EEB85JGUyPUswXg23E0fi7e3s/w== dependencies: googleapis "^26.0.1" guess-parser@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/guess-parser/-/guess-parser-0.1.5.tgz#2a68d08b7509e46950d10bbb978db10b5238ac43" + integrity sha512-b+PPWconEZvX3YINkmORAk+lFlj+cJemUXMx0putHmFUdEw3DPpm4q+0486Wg5CH8axZpTPT3wl+bBj1hEy07w== dependencies: "@angular/compiler" "^5.2.9" "@angular/compiler-cli" "^5.2.9" @@ -7857,6 +9187,7 @@ guess-parser@^0.1.5: guess-webpack@~0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/guess-webpack/-/guess-webpack-0.1.5.tgz#b946931b962276b591311680ccf95abc593f516c" + integrity sha512-7thqtUIGb+6GaViiIauiwLnDQgYAe0r/C+JQ2+9H0iycPUkKGKv6uIydm6ay+KLDiUaYK/nACcJ83imboAe1Kg== dependencies: copy-webpack-plugin "^4.5.1" flat-cache "^1.3.0" @@ -7873,6 +9204,7 @@ guess-webpack@~0.1.3: gulp-decompress@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7" + integrity sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc= dependencies: archive-type "^3.0.0" decompress "^3.0.0" @@ -7882,10 +9214,12 @@ gulp-decompress@^1.2.0: gulp-rename@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" + integrity sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg== gulp-sourcemaps@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" + integrity sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw= dependencies: convert-source-map "^1.1.1" graceful-fs "^4.1.2" @@ -7896,6 +9230,7 @@ gulp-sourcemaps@1.6.0: gulp-util@^3.0.1: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= dependencies: array-differ "^1.0.0" array-uniq "^1.0.2" @@ -7919,22 +9254,26 @@ gulp-util@^3.0.1: gulplog@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= dependencies: glogg "^1.0.0" gzip-size@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= dependencies: duplexer "^0.1.1" handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= handlebars@^4.0.11: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw= dependencies: async "^1.4.0" optimist "^0.6.1" @@ -7942,9 +9281,10 @@ handlebars@^4.0.11: optionalDependencies: uglify-js "^2.6" -handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.5: +handlebars@^4.0.2, handlebars@^4.0.5: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== dependencies: async "^2.5.0" optimist "^0.6.1" @@ -7955,10 +9295,12 @@ handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.5: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== dependencies: ajv "^5.3.0" har-schema "^2.0.0" @@ -7966,62 +9308,75 @@ har-validator@~5.1.0: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== dependencies: isarray "2.0.1" has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= dependencies: sparkles "^1.0.0" has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-to-string-tag-x@^1.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== dependencies: has-symbol-support-x "^1.4.1" has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -8030,6 +9385,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -8038,10 +9394,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -8049,12 +9407,14 @@ has-values@^1.0.0: has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -8062,64 +9422,74 @@ hash-base@^3.0.0: hash-mod@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/hash-mod/-/hash-mod-0.0.5.tgz#daf1e4973a9116643467d54ee7690b43ef802ecc" + integrity sha1-2vHklzqRFmQ0Z9VO52kLQ++ALsw= hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.5" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hast-to-hyperscript@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-3.1.0.tgz#58ef4af5344f4da22f0622e072a8d5fa062693d3" +hast-to-hyperscript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz#5106cbba78edb7c95e2e8a49079371eb196c1ced" + integrity sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg== dependencies: comma-separated-tokens "^1.0.0" - is-nan "^1.2.1" - kebab-case "^1.0.0" - property-information "^3.0.0" + property-information "^4.0.0" space-separated-tokens "^1.0.0" - trim "0.0.1" + style-to-object "^0.2.1" unist-util-is "^2.0.0" + web-namespaces "^1.1.2" -hast-util-from-parse5@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-2.1.0.tgz#f6123d83d3689630b097e13e430d16d9d1bd8884" +hast-util-from-parse5@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz#b7164a7ffc88da4f751dc7c2f801ff8d7c143bab" + integrity sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ== dependencies: - camelcase "^3.0.0" - hastscript "^3.0.0" - property-information "^3.1.0" - vfile-location "^2.0.0" + ccount "^1.0.3" + hastscript "^4.0.0" + property-information "^4.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" hast-util-is-element@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.1.tgz#c76e8aafbdb6e5c83265bf50324e2f2e024eb12a" + integrity sha512-s/ggaNehYVqmLgTXEv12Lbb72bsOD2r5DhAqPgtDdaI/YFNXVzz0zHFVJnhjIjn7Nak8GbL4nzT2q0RA5div+A== -hast-util-parse-selector@^2.0.0: +hast-util-parse-selector@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.0.tgz#2175f18cdd697308fc3431d5c29a9e48dfa4817a" + integrity sha512-trw0pqZN7+sH9k7hPWCJNZUbWW2KroSIM/XpIy3G5ZMtx9LSabCyoSp4skJZ4q/eZ5UOBPtvWh4W9c+RE3HRoQ== -hast-util-raw@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-2.0.2.tgz#20674cfb45428213917a54ec929e6774df0642d8" +hast-util-raw@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-4.0.0.tgz#2dc10c9facd9b810ea6ac51df251e6f87c2ed5b5" + integrity sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw== dependencies: - hast-util-from-parse5 "^2.0.0" - hast-util-to-parse5 "^2.0.0" + hast-util-from-parse5 "^4.0.2" + hast-util-to-parse5 "^4.0.1" html-void-elements "^1.0.1" - parse5 "^3.0.3" + parse5 "^5.0.0" unist-util-position "^3.0.0" web-namespaces "^1.0.0" + xtend "^4.0.1" zwitch "^1.0.0" hast-util-sanitize@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-1.2.0.tgz#1a46bc8e8554f4747d219dd1d85f9cb245b1b08d" + integrity sha512-VwCTqjt6fbMGacxGB1FKV5sBJaVVkyCGVMDwb4nnqvCW2lkqscA2GEpOyBx4ZWRXty1eAZF58MHBrllEoQEoBg== dependencies: xtend "^4.0.1" hast-util-to-html@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-3.1.0.tgz#882c99849e40130e991c042e456d453d95c36cff" + integrity sha1-iCyZhJ5AEw6ZHAQuRW1FPZXDbP8= dependencies: ccount "^1.0.0" comma-separated-tokens "^1.0.1" @@ -8133,12 +9503,29 @@ hast-util-to-html@^3.0.0: unist-util-is "^2.0.0" xtend "^4.0.1" -hast-util-to-parse5@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-2.2.0.tgz#48c8f7f783020c04c3625db06109d02017033cbc" +hast-util-to-html@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a" + integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.1" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^4.0.0" + space-separated-tokens "^1.0.0" + stringify-entities "^1.0.1" + unist-util-is "^2.0.0" + xtend "^4.0.1" + +hast-util-to-parse5@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz#e52534b4bf40dc4e7d0428fcaf6d32bc75c62ee5" + integrity sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw== dependencies: - hast-to-hyperscript "^3.0.0" - mapz "^1.0.0" + hast-to-hyperscript "^5.0.0" + property-information "^4.0.0" web-namespaces "^1.0.0" xtend "^4.0.1" zwitch "^1.0.0" @@ -8146,24 +9533,27 @@ hast-util-to-parse5@^2.0.0: hast-util-whitespace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.1.tgz#d67da2c87637b1ce1d85dd15b270ba057930149a" + integrity sha512-Mfx2ZnmVMTAopZ8as42nKrNt650tCZYhy/MPeO1Imdg/cmCWK6GUSnFrrE3ezGjVifn7x5zMfu8jrjwIGyImSw== -hastscript@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-3.1.0.tgz#66628ba6d7f1ad07d9277dd09028aba7f4934599" +hastscript@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-4.1.0.tgz#ea5593fa6f6709101fc790ced818393ddaa045ce" + integrity sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ== dependencies: - camelcase "^3.0.0" comma-separated-tokens "^1.0.0" - hast-util-parse-selector "^2.0.0" - property-information "^3.0.0" + hast-util-parse-selector "^2.2.0" + property-information "^4.0.0" space-separated-tokens "^1.0.0" he@1.1.1, he@1.1.x, he@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= header-case@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0= dependencies: no-case "^2.2.0" upper-case "^1.1.3" @@ -8171,18 +9561,22 @@ header-case@^1.0.0: hex-color-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== highlight.js@^9.12.0: version "9.12.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" + integrity sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4= hjson@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/hjson/-/hjson-3.1.1.tgz#eaab95eebc6c0c749442219a817d9b4ff0070dd2" + integrity sha512-1oGkOq4sssz7HFZ8Is9HuTR47r8gSC46qAzQxVlAkj0lNKpS+W5Lv2eci+c5+fFqL+Idtj5EvprFreUwH29a8A== hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -8191,14 +9585,17 @@ hmac-drbg@^1.0.0: hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== hoist-non-react-statics@^2.5.0: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" @@ -8206,20 +9603,24 @@ home-or-tmp@^2.0.0: home-or-tmp@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs= homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4, hosted-git-info@^2.5.0, hosted-git-info@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= dependencies: inherits "^2.0.1" obuf "^1.0.0" @@ -8229,28 +9630,34 @@ hpack.js@^2.1.6: hsl-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= hsla-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + integrity sha1-ZouTd26q5V696POtRkswekljYl4= html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: whatwg-encoding "^1.0.1" html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= html-minifier@^3.2.3, html-minifier@^3.5.8: version "3.5.20" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14" + integrity sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA== dependencies: camel-case "3.0.x" clean-css "4.2.x" @@ -8263,14 +9670,17 @@ html-minifier@^3.2.3, html-minifier@^3.5.8: html-void-elements@^1.0.0, html-void-elements@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.3.tgz#956707dbecd10cf658c92c5d27fee763aa6aa982" + integrity sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA== html-webpack-exclude-assets-plugin@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/html-webpack-exclude-assets-plugin/-/html-webpack-exclude-assets-plugin-0.0.7.tgz#ee69906adb3d869e4e29f29b0f3e99b53fa87c99" + integrity sha512-gaYKMGBPDts3Fb1WXyDEEcS/0TSRg2IDl3EsbQL2AkKWTqdjSKwfQ8Iz0RhPiWErJfqhq5/wkhoYyjQoG55pug== html-webpack-plugin@^3.2.0: version "3.2.0" resolved "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= dependencies: html-minifier "^3.2.3" loader-utils "^0.2.16" @@ -8283,6 +9693,7 @@ html-webpack-plugin@^3.2.0: htmlparser2@^3.9.0, htmlparser2@^3.9.1: version "3.9.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= dependencies: domelementtype "^1.3.0" domhandler "^2.3.0" @@ -8294,6 +9705,7 @@ htmlparser2@^3.9.0, htmlparser2@^3.9.1: htmlparser2@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= dependencies: domelementtype "1" domhandler "2.1" @@ -8303,14 +9715,17 @@ htmlparser2@~3.3.0: http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= http-errors@1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= dependencies: depd "1.1.1" inherits "2.0.3" @@ -8320,6 +9735,7 @@ http-errors@1.6.2: http-errors@1.6.3, http-errors@~1.6.2: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" @@ -8329,6 +9745,7 @@ http-errors@1.6.3, http-errors@~1.6.2: http-errors@^1.3.0: version "1.7.1" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.1.tgz#6a4ffe5d35188e1c39f872534690585852e1f027" + integrity sha512-jWEUgtZWGSMba9I1N3gc1HmvpBUaNC9vDdA46yScAdp+C5rdEuKWUBLWTQpW9FwSWSbYYs++b6SDCxf9UEJzfw== dependencies: depd "~1.1.2" inherits "2.0.3" @@ -8339,10 +9756,12 @@ http-errors@^1.3.0: http-parser-js@>=0.4.0: version "0.4.13" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" + integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== dependencies: agent-base "4" debug "3.1.0" @@ -8350,6 +9769,7 @@ http-proxy-agent@^2.1.0: http-proxy-middleware@~0.18.0: version "0.18.0" resolved "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== dependencies: http-proxy "^1.16.2" is-glob "^4.0.0" @@ -8359,6 +9779,7 @@ http-proxy-middleware@~0.18.0: http-proxy@^1.16.2: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== dependencies: eventemitter3 "^3.0.0" follow-redirects "^1.0.0" @@ -8367,6 +9788,7 @@ http-proxy@^1.16.2: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -8375,28 +9797,33 @@ http-signature@~1.2.0: httperrors@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/httperrors/-/httperrors-2.0.1.tgz#02febcaec8d9d6a9e1ae3773915b9fdaa2204672" + integrity sha1-Av68rsjZ1qnhrjdzkVuf2qIgRnI= dependencies: createerror "1.1.0" httperrors@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/httperrors/-/httperrors-2.2.0.tgz#cdc2e21b8866a63f9ed69e569d075ea62a0c934f" + integrity sha1-zcLiG4hmpj+e1p5WnQdepioMk08= dependencies: createerror "1.2.0" httperrors@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/httperrors/-/httperrors-2.3.0.tgz#edb7bfc2f635b00ef27e92d46ca48b5840683679" + integrity sha512-U1WA9mlJb0ux9C5U4aNRJrNTWxSoBq2ypj3PNJeS1hTvrfUuCwXpaaF7WsqSf05LQi7HkE8E5FnDz1iWCQzgkQ== dependencies: createerror "1.3.0" https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== dependencies: agent-base "^4.1.0" debug "^3.1.0" @@ -8404,68 +9831,117 @@ https-proxy-agent@^2.2.1: humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: ms "^2.0.0" +husky@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-1.1.1.tgz#7179043184f68a4d1ffc975cbd1c6132ef1fd7b3" + integrity sha512-D8ly8eIZdWzWVG4mh4apaX1PP47uLSaN8CS0RyuuLtHJ20Gt6Ccky5pSecaPsqxNzQj0zon3x6QX/0kCc5/TOQ== + dependencies: + cosmiconfig "^5.0.6" + execa "^0.9.0" + find-up "^3.0.0" + get-stdin "^6.0.0" + is-ci "^1.2.1" + pkg-dir "^3.0.0" + please-upgrade-node "^3.1.1" + read-pkg "^4.0.1" + run-node "^1.0.0" + slash "^2.0.0" + hyphenate-style-name@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" + integrity sha1-MRYKNpMK2vH8BMYHT360FGXU7Es= iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" icss-replace-symbols@1.1.0, icss-replace-symbols@^1.0.2, icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= icss-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= dependencies: postcss "^6.0.1" +idb-keyval@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.1.0.tgz#cce9ed320734446784d52ed398c4b075a4273f51" + integrity sha512-iFwFN5n00KNNnVxlOOK280SJJfXWY7pbMUOQXdIXehvvc/mGCV/6T2Ae+Pk2KwAkkATDTwfMavOiDH5lrJKWXQ== + ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== dependencies: minimatch "^3.0.4" -ignore@^3.2.7, ignore@^3.3.3, ignore@^3.3.5: +ignore@^3.3.3, ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== image-size@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== imageinfo@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/imageinfo/-/imageinfo-1.0.4.tgz#1dd2456ecb96fc395f0aa1179c467dfb3d5d7a2a" + integrity sha1-HdJFbsuW/DlfCqEXnEZ9+z1deio= + +imagemin-mozjpeg@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-7.0.0.tgz#d926477fc6ef5f3a768a4222f7b2d808d3eba568" + integrity sha1-2SZHf8bvXzp2ikIi97LYCNPrpWg= + dependencies: + execa "^0.8.0" + is-jpg "^1.0.0" + mozjpeg "^5.0.0" imagemin-pngquant@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-6.0.0.tgz#7c0c956338fa9a3a535deb63973c1c894519cc78" + integrity sha512-lZ87Y7u0UaJuhtQZ2wkKyxsFeNTEv1C5xxoHN7jFD89rKpiC/Qu2cIYGAOypOsxqAxWlsHaoz0hJlFFdCnG6Zg== dependencies: execa "^0.10.0" is-png "^1.0.0" @@ -8475,6 +9951,7 @@ imagemin-pngquant@^6.0.0: imagemin-webp@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/imagemin-webp/-/imagemin-webp-4.1.0.tgz#effd00160d8456b95cbde5fd26c32d64b0318062" + integrity sha1-7/0AFg2EVrlcveX9JsMtZLAxgGI= dependencies: cwebp-bin "^4.0.0" exec-buffer "^3.0.0" @@ -8483,6 +9960,7 @@ imagemin-webp@^4.1.0: imagemin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-6.0.0.tgz#1ae68c6b867863651a454f882054d9abf7d13b78" + integrity sha512-m4Mxwt2QvCp1F85HXoTungXk0Y6XzuvQGqrK9qEddQfo/7x4aZjRENmyXXfc29ei4Mk55rW002bORG86YM3/aQ== dependencies: file-type "^8.1.0" globby "^8.0.1" @@ -8494,26 +9972,31 @@ imagemin@^6.0.0: immutable@~3.7.6: version "3.7.6" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= dependencies: import-from "^2.1.0" import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= dependencies: resolve-from "^3.0.0" import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== dependencies: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" @@ -8521,6 +10004,7 @@ import-local@^1.0.0: import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" @@ -8528,28 +10012,34 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= dependencies: repeating "^2.0.0" -indent-string@^3.0.0, indent-string@^3.1.0, indent-string@^3.2.0: +indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -8557,18 +10047,22 @@ inflight@^1.0.4: inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= ini@^1.3.2, ini@^1.3.3, ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== init-package-json@^1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== dependencies: glob "^7.1.1" npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" @@ -8582,6 +10076,7 @@ init-package-json@^1.10.3: inline-style-prefixer@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz#d390957d26f281255fe101da863158ac6eb60911" + integrity sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg== dependencies: bowser "^1.7.3" css-in-js-utils "^2.0.0" @@ -8589,6 +10084,7 @@ inline-style-prefixer@^4.0.0: inquirer@3.3.0, inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -8605,9 +10101,10 @@ inquirer@3.3.0, inquirer@^3.0.1, inquirer@^3.0.6, inquirer@^3.2.2, inquirer@^3.3 strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^6.2.0: +inquirer@^6.1.0, inquirer@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -8626,6 +10123,7 @@ inquirer@^6.2.0: internal-ip@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" + integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== dependencies: default-gateway "^2.6.0" ipaddr.js "^1.5.2" @@ -8633,10 +10131,12 @@ internal-ip@^3.0.1: interpret@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= dependencies: from2 "^2.1.1" p-is-promise "^1.1.0" @@ -8644,50 +10144,61 @@ into-stream@^3.1.0: invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ip-regex@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + integrity sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0= ip-regex@^2.0.0, ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= ipaddr.js@^1.5.2: version "1.8.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= is-absolute@^0.1.5: version "0.1.7" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f" + integrity sha1-hHSREZ/MtftDYhfMc39/qtUPYD8= dependencies: is-relative "^0.1.0" is-absolute@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + integrity sha1-IN5p89uULvLYe5wto28XIjWxtes= dependencies: is-relative "^0.2.1" is-windows "^0.2.0" @@ -8695,6 +10206,7 @@ is-absolute@^0.2.6: is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== dependencies: is-relative "^1.0.0" is-windows "^1.0.1" @@ -8702,26 +10214,31 @@ is-absolute@^1.0.0: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-alphabetical@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.2.tgz#1fa6e49213cb7885b75d15862fb3f3d96c884f41" + integrity sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg== is-alphanumeric@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" + integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= is-alphanumerical@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz#1138e9ae5040158dc6ff76b820acd6b7a181fd40" + integrity sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg== dependencies: is-alphabetical "^1.0.0" is-decimal "^1.0.0" @@ -8729,48 +10246,58 @@ is-alphanumerical@^1.0.0: is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.4, is-buffer@^1.1.5, is-buffer@~1.1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" is-bzip2@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" + integrity sha1-XuWOqlounIDiFAe+3yOuWsCRs/w= is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== -is-ci@^1.0.10: +is-ci@^1.0.10, is-ci@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: ci-info "^1.5.0" is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= dependencies: css-color-names "^0.0.4" hex-color-regex "^1.1.0" @@ -8782,32 +10309,38 @@ is-color-stop@^1.0.0: is-cwebp-readable@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-cwebp-readable/-/is-cwebp-readable-2.0.1.tgz#afb93b0c0abd0a25101016ae33aea8aedf926d26" + integrity sha1-r7k7DAq9CiUQEBauM66ort+SbSY= dependencies: file-type "^4.3.0" is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= is-decimal@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.2.tgz#894662d6a8709d307f3a276ca4339c8fa5dff0ff" + integrity sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg== is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -8816,6 +10349,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -8824,88 +10358,106 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= is-equal-shallow@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= dependencies: is-primitive "^2.0.0" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= is-generator-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= dependencies: is-extglob "^1.0.0" is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: is-extglob "^2.1.1" is-gzip@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + integrity sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM= is-hexadecimal@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835" + integrity sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A== is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= dependencies: global-dirs "^0.1.0" is-path-inside "^1.0.0" @@ -8913,64 +10465,82 @@ is-installed-globally@^0.1.0: is-ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" + integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= dependencies: ip-regex "^2.0.0" +is-jpg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.1.tgz#296d57fdd99ce010434a7283e346ab9a1035e975" + integrity sha1-KW1X/dmc4BBDSnKD40armhA16XU= + is-lower-case@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + integrity sha1-fhR75HaNxGbbO/shzGCzHmrWk5M= dependencies: lower-case "^1.1.0" -is-nan@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" - dependencies: - define-properties "^1.1.1" - is-natural-number@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" + integrity sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec= is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= dependencies: kind-of "^3.0.2" is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" is-online@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-online/-/is-online-7.0.0.tgz#7e2408c0ae1e7e37ba8d50bdb237260d32bfd96e" + integrity sha1-fiQIwK4efje6jVC9sjcmDTK/2W4= dependencies: got "^6.7.1" p-any "^1.0.0" @@ -8980,228 +10550,277 @@ is-online@^7.0.0: is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: path-is-inside "^1.0.1" is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-png@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce" + integrity sha1-1XSxK/J1wDUEVVcLDltXqwYgd84= is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= dependencies: has "^1.0.1" is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= is-relative-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-2.0.0.tgz#72902d7fe04b3d4792e7db15f9db84b7204c9cef" + integrity sha1-cpAtf+BLPUeS59sV+duEtyBMnO8= dependencies: is-absolute-url "^2.0.0" is-relative@^0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" + integrity sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI= is-relative@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + integrity sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU= dependencies: is-unc-path "^0.1.1" is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.0.0: +is-resolvable@^1.0.0, is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= is-root@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5" + integrity sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU= is-ssh@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.0.tgz#ebea1169a2614da392a63740366c3ce049d8dff6" + integrity sha1-6+oRaaJhTaOSpjdANmw84EnY3/Y= dependencies: protocols "^1.1.0" is-stream@1.1.0, is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== dependencies: html-comment-regex "^1.1.0" is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= is-tar@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" + integrity sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0= is-text-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= dependencies: text-extensions "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-unc-path@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + integrity sha1-arBTpyVzwQJQ/0FqOBTDUXivObk= dependencies: unc-path-regex "^0.1.0" is-unc-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== dependencies: unc-path-regex "^0.1.2" is-upper-case@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + integrity sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8= dependencies: upper-case "^1.1.0" is-url@^1.2.0: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-valid-glob@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + integrity sha1-1LVcafUYhvm2XHDWwmItN+KfSP4= is-valid-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= is-whitespace-character@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz#ede53b4c6f6fb3874533751ec9280d01928d03ed" + integrity sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ== is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-word-character@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.2.tgz#46a5dac3f2a1840898b91e576cd40d493f3ae553" + integrity sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= is-zip@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" + integrity sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU= isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= isarray@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" + integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA== isemail@3.x.x: version "3.1.3" resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.1.3.tgz#64f37fc113579ea12523165c3ebe3a71a56ce571" + integrity sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw== dependencies: punycode "2.x.x" isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isomorphic-fetch@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= dependencies: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" @@ -9209,10 +10828,12 @@ isomorphic-fetch@^2.1.1: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-api@^1.3.1: version "1.3.6" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.6.tgz#0c695f17e533131de8c49e0657175dcfd8af8a8f" + integrity sha512-luJDnB1uJ5Qsg/WwusGfNXayQ4598yDgW5S0nUS85T576m1LVJzSqLrCDULkT6sTQXVKHa54093gNuCKumMCjQ== dependencies: async "^2.1.4" compare-versions "^3.1.0" @@ -9227,33 +10848,32 @@ istanbul-api@^1.3.1: mkdirp "^0.5.1" once "^1.4.0" -istanbul-lib-coverage@^1.0.0-alpha.4, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - istanbul-lib-coverage@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" + integrity sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A== + +istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== istanbul-lib-coverage@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" - -istanbul-lib-hook@^1.0.0-alpha.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - dependencies: - append-transform "^0.4.0" + integrity sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA== istanbul-lib-hook@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" + integrity sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg== dependencies: append-transform "^1.0.0" -istanbul-lib-instrument@^1.1.0-alpha.3, istanbul-lib-instrument@^1.10.1: +istanbul-lib-instrument@^1.10.1: version "1.10.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" + integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -9266,6 +10886,7 @@ istanbul-lib-instrument@^1.1.0-alpha.3, istanbul-lib-instrument@^1.10.1: istanbul-lib-instrument@^2.1.0: version "2.3.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz#b287cbae2b5f65f3567b05e2e29b275eaf92d25e" + integrity sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q== dependencies: "@babel/generator" "7.0.0-beta.51" "@babel/parser" "7.0.0-beta.51" @@ -9275,37 +10896,20 @@ istanbul-lib-instrument@^2.1.0: istanbul-lib-coverage "^2.0.1" semver "^5.5.0" -istanbul-lib-report@^1.0.0-alpha.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - istanbul-lib-report@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" + integrity sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA== dependencies: istanbul-lib-coverage "^1.2.0" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.0.0-alpha.10: - version "1.2.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" + integrity sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA== dependencies: debug "^3.1.0" istanbul-lib-coverage "^1.2.0" @@ -9313,21 +10917,17 @@ istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.5: rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.0.0-alpha.8: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - dependencies: - handlebars "^4.0.3" - istanbul-reports@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.0.tgz#c6c2867fa65f59eb7dcedb7f845dfc76aaee70f9" + integrity sha512-HeZG0WHretI9FXBni5wZ9DOgNziqDCEwetxnme5k1Vv5e81uTqcsy3fMH99gXGDGKr1ea87TyGseDMa2h4HEUA== dependencies: handlebars "^4.0.11" isurl@^1.0.0-alpha5: version "1.0.0" resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== dependencies: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" @@ -9335,16 +10935,19 @@ isurl@^1.0.0-alpha5: iterall@^1.1.3, iterall@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" + integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== jest-changed-files@^23.4.2: version "23.4.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" + integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== dependencies: throat "^4.0.0" jest-cli@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.5.0.tgz#d316b8e34a38a610a1efc4f0403d8ef8a55e4492" + integrity sha512-Kxi2QH8s6NkpPgboza/plpmQ2bjUQ+MwYv7vM5rDwJz/x+NB4YoLXFikPXLWNP0JuYpMvYwITKneFljnNKhq2Q== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -9386,6 +10989,7 @@ jest-cli@^23.5.0: jest-config@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.5.0.tgz#3770fba03f7507ee15f3b8867c742e48f31a9773" + integrity sha512-JENhQpLaVwXWPLUkhPYgIfecHKsU8GR1vj79rS4n0LSRsHx/U2wItZKoKAd5vtt2J58JPxRq4XheG79jd4fI7Q== dependencies: babel-core "^6.0.0" babel-jest "^23.4.2" @@ -9402,35 +11006,73 @@ jest-config@^23.5.0: micromatch "^2.3.11" pretty-format "^23.5.0" +jest-config@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" + integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== + dependencies: + babel-core "^6.0.0" + babel-jest "^23.6.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^23.4.0" + jest-environment-node "^23.4.0" + jest-get-type "^22.1.0" + jest-jasmine2 "^23.6.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + micromatch "^2.3.11" + pretty-format "^23.6.0" + jest-diff@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba" + integrity sha512-Miz8GakJIz443HkGpVOAyHQgSYqcgs2zQmDJl4oV7DYrFotchdoQvxceF6LhfpRBV1LOUGcFk5Dd/ffSXVwMsA== dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" pretty-format "^23.5.0" -jest-docblock@^21.0.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" +jest-diff@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" jest-docblock@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" + integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= dependencies: detect-newline "^2.1.0" jest-each@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.5.0.tgz#77f7e2afe6132a80954b920006e78239862b10ba" + integrity sha512-8BgebQgAJmWXpYp4Qt9l3cn1Xei0kZ7JL4cs/NXh7750ATlPGzRRYbutFVJTk5B/Lt3mjHP3G3tLQLyBOCSHGA== dependencies: chalk "^2.0.1" pretty-format "^23.5.0" +jest-each@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" + integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== + dependencies: + chalk "^2.0.1" + pretty-format "^23.6.0" + jest-environment-jsdom@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" + integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= dependencies: jest-mock "^23.2.0" jest-util "^23.4.0" @@ -9439,6 +11081,7 @@ jest-environment-jsdom@^23.4.0: jest-environment-node@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" + integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= dependencies: jest-mock "^23.2.0" jest-util "^23.4.0" @@ -9446,10 +11089,12 @@ jest-environment-node@^23.4.0: jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== jest-haste-map@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.5.0.tgz#d4ca618188bd38caa6cb20349ce6610e194a8065" + integrity sha512-bt9Swigb6KZ6ZQq/fQDUwdUeHenVvZ6G/lKwJjwRGp+Fap8D4B3bND3FaeJg7vXVsLX8hXshRArbVxLop/5wLw== dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" @@ -9463,6 +11108,7 @@ jest-haste-map@^23.5.0: jest-jasmine2@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz#05fe7f1788e650eeb5a03929e6461ea2e9f3db53" + integrity sha512-xMgvDUvgqKpilsGnneC9Qr+uIlROxKI3UoJcHZeUlu6AKpQyEkGh0hKbfM0NaEjX5sy7WeFQEhcp/AiWlHcc0A== dependencies: babel-traverse "^6.0.0" chalk "^2.0.1" @@ -9477,23 +11123,64 @@ jest-jasmine2@^23.5.0: jest-util "^23.4.0" pretty-format "^23.5.0" +jest-jasmine2@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" + integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== + dependencies: + babel-traverse "^6.0.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^23.6.0" + is-generator-fn "^1.0.0" + jest-diff "^23.6.0" + jest-each "^23.6.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + pretty-format "^23.6.0" + +jest-junit@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-5.2.0.tgz#980401db7aa69999cf117c6d740a8135c22ae379" + integrity sha512-Mdg0Qpdh1Xm/FA1B/mcLlmEmlr3XzH5pZg7MvcAwZhjHijPRd1z/UwYwkwNHmCV7o4ZOWCf77nLu7ZkhHHrtJg== + dependencies: + jest-config "^23.6.0" + jest-validate "^23.0.1" + mkdirp "^0.5.1" + strip-ansi "^4.0.0" + xml "^1.0.1" + jest-leak-detector@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz#14ac2a785bd625160a2ea968fd5d98b7dcea3e64" + integrity sha512-40VsHQCIEslxg91Zg5NiZGtPeWSBLXiD6Ww+lhHlIF6u8uSQ+xgiD6NbWHFOYs1VBRI+V/ym7Q1aOtVg9tqMzQ== dependencies: pretty-format "^23.5.0" jest-matcher-utils@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a" + integrity sha512-hmQUKUKYOExp3T8dNYK9A9copCFYKoRLcY4WDJJ0Z2u3oF6rmAhHuZtmpHBuGpASazobBxm3TXAfAXDvz2T7+Q== dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" pretty-format "^23.5.0" +jest-matcher-utils@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" + integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + jest-message-util@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" + integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" @@ -9504,14 +11191,17 @@ jest-message-util@^23.4.0: jest-mock@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" + integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= jest-regex-util@^23.3.0: version "23.3.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" + integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= jest-resolve-dependencies@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz#10c4d135beb9d2256de1fedc7094916c3ad74af7" + integrity sha512-APZc/CjfzL8rH/wr+Gh7XJJygYaDjMQsWaJy4ZR1WaHWKude4WcfdU8xjqaNbx5NsVF2P2tVvsLbumlPXCdJOw== dependencies: jest-regex-util "^23.3.0" jest-snapshot "^23.5.0" @@ -9519,6 +11209,16 @@ jest-resolve-dependencies@^23.5.0: jest-resolve@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.5.0.tgz#3b8e7f67e84598f0caf63d1530bd8534a189d0e6" + integrity sha512-CRPc0ebG3baNKz/QicIy5rGfzYpMNm8AjEl/tDQhehq/QC4ttyauZdvAXel3qo+4Gri9ljajnxW+hWyxZbbcnQ== + dependencies: + browser-resolve "^1.11.3" + chalk "^2.0.1" + realpath-native "^1.0.0" + +jest-resolve@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" + integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== dependencies: browser-resolve "^1.11.3" chalk "^2.0.1" @@ -9527,6 +11227,7 @@ jest-resolve@^23.5.0: jest-runner@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.5.0.tgz#570f7a044da91648b5bb9b6baacdd511076c71d7" + integrity sha512-cpBvkBTVmW1ab1thbtoh2m6VnnM0BYKhj3MEzbOTZjPfzoIjUVIxLUTDobVNOvEK7aTEb/2oiPlNoOTSNJx8mw== dependencies: exit "^0.1.2" graceful-fs "^4.1.11" @@ -9545,6 +11246,7 @@ jest-runner@^23.5.0: jest-runtime@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.5.0.tgz#eb503525a196dc32f2f9974e3482d26bdf7b63ce" + integrity sha512-WzzYxYtoU8S1MJns0G4E3BsuFUTFBiu1qsk3iC9OTugzNQcQKt0BoOGsT7wXCKqkw/09QdV77vvaeJXST2Efgg== dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -9571,10 +11273,12 @@ jest-runtime@^23.5.0: jest-serializer@^23.0.1: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" + integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= jest-snapshot@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.5.0.tgz#cc368ebd8513e1175e2a7277f37a801b7358ae79" + integrity sha512-NYg8MFNVyPXmnnihiltasr4t1FJEXFbZFaw1vZCowcnezIQ9P1w+yxTwjWT564QP24Zbn5L9cjxLs8d6K+pNlw== dependencies: babel-types "^6.0.0" chalk "^2.0.1" @@ -9587,9 +11291,26 @@ jest-snapshot@^23.5.0: pretty-format "^23.5.0" semver "^5.5.0" +jest-snapshot@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" + integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== + dependencies: + babel-types "^6.0.0" + chalk "^2.0.1" + jest-diff "^23.6.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-resolve "^23.6.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^23.6.0" + semver "^5.5.0" + jest-util@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" + integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= dependencies: callsites "^2.0.0" chalk "^2.0.1" @@ -9600,9 +11321,20 @@ jest-util@^23.4.0: slash "^1.0.0" source-map "^0.6.0" +jest-validate@^23.0.1, jest-validate@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" + integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^23.6.0" + jest-validate@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.5.0.tgz#f5df8f761cf43155e1b2e21d6e9de8a2852d0231" + integrity sha512-XmStdYhfdiDKacXX5sNqEE61Zz4/yXaPcDsKvVA0429RBu2pkQyIltCVG7UitJIEAzSs3ociQTdyseAW8VGPiA== dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" @@ -9612,6 +11344,7 @@ jest-validate@^23.5.0: jest-watcher@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" + integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -9620,12 +11353,14 @@ jest-watcher@^23.4.0: jest-worker@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" + integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= dependencies: merge-stream "^1.0.1" jest@^23.5.0: version "23.5.0" resolved "https://registry.yarnpkg.com/jest/-/jest-23.5.0.tgz#80de353d156ea5ea4a7332f7962ac79135fbc62e" + integrity sha512-+X3Fk4rD8dTnHoIxHJymZthbtYllvSOnXAApQltvyLkHsv+fqyC/SZptUJDbXkFsqZJyyIXMySkdzerz3fv4oQ== dependencies: import-local "^1.0.0" jest-cli "^23.5.0" @@ -9633,6 +11368,7 @@ jest@^23.5.0: jimp@^0.2.24: version "0.2.28" resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.2.28.tgz#dd529a937190f42957a7937d1acc3a7762996ea2" + integrity sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI= dependencies: bignumber.js "^2.1.0" bmp-js "0.0.3" @@ -9654,6 +11390,7 @@ jimp@^0.2.24: joi@12.x.x: version "12.0.0" resolved "https://registry.yarnpkg.com/joi/-/joi-12.0.0.tgz#46f55e68f4d9628f01bbb695902c8b307ad8d33a" + integrity sha512-z0FNlV4NGgjQN1fdtHYXf5kmgludM65fG/JlXzU6+rwkt9U5UWuXVYnXa2FpK0u6+qBuCmrm5byPNuiiddAHvQ== dependencies: hoek "4.x.x" isemail "3.x.x" @@ -9662,6 +11399,7 @@ joi@12.x.x: joi@^11.1.1: version "11.4.0" resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" + integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA== dependencies: hoek "4.x.x" isemail "3.x.x" @@ -9670,33 +11408,40 @@ joi@^11.1.1: jpeg-js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" + integrity sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII= js-base64@^2.1.9: version "2.4.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" + integrity sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ== js-levenshtein@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5" + integrity sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ== js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@3.11.0: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + integrity sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw== dependencies: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.5.2, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.5.2, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -9704,6 +11449,7 @@ js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.5.2, js-yaml@^3.7.0, js-yaml@^3.9.0 js-yaml@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + integrity sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -9711,6 +11457,7 @@ js-yaml@~3.10.0: js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= dependencies: argparse "^1.0.7" esprima "^2.6.0" @@ -9718,10 +11465,12 @@ js-yaml@~3.7.0: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jscodeshift@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.1.tgz#4af6a721648be8638ae1464a190342da52960c33" + integrity sha512-sRMollbhbmSDrR79JMAnhEjyZJlQQVozeeY9A6/KNuV26DNcuB3mGSCWXp0hks9dcwRNOELbNOiwraZaXXRk5Q== dependencies: babel-plugin-transform-flow-strip-types "^6.8.0" babel-preset-es2015 "^6.9.0" @@ -9742,6 +11491,7 @@ jscodeshift@^0.5.1: jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== dependencies: abab "^2.0.0" acorn "^5.5.3" @@ -9773,6 +11523,7 @@ jsdom@^11.5.1: jsdom@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-12.0.0.tgz#043ffaac60605d87adf77a1ec3eb7686918b6b64" + integrity sha512-42RgZYXWwyClG0pN6Au7TExAQqRvzbtJhlcIvu58cJj4yr1bIbqZkgxHqn1btxKu80axZXPZLvldeTzg2auKow== dependencies: abab "^2.0.0" acorn "^5.7.1" @@ -9803,56 +11554,69 @@ jsdom@^12.0.0: jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= json-loader@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json-stable-stringify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= dependencies: jsonify "~0.0.0" json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json2csv@^3.7: version "3.11.5" resolved "https://registry.yarnpkg.com/json2csv/-/json2csv-3.11.5.tgz#088006c3b5c06425a48cb7326ca712a6f8661417" + integrity sha512-ORsw84BuRKMLxfI+HFZuvxRDnsJps53D5fIGr6tLn4ZY+ymcG8XU00E+JJ2wfAiHx5w2QRNmOLE8xHiGAeSfuQ== dependencies: cli-table "^0.3.1" commander "^2.8.1" @@ -9868,28 +11632,34 @@ json2csv@^3.7: json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: graceful-fs "^4.1.6" jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -9899,12 +11669,14 @@ jsprim@^1.2.2: jsx-ast-utils@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8= dependencies: array-includes "^3.0.3" jwa@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" + integrity sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw== dependencies: buffer-equal-constant-time "1.0.1" ecdsa-sig-formatter "1.0.10" @@ -9913,63 +11685,75 @@ jwa@^1.1.5: jws@^3.1.4, jws@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" + integrity sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ== dependencies: jwa "^1.1.5" safe-buffer "^5.0.1" -katex@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.9.0.tgz#26a7d082c21d53725422d2d71da9b2d8455fbd4a" +"katex@>=0.10.0 <1.0.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.10.0.tgz#da562e5d0d5cc3aa602e27af8a9b8710bfbce765" + integrity sha512-/WRvx+L1eVBrLwX7QzKU1dQuaGnE7E8hDvx3VWfZh9HbMiCfsKWJNnYZ0S8ZMDAfAyDSofdyXIrH/hujF1fYXg== dependencies: - match-at "^0.1.1" + commander "^2.16.0" kebab-case@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/kebab-case/-/kebab-case-1.0.0.tgz#3f9e4990adcad0c686c0e701f7645868f75f91eb" + integrity sha1-P55JkK3K0MaGwOcB92RYaPdfkes= kebab-hash@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/kebab-hash/-/kebab-hash-0.1.2.tgz#dfb7949ba34d8e70114ea7d83e266e5e2a4abaac" + integrity sha512-BTZpq3xgISmQmAVzkISy4eUutsUA7s4IEFlCwOBJjvSFOwyR7I+fza+tBc/rzYWK/NrmFHjfU1IhO3lu29Ib/w== dependencies: lodash.kebabcase "^4.1.1" keyv@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== dependencies: json-buffer "3.0.0" killable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== kleur@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== last-call-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== dependencies: lodash "^4.17.5" webpack-sources "^1.1.0" @@ -9977,48 +11761,57 @@ last-call-webpack-plugin@^3.0.0: latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= dependencies: package-json "^4.0.0" lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= lazy-req@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + integrity sha1-va6+rTD42CQDnODOFJ1Nqge6H6w= lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= dependencies: readable-stream "^2.0.5" lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: invert-kv "^1.0.0" lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" lead@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= dependencies: flush-write-stream "^1.0.2" left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== lerna@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.11.0.tgz#89b5681e286d388dda5bbbdbbf6b84c8094eff65" + integrity sha512-kgM6zwe2P2tR30MYvgiLLW+9buFCm6E7o8HnRlhTgm70WVBvXVhydqv+q/MF2HrVZkCawfVtCfetyQmtd4oHhQ== dependencies: async "^1.5.0" chalk "^2.1.0" @@ -10063,6 +11856,7 @@ lerna@^2.9.0: lerna@^3.3.0: version "3.4.0" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.4.0.tgz#c1403852b4b3fa986072de11d7f549604fd41775" + integrity sha512-RCLm0gMi8PESEF8PzMxo35foA2NGGC/NKnKiUmJyRrhLybOIUfVPdPStSAWCjW1c+DYCgLZCbxu57/KWt4ZWZA== dependencies: "@lerna/add" "^3.3.2" "@lerna/bootstrap" "^3.3.2" @@ -10085,6 +11879,7 @@ lerna@^3.3.0: less-loader@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" + integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg== dependencies: clone "^2.1.1" loader-utils "^1.1.0" @@ -10093,10 +11888,12 @@ less-loader@^4.1.0: leven@^2.0.0, leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -10104,6 +11901,7 @@ levn@^0.3.0, levn@~0.3.0: libnpmaccess@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.0.tgz#33cc9c8a5cb53e87d06bf2e547c2eba974f619af" + integrity sha512-SiE4AZAzMpD7pmmXHfgD7rof8QIQGoKaeyAS8exgx2CKA6tzRTbRljq1xM4Tgj8/tIg+KBJPJWkR0ifqKT3irQ== dependencies: aproba "^2.0.0" get-stream "^4.0.0" @@ -10113,6 +11911,7 @@ libnpmaccess@^3.0.0: liftoff@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" + integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= dependencies: extend "^3.0.0" findup-sync "^2.0.0" @@ -10126,14 +11925,91 @@ liftoff@^2.2.0: lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.0.4.tgz#d3c909fcf7897152cdce2d6e42500cd9b5b41a0d" + integrity sha512-Rs0VxXoyFqHMrPQgKAMy+O907+m5Po71UVPhBi7BUBwU7ZZ2aoc+mZmpOX3DVPCoTcy6+hqJa9yIZfacNpJHdg== + dependencies: + chalk "^2.3.1" + commander "^2.14.1" + cosmiconfig "^5.0.2" + debug "^3.1.0" + dedent "^0.7.0" + del "^3.0.0" + execa "^1.0.0" + find-parent-dir "^0.3.0" + g-status "^2.0.2" + is-glob "^4.0.0" + is-windows "^1.0.2" + jest-validate "^23.5.0" + listr "^0.14.2" + listr-update-renderer "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update" + lodash "^4.17.5" + log-symbols "^2.2.0" + micromatch "^3.1.8" + npm-which "^3.0.1" + p-map "^1.1.1" + path-is-inside "^1.0.2" + pify "^3.0.0" + please-upgrade-node "^3.0.2" + staged-git-files "1.1.2" + string-argv "^0.0.2" + stringify-object "^3.2.2" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.4.0, "listr-update-renderer@https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update": + version "0.4.0" + resolved "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update#06073fa93166277607a7814f4e1f83960081414c" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU= + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.2.tgz#cbe44b021100a15376addfc2d79349ee430bfe14" + integrity sha512-vmaNJ1KlGuGWShHI35X/F8r9xxS0VTHh9GejVXwSN20fG5xpq3Jh4bJbnumoT6q5EDM/8/YP1z3YMtQbFmhuXw== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.4.0" + listr-verbose-renderer "^0.4.0" + p-map "^1.1.1" + rxjs "^6.1.0" livereload-js@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.3.0.tgz#c3ab22e8aaf5bf3505d80d098cbad67726548c9a" + integrity sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg== load-bmfont@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz#75f17070b14a8c785fe7f5bee2e6fd4f98093b6b" + integrity sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g== dependencies: buffer-equal "0.0.1" mime "^1.3.4" @@ -10147,6 +12023,7 @@ load-bmfont@^1.2.3: load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -10157,6 +12034,7 @@ load-json-file@^1.0.0: load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -10166,6 +12044,7 @@ load-json-file@^2.0.0: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -10175,10 +12054,12 @@ load-json-file@^4.0.0: load-script@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/load-script/-/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" + integrity sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ= loader-fs-cache@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" + integrity sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw= dependencies: find-cache-dir "^0.1.1" mkdirp "0.5.1" @@ -10186,10 +12067,12 @@ loader-fs-cache@^1.0.0: loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= loader-utils@^0.2.16: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -10199,6 +12082,7 @@ loader-utils@^0.2.16: loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -10207,6 +12091,7 @@ loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -10214,119 +12099,148 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" -lodash-es@^4.2.1: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0" +lockfile@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" lodash-webpack-plugin@^0.11.5: version "0.11.5" resolved "https://registry.yarnpkg.com/lodash-webpack-plugin/-/lodash-webpack-plugin-0.11.5.tgz#c4bd064b4f561c3f823fa5982bdeb12c475390b9" + integrity sha512-QWfEIYxpixOdbd6KBe5g6MDWcyTgP3trDXwKHFqTlXrWiLcs/67fGQ0IWeRyhWlTITQIgMpJAYd2oeIztuV5VA== dependencies: lodash "^4.17.4" lodash._arrayeach@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + integrity sha1-urFWsqkNPxu9XGU0AzSeXlkz754= lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= lodash._baseeach@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz#cf8706572ca144e8d9d75227c990da982f932af3" + integrity sha1-z4cGVyyhROjZ11InyZDamC+TKvM= dependencies: lodash.keys "^3.0.0" lodash._basetostring@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= lodash._basevalues@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= lodash._reescape@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= lodash._reevaluate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= lodash._reinterpolate@^3.0.0, lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= lodash._root@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= -lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.0.9, lodash.assign@^4.2.0: +lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= lodash.clone@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= dependencies: lodash._root "^3.0.0" lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= lodash.every@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" + integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= lodash.foreach@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-3.0.3.tgz#6fd7efb79691aecd67fdeac2761c98e701d6c39a" + integrity sha1-b9fvt5aRrs1n/erCdhyY5wHWw5o= dependencies: lodash._arrayeach "^3.0.0" lodash._baseeach "^3.0.0" @@ -10336,50 +12250,62 @@ lodash.foreach@^3.0.3: lodash.foreach@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= lodash.get@^4.0, lodash.get@^4.4.0, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= lodash.groupby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1" + integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E= lodash.has@^4.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= lodash.isequal@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= lodash.iteratee@^4.5.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz#be4177db289a8ccc3c0990f1db26b5b22fc1554c" + integrity sha1-vkF32yiajMw8CZDx2ya1si/BVUw= lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= dependencies: lodash._getnative "^3.0.0" lodash.isarguments "^3.0.0" @@ -10388,46 +12314,57 @@ lodash.keys@^3.0.0: lodash.map@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= lodash.maxby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.maxby/-/lodash.maxby-4.6.0.tgz#082240068f3c7a227aa00a8380e4f38cf0786e3d" + integrity sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0= lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.merge@^4.6.0: +lodash.merge@^4.6.0, lodash.merge@^4.6.1: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== lodash.mergewith@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= lodash.set@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= lodash.template@^3.0.0: version "3.6.2" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= dependencies: lodash._basecopy "^3.0.0" lodash._basetostring "^3.0.0" @@ -10442,6 +12379,7 @@ lodash.template@^3.0.0: lodash.template@^4.0.2, lodash.template@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= dependencies: lodash._reinterpolate "~3.0.0" lodash.templatesettings "^4.0.0" @@ -10449,6 +12387,7 @@ lodash.template@^4.0.2, lodash.template@^4.4.0: lodash.templatesettings@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= dependencies: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" @@ -10456,64 +12395,87 @@ lodash.templatesettings@^3.0.0: lodash.templatesettings@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= dependencies: lodash._reinterpolate "~3.0.0" lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= lodash@^4.11.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" logalot@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI= dependencies: figures "^1.3.5" squeak "^1.0.0" -loglevel-colored-level-prefix@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" - dependencies: - chalk "^1.1.3" - loglevel "^1.4.1" - loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= longest-streak@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-1.0.0.tgz#d06597c4d4c31b52ccb1f5d8f8fe7148eafd6965" + integrity sha1-0GWXxNTDG1LMsfXY+P5xSOr9aWU= longest-streak@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e" + integrity sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA== longest@^1.0.0, longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loud-rejection@^1.0.0, loud-rejection@^1.2.0, loud-rejection@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" @@ -10521,24 +12483,29 @@ loud-rejection@^1.0.0, loud-rejection@^1.2.0, loud-rejection@^1.6.0: lower-case-first@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + integrity sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E= dependencies: lower-case "^1.1.2" lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= lowercase-keys@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lpad-align@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4= dependencies: get-stdin "^4.0.1" indent-string "^2.1.0" @@ -10548,14 +12515,25 @@ lpad-align@^1.0.1: lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= + +lru-cache@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.0.tgz#b5cbf01556c16966febe54ceec0fb4dc90df6c28" + integrity sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg= + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" lru-cache@=2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.3.1.tgz#b3adf6b3d856e954e2c390e6cef22081245a53d6" + integrity sha1-s632s9hW6VTiw5DmzvIggSRaU9Y= lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -10563,26 +12541,31 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: ltcdr@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ltcdr/-/ltcdr-2.2.1.tgz#5ab87ad1d4c1dab8e8c08bbf037ee0c1902287cf" + integrity sha1-Wrh60dTB2rjowIu/A37gwZAih88= lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= magic-string@^0.22.4: version "0.22.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== dependencies: vlq "^0.2.2" make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" make-fetch-happen@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" + integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ== dependencies: agentkeepalive "^3.4.1" cacache "^11.0.1" @@ -10599,98 +12582,89 @@ make-fetch-happen@^4.0.1: make-iterator@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== dependencies: kind-of "^6.0.2" -make-plural@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-4.2.0.tgz#03edfc34a2aee630a57e209369ef26ee3ca69590" - optionalDependencies: - minimist "^1.2.0" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: tmpl "1.0.x" mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== map-age-cleaner@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" + integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== dependencies: p-defer "^1.0.0" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - -map-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" -mapz@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mapz/-/mapz-1.0.2.tgz#f6af94c425db0874ac2c4e67a76f5df1724b1322" - dependencies: - x-is-array "^0.1.0" - markdown-escapes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.2.tgz#e639cbde7b99c841c0bacc8a07982873b46d2122" + integrity sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA== markdown-table@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-0.4.0.tgz#890c2c1b3bfe83fb00e4129b8e4cfe645270f9d1" + integrity sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE= markdown-table@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786" + integrity sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw== -match-at@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540" +matcher@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" + integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== + dependencies: + escape-string-regexp "^1.0.4" math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= md5-file@^3.1.1: version "3.2.3" resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" + integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== dependencies: buffer-alloc "^1.1.0" -md5-hex@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" - dependencies: - md5-o-matic "^0.1.1" - -md5-o-matic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" - md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= dependencies: hash-base "^3.0.0" inherits "^2.0.1" @@ -10698,6 +12672,7 @@ md5.js@^1.3.4: md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= dependencies: charenc "~0.0.1" crypt "~0.0.1" @@ -10706,24 +12681,28 @@ md5@^2.2.1: mdast-util-compact@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz#c12ebe16fffc84573d3e19767726de226e95f649" + integrity sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg== dependencies: unist-util-visit "^1.1.0" mdast-util-definitions@^1.2.0: version "1.2.3" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.3.tgz#49f936b09207c45b438db19551652934312f04f0" + integrity sha512-P6wpRO8YVQ1iv30maMc93NLh7COvufglBE8/ldcOyYmk5EbfF0YeqlLgtqP/FOBU501Kqar1x5wYWwB3Nga74g== dependencies: unist-util-visit "^1.0.0" mdast-util-inject@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz#db06b8b585be959a2dcd2f87f472ba9b756f3675" + integrity sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU= dependencies: mdast-util-to-string "^1.0.0" mdast-util-to-hast@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.2.tgz#26b1971f49d6db1e3428463a12e66c89db5021cb" + integrity sha512-YI8Ea3TFWEZrS31+6Q/d8ZYTOSDKM06IPc3l2+OMFX1o3JTG2mrztlmzDsUMwIXLWofEdTVl/WXBgRG6ddlU/A== dependencies: collapse-white-space "^1.0.0" detab "^2.0.0" @@ -10740,6 +12719,7 @@ mdast-util-to-hast@^3.0.0: mdast-util-to-nlcst@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.0.tgz#dad262857658d1eab4b5814a20e2f93d7ca1e3b6" + integrity sha1-2tJihXZY0eq0tYFKIOL5PXyh47Y= dependencies: nlcst-to-string "^2.0.0" repeat-string "^1.5.2" @@ -10749,10 +12729,12 @@ mdast-util-to-nlcst@^3.2.0: mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz#3552b05428af22ceda34f156afe62ec8e6d731ca" + integrity sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A== mdast-util-toc@^2.0.0, mdast-util-toc@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-2.1.0.tgz#82b6b218577bb0e67b23abf5c3f7ac73a4b5389f" + integrity sha512-ove/QQWSrYOrf9G3xn2MTAjy7PKCtCmm261wpQwecoPAsUtkihkMVczxFqil7VihxgSz4ID9c8bBTsyXR30gQg== dependencies: github-slugger "^1.1.1" mdast-util-to-string "^1.0.2" @@ -10761,28 +12743,34 @@ mdast-util-toc@^2.0.0, mdast-util-toc@^2.0.1: mdn-data@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.2.0.tgz#eadd28b0f2d307cf27e71524609bfb749ebfc0b6" + integrity sha512-esDqNvsJB2q5V28+u7NdtdMg6Rmg4khQmAVSjUiX7BY/7haIv0K2yWM43hYp0or+3nvG7+UaTF1JHz31hgU1TA== mdn-data@~1.1.0: version "1.1.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= dependencies: mimic-fn "^1.0.0" mem@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^1.0.0" @@ -10791,12 +12779,14 @@ mem@^4.0.0: memoizesync@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/memoizesync/-/memoizesync-1.1.1.tgz#01c09f0e2cf20a6349163eab05e51f9bd1e13fe1" + integrity sha1-AcCfDizyCmNJFj6rBeUfm9HhP+E= dependencies: lru-cache "=2.3.1" memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -10804,10 +12794,12 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= dependencies: camelcase-keys "^2.0.0" decamelize "^1.1.2" @@ -10823,6 +12815,7 @@ meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: meow@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== dependencies: camelcase-keys "^4.0.0" decamelize-keys "^1.0.0" @@ -10837,48 +12830,41 @@ meow@^4.0.0: merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= merge-source-map@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= dependencies: source-map "^0.5.6" merge-stream@^1.0.0, merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= dependencies: readable-stream "^2.0.1" merge2@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" + integrity sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg== merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - -messageformat-parser@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.1.0.tgz#13ba2250a76bbde8e0fca0dbb3475f95c594a90a" - -messageformat@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.1.1.tgz#ceaa2e6c86929d4807058275a7372b1bd963bdf6" - dependencies: - glob "~7.0.6" - make-plural "^4.1.1" - messageformat-parser "^1.1.0" - nopt "~3.0.6" - reserved-words "^0.1.2" + integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7, micromatch@^2.3.8: +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= dependencies: arr-diff "^2.0.0" array-unique "^0.2.1" @@ -10897,6 +12883,7 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7, micromatch@^2.3.8: micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -10915,6 +12902,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5, mic miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" @@ -10922,52 +12910,63 @@ miller-rabin@^4.0.0: "mime-db@>= 1.34.0 < 2", mime-db@^1.28.0, mime-db@~1.36.0: version "1.36.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== mime-db@~1.25.0: version "1.25.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I= mime-types@2.1.13: version "2.1.13" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" + integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog= dependencies: mime-db "~1.25.0" mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: version "2.1.20" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== dependencies: mime-db "~1.36.0" mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.0.3, mime@^2.2.0, mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= dependencies: dom-walk "^0.1.0" mini-css-extract-plugin@^0.4.0, mini-css-extract-plugin@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz#b3ecc0d6b1bbe5ff14add42b946a7b200cf78651" + integrity sha512-ots7URQH4wccfJq9Ssrzu2+qupbncAce4TmTzunI9CIwlQMp2XI+WNUw6xWF6MMAGAm1cbUVINrSjATaVMyKXg== dependencies: loader-utils "^1.1.0" schema-utils "^1.0.0" @@ -10976,18 +12975,22 @@ mini-css-extract-plugin@^0.4.0, mini-css-extract-plugin@^0.4.1: mini-svg-data-uri@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.0.1.tgz#d81ffc14b85558860581cc58d9790daaecbe91bf" + integrity sha512-KJ3cjR4kJIP4RroDIXqVTOX0hDYaFMmeHPXqwakVuJmak31uB4+DEqK2L7cedtYHUOdQgh23YsXnAIOHLvjM0g== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + integrity sha1-J12O2qxPG7MyZHIInnlJyDlGmd0= dependencies: lru-cache "2" sigmund "~1.0.0" @@ -10995,18 +12998,21 @@ minimatch@0.3.0: "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimatch@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q= dependencies: brace-expansion "^1.0.0" minimist-options@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" @@ -11014,22 +13020,27 @@ minimist-options@^3.0.1: minimist@0.0.8: version "0.0.8" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^0.1.0: version "0.1.0" resolved "http://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + integrity sha1-md9lelJXTCHJBXSX33QnkLK0wN4= minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" + integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -11037,12 +13048,14 @@ minipass@^2.2.1, minipass@^2.3.3: minizlib@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== dependencies: minipass "^2.2.1" mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -11058,6 +13071,7 @@ mississippi@^2.0.0: mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -11073,10 +13087,12 @@ mississippi@^3.0.0: mitt@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" + integrity sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA== mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -11084,6 +13100,7 @@ mixin-deep@^1.2.0: mixin-object@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= dependencies: for-in "^0.1.3" is-extendable "^0.1.1" @@ -11091,12 +13108,14 @@ mixin-object@^2.0.1: mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" mocha@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" + integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA== dependencies: browser-stdout "1.3.0" commander "2.11.0" @@ -11112,10 +13131,12 @@ mocha@^4.0.1: modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== module-deps-sortable@4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/module-deps-sortable/-/module-deps-sortable-4.0.6.tgz#1251a4ba2c44a92df6989bd029da121a4f2109b0" + integrity sha1-ElGkuixEqS32mJvQKdoSGk8hCbA= dependencies: JSONStream "^1.0.3" browser-resolve "^1.7.0" @@ -11135,10 +13156,12 @@ module-deps-sortable@4.0.6: moment@^2.21.0, moment@^2.6.0: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= mongodb-core@2.1.20: version "2.1.20" resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.20.tgz#fece8dd76b59ee7d7f2d313b65322c160492d8f1" + integrity sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ== dependencies: bson "~1.0.4" require_optional "~1.0.0" @@ -11146,6 +13169,7 @@ mongodb-core@2.1.20: mongodb@^2.2.30: version "2.2.36" resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.36.tgz#1c573680b2849fb0f47acbba3dc5fa228de975f5" + integrity sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA== dependencies: es6-promise "3.2.1" mongodb-core "2.1.20" @@ -11154,6 +13178,7 @@ mongodb@^2.2.30: move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -11162,21 +13187,34 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mozjpeg@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-5.0.0.tgz#b8671c4924568a363de003ff2fd397ab83f752c5" + integrity sha1-uGccSSRWijY94AP/L9OXq4P3UsU= + dependencies: + bin-build "^2.2.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.0.0, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= multicast-dns@^6.0.1: version "6.2.3" resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== dependencies: dns-packet "^1.3.1" thunky "^1.0.2" @@ -11184,6 +13222,7 @@ multicast-dns@^6.0.1: multimatch@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + integrity sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis= dependencies: array-differ "^1.0.0" array-union "^1.0.1" @@ -11193,28 +13232,34 @@ multimatch@^2.1.0: multipipe@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= dependencies: duplexer2 "0.0.2" -mutationobserver-shim@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#f4d5dae7a4971a2207914fb5a90ebd514b65acca" - mute-stream@0.0.7, mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= name-all-modules-plugin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz#0abfb6ad835718b9fb4def0674e06657a954375c" + integrity sha1-Cr+2rYNXGLn7Te8GdOBmV6lUN1w= + +nan@^2.11.1: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== -nan@^2.11.0, nan@^2.9.2: +nan@^2.9.2: version "2.11.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" + integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -11228,13 +13273,20 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-build-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" + integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" + integrity sha512-GPL22d/U9cai87FcCPO6e+MT3vyHS2j+zwotakDc7kE2DtUAqFKMXLJCTtRp+5S75vXIwQPvIxkvlctxf9q4gQ== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -11243,68 +13295,82 @@ needle@^2.2.1: negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= neo-async@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" + integrity sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw== netlify-identity-widget@^1.4.11: version "1.4.14" resolved "https://registry.yarnpkg.com/netlify-identity-widget/-/netlify-identity-widget-1.4.14.tgz#32539380b85ce98881f3cea2d59111cb031ea994" + integrity sha512-F2wAEgfJDjtNcV9vt+GlishUgi2q5IJoeP1VLEZwH9Kq4vUunZByR/2R5Bb6XpCLuiXoT0hNY7zUMCxGBKbl6Q== next-tick@1, next-tick@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= ngast@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/ngast/-/ngast-0.1.4.tgz#feeee2e5c9a997a86976897eb8635b56cd54d35b" + integrity sha512-52zUAImaoUqHvIljqBh2SqvmOWeKXO6XpU+z2sKHzTfanCsOvJCAtygySJOte36LR46kYxZlgSFvXickGHhXkg== dependencies: typescript "~2.6.0" nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nlcst-to-string@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.2.tgz#7125af4d4d369850c697192a658f01f36af9937b" + integrity sha512-DV7wVvMcAsmZ5qEwvX1JUNF4lKkAAKbChwNlIH7NLsPR7LWWoeIt53YlZ5CQH5KDXEXQ9Xa3mw0PbPewymrtew== no-case@^2.2.0, no-case@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== dependencies: lower-case "^1.1.1" node-abi@^2.2.0: version "2.4.3" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.3.tgz#43666b7b17e57863e572409edbb82115ac7af28b" + integrity sha512-b656V5C0628gOOA2kwcpNA/bxdlqYF9FvxJ+qqVX0ctdXNVZpS8J6xEUYir3WAKc7U0BH/NRlSpNbGsy+azjeg== dependencies: semver "^5.4.1" node-dir@0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" + integrity sha1-VfuN62mQcHB/tn+RpGDwRIKUx30= node-dir@^0.1.10: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= dependencies: minimatch "^3.0.2" node-emoji@^1.0.4: version "1.8.1" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.8.1.tgz#6eec6bfb07421e2148c75c6bba72421f8530a826" + integrity sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg== dependencies: lodash.toarray "^4.4.0" node-eta@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.9.0.tgz#9fb0b099bcd2a021940e603c64254dc003d9a7a8" + integrity sha1-n7CwmbzSoCGUDmA8ZCVNwAPZp6g= node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" @@ -11313,10 +13379,12 @@ node-fetch-npm@^2.0.2: node-fetch@2.1.2: version "2.1.2" resolved "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= node-fetch@^1.0.1, node-fetch@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== dependencies: encoding "^0.1.11" is-stream "^1.0.1" @@ -11324,14 +13392,17 @@ node-fetch@^1.0.1, node-fetch@^1.7.3: node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== node-forge@^0.7.4: version "0.7.6" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" + integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== node-gyp@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -11349,10 +13420,12 @@ node-gyp@^3.8.0: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -11381,10 +13454,12 @@ node-libs-browser@^2.0.0: node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + integrity sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg== dependencies: growly "^1.3.0" semver "^5.4.1" @@ -11394,6 +13469,7 @@ node-notifier@^5.2.1: node-plop@=0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-plop/-/node-plop-0.9.0.tgz#d24796c9b5f37441308cfb3184f574dca0355aa6" + integrity sha1-0keWybXzdEEwjPsxhPV03KA1WqY= dependencies: change-case "^3.0.1" co "^4.6.0" @@ -11411,6 +13487,7 @@ node-plop@=0.9.0: node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -11426,16 +13503,19 @@ node-pre-gyp@^0.10.0: node-releases@^1.0.0-alpha.11: version "1.0.0-alpha.11" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.11.tgz#73c810acc2e5b741a17ddfbb39dfca9ab9359d8a" + integrity sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ== dependencies: semver "^5.3.0" node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + integrity sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8= nomnom@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= dependencies: chalk "~0.4.0" underscore "~1.6.0" @@ -11443,6 +13523,7 @@ nomnom@^1.8.1: noms@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= dependencies: inherits "^2.0.1" readable-stream "~1.0.31" @@ -11450,16 +13531,19 @@ noms@0.0.0: noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= -"nopt@2 || 3", nopt@~3.0.6: +"nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: abbrev "1" nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" @@ -11467,6 +13551,7 @@ nopt@^4.0.1: normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -11476,16 +13561,19 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= normalize-url@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== dependencies: prepend-http "^2.0.0" query-string "^5.0.1" @@ -11494,24 +13582,29 @@ normalize-url@2.0.1: normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== normalizeurl@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/normalizeurl/-/normalizeurl-1.0.0.tgz#4b1a458cd0c7d0856436f69c6b51047ab6855317" + integrity sha1-SxpFjNDH0IVkNvaca1EEeraFUxc= now-and-later@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" + integrity sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4= dependencies: once "^1.3.2" npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== npm-conf@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== dependencies: config-chain "^1.1.11" pify "^3.0.0" @@ -11519,6 +13612,7 @@ npm-conf@^1.1.0: npm-lifecycle@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569" + integrity sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g== dependencies: byline "^5.0.0" graceful-fs "^4.1.11" @@ -11532,6 +13626,7 @@ npm-lifecycle@^2.0.0: "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== dependencies: hosted-git-info "^2.6.0" osenv "^0.1.5" @@ -11541,13 +13636,22 @@ npm-lifecycle@^2.0.0: npm-packlist@^1.1.10, npm-packlist@^1.1.6: version "1.1.11" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" +npm-path@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== + dependencies: + which "^1.2.10" + npm-pick-manifest@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.1.0.tgz#dc381bdd670c35d81655e1d5a94aa3dd4d87fce5" + integrity sha512-q9zLP8cTr8xKPmMZN3naxp1k/NxVFsjxN6uWuO1tiw9gxg7wZWQ/b5UTfzD0ANw2q1lQxdLKTeCCksq+bPSgbQ== dependencies: npm-package-arg "^6.0.0" semver "^5.4.1" @@ -11555,6 +13659,7 @@ npm-pick-manifest@^2.1.0: npm-registry-fetch@^3.0.0, npm-registry-fetch@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz#aa7d9a7c92aff94f48dba0984bdef4bd131c88cc" + integrity sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" @@ -11563,16 +13668,17 @@ npm-registry-fetch@^3.0.0, npm-registry-fetch@^3.8.0: make-fetch-happen "^4.0.1" npm-package-arg "^6.1.0" -npm-run-all@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.2.tgz#90d62d078792d20669139e718621186656cea056" +npm-run-all@4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== dependencies: - ansi-styles "^3.2.0" - chalk "^2.1.0" - cross-spawn "^5.1.0" + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" memorystream "^0.3.1" minimatch "^3.0.4" - ps-tree "^1.1.0" + pidtree "^0.3.0" read-pkg "^3.0.0" shell-quote "^1.6.1" string.prototype.padend "^3.0.0" @@ -11580,12 +13686,23 @@ npm-run-all@4.1.2: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -11595,82 +13712,64 @@ npm-run-path@^2.0.0: nprogress@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= nth-check@^1.0.1, nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= dependencies: boolbase "~1.0.0" null-loader@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-0.1.1.tgz#17be9abfcd3ff0e1512f6fc4afcb1f5039378fae" + integrity sha1-F76av80/8OFRL2/Er8sfUDk3j64= num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.0.7, nwsapi@^2.0.8: version "2.0.9" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" - -nyc@^7.0.0: - version "7.1.0" - resolved "http://registry.npmjs.org/nyc/-/nyc-7.1.0.tgz#8e14971f3a15d1abbec7ac610ef54cb889e9ffb4" - dependencies: - arrify "^1.0.1" - caching-transform "^1.0.0" - convert-source-map "^1.3.0" - default-require-extensions "^1.0.0" - find-cache-dir "^0.1.1" - find-up "^1.1.2" - foreground-child "^1.5.3" - glob "^7.0.3" - istanbul-lib-coverage "^1.0.0-alpha.4" - istanbul-lib-hook "^1.0.0-alpha.4" - istanbul-lib-instrument "^1.1.0-alpha.3" - istanbul-lib-report "^1.0.0-alpha.3" - istanbul-lib-source-maps "^1.0.0-alpha.10" - istanbul-reports "^1.0.0-alpha.8" - md5-hex "^1.2.0" - micromatch "^2.3.11" - mkdirp "^0.5.0" - pkg-up "^1.0.0" - resolve-from "^2.0.0" - rimraf "^2.5.4" - signal-exit "^3.0.0" - spawn-wrap "^1.2.4" - test-exclude "^1.1.0" - yargs "^4.8.1" - yargs-parser "^2.4.1" + integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -11679,28 +13778,34 @@ object-copy@^0.1.0: object-hash@^1.1.4: version "1.3.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.0.tgz#76d9ba6ff113cf8efc0d996102851fe6723963e2" + integrity sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ== object-inspect@~1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" + integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@~1.0.0: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== object-path@^0.11.2: version "0.11.4" resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.0.4: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" function-bind "^1.1.1" @@ -11710,6 +13815,7 @@ object.assign@^4.0.4: object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= dependencies: array-each "^1.0.1" array-slice "^1.0.0" @@ -11719,6 +13825,7 @@ object.defaults@^1.1.0: object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= dependencies: define-properties "^1.1.2" es-abstract "^1.5.1" @@ -11726,6 +13833,7 @@ object.getownpropertydescriptors@^2.0.3: object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= dependencies: for-own "^1.0.0" make-iterator "^1.0.0" @@ -11733,6 +13841,7 @@ object.map@^1.0.0: object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= dependencies: for-own "^0.1.4" is-extendable "^0.1.1" @@ -11740,12 +13849,14 @@ object.omit@^2.0.0: object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" object.values@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo= dependencies: define-properties "^1.1.2" es-abstract "^1.6.1" @@ -11755,52 +13866,62 @@ object.values@^1.0.4: obuf@^1.0.0, obuf@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^1.0.0: version "1.1.0" resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" opentracing@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.3.tgz#23e3ad029fa66a653926adbe57e834469f8550aa" + integrity sha1-I+OtAp+mamU5Jq2+V+g0Rp+FUKo= opn@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + integrity sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg== dependencies: is-wsl "^1.1.0" opn@^5.1.0, opn@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== dependencies: is-wsl "^1.1.0" optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -11808,6 +13929,7 @@ optimist@^0.6.1: optimize-css-assets-webpack-plugin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" + integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== dependencies: cssnano "^4.1.0" last-call-webpack-plugin "^3.0.0" @@ -11815,6 +13937,7 @@ optimize-css-assets-webpack-plugin@^5.0.1: optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -11826,6 +13949,7 @@ optionator@^0.8.1, optionator@^0.8.2: ordered-read-streams@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" + integrity sha1-cTfmmzKYuzQiR6G77jiByA4v14s= dependencies: is-stream "^1.0.1" readable-stream "^2.0.1" @@ -11833,36 +13957,36 @@ ordered-read-streams@^0.3.0: ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= dependencies: readable-stream "^2.0.1" original@>=0.0.5: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== dependencies: url-parse "^1.4.3" os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-filter-obj@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" + integrity sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60= os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== dependencies: execa "^0.7.0" lcid "^1.0.0" @@ -11871,6 +13995,7 @@ os-locale@^2.0.0: os-locale@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== dependencies: execa "^0.10.0" lcid "^2.0.0" @@ -11879,10 +14004,12 @@ os-locale@^3.0.0: os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -11890,6 +14017,7 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5: output-file-sync@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" + integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== dependencies: graceful-fs "^4.1.11" is-plain-obj "^1.1.0" @@ -11898,116 +14026,139 @@ output-file-sync@^2.0.0: p-any@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-any/-/p-any-1.1.0.tgz#1d03835c7eed1e34b8e539c47b7b60d0d015d4e1" + integrity sha512-Ef0tVa4CZ5pTAmKn+Cg3w8ABBXh+hHO1aV8281dKOoUHfX+3tjG2EaFcC+aZyagg9b4EYGsHEjz21DnEE8Og2g== dependencies: p-some "^2.0.0" p-cancelable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== p-cancelable@^0.4.0: version "0.4.1" resolved "http://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= p-event@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU= dependencies: p-timeout "^1.1.1" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-is-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= p-limit@^1.0.0, p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== dependencies: p-try "^2.0.0" p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-map-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= dependencies: p-reduce "^1.0.0" p-map@^1.1.1, p-map@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== p-pipe@^1.1.0, p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= p-queue@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" + integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= p-some@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/p-some/-/p-some-2.0.1.tgz#65d87c8b154edbcf5221d167778b6d2e150f6f06" + integrity sha1-Zdh8ixVO289SIdFnd4ttLhUPbwY= dependencies: aggregate-error "^1.0.0" p-timeout@^1.0.0, p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= dependencies: p-finally "^1.0.0" p-timeout@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== p-waterfall@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= dependencies: p-reduce "^1.0.0" package-json@^4.0.0, package-json@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -12017,6 +14168,7 @@ package-json@^4.0.0, package-json@^4.0.1: pacote@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.1.0.tgz#59810859bbd72984dcb267269259375d32f391e5" + integrity sha512-AFXaSWhOtQf3jHqEvg+ZYH/dfT8TKq6TKspJ4qEFwVVuh5aGvMIk6SNF8vqfzz+cBceDIs9drOcpBbrPai7i+g== dependencies: bluebird "^3.5.1" cacache "^11.0.2" @@ -12049,14 +14201,17 @@ pacote@^9.1.0: pako@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -12065,18 +14220,21 @@ parallel-transform@^1.1.0: param-case@2.1.x, param-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= dependencies: no-case "^2.2.0" parents@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= dependencies: path-platform "~0.11.15" parse-asn1@^5.0.0: version "5.1.1" resolved "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -12087,14 +14245,17 @@ parse-asn1@^5.0.0: parse-bmfont-ascii@^1.0.3: version "1.0.6" resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" + integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU= parse-bmfont-binary@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" + integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY= parse-bmfont-xml@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== dependencies: xml-parse-from-string "^1.0.0" xml2js "^0.4.5" @@ -12102,6 +14263,7 @@ parse-bmfont-xml@^1.1.4: parse-domain@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/parse-domain/-/parse-domain-2.1.2.tgz#8c536bdecf7a9af01bb6d7ad30eb794791d6c2c7" + integrity sha512-I1HuHXYL8hZp9MYf0jHZE2nW0qhJnqBAxKOR9sGCbiBoD3znYrp4nh3SH9dkt2+f6gEenEj6sh537FTNe+QBqg== dependencies: chai "^4.1.2" fs-copy-file-sync "^1.1.1" @@ -12112,6 +14274,7 @@ parse-domain@^2.0.0: parse-english@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/parse-english/-/parse-english-4.1.1.tgz#2f75872e617769d857d9b6992dcde2a891f1b2d3" + integrity sha512-g7hegR9AFIlGXl5645mG8nQeeWW7SrK7lgmgIWR0KKWvGyZO5mxa4GGoNxRLm6VW2LGpLnn6g4O9yyLJQ4IzQw== dependencies: nlcst-to-string "^2.0.0" parse-latin "^4.0.0" @@ -12121,6 +14284,7 @@ parse-english@^4.0.0: parse-entities@^1.0.2, parse-entities@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.1.2.tgz#9eaf719b29dc3bd62246b4332009072e01527777" + integrity sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg== dependencies: character-entities "^1.0.0" character-entities-legacy "^1.0.0" @@ -12132,6 +14296,7 @@ parse-entities@^1.0.2, parse-entities@^1.1.0: parse-filepath@^1.0.1, parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= dependencies: is-absolute "^1.0.0" map-cache "^0.2.0" @@ -12140,16 +14305,19 @@ parse-filepath@^1.0.1, parse-filepath@^1.0.2: parse-git-config@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-0.2.0.tgz#272833fdd15fea146fb75d336d236b963b6ff706" + integrity sha1-Jygz/dFf6hRvt10zbSNrljtv9wY= dependencies: ini "^1.3.3" parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= dependencies: glob-base "^0.3.0" is-dotfile "^1.0.0" @@ -12159,6 +14327,7 @@ parse-glob@^3.0.4: parse-headers@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" + integrity sha1-aug6eqJanZtwCswoaYzR8e1+lTY= dependencies: for-each "^0.3.2" trim "0.0.1" @@ -12166,12 +14335,14 @@ parse-headers@^2.0.0: parse-json@^2.1.0, parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -12179,6 +14350,7 @@ parse-json@^4.0.0: parse-latin@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-4.1.1.tgz#3a3edef405b2d5dce417b7157d3d8a5c7cdfab1d" + integrity sha512-9fPVvDdw6G8LxL3o/PL6IzSGNGpF+3HEjCzFe0dN83sZPstftyr+McP9dNi3+EnR7ICYOHbHKCZ0l7JD90K5xQ== dependencies: nlcst-to-string "^2.0.0" unist-util-modify-children "^1.0.0" @@ -12187,14 +14359,17 @@ parse-latin@^4.0.0: parse-numeric-range@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz#b4f09d413c7adbcd987f6e9233c7b4b210c938e4" + integrity sha1-tPCdQTx6282Yf26SM8e0shDJOOQ= parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= parse-url@^1.3.0: version "1.3.11" resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-1.3.11.tgz#57c15428ab8a892b1f43869645c711d0e144b554" + integrity sha1-V8FUKKuKiSsfQ4aWRccR0OFEtVQ= dependencies: is-ssh "^1.3.0" protocols "^1.4.0" @@ -12202,36 +14377,43 @@ parse-url@^1.3.0: parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== -parse5@5.1.0: +parse5@5.1.0, parse5@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== -parse5@^3.0.1, parse5@^3.0.3: +parse5@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== dependencies: "@types/node" "*" parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= dependencies: better-assert "~1.0.0" parseuri@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= dependencies: better-assert "~1.0.0" parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= pascal-case@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4= dependencies: camel-case "^3.0.0" upper-case-first "^1.1.0" @@ -12239,78 +14421,95 @@ pascal-case@^2.0.0: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= passerror@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/passerror/-/passerror-1.1.1.tgz#a25b88dbdd910a29603aec7dcb96e9a7a97687b4" + integrity sha1-oluI292RCilgOux9y5bpp6l2h7Q= path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= path-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU= dependencies: no-case "^2.2.0" path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-platform@~0.11.15: version "0.11.15" resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= path-root@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= dependencies: path-root-regex "^0.1.0" path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path-to-regexp@^1.0.1: version "1.7.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= dependencies: isarray "0.0.1" path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= dependencies: graceful-fs "^4.1.2" pify "^2.0.0" @@ -12319,28 +14518,26 @@ path-type@^1.0.0: path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - -pause-stream@^0.0.11: - version "0.0.11" - resolved "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - dependencies: - through "~2.3" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" + integrity sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -12348,13 +14545,25 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pdf2json@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/pdf2json/-/pdf2json-1.1.7.tgz#a09d705ce64d82cbc7d0473d1424963f751bec32" + integrity sha1-oJ1wXOZNgsvH0Ec9FCSWP3Ub7DI= + dependencies: + async "^2.0.1" + lodash "^4.15.0" + optimist "^0.6.1" + xmldom "^0.1.22" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= perfectionist@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/perfectionist/-/perfectionist-2.4.0.tgz#c147ad3714e126467f1764129ee72df861d47ea0" + integrity sha1-wUetNxThJkZ/F2QSnuct+GHUfqA= dependencies: comment-regex "^1.0.0" defined "^1.0.0" @@ -12370,72 +14579,96 @@ perfectionist@^2.4.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= phin@^2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.2.tgz#0a82d5b6dd75552b665f371f8060689c1af7336e" + integrity sha512-j+UOz1qs+k8NlBRws2IF+Qd+YsVKcqIjvYPBEP9IpmhyvLvyN6GTuqsGbsqH3fIgHufqVqLQSttidIgshkgT7w== physical-cpu-count@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" + integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= + +pidtree@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" + integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg== pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pirates@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd" + integrity sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA== dependencies: node-modules-regexp "^1.0.0" pixelmatch@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" + integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ= dependencies: pngjs "^3.0.0" pkg-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= dependencies: find-up "^1.0.0" pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" -pkg-up@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" +please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" + integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== dependencies: - find-up "^1.0.0" + semver-compare "^1.0.0" plop@^1.8.1: version "1.9.1" resolved "https://registry.yarnpkg.com/plop/-/plop-1.9.1.tgz#fa795c072fde8c5e059ab0c23e0a1b426ab6fed6" + integrity sha512-WNRq2aB0mak0vAvlhgMQHto6OewoYDecHk/V+u9BSlf7Am3EhpvIgqTATtu2pk0elx09ad3YPS9ETJZLe/3lOw== dependencies: chalk "^1.1.3" interpret "^1.0.0" @@ -12447,18 +14680,22 @@ plop@^1.8.1: pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== pngjs@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.3.tgz#85173703bde3edac8998757b96e5821d0966a21b" + integrity sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q== pngquant-bin@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-5.0.0.tgz#91df99c15b0492cb30b001746a10a67d3202509e" + integrity sha512-oJ9Kcmm5oSFkgvYB32bopBN0F6lw0OBnVY36IpkIteBLKt9s8EswiOzAsbSVZ79I8zrvoP/i8IcQPZxsORCOfg== dependencies: bin-build "^3.0.0" bin-wrapper "^3.0.0" @@ -12468,6 +14705,7 @@ pngquant-bin@^5.0.0: portfinder@^1.0.9: version "1.0.17" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" + integrity sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ== dependencies: async "^1.5.2" debug "^2.2.0" @@ -12476,10 +14714,12 @@ portfinder@^1.0.9: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-calc@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-6.0.1.tgz#3d24171bbf6e7629d422a436ebfe6dd9511f4330" + integrity sha1-PSQXG79udinUIqQ26/5t2VEfQzA= dependencies: css-unit-converter "^1.1.1" postcss "^6.0.0" @@ -12489,6 +14729,7 @@ postcss-calc@^6.0.0: postcss-colormin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.1.tgz#6f1c18a0155bc69613f2ff13843e2e4ae8ff0bbe" + integrity sha1-bxwYoBVbxpYT8v8ThD4uSuj/C74= dependencies: browserslist "^4.0.0" color "^3.0.0" @@ -12499,6 +14740,7 @@ postcss-colormin@^4.0.0: postcss-convert-values@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.0.tgz#77d77d9aed1dc4e6956e651cc349d53305876f62" + integrity sha1-d9d9mu0dxOaVbmUcw0nVMwWHb2I= dependencies: postcss "^6.0.0" postcss-value-parser "^3.0.0" @@ -12506,36 +14748,42 @@ postcss-convert-values@^4.0.0: postcss-discard-comments@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.0.tgz#9684a299e76b3e93263ef8fd2adbf1a1c08fd88d" + integrity sha1-loSimedrPpMmPvj9KtvxocCP2I0= dependencies: postcss "^6.0.0" postcss-discard-duplicates@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.0.tgz#42f3c267f85fa909e042c35767ecfd65cb2bd72c" + integrity sha1-QvPCZ/hfqQngQsNXZ+z9Zcsr1yw= dependencies: postcss "^6.0.0" postcss-discard-empty@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.0.tgz#55e18a59c74128e38c7d2804bcfa4056611fb97f" + integrity sha1-VeGKWcdBKOOMfSgEvPpAVmEfuX8= dependencies: postcss "^6.0.0" postcss-discard-overridden@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.0.tgz#4a0bf85978784cf1f81ed2c1c1fd9d964a1da1fa" + integrity sha1-Sgv4WXh4TPH4HtLBwf2dlkodofo= dependencies: postcss "^6.0.0" postcss-flexbugs-fixes@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.1.tgz#0783cc7212850ef707f97f8bc8b6fb624e00c75d" + integrity sha512-9y9kDDf2F9EjKX6x9ueNa5GARvsUbXw4ezH8vXItXHwKzljbu8awP7t5dCaabKYm18Vs1lo5bKQcnc0HkISt+w== dependencies: postcss "^6.0.1" postcss-load-config@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== dependencies: cosmiconfig "^4.0.0" import-cwd "^2.0.0" @@ -12543,6 +14791,7 @@ postcss-load-config@^2.0.0: postcss-loader@^2.1.3: version "2.1.6" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" + integrity sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg== dependencies: loader-utils "^1.1.0" postcss "^6.0.0" @@ -12552,6 +14801,7 @@ postcss-loader@^2.1.3: postcss-loader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== dependencies: loader-utils "^1.1.0" postcss "^7.0.0" @@ -12561,6 +14811,7 @@ postcss-loader@^3.0.0: postcss-merge-longhand@^4.0.0: version "4.0.5" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.5.tgz#00898d72347fc7e40bb564b11bdc08119c599b59" + integrity sha512-tw2obF6I2VhXhPMObQc1QpQO850m3arhqP3PcBAU7Tx70v73QF6brs9uK0XKMNuC7BPo6DW+fh07cGhrLL57HA== dependencies: css-color-names "0.0.4" postcss "^6.0.0" @@ -12570,6 +14821,7 @@ postcss-merge-longhand@^4.0.0: postcss-merge-rules@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.1.tgz#430fd59b3f2ed2e8afcd0b31278eda39854abb10" + integrity sha1-Qw/Vmz8u0uivzQsxJ47aOYVKuxA= dependencies: browserslist "^4.0.0" caniuse-api "^3.0.0" @@ -12581,6 +14833,7 @@ postcss-merge-rules@^4.0.0: postcss-minify-font-values@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.0.tgz#4cc33d283d6a81759036e757ef981d92cbd85bed" + integrity sha1-TMM9KD1qgXWQNudX75gdksvYW+0= dependencies: postcss "^6.0.0" postcss-value-parser "^3.0.0" @@ -12588,6 +14841,7 @@ postcss-minify-font-values@^4.0.0: postcss-minify-gradients@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.0.tgz#3fc3916439d27a9bb8066db7cdad801650eb090e" + integrity sha1-P8ORZDnSepu4Bm23za2AFlDrCQ4= dependencies: cssnano-util-get-arguments "^4.0.0" is-color-stop "^1.0.0" @@ -12597,6 +14851,7 @@ postcss-minify-gradients@^4.0.0: postcss-minify-params@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.0.tgz#05e9166ee48c05af651989ce84d39c1b4d790674" + integrity sha1-BekWbuSMBa9lGYnOhNOcG015BnQ= dependencies: alphanum-sort "^1.0.0" cssnano-util-get-arguments "^4.0.0" @@ -12607,6 +14862,7 @@ postcss-minify-params@^4.0.0: postcss-minify-selectors@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.0.tgz#b1e9f6c463416d3fcdcb26e7b785d95f61578aad" + integrity sha1-sen2xGNBbT/Nyybnt4XZX2FXiq0= dependencies: alphanum-sort "^1.0.0" has "^1.0.0" @@ -12616,18 +14872,21 @@ postcss-minify-selectors@^4.0.0: postcss-modules-extract-imports@1.1.0, postcss-modules-extract-imports@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= dependencies: postcss "^6.0.1" postcss-modules-extract-imports@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" + integrity sha1-ZhQOzs447wa/DT41XWm/WdFB6oU= dependencies: postcss "^6.0.1" postcss-modules-local-by-default@1.2.0, postcss-modules-local-by-default@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" @@ -12635,6 +14894,7 @@ postcss-modules-local-by-default@1.2.0, postcss-modules-local-by-default@^1.2.0: postcss-modules-parser@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/postcss-modules-parser/-/postcss-modules-parser-1.1.1.tgz#95f71ad7916f0f39207bb81c401336c8d245738c" + integrity sha1-lfca15FvDzkge7gcQBM2yNJFc4w= dependencies: icss-replace-symbols "^1.0.2" lodash.foreach "^3.0.3" @@ -12643,6 +14903,7 @@ postcss-modules-parser@^1.1.1: postcss-modules-scope@1.1.0, postcss-modules-scope@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" @@ -12650,6 +14911,7 @@ postcss-modules-scope@1.1.0, postcss-modules-scope@^1.1.0: postcss-modules-values@1.3.0, postcss-modules-values@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= dependencies: icss-replace-symbols "^1.1.0" postcss "^6.0.1" @@ -12657,6 +14919,7 @@ postcss-modules-values@1.3.0, postcss-modules-values@^1.3.0: postcss-modules@^1.1.0: version "1.3.2" resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.3.2.tgz#0a616b84387f1f60dd28a01f597687e85b7b8481" + integrity sha512-QujH5ZpPtr1fBWTKDa43Hx45gm7p19aEtHaAtkMCBZZiB/D5za2wXSMtAf94tDUZHF3F5KZcTXISUNqgEQRiDw== dependencies: css-modules-loader-core "^1.1.0" generic-names "^1.0.3" @@ -12667,12 +14930,14 @@ postcss-modules@^1.1.0: postcss-normalize-charset@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.0.tgz#24527292702d5e8129eafa3d1de49ed51a6ab730" + integrity sha1-JFJyknAtXoEp6vo9HeSe1RpqtzA= dependencies: postcss "^6.0.0" postcss-normalize-display-values@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz#950e0c7be3445770a160fffd6b6644c3c0cd8f89" + integrity sha1-lQ4Me+NEV3ChYP/9a2ZEw8DNj4k= dependencies: cssnano-util-get-match "^4.0.0" postcss "^6.0.0" @@ -12681,6 +14946,7 @@ postcss-normalize-display-values@^4.0.0: postcss-normalize-positions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.0.tgz#ee9343ab981b822c63ab72615ecccd08564445a3" + integrity sha1-7pNDq5gbgixjq3JhXszNCFZERaM= dependencies: cssnano-util-get-arguments "^4.0.0" has "^1.0.0" @@ -12690,6 +14956,7 @@ postcss-normalize-positions@^4.0.0: postcss-normalize-repeat-style@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.0.tgz#b711c592cf16faf9ff575e42fa100b6799083eff" + integrity sha1-txHFks8W+vn/V15C+hALZ5kIPv8= dependencies: cssnano-util-get-arguments "^4.0.0" cssnano-util-get-match "^4.0.0" @@ -12699,6 +14966,7 @@ postcss-normalize-repeat-style@^4.0.0: postcss-normalize-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.0.tgz#718cb6d30a6fac6ac6a830e32c06c07dbc66fe5d" + integrity sha1-cYy20wpvrGrGqDDjLAbAfbxm/l0= dependencies: has "^1.0.0" postcss "^6.0.0" @@ -12707,6 +14975,7 @@ postcss-normalize-string@^4.0.0: postcss-normalize-timing-functions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.0.tgz#0351f29886aa981d43d91b2c2bd1aea6d0af6d23" + integrity sha1-A1HymIaqmB1D2RssK9GuptCvbSM= dependencies: cssnano-util-get-match "^4.0.0" postcss "^6.0.0" @@ -12715,6 +14984,7 @@ postcss-normalize-timing-functions@^4.0.0: postcss-normalize-unicode@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.0.tgz#5acd5d47baea5d17674b2ccc4ae5166fa88cdf97" + integrity sha1-Ws1dR7rqXRdnSyzMSuUWb6iM35c= dependencies: postcss "^6.0.0" postcss-value-parser "^3.0.0" @@ -12722,6 +14992,7 @@ postcss-normalize-unicode@^4.0.0: postcss-normalize-url@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.0.tgz#b7a9c8ad26cf26694c146eb2d68bd0cf49956f0d" + integrity sha1-t6nIrSbPJmlMFG6y1ovQz0mVbw0= dependencies: is-absolute-url "^2.0.0" normalize-url "^3.0.0" @@ -12731,6 +15002,7 @@ postcss-normalize-url@^4.0.0: postcss-normalize-whitespace@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.0.tgz#1da7e76b10ae63c11827fa04fc3bb4a1efe99cc0" + integrity sha1-HafnaxCuY8EYJ/oE/Du0oe/pnMA= dependencies: postcss "^6.0.0" postcss-value-parser "^3.0.0" @@ -12738,6 +15010,7 @@ postcss-normalize-whitespace@^4.0.0: postcss-ordered-values@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.0.tgz#2c769d5d44aa3c7c907b8be2e997ed19dfd8d50a" + integrity sha512-gbqbEiONKKJgoOKhtzBjFqmHSzviPL4rv0ACVcFS7wxWXBY07agFXRQ7Y3eMGV0ZORzQXp2NGnj0c+imJG0NcA== dependencies: cssnano-util-get-arguments "^4.0.0" postcss "^6.0.0" @@ -12746,6 +15019,7 @@ postcss-ordered-values@^4.0.0: postcss-reduce-initial@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.1.tgz#f2d58f50cea2b0c5dc1278d6ea5ed0ff5829c293" + integrity sha1-8tWPUM6isMXcEnjW6l7Q/1gpwpM= dependencies: browserslist "^4.0.0" caniuse-api "^3.0.0" @@ -12755,6 +15029,7 @@ postcss-reduce-initial@^4.0.0: postcss-reduce-transforms@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.0.tgz#f645fc7440c35274f40de8104e14ad7163edf188" + integrity sha1-9kX8dEDDUnT0DegQThStcWPt8Yg= dependencies: cssnano-util-get-match "^4.0.0" has "^1.0.0" @@ -12764,12 +15039,14 @@ postcss-reduce-transforms@^4.0.0: postcss-scss@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.3.1.tgz#65c610d8e2a7ee0e62b1835b71b8870734816e4b" + integrity sha1-ZcYQ2OKn7g5isYNbcbiHBzSBbks= dependencies: postcss "^5.2.4" postcss-selector-parser@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= dependencies: flatten "^1.0.2" indexes-of "^1.0.1" @@ -12778,6 +15055,7 @@ postcss-selector-parser@^2.2.2: postcss-selector-parser@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= dependencies: dot-prop "^4.1.1" indexes-of "^1.0.1" @@ -12786,6 +15064,7 @@ postcss-selector-parser@^3.0.0: postcss-svgo@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.0.tgz#c0bbad02520fc636c9d78b0e8403e2e515c32285" + integrity sha1-wLutAlIPxjbJ14sOhAPi5RXDIoU= dependencies: is-svg "^3.0.0" postcss "^6.0.0" @@ -12795,6 +15074,7 @@ postcss-svgo@^4.0.0: postcss-unique-selectors@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.0.tgz#04c1e9764c75874261303402c41f0e9769fc5501" + integrity sha1-BMHpdkx1h0JhMDQCxB8Ol2n8VQE= dependencies: alphanum-sort "^1.0.0" postcss "^6.0.0" @@ -12803,10 +15083,12 @@ postcss-unique-selectors@^4.0.0: postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= postcss-values-parser@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047" + integrity sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ== dependencies: flatten "^1.0.2" indexes-of "^1.0.1" @@ -12815,6 +15097,7 @@ postcss-values-parser@^1.5.0: postcss@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" + integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= dependencies: chalk "^1.1.3" source-map "^0.5.6" @@ -12823,6 +15106,7 @@ postcss@6.0.1: postcss@^5.0.10, postcss@^5.0.8, postcss@^5.2.4: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== dependencies: chalk "^1.1.3" js-base64 "^2.1.9" @@ -12832,6 +15116,7 @@ postcss@^5.0.10, postcss@^5.0.8, postcss@^5.2.4: postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.22, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== dependencies: chalk "^2.4.1" source-map "^0.6.1" @@ -12840,6 +15125,7 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.22, postcss@^6.0.2 postcss@^7.0.0, postcss@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.2.tgz#7b5a109de356804e27f95a960bef0e4d5bc9bb18" + integrity sha512-fmaUY5370keLUTx+CnwRxtGiuFTcNBLQBqr1oE3WZ/euIYmGAo0OAgOhVJ3ByDnVmOR3PK+0V9VebzfjRIUcqw== dependencies: chalk "^2.4.1" source-map "^0.6.1" @@ -12848,24 +15134,27 @@ postcss@^7.0.0, postcss@^7.0.1: potrace@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/potrace/-/potrace-2.1.1.tgz#79111a858197f366418845f667fe8f7fac0a79db" + integrity sha1-eREahYGX82ZBiEX2Z/6Pf6wKeds= dependencies: jimp "^0.2.24" -prebuild-install@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-4.0.0.tgz#206ce8106ce5efa4b6cf062fc8a0a7d93c17f3a8" +prebuild-install@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.1.tgz#87ba8cf17c65360a75eefeb3519e87973bf9791d" + integrity sha512-9DAccsInWHB48TBQi2eJkLPE049JuAI6FjIH0oIrij4bpDVEbX6JvlWRAcAAlUqBHhjgq0jNqA3m3bBXWm9v6w== dependencies: detect-libc "^1.0.3" expand-template "^1.0.2" github-from-package "0.0.0" minimist "^1.2.0" mkdirp "^0.5.1" + napi-build-utils "^1.0.1" node-abi "^2.2.0" noop-logger "^0.1.1" npmlog "^4.0.1" os-homedir "^1.0.1" pump "^2.0.1" - rc "^1.1.6" + rc "^1.2.7" simple-get "^2.7.0" tar-fs "^1.13.0" tunnel-agent "^0.6.0" @@ -12874,96 +15163,65 @@ prebuild-install@^4.0.0: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= -prettier-eslint-cli@4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.7.1.tgz#3d103c494baa4e80b99ad53e2b9db7620101859f" +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: - arrify "^1.0.1" - babel-runtime "^6.23.0" - boolify "^1.0.0" - camelcase-keys "^4.1.0" - chalk "2.3.0" - common-tags "^1.4.0" - eslint "^4.5.0" - find-up "^2.1.0" - get-stdin "^5.0.1" - glob "^7.1.1" - ignore "^3.2.7" - indent-string "^3.1.0" - lodash.memoize "^4.1.2" - loglevel-colored-level-prefix "^1.0.0" - messageformat "^1.0.2" - prettier-eslint "^8.5.0" - rxjs "^5.3.0" - yargs "10.0.3" + fast-diff "^1.1.2" -prettier-eslint@^8.5.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.8.2.tgz#fcb29a48ab4524e234680797fe70e9d136ccaf0b" - dependencies: - babel-runtime "^6.26.0" - common-tags "^1.4.0" - dlv "^1.1.0" - eslint "^4.0.0" - indent-string "^3.2.0" - lodash.merge "^4.6.0" - loglevel-colored-level-prefix "^1.0.0" - prettier "^1.7.0" - pretty-format "^23.0.1" - require-relative "^0.8.7" - typescript "^2.5.1" - typescript-eslint-parser "^16.0.0" - vue-eslint-parser "^2.0.2" - -prettier@^1.12, prettier@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" +prettier@^1.14.3: + version "1.14.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895" + integrity sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg== pretty-bytes@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= pretty-bytes@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.1.0.tgz#6237ecfbdc6525beaef4de722cc60a58ae0e6c6d" + integrity sha512-wa5+qGVg9Yt7PB6rYm3kXlKzgzgivYTLRandezh43jjRqgyDyP+9YxfJpJiLs9yKD1WeU8/OvtToWpW7255FtA== pretty-error@^2.0.2, pretty-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= dependencies: renderkid "^2.0.1" utila "~0.4" -pretty-format@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" +pretty-format@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" + integrity sha512-iFLvYTXOn+C/s7eV+pr4E8DD7lYa2/klXMEz+lvH14qSDWAJ7S+kFmMe1SIWesATHQxopHTxRcB2nrpExhzaBA== dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^23.0.1: +pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -pretty-format@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -12971,20 +15229,24 @@ pretty-format@^23.5.0: printj@~1.1.0, printj@~1.1.2: version "1.1.2" resolved "http://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== prismjs@^1.14.0, prismjs@^1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.15.0.tgz#8801d332e472091ba8def94976c8877ad60398d9" + integrity sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA== optionalDependencies: clipboard "^2.0.0" private@^0.1.6, private@^0.1.8, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== probe-image-size@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-4.0.0.tgz#d35b71759e834bcf580ea9f18ec8b9265c0977eb" + integrity sha512-nm7RvWUxps+2+jZKNLkd04mNapXNariS6G5WIEVzvAqjx7EUuKcY1Dp3e6oUK7GLwzJ+3gbSbPLFAASHFQrPcQ== dependencies: any-promise "^1.3.0" deepmerge "^2.0.1" @@ -12996,34 +15258,42 @@ probe-image-size@^4.0.0: process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise-retry@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= dependencies: err-code "^1.0.0" retry "^0.10.0" @@ -13031,12 +15301,14 @@ promise-retry@^1.1.1: promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" prompts@^0.1.9: version "0.1.14" resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" + integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== dependencies: kleur "^2.0.1" sisteransi "^0.1.1" @@ -13044,37 +15316,51 @@ prompts@^0.1.9: promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= dependencies: read "1" prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== dependencies: loose-envify "^1.3.1" object-assign "^4.1.1" -property-information@^3.0.0, property-information@^3.1.0: +property-information@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-3.2.0.tgz#fd1483c8fbac61808f5fe359e7693a1f48a58331" + integrity sha1-/RSDyPusYYCPX+NZ52k6H0ilgzE= + +property-information@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e" + integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ== + dependencies: + xtend "^4.0.1" proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= protocols@^1.1.0, protocols@^1.4.0: version "1.4.6" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.6.tgz#f8bb263ea1b5fd7a7604d26b8be39bd77678bf8a" + integrity sha1-+LsmPqG1/Xp2BNJri+Ob13Z4v4o= protoduck@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.0.tgz#752145e6be0ad834cb25716f670a713c860dce70" + integrity sha512-agsGWD8/RZrS4ga6v82Fxb0RHIS2RZnbsSue6A9/MBRhB/jcqOANAMNrqM9900b8duj+Gx+T/JMy5IowDoO/hQ== dependencies: genfun "^4.0.1" proxy-addr@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== dependencies: forwarded "~0.1.2" ipaddr.js "1.8.0" @@ -13082,24 +15368,22 @@ proxy-addr@~2.0.3: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - dependencies: - event-stream "~3.3.0" - -pseudomap@^1.0.2: +pseudomap@^1.0.1, pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== public-encrypt@^4.0.0: version "4.0.2" resolved "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" + integrity sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q== dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" @@ -13110,6 +15394,7 @@ public-encrypt@^4.0.0: public-ip@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/public-ip/-/public-ip-2.4.0.tgz#f00c028a15366d8c798e47efab6acd09a17666da" + integrity sha512-74cIy+T2cDmt+Z71AfVipH2q6qqZITPyNGszKV86OGDYIRvti1m8zg4GOaiTPCLgEIWnToKYXbhEnMiZWHPEUA== dependencies: dns-socket "^1.6.2" got "^8.0.0" @@ -13119,6 +15404,7 @@ public-ip@^2.3.0: pump@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -13126,6 +15412,7 @@ pump@^1.0.0: pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -13133,6 +15420,7 @@ pump@^2.0.0, pump@^2.0.1: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -13140,6 +15428,7 @@ pump@^3.0.0: pumpify@^1.3.3, pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" inherits "^2.0.3" @@ -13148,30 +15437,37 @@ pumpify@^1.3.3, pumpify@^1.3.5: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= punycode@2.x.x, punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= q@^1.1.2, q@^1.4.1, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== qs@^6.4.0, qs@^6.5.1, qs@^6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== dependencies: decode-uri-component "^0.2.0" object-assign "^4.1.0" @@ -13180,6 +15476,7 @@ query-string@^5.0.1: query-string@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.1.0.tgz#01e7d69f6a0940dac67a937d6c6325647aa4532a" + integrity sha512-pNB/Gr8SA8ff8KpUFM36o/WFAlthgaThka5bV19AD9PNTH20Pwq5Zxodif2YyHwrctp6SkL4GqlOot0qR/wGaw== dependencies: decode-uri-component "^0.2.0" strict-uri-encode "^2.0.0" @@ -13187,22 +15484,27 @@ query-string@^6.1.0: querystring-es3@^0.2.0, querystring-es3@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0, querystring@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" + integrity sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw== quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= quote-stream@^1.0.1, quote-stream@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= dependencies: buffer-equal "0.0.1" minimist "^1.1.3" @@ -13211,6 +15513,7 @@ quote-stream@^1.0.1, quote-stream@~1.0.2: randomatic@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" + integrity sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ== dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -13219,12 +15522,14 @@ randomatic@^3.0.0: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -13232,10 +15537,12 @@ randomfill@^1.0.3: range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= dependencies: bytes "3.0.0" http-errors "1.6.2" @@ -13245,6 +15552,7 @@ raw-body@2.3.2: raw-body@^2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== dependencies: bytes "3.0.0" http-errors "1.6.3" @@ -13254,6 +15562,7 @@ raw-body@^2.3.2: raw-body@~1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" + integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= dependencies: bytes "1" string_decoder "0.10" @@ -13261,10 +15570,12 @@ raw-body@~1.1.0: raw-loader@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" ini "~1.3.0" @@ -13274,6 +15585,7 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: react-dev-utils@^4.2.1: version "4.2.2" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.2.tgz#e8f2ffdbf27bfb13ee88ac18e20c83163aac0659" + integrity sha512-HwN0EE+9DS7wB0kKy6Bc5kUTUGUAOyZorJeb+ZGeTrxd1ZNwEJn1TfCRuNpRRa+Iu3VeYBcQ2pjuordJ4eqmfA== dependencies: address "1.0.3" babel-code-frame "6.26.0" @@ -13297,12 +15609,14 @@ react-dev-utils@^4.2.1: "react-docgen-displayname-handler@ ^2.1.0": version "2.1.1" resolved "https://registry.yarnpkg.com/react-docgen-displayname-handler/-/react-docgen-displayname-handler-2.1.1.tgz#a7863a2cc0058ac3c72e6348fa5e40cc4278c5ae" + integrity sha512-Dmu+WnQt5TRDokaQ6uGvgcxrIh92c6uhuljsuueEphTcy/1nKh8/Ep6RUmpd77G1iN2rqg5+4ztGAT7LJjVdpg== dependencies: ast-types "0.11.5" react-docgen@3.0.0-beta12: version "3.0.0-beta12" resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-3.0.0-beta12.tgz#1285839296d6b616715b75c9d57f08d17c500be9" + integrity sha512-8DE3R6mPJSpBS2k6nw4hyZ/E+k60tE/AzLe/ncfyf3AQnd1pojo8cCn2ziXU33Vfny5u7G0pCrL01h9rcX6MTw== dependencies: async "^2.1.4" babel-runtime "^6.9.2" @@ -13315,6 +15629,7 @@ react-docgen@3.0.0-beta12: react-dom@^16.4.1: version "16.5.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.1.tgz#29d0c5a01ed3b6b4c14309aa91af6ec4eb4f292c" + integrity sha512-l4L9GtX7ezgnDIIr6AaNvGBM4BiK0fSs4/V8bdsu9X6xqrtHr+jp6auT0hbHpN7bH9WRvDBZceWQ9WJ3lGCIvQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -13324,32 +15639,39 @@ react-dom@^16.4.1: react-error-overlay@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-3.0.0.tgz#c2bc8f4d91f1375b3dad6d75265d51cd5eeaf655" + integrity sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw== -react-hot-loader@^4.1.0: - version "4.3.7" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.3.7.tgz#39774287057dc15940acac7fc49653d93f44d6ba" +react-hot-loader@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.5.1.tgz#4a9cf136542b1db4f948ac74b31fa16a411ceebb" + integrity sha512-aqw8F0ZTCakfTXTj1n3F9vXfEKWWHEpQ3Mq9YmYvrNdHvey5RfkSGv7rz4r9TXjqVLt2mpItqydJQdhboZ/acQ== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" hoist-non-react-statics "^2.5.0" + loader-utils "^1.1.0" + lodash.merge "^4.6.1" prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" shallowequal "^1.0.2" + source-map "^0.7.3" react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-testing-library@^4.1.7: - version "4.1.9" - resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-4.1.9.tgz#a96fe41fd2a6205d6a2029604f46df18b9cda2d2" +react-testing-library@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-5.2.1.tgz#31f163e900457e5c0dcff7669ae06b502f8a9a7a" + integrity sha512-UNOWuWWFkqKvvIfnVK9JH9hMHk9Xd7G8Bl0F5zdxJJIhdcakKX2I0w+6SSIgI+Ru3UYDDVqgQTW2Zu1fc2PH8w== dependencies: - dom-testing-library "^3.1.0" - wait-for-expect "^1.0.0" + dom-testing-library "^3.9.0" react@^16.4.1: version "16.5.1" resolved "https://registry.yarnpkg.com/react/-/react-16.5.1.tgz#8cb8e9f8cdcb4bde41c9a138bfbf907e66132372" + integrity sha512-E+23+rbpPsJgSX812LQkwupUCFnbVE84+L8uxlkqN5MU0DcraWMlVf9cRvKCKtGu0XvScyRnW7Z+9d7ymkjy3A== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -13359,6 +15681,7 @@ react@^16.4.1: read-all-stream@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + integrity sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po= dependencies: pinkie-promise "^2.0.0" readable-stream "^2.0.0" @@ -13366,22 +15689,34 @@ read-all-stream@^3.0.0: read-chunk@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194" + integrity sha1-X2jKswfmY/GZk1J9m1icrORmEZQ= + +read-chunk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.0.0.tgz#086cd198406104355626afacd2d21084afc367ec" + integrity sha512-8lBUVPjj9TC5bKLBacB+rpexM03+LWiYbv6ma3BeWmUYXGxqA1WNNgIZHq/iIsCrbFMzPhFbkOqdsyOFRnuoXg== + dependencies: + pify "^4.0.0" + with-open-file "^0.1.3" read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= dependencies: graceful-fs "^4.1.2" read-file-stdin@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" + integrity sha1-JezP86FTtoCa+ssj7hU4fbng7mE= dependencies: gather-stream "^1.0.0" "read-package-json@1 || 2", read-package-json@^2.0.0: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" + integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" @@ -13393,6 +15728,7 @@ read-file-stdin@^0.2.0: read-package-tree@^5.1.6: version "5.2.1" resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.1.tgz#6218b187d6fac82289ce4387bbbaf8eef536ad63" + integrity sha512-2CNoRoh95LxY47LvqrehIAfUVda2JbuFE/HaGYs42bNrGG+ojbw1h3zOcPcQ+1GQ3+rkzNndZn85u1XyZ3UsIA== dependencies: debuglog "^1.0.1" dezalgo "^1.0.0" @@ -13403,6 +15739,7 @@ read-package-tree@^5.1.6: read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= dependencies: find-up "^1.0.0" read-pkg "^1.0.0" @@ -13410,6 +15747,7 @@ read-pkg-up@^1.0.1: read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= dependencies: find-up "^2.0.0" read-pkg "^2.0.0" @@ -13417,6 +15755,7 @@ read-pkg-up@^2.0.0: read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: find-up "^2.0.0" read-pkg "^3.0.0" @@ -13424,6 +15763,7 @@ read-pkg-up@^3.0.0: read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: find-up "^3.0.0" read-pkg "^3.0.0" @@ -13431,6 +15771,7 @@ read-pkg-up@^4.0.0: read-pkg@^1.0.0, read-pkg@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" @@ -13439,6 +15780,7 @@ read-pkg@^1.0.0, read-pkg@^1.1.0: read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -13447,20 +15789,32 @@ read-pkg@^2.0.0: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + dependencies: + normalize-package-data "^2.3.2" + parse-json "^4.0.0" + pify "^3.0.0" + read@1, read@^1.0.7, read@~1.0.1: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= dependencies: mute-stream "~0.0.4" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.3: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -13473,6 +15827,7 @@ read@1, read@^1.0.7, read@~1.0.1: readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.31: version "1.0.34" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -13482,6 +15837,7 @@ readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0 readable-stream@2.2.7: version "2.2.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" + integrity sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE= dependencies: buffer-shims "~1.0.0" core-util-is "~1.0.0" @@ -13494,6 +15850,7 @@ readable-stream@2.2.7: readable-stream@~1.1.9: version "1.1.14" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -13503,6 +15860,7 @@ readable-stream@~1.1.9: readable-stream@~2.0.0: version "2.0.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -13514,6 +15872,7 @@ readable-stream@~2.0.0: readable-stream@~2.1.0: version "2.1.5" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA= dependencies: buffer-shims "^1.0.0" core-util-is "~1.0.0" @@ -13526,6 +15885,7 @@ readable-stream@~2.1.0: readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" + integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c= dependencies: debuglog "^1.0.1" dezalgo "^1.0.0" @@ -13535,6 +15895,7 @@ readdir-scoped-modules@^1.0.0: readdirp@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" micromatch "^3.1.10" @@ -13543,12 +15904,14 @@ readdirp@^2.0.0: realpath-native@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" + integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== dependencies: util.promisify "^1.0.0" recast@^0.13.0: version "0.13.2" resolved "http://registry.npmjs.org/recast/-/recast-0.13.2.tgz#919e7e856d5154f13284142ed1797753c6756137" + integrity sha512-Xqo0mKljGUWGUhnkdbODk7oJGFrMcpgKQ9cCyZ4y+G9VfoTKdum8nHbf/SxIdKx5aBSZ29VpVy20bTyt7jyC8w== dependencies: ast-types "0.10.2" esprima "~4.0.0" @@ -13558,6 +15921,7 @@ recast@^0.13.0: recast@^0.15.0: version "0.15.5" resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.5.tgz#6871177ee26720be80d7624e4283d5c855a5cb0b" + integrity sha512-nkAYNqarh73cMWRKFiPQ8I9dOLFvFk6SnG8u/LUlOYfArDOD/EjsVRAs860TlBLrpxqAXHGET/AUAVjdEymL5w== dependencies: ast-types "0.11.5" esprima "~4.0.0" @@ -13567,24 +15931,28 @@ recast@^0.15.0: rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: resolve "^1.1.6" recursive-readdir-synchronous@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/recursive-readdir-synchronous/-/recursive-readdir-synchronous-0.0.3.tgz#d5e5a096ad56cf9666241c22a30b4f338bb7ed88" + integrity sha1-1eWglq1Wz5ZmJBwiowtPM4u37Yg= dependencies: minimatch "0.3.0" recursive-readdir@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" + integrity sha1-kO8jHQd4xc4JPJpI105cVCLROpk= dependencies: minimatch "3.0.3" redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= dependencies: indent-string "^2.1.0" strip-indent "^1.0.1" @@ -13592,6 +15960,7 @@ redent@^1.0.0: redent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= dependencies: indent-string "^3.0.0" strip-indent "^2.0.0" @@ -13599,6 +15968,7 @@ redent@^2.0.0: reduce-css-calc@^2.0.0: version "2.1.4" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.4.tgz#c20e9cda8445ad73d4ff4bea960c6f8353791708" + integrity sha512-i/vWQbyd3aJRmip9OVSN9V6nIjLf/gg/ctxb0CpvHWtcRysFl/ngDBQD+rqavxdw/doScA3GMBXhzkHQ4GCzFQ== dependencies: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" @@ -13606,47 +15976,54 @@ reduce-css-calc@^2.0.0: reduce@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/reduce/-/reduce-1.0.1.tgz#14fa2e5ff1fc560703a020cbb5fbaab691565804" + integrity sha1-FPouX/H8VgcDoCDLtfuqtpFWWAQ= dependencies: object-keys "~1.0.0" -redux@^3.6.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" +redux@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" + loose-envify "^1.4.0" + symbol-observable "^1.2.0" reflect-metadata@^0.1.2: version "0.1.12" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" + integrity sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A== regenerate-unicode-properties@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== dependencies: regenerate "^1.4.0" regenerate@^1.2.1, regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.12.0: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== dependencies: babel-runtime "^6.18.0" babel-types "^6.19.0" @@ -13655,18 +16032,21 @@ regenerator-transform@^0.10.0: regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== dependencies: private "^0.1.6" regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: is-equal-shallow "^0.1.3" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -13674,10 +16054,17 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexpp@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== + +regexpp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365" + integrity sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA== regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -13686,6 +16073,7 @@ regexpu-core@^1.0.0: regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -13694,6 +16082,7 @@ regexpu-core@^2.0.0: regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^7.0.0" @@ -13705,6 +16094,7 @@ regexpu-core@^4.1.3, regexpu-core@^4.2.0: registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" safe-buffer "^5.0.1" @@ -13712,36 +16102,43 @@ registry-auth-token@^3.0.1: registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= dependencies: rc "^1.0.1" regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= regjsgen@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= dependencies: jsesc "~0.5.0" regjsparser@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== dependencies: jsesc "~0.5.0" relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= relay-compiler@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-1.5.0.tgz#564f1582c549fa6b4af9d9f09dadb5e239c11055" + integrity sha512-nB3HbGXy4UtdQRGVeBlzNbUSN0maETdB/dAggdxN2+mdg4tGqj04zdrcxrnXUpnobab8tXKZlyaRnKKEHvcTTA== dependencies: babel-generator "^6.26.0" babel-polyfill "^6.20.0" @@ -13763,6 +16160,7 @@ relay-compiler@1.5.0: relay-runtime@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-1.5.0.tgz#95e7c26f95f216370f7d699290238a4d966a915c" + integrity sha512-XWV9xsjIKPPSPAfpVSaiXXZkefIMpBlj2x1MAsZgQ9v2aLVIewB4f8gTHMl1tBfrC9zSREaMhbemz9Inlwnkyg== dependencies: babel-runtime "^6.23.0" fbjs "^0.8.14" @@ -13770,12 +16168,14 @@ relay-runtime@1.5.0: remark-custom-blocks@^2.1.2: version "2.2.3" resolved "https://registry.yarnpkg.com/remark-custom-blocks/-/remark-custom-blocks-2.2.3.tgz#ee995ef0c57c90dd88043af124396f5255b6bc10" + integrity sha512-ChXdLxczCpCosjmZbUgGMMUihqFTRVVyQhqts2SQaL7bxX/hWCbAwThLcnzukY1f1yIkcuI1xua1pfqxCMxLzQ== dependencies: space-separated-tokens "^1.1.1" remark-html@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-7.0.0.tgz#d13dc1ba9352e257fce8800c42c7690d9e3690c8" + integrity sha512-jqRzkZXCkM12gIY2ibMLTW41m7rfanliMTVQCFTezHJFsbH00YaTox/BX4gU+f/zCdzfhFJONtebFByvpMv37w== dependencies: hast-util-sanitize "^1.0.0" hast-util-to-html "^3.0.0" @@ -13785,12 +16185,14 @@ remark-html@7.0.0: remark-math@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/remark-math/-/remark-math-1.0.4.tgz#ced46473075ff99e4678a154a1a3d0dde403a9f2" + integrity sha512-aVyne6nKnlZPmCg+dmalKcUS1y+s3diWhKduV7l7sPqSeGHsncJatu/1P1U73zsNNjQZFyEJ2T4ArpjqOaEpFw== dependencies: trim-trailing-lines "^1.1.0" remark-parse@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-1.1.0.tgz#c3ca10f9a8da04615c28f09aa4e304510526ec21" + integrity sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE= dependencies: collapse-white-space "^1.0.0" extend "^3.0.0" @@ -13805,6 +16207,7 @@ remark-parse@^1.1.0: remark-parse@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" + integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== dependencies: collapse-white-space "^1.0.2" is-alphabetical "^1.0.0" @@ -13825,18 +16228,21 @@ remark-parse@^5.0.0: remark-reference-links@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/remark-reference-links/-/remark-reference-links-4.0.2.tgz#817c63486901bd4f5f8a0cf48a695f5ecd2c966d" + integrity sha512-871gKTysBtdQUjoqXA0URWmVhI2jFrpLkWrM3/bydAbsngilDYRjjl2LDAgmNooW8bYbHa57YQ13ld+mYr3TLg== dependencies: unist-util-visit "^1.0.0" remark-retext@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/remark-retext/-/remark-retext-3.1.1.tgz#38eb1ba8ac7c03846eecd534b414355676815927" + integrity sha512-6njJXkOTfQhyDYABvi4iEB81x8E6EL5cnLPtfpYrunSLQM2s1j51hma29dVkMzk9FuHqy65Zb1Tgb34UAzw+TQ== dependencies: mdast-util-to-nlcst "^3.2.0" remark-slug@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-5.1.0.tgz#e55cd92d53395665e26b2994441394127d860abf" + integrity sha512-FW/V7b3ekfDL1eyPDyzfq0qz5HFPKPNWVC2eqFDie45r774FLGoymOS1oU7LVQfdFNEvNLZ6oBJT/oIxAyBISg== dependencies: github-slugger "^1.0.0" mdast-util-to-string "^1.0.0" @@ -13845,6 +16251,7 @@ remark-slug@^5.0.0: remark-stringify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-1.1.0.tgz#a7105e25b9ee2bf9a49b75d2c423f11b06ae2092" + integrity sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI= dependencies: ccount "^1.0.0" extend "^3.0.0" @@ -13858,6 +16265,7 @@ remark-stringify@^1.1.0: remark-stringify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-5.0.0.tgz#336d3a4d4a6a3390d933eeba62e8de4bd280afba" + integrity sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w== dependencies: ccount "^1.0.0" is-alphanumeric "^1.0.0" @@ -13877,6 +16285,7 @@ remark-stringify@^5.0.0: remark-toc@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-toc/-/remark-toc-5.0.0.tgz#f1e13ed11062ad4d102b02e70168bd85015bf129" + integrity sha512-j2A/fpio1nzNRJtY6nVaFUCtXNfFPxaj6I5UHFsFgo4xKmc0VokRRIzGqz4Vfs7u+dPrHjnoHkImu1Dia0jDSQ== dependencies: mdast-util-toc "^2.0.0" remark-slug "^5.0.0" @@ -13884,6 +16293,7 @@ remark-toc@^5.0.0: remark@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/remark/-/remark-5.1.0.tgz#cb463bd3dbcb4b99794935eee1cf71d7a8e3068c" + integrity sha1-y0Y709vLS5l5STXu4c9x16jjBow= dependencies: remark-parse "^1.1.0" remark-stringify "^1.1.0" @@ -13892,6 +16302,7 @@ remark@^5.0.1: remark@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/remark/-/remark-9.0.0.tgz#c5cfa8ec535c73a67c4b0f12bfdbd3a67d8b2f60" + integrity sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A== dependencies: remark-parse "^5.0.0" remark-stringify "^5.0.0" @@ -13900,12 +16311,14 @@ remark@^9.0.0: remote-origin-url@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/remote-origin-url/-/remote-origin-url-0.4.0.tgz#4d3e2902f34e2d37d1c263d87710b77eb4086a30" + integrity sha1-TT4pAvNOLTfRwmPYdxC3frQIajA= dependencies: parse-git-config "^0.2.0" remove-bom-buffer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== dependencies: is-buffer "^1.1.5" is-utf8 "^0.2.1" @@ -13913,6 +16326,7 @@ remove-bom-buffer@^3.0.0: remove-bom-stream@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= dependencies: remove-bom-buffer "^3.0.0" safe-buffer "^5.1.0" @@ -13921,10 +16335,12 @@ remove-bom-stream@^1.2.0: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= renderkid@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + integrity sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk= dependencies: css-select "^1.1.0" dom-converter "~0.1" @@ -13935,34 +16351,41 @@ renderkid@^2.0.1: repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.5.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= replace-ext@1.0.0, replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= request-promise-core@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= dependencies: lodash "^4.13.1" request-promise-native@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= dependencies: request-promise-core "1.1.1" stealthy-require "^1.1.0" @@ -13971,6 +16394,7 @@ request-promise-native@^1.0.5: request@^2.65.0, request@^2.83.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -13996,26 +16420,27 @@ request@^2.65.0, request@^2.83.0, request@^2.85.0, request@^2.87.0, request@^2.8 require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-from-string@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= require-package-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" - -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" @@ -14023,6 +16448,7 @@ require-uncached@^1.0.3: require_optional@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== dependencies: resolve-from "^2.0.0" semver "^5.1.0" @@ -14030,20 +16456,19 @@ require_optional@~1.0.0: requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -reserved-words@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.0.0" resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= dependencies: expand-tilde "^2.0.0" global-modules "^1.0.0" @@ -14051,48 +16476,66 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-options@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= dependencies: value-or-function "^3.0.0" resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.1.3, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" responselike@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: lowercase-keys "^1.0.0" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -14100,16 +16543,19 @@ restore-cursor@^2.0.0: restructure@^0.5.3: version "0.5.4" resolved "https://registry.yarnpkg.com/restructure/-/restructure-0.5.4.tgz#f54e7dd563590fb34fd6bf55876109aeccb28de8" + integrity sha1-9U591WNZD7NP1r9Vh2EJrsyyjeg= dependencies: browserify-optional "^1.0.0" ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retext-english@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/retext-english/-/retext-english-3.0.0.tgz#c17cb56bd5f1ba3dee3355ddbab79f1c4894a809" + integrity sha1-wXy1a9Xxuj3uM1XdurefHEiUqAk= dependencies: parse-english "^4.0.0" unherit "^1.0.4" @@ -14117,6 +16563,7 @@ retext-english@^3.0.0: retext-latin@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/retext-latin/-/retext-latin-2.0.0.tgz#b11bd6cae9113fa6293022a4527cd707221ac4b6" + integrity sha1-sRvWyukRP6YpMCKkUnzXByIaxLY= dependencies: parse-latin "^4.0.0" unherit "^1.0.4" @@ -14124,6 +16571,7 @@ retext-latin@^2.0.0: retext-smartypants@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/retext-smartypants/-/retext-smartypants-3.0.1.tgz#53d718fde7178a9bc09f120159b0d76cc537fb6c" + integrity sha512-cwE0L/C13dw/DVi4Iao3FIdZEDm0reOKmXQUqNreAq5DPcqmO8SiaAvHaO7d6WzNLhRMhFu/R89IDQzJePn0ng== dependencies: nlcst-to-string "^2.0.0" unist-util-visit "^1.0.0" @@ -14131,12 +16579,14 @@ retext-smartypants@^3.0.0: retext-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/retext-stringify/-/retext-stringify-2.0.0.tgz#00238facc5491f5bcdc589703a4658db2e54415b" + integrity sha1-ACOPrMVJH1vNxYlwOkZY2y5UQVs= dependencies: nlcst-to-string "^2.0.0" retext@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/retext/-/retext-5.0.0.tgz#5d9018c4a677d6103c142362d76f50eb1d398bf6" + integrity sha1-XZAYxKZ31hA8FCNi129Q6x05i/Y= dependencies: retext-latin "^2.0.0" retext-stringify "^2.0.0" @@ -14145,42 +16595,46 @@ retext@^5.0.0: retry-axios@0.3.2, retry-axios@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-0.3.2.tgz#5757c80f585b4cc4c4986aa2ffd47a60c6d35e13" + integrity sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ== retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= rgba-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - -ric@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ric/-/ric-1.3.0.tgz#8e95042609ce8213548a83164d08e94fae94909f" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= dependencies: align-text "^0.1.1" rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.0, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" rimraf@~2.2.6: version "2.2.8" resolved "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" @@ -14188,10 +16642,12 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rollup-plugin-hypothetical@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/rollup-plugin-hypothetical/-/rollup-plugin-hypothetical-2.1.0.tgz#7fec9a865ed7d0eac14ca6ee2b2c4088acdb1955" + integrity sha512-MlxPQTkMtiRUtyhIJ7FpBvTzWtar8eFBA+V7/J6Deg9fSgIIHwL6bJKK1Wl1uWSWtOrWhOmtsMwb9F6aagP/Pg== rollup-plugin-typescript@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/rollup-plugin-typescript/-/rollup-plugin-typescript-0.8.1.tgz#2ff7eecc21cf6bb2b43fc27e5b688952ce71924a" + integrity sha1-L/fuzCHPa7K0P8J+W2iJUs5xkko= dependencies: compare-versions "2.0.1" object-assign "^4.0.1" @@ -14202,6 +16658,7 @@ rollup-plugin-typescript@^0.8.1: rollup-pluginutils@^1.3.1: version "1.5.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg= dependencies: estree-walker "^0.2.1" minimatch "^3.0.2" @@ -14209,6 +16666,7 @@ rollup-pluginutils@^1.3.1: rollup@^0.59.4: version "0.59.4" resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.59.4.tgz#6f80f7017c22667ff1bf3e62adf8624a44cc44aa" + integrity sha512-ISiMqq/aJa+57QxX2MRcvLESHdJ7wSavmr6U1euMr+6UgFe6KM+3QANrYy8LQofwhTC1I7BcAdlLnDiaODs1BA== dependencies: "@types/estree" "0.0.39" "@types/node" "*" @@ -14216,6 +16674,7 @@ rollup@^0.59.4: rss@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/rss/-/rss-1.2.2.tgz#50a1698876138133a74f9a05d2bdc8db8d27a921" + integrity sha1-UKFpiHYTgTOnT5oF0r3I240nqSE= dependencies: mime-types "2.1.13" xml "1.0.1" @@ -14223,66 +16682,84 @@ rss@^1.2.2: rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" +run-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" rx-lite-aggregates@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= dependencies: rx-lite "*" rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= -rxjs@^5.3.0, rxjs@^5.5.6: +rxjs@^5.5.6: version "5.5.12" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== dependencies: symbol-observable "1.0.1" rxjs@^6.1.0: version "6.3.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" + integrity sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw== dependencies: tslib "^1.9.0" safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" + integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^2.0.0: version "2.5.2" resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= dependencies: anymatch "^2.0.0" capture-exit "^1.2.0" @@ -14298,6 +16775,7 @@ sane@^2.0.0: sanitize-html@^1.18.2: version "1.19.0" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.19.0.tgz#34d8a4b864aba79602e4a32003f293fc242df0a9" + integrity sha512-Qt2imq49f2qP4537a7R2Xgx9sjTvw18jIT7zKurhu5kpYNQfMo8EZaW3OcpoXCvg3GTN4C4R3mN8ao7STUtKtA== dependencies: chalk "^2.3.0" htmlparser2 "^3.9.0" @@ -14313,6 +16791,7 @@ sanitize-html@^1.18.2: sass-loader@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== dependencies: clone-deep "^2.0.1" loader-utils "^1.0.1" @@ -14324,20 +16803,24 @@ sass-loader@^7.0.1: sax@0.5.x: version "0.5.8" resolved "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== schedule@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.4.0.tgz#fa20cfd0bfbf91c47d02272fd7096780d3170bbb" + integrity sha512-hYjmoaEMojiMkWCxKr6ue+LYcZ29u29+AamWYmzwT2VOO9ws5UJp/wNhsVUPiUeNh+EdRfZm7nDeB40ffTfMhA== dependencies: object-assign "^4.1.1" schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== dependencies: ajv "^6.1.0" ajv-keywords "^3.1.0" @@ -14345,6 +16828,7 @@ schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5: schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" ajv-errors "^1.0.0" @@ -14353,12 +16837,14 @@ schema-utils@^1.0.0: schemes@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/schemes/-/schemes-1.1.1.tgz#41ac81335e426b429848262239334fa8b5c4ed57" + integrity sha1-QayBM15Ca0KYSCYiOTNPqLXE7Vc= dependencies: extend "^3.0.0" scroll-behavior@^0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz#ebfe0658455b82ad885b66195215416674dacce2" + integrity sha1-6/4GWEVbgq2IW2YZUhVBZnTazOI= dependencies: dom-helpers "^3.2.1" invariant "^2.2.2" @@ -14366,6 +16852,7 @@ scroll-behavior@^0.9.9: section-matter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== dependencies: extend-shallow "^2.0.1" kind-of "^6.0.0" @@ -14373,58 +16860,75 @@ section-matter@^1.0.0: seek-bzip@^1.0.3, seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= dependencies: commander "~2.8.1" select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= selfsigned@^1.9.1: version "1.10.3" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" + integrity sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q== dependencies: node-forge "0.7.5" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= dependencies: semver "^5.0.3" semver-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" + integrity sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk= semver-truncate@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g= dependencies: semver "^5.3.0" "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== semver@^4.0.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto= + +semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== dependencies: debug "2.6.9" depd "~1.1.2" @@ -14443,6 +16947,7 @@ send@0.16.2: sentence-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ= dependencies: no-case "^2.2.0" upper-case-first "^1.1.2" @@ -14450,10 +16955,12 @@ sentence-case@^2.1.0: serialize-javascript@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== serve-index@^1.7.2: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= dependencies: accepts "~1.3.4" batch "0.6.1" @@ -14466,6 +16973,7 @@ serve-index@^1.7.2: serve-static@1.13.2: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -14475,18 +16983,22 @@ serve-static@1.13.2: serviceworker-cache-polyfill@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz#de19ee73bef21ab3c0740a37b33db62464babdeb" + integrity sha1-3hnuc77yGrPAdAo3sz22JGS6ves= set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-immediate-shim@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -14496,6 +17008,7 @@ set-value@^0.4.3: set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -14505,18 +17018,22 @@ set-value@^2.0.0: setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -14524,6 +17041,7 @@ sha.js@^2.4.0, sha.js@^2.4.8: shallow-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== dependencies: is-extendable "^0.1.1" kind-of "^5.0.0" @@ -14532,43 +17050,50 @@ shallow-clone@^1.0.0: shallow-compare@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/shallow-compare/-/shallow-compare-1.2.2.tgz#fa4794627bf455a47c4f56881d8a6132d581ffdb" + integrity sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg== shallow-copy@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= shallowequal@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -sharp@^0.20.2: - version "0.20.8" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.20.8.tgz#e853f10b53b730824f0c3c5e453c79fa0812a48b" +sharp@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.21.0.tgz#e3cf2e4cb9382caf78efb3d45252381730e899c4" + integrity sha512-qr6yMl0ju8EGMtjIj5U1Ojj8sKuZ99/DQaNKWmoFHxqg3692AFSrEiPI/yr0O05OWtGD8LuCw8WSGmnZcNrZaA== dependencies: color "^3.0.0" detect-libc "^1.0.3" fs-copy-file-sync "^1.1.1" - nan "^2.11.0" + nan "^2.11.1" npmlog "^4.1.2" - prebuild-install "^4.0.0" + prebuild-install "^5.2.0" semver "^5.5.1" - simple-get "^2.8.1" + simple-get "^3.0.3" tar "^4.4.6" tunnel-agent "^0.6.0" shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shell-quote@1.6.1, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= dependencies: array-filter "~0.0.0" array-map "~0.0.0" @@ -14578,52 +17103,79 @@ shell-quote@1.6.1, shell-quote@^1.6.1: shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== sift@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/sift/-/sift-5.1.0.tgz#1bbf2dfb0eb71e56c4cc7fb567fbd1351b65015e" + integrity sha1-G78t+w63HlbEzH+1Z/vRNRtlAV4= sift@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/sift/-/sift-6.0.0.tgz#f93a778e5cbf05a5024ebc391e6b32511a6d1f82" + integrity sha1-+Tp3jly/BaUCTrw5HmsyURptH4I= sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= signedsource@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= -simple-get@^2.7.0, simple-get@^2.8.1: +simple-get@^2.7.0: version "2.8.1" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== dependencies: decompress-response "^3.3.0" once "^1.3.1" simple-concat "^1.0.0" +simple-get@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.0.3.tgz#924528ac3f9d7718ce5e9ec1b1a69c0be4d62efa" + integrity sha512-Wvre/Jq5vgoz31Z9stYWPLn0PqRqmBDpFSdypAnHu5AvRVCYPRYGnvryNLiXu8GOBNDH82J2FRHUGMjjHUpXFw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-git@^1.85.0: + version "1.107.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.107.0.tgz#12cffaf261c14d6f450f7fdb86c21ccee968b383" + integrity sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA== + dependencies: + debug "^4.0.1" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= dependencies: is-arrayish "^0.3.1" sisteransi@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== sitemap@^1.12.0: version "1.13.0" resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-1.13.0.tgz#569cbe2180202926a62a266cd3de09c9ceb43f83" + integrity sha1-Vpy+IYAgKSamKiZs094Jyc60P4M= dependencies: underscore "^1.7.0" url-join "^1.1.0" @@ -14631,34 +17183,46 @@ sitemap@^1.12.0: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== dependencies: is-fullwidth-code-point "^2.0.0" slide@^1.1.5, slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= smart-buffer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" + integrity sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg== snake-case@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= dependencies: no-case "^2.2.0" snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -14667,12 +17231,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" @@ -14686,10 +17252,12 @@ snapdragon@^0.8.1: socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" @@ -14709,6 +17277,7 @@ socket.io-client@2.1.1: socket.io-parser@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" @@ -14717,6 +17286,7 @@ socket.io-parser@~3.2.0: socket.io@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: debug "~3.1.0" engine.io "~3.2.0" @@ -14728,6 +17298,7 @@ socket.io@^2.0.3: socketerrors@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/socketerrors/-/socketerrors-0.3.0.tgz#34bd74dce32786e235e1629bee12a8a3db1e2bda" + integrity sha1-NL103OMnhuI14WKb7hKoo9seK9o= dependencies: createerror "1.1.0" httperrors "2.0.1" @@ -14735,6 +17306,7 @@ socketerrors@^0.3.0: sockjs-client@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + integrity sha1-W6vjhrd15M8U51IJEUUmVAFsixI= dependencies: debug "^2.6.6" eventsource "0.1.6" @@ -14746,6 +17318,7 @@ sockjs-client@1.1.4: sockjs-client@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" + integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= dependencies: debug "^2.6.6" eventsource "0.1.6" @@ -14757,6 +17330,7 @@ sockjs-client@1.1.5: sockjs@0.3.19: version "0.3.19" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== dependencies: faye-websocket "^0.10.0" uuid "^3.0.1" @@ -14764,6 +17338,7 @@ sockjs@0.3.19: socks-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" + integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== dependencies: agent-base "~4.2.0" socks "~2.2.0" @@ -14771,6 +17346,7 @@ socks-proxy-agent@^4.0.0: socks@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" + integrity sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w== dependencies: ip "^1.1.5" smart-buffer "^4.0.1" @@ -14778,28 +17354,33 @@ socks@~2.2.0: sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= dependencies: sort-keys "^1.0.0" sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= dependencies: is-plain-obj "^1.0.0" sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= dependencies: is-plain-obj "^1.0.0" source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== -source-map-resolve@^0.5.0: +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: atob "^2.1.1" decode-uri-component "^0.2.0" @@ -14810,12 +17391,14 @@ source-map-resolve@^0.5.0: source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== dependencies: source-map "^0.5.6" source-map-support@^0.5.0, source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -14823,51 +17406,53 @@ source-map-support@^0.5.0, source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.1.x, source-map@~0.1.30: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= dependencies: amdefine ">=0.0.4" source-map@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= dependencies: amdefine ">=0.0.4" source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== space-separated-tokens@^1.0.0, space-separated-tokens@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz#e95ab9d19ae841e200808cd96bc7bd0adbbb3412" + integrity sha512-G3jprCEw+xFEs0ORweLmblJ3XLymGGr6hxZYTYZjIlvDti9vOBUjRQa1Rzjt012aRrocKstHwdNi+F7HguPsEA== dependencies: trim "0.0.1" sparkles@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - -spawn-wrap@^1.2.4: - version "1.4.2" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" - dependencies: - foreground-child "^1.5.6" - mkdirp "^0.5.0" - os-homedir "^1.0.1" - rimraf "^2.6.2" - signal-exit "^3.0.2" - which "^1.3.0" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== spdx-correct@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -14875,10 +17460,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" @@ -14886,10 +17473,12 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" + integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== spdy-transport@^2.0.18: version "2.1.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + integrity sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g== dependencies: debug "^2.6.8" detect-node "^2.0.3" @@ -14902,6 +17491,7 @@ spdy-transport@^2.0.18: spdy@^3.4.1: version "3.4.7" resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= dependencies: debug "^2.6.8" handle-thing "^1.2.5" @@ -14913,36 +17503,43 @@ spdy@^3.4.1: specificity@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split2@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== dependencies: through2 "^2.0.2" -split@^1.0.0, split@^1.0.1: +split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + integrity sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw= sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sqip@^0.3.0: version "0.3.3" resolved "https://registry.yarnpkg.com/sqip/-/sqip-0.3.3.tgz#920bbd38428db1fb267072a2c7c885c8c36d0e15" + integrity sha512-2sP0y3S1NPM+PEx85YopfSeby2LsX344LBGL8WN06X5H59ELg7HKZaH2K/A+l4qqTUDQmGeaXVvsmG3bth7dow== dependencies: argv "0.0.2" image-size "^0.6.1" @@ -14952,6 +17549,7 @@ sqip@^0.3.0: squeak@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM= dependencies: chalk "^1.0.0" console-stream "^0.1.1" @@ -14960,6 +17558,7 @@ squeak@^1.0.0: srcset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" + integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= dependencies: array-uniq "^1.0.2" number-is-nan "^1.0.0" @@ -14967,12 +17566,14 @@ srcset@^1.0.0: ssf@~0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.10.2.tgz#65b2b4fcdfd967bc8e8383a41349009893115976" + integrity sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ== dependencies: frac "~1.1.2" sshpk@^1.7.0: version "1.14.2" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" + integrity sha1-xvxhZIo9nE52T9P8306hBeSSupg= dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -14988,48 +17589,63 @@ sshpk@^1.7.0: ssri@^5.2.4: version "5.3.0" resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== dependencies: safe-buffer "^5.1.1" ssri@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" stable@~0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-trace@^0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= stackframe@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" + integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== + +staged-git-files@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" + integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== stat-mode@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" + integrity sha1-5sgLYjEj19gM8TLOU480YokHJQI= state-toggle@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a" + integrity sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og== static-eval@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.0.tgz#0e821f8926847def7b4b50cda5d55c04a9b13864" + integrity sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw== dependencies: escodegen "^1.8.1" static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -15037,6 +17653,7 @@ static-extend@^0.1.1: static-module@^2.2.0: version "2.2.5" resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" + integrity sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ== dependencies: concat-stream "~1.6.0" convert-source-map "^1.5.1" @@ -15056,24 +17673,29 @@ static-module@^2.2.0: "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-array@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/stream-array/-/stream-array-1.1.2.tgz#9e5f7345f2137c30ee3b498b9114e80b52bb7eb5" + integrity sha1-nl9zRfITfDDuO0mLkRToC1K7frU= dependencies: readable-stream "~2.1.0" stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= dependencies: inherits "~2.0.1" readable-stream "^2.0.2" @@ -15081,20 +17703,15 @@ stream-browserify@^2.0.1: stream-combiner2@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= dependencies: duplexer2 "~0.1.0" readable-stream "^2.0.2" -stream-combiner@^0.2.2: - version "0.2.2" - resolved "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -15102,6 +17719,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -15112,38 +17730,51 @@ stream-http@^2.7.2: stream-parser@~0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" + integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M= dependencies: debug "2" stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= stream-to-buffer@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" + integrity sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk= dependencies: stream-to "~0.2.0" stream-to@~0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" + integrity sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0= strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + +string-argv@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" @@ -15151,6 +17782,7 @@ string-length@^2.0.0: string-similarity@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.2.2.tgz#99b2c20a3c9bbb3903964eae1d89856db3d8db9b" + integrity sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ== dependencies: lodash.every "^4.6.0" lodash.flattendeep "^4.4.0" @@ -15161,14 +17793,17 @@ string-similarity@^1.2.0: string-template@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96" + integrity sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y= string-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= string-width@^1.0.0, string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -15177,6 +17812,7 @@ string-width@^1.0.0, string-width@^1.0.1: "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -15184,6 +17820,7 @@ string-width@^1.0.0, string-width@^1.0.1: string.prototype.padend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= dependencies: define-properties "^1.1.2" es-abstract "^1.4.3" @@ -15192,26 +17829,31 @@ string.prototype.padend@^3.0.0: string.prototype.repeat@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" + integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= string_decoder@0.10, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" string_decoder@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== dependencies: safe-buffer "~5.1.0" stringify-entities@^1.0.1: version "1.3.2" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" + integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== dependencies: character-entities-html4 "^1.0.0" character-entities-legacy "^1.0.0" @@ -15221,6 +17863,7 @@ stringify-entities@^1.0.1: stringify-object@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" + integrity sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg== dependencies: get-own-enumerable-property-symbols "^2.0.1" is-obj "^1.0.1" @@ -15229,22 +17872,26 @@ stringify-object@^3.2.2: strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= strip-bom-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" + integrity sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4= dependencies: first-chunk-stream "^1.0.0" strip-bom "^2.0.0" @@ -15252,20 +17899,24 @@ strip-bom-stream@^1.0.0: strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" strip-comments@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== dependencies: babel-extract-comments "^1.0.0" babel-plugin-transform-object-rest-spread "^6.26.0" @@ -15273,6 +17924,7 @@ strip-comments@^1.0.2: strip-dirs@^1.0.0: version "1.1.1" resolved "http://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" + integrity sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA= dependencies: chalk "^1.0.0" get-stdin "^4.0.1" @@ -15284,36 +17936,43 @@ strip-dirs@^1.0.0: strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== dependencies: is-natural-number "^4.0.1" strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= dependencies: get-stdin "^4.0.1" strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= strip-outer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== dependencies: escape-string-regexp "^1.0.2" strong-log-transformer@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-1.0.6.tgz#f7fb93758a69a571140181277eea0c2eb1301fa3" + integrity sha1-9/uTdYpppXEUAYEnfuoMLrEwH6M= dependencies: byline "^5.0.0" duplexer "^0.1.1" @@ -15324,6 +17983,7 @@ strong-log-transformer@^1.0.6: strong-log-transformer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.0.0.tgz#fa6d8e0a9e62b3c168c3cad5ae5d00dc97ba26cc" + integrity sha512-FQmNqAXJgOX8ygOcvPLlGWBNT41mvNJ9ALoYf0GTwVt9t30mGTqpmp/oJx5gLcu52DXK10kS7dVWhx8aPXDTlg== dependencies: byline "^5.0.0" duplexer "^0.1.1" @@ -15333,13 +17993,22 @@ strong-log-transformer@^2.0.0: style-loader@^0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" + integrity sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg== dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" +style-to-object@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.2.tgz#3ea3b276bd3fa9da1195fcdcdd03bc52aa2aae01" + integrity sha512-GcbtvfsqyKmIPpHeOHZ5Rmwsx2MDJct4W9apmTGcbPTbpA2FcgTFl2Z43Hm4Qb61MWGPNK8Chki7ITiY7lLOow== + dependencies: + css "2.2.4" + stylehacks@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.0.tgz#64b323951c4a24e5fc7b2ec06c137bf32d155e8a" + integrity sha1-ZLMjlRxKJOX8ey7AbBN78y0VXoo= dependencies: browserslist "^4.0.0" postcss "^6.0.0" @@ -15348,6 +18017,7 @@ stylehacks@^4.0.0: styletron-engine-atomic@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/styletron-engine-atomic/-/styletron-engine-atomic-1.0.8.tgz#97f0abef84a4b15a9c70c64571db67eb68e06042" + integrity sha1-l/Cr74SksVqccMZFcdtn62jgYEI= dependencies: inline-style-prefixer "^4.0.0" styletron-standard "^1.0.6" @@ -15355,6 +18025,7 @@ styletron-engine-atomic@^1.0.8: styletron-react-core@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/styletron-react-core/-/styletron-react-core-1.3.2.tgz#919f9e55e555d8bd66957e11c98c00d1d6e559f9" + integrity sha1-kZ+eVeVV2L1mlX4RyYwA0dblWfk= dependencies: create-react-context "^0.2.2" prop-types "^15.6.0" @@ -15362,6 +18033,7 @@ styletron-react-core@^1.3.2: styletron-react@^4: version "4.3.5" resolved "https://registry.yarnpkg.com/styletron-react/-/styletron-react-4.3.5.tgz#f85515fa83de41e2f73c029c82524ada0c8bbe81" + integrity sha1-+FUV+oPeQeL3PAKcglJK2gyLvoE= dependencies: prop-types "^15.6.0" styletron-react-core "^1.3.2" @@ -15370,12 +18042,14 @@ styletron-react@^4: styletron-standard@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/styletron-standard/-/styletron-standard-1.0.6.tgz#f38a21d888ccee143a7c263e86d525f1eef2df7d" + integrity sha1-84oh2IjM7hQ6fCY+htUl8e7y330= dependencies: inline-style-prefixer "^4.0.0" stylus-loader@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" + integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== dependencies: loader-utils "^1.0.2" lodash.clonedeep "^4.5.0" @@ -15384,6 +18058,7 @@ stylus-loader@^3.0.1: stylus@^0.54.5: version "0.54.5" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" + integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= dependencies: css-parse "1.7.x" debug "*" @@ -15395,12 +18070,14 @@ stylus@^0.54.5: subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= dependencies: minimist "^1.1.0" subfont@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/subfont/-/subfont-3.6.1.tgz#a9d19b2c51b9652194f08938eff5e8d94c5bb036" + integrity sha512-k5rlJSKV2//DCkIUwlJKuqdWewbEIqfKsJb9OcDgyjZ6Jk3FBHodAlkhSYnfjDUAvpXdHSxT3BuWaX5OjgR7Gg== dependencies: assetgraph "^5.1.1" lodash.groupby "^4.6.0" @@ -15411,40 +18088,47 @@ subfont@^3.6.1: sum-up@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" + integrity sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4= dependencies: chalk "^1.0.0" supports-color@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== dependencies: has-flag "^2.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= dependencies: has-flag "^1.0.0" -supports-color@^4.0.0, supports-color@^4.1.0: +supports-color@^4.1.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= dependencies: has-flag "^2.0.0" supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" svgo@^0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= dependencies: coa "~1.0.1" colors "~1.1.2" @@ -15457,6 +18141,7 @@ svgo@^0.7.2: svgo@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.0.5.tgz#7040364c062a0538abacff4401cea6a26a7a389a" + integrity sha512-nYrifviB77aNKDNKKyuay3M9aYiK6Hv5gJVDdjj2ZXTQmI8WZc8+UPLR5IpVlktJfSu3co/4XcWgrgI6seGBPg== dependencies: coa "~2.0.1" colors "~1.1.2" @@ -15476,6 +18161,7 @@ svgo@^1.0.0: sw-precache@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.1.tgz#06134f319eec68f3b9583ce9a7036b1c119f7179" + integrity sha512-8FAy+BP/FXE+ILfiVTt+GQJ6UEf4CVHD9OfhzH0JX+3zoy2uFk7Vn9EfXASOtVmmIVbL3jE/W8Z66VgPSZcMhw== dependencies: dom-urls "^1.1.0" es6-promise "^4.0.5" @@ -15491,6 +18177,7 @@ sw-precache@^5.2.0: sw-toolbox@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/sw-toolbox/-/sw-toolbox-3.6.0.tgz#26df1d1c70348658e4dea2884319149b7b3183b5" + integrity sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U= dependencies: path-to-regexp "^1.0.1" serviceworker-cache-polyfill "^4.0.0" @@ -15498,6 +18185,7 @@ sw-toolbox@^3.4.0: swap-case@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM= dependencies: lower-case "^1.1.1" upper-case "^1.1.1" @@ -15505,18 +18193,22 @@ swap-case@^1.1.0: symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -symbol-observable@^1.0.3: +symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== dependencies: ajv "^5.2.3" ajv-keywords "^2.1.0" @@ -15525,13 +18217,27 @@ table@4.0.2: slice-ansi "1.0.0" string-width "^2.1.1" +table@^4.0.3: + version "4.0.3" + resolved "http://registry.npmjs.org/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + tapable@^1.0.0, tapable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== tar-fs@^1.13.0: version "1.16.3" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== dependencies: chownr "^1.0.1" mkdirp "^0.5.1" @@ -15541,6 +18247,7 @@ tar-fs@^1.13.0: tar-stream@^1.1.1, tar-stream@^1.1.2, tar-stream@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + integrity sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA== dependencies: bl "^1.0.0" buffer-alloc "^1.1.0" @@ -15553,6 +18260,7 @@ tar-stream@^1.1.1, tar-stream@^1.1.2, tar-stream@^1.5.2: tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= dependencies: block-stream "*" fstream "^1.0.2" @@ -15561,6 +18269,7 @@ tar@^2.0.0: tar@^4, tar@^4.4.3, tar@^4.4.6: version "4.4.6" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" @@ -15573,6 +18282,7 @@ tar@^4, tar@^4.4.3, tar@^4.4.6: teepee@^2.31.1: version "2.31.2" resolved "https://registry.yarnpkg.com/teepee/-/teepee-2.31.2.tgz#2283fd176176c93977769bade1247fae7d41e58a" + integrity sha512-Er4CNK1mccfc2uvN+QkJcAU+4j6QtMA9cHrdnxF9Y8VzuTKMRnnHyVrmxfyLLCK23SyPAYkWBe7EBjmwC7sRNQ== dependencies: bluebird "2.9.34" createerror "1.2.0" @@ -15591,10 +18301,12 @@ teepee@^2.31.1: temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= temp-write@^3.3.0, temp-write@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= dependencies: graceful-fs "^4.1.2" is-stream "^1.1.0" @@ -15606,6 +18318,7 @@ temp-write@^3.3.0, temp-write@^3.4.0: temp@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= dependencies: os-tmpdir "^1.0.0" rimraf "~2.2.6" @@ -15613,6 +18326,7 @@ temp@^0.8.1: tempfile@^1.0.0, tempfile@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" + integrity sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I= dependencies: os-tmpdir "^1.0.0" uuid "^2.0.1" @@ -15620,6 +18334,7 @@ tempfile@^1.0.0, tempfile@^1.1.1: tempfile@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= dependencies: temp-dir "^1.0.0" uuid "^3.0.1" @@ -15627,12 +18342,14 @@ tempfile@^2.0.0: term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" terser-webpack-plugin@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" + integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== dependencies: cacache "^11.0.2" find-cache-dir "^2.0.0" @@ -15646,24 +18363,16 @@ terser-webpack-plugin@^1.0.2: terser@^3.8.1: version "3.8.2" resolved "https://registry.yarnpkg.com/terser/-/terser-3.8.2.tgz#48b880f949f8d038aca4dfd00a37c53d96ecf9fb" + integrity sha512-FGSBXiBJe2TSXy6pWwXpY0YcEWEK35UKL64BBbxX3aHqM4Nj0RMqXvqBuoSGfyd80t8MKQ5JwYm5jRRGTSEFNg== dependencies: commander "~2.17.1" source-map "~0.6.1" source-map-support "~0.5.6" -test-exclude@^1.1.0: - version "1.1.0" - resolved "http://registry.npmjs.org/test-exclude/-/test-exclude-1.1.0.tgz#f5ddd718927b12fd02f270a0aa939ceb6eea4151" - dependencies: - arrify "^1.0.1" - lodash.assign "^4.0.9" - micromatch "^2.3.8" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - test-exclude@^4.2.1: version "4.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" + integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -15674,18 +18383,22 @@ test-exclude@^4.2.1: text-extensions@^1.0.0: version "1.8.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.8.0.tgz#6f343c62268843019b21a616a003557bdb952d2b" + integrity sha512-mVzjRxuWnDKs/qH1rbOJEVHLlSX9kty9lpi7lMvLgU9S74mQ8/Ozg9UPcKxShh0qG2NZ+NyPOPpcZU4C1Eld9A== -text-table@0.2.0, text-table@~0.2.0: +text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= through2-filter@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + integrity sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw= dependencies: through2 "~2.0.0" xtend "~4.0.0" @@ -15693,6 +18406,7 @@ through2-filter@^2.0.0: through2@^0.6.0, through2@^0.6.1: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= dependencies: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" @@ -15700,51 +18414,62 @@ through2@^0.6.0, through2@^0.6.1: through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0, through2@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= dependencies: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.4: version "2.3.8" resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= timed-out@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + integrity sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc= timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== dependencies: setimmediate "^1.0.4" timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-emitter@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" + integrity sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow== tiny-inflate@^1.0.0, tiny-inflate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" + integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c= tiny-lr@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" + integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== dependencies: body "^5.1.0" debug "^3.1.0" @@ -15756,14 +18481,17 @@ tiny-lr@^1.1.0: tinycolor2@^1.1.2: version "1.4.1" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= tippex@^2.1.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tippex/-/tippex-2.3.1.tgz#a2fd5b7087d7cbfb20c9806a6c16108c2c0fafda" + integrity sha1-ov1bcIfXy/sgyYBqbBYQjCwPr9o= title-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= dependencies: no-case "^2.2.0" upper-case "^1.0.3" @@ -15771,28 +18499,33 @@ title-case@^2.1.0: tmp@^0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + integrity sha1-jzirlDjhcxXl29izZX6L+yd65Kc= dependencies: os-tmpdir "~1.0.1" tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= to-absolute-glob@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" + integrity sha1-HN+kcqnvUMI57maZm2YsoOs5k38= dependencies: extend-shallow "^2.0.1" to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= dependencies: is-absolute "^1.0.0" is-negated-glob "^1.0.0" @@ -15800,32 +18533,39 @@ to-absolute-glob@^2.0.0: to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-buffer@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -15833,6 +18573,7 @@ to-regex-range@^2.1.0: to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" @@ -15842,30 +18583,36 @@ to-regex@^3.0.1, to-regex@^3.0.2: to-through@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= dependencies: through2 "^2.0.3" toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== toml@^2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb" + integrity sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA== topo@2.x.x: version "2.0.2" resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI= dependencies: hoek "4.x.x" toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3, tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" punycode "^1.4.1" @@ -15873,50 +18620,61 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3, tough-cookie@~2. tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= dependencies: punycode "^2.1.0" trim-lines@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.1.tgz#da738ff58fa74817588455e30b11b85289f2a396" + integrity sha512-X+eloHbgJGxczUk1WSjIvn7aC9oN3jVE3rQfRVKcgpavi3jxtCn0VVKtjOBj64Yop96UYn/ujJRpTbCdAF1vyg== trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= trim-off-newlines@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= trim-repeated@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= dependencies: escape-string-regexp "^1.0.2" trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= trim-trailing-lines@^1.0.0, trim-trailing-lines@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz#e0ec0810fd3c3f1730516b45f49083caaf2774d9" + integrity sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg== trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= trough@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz#e29bd1614c6458d44869fc28b255ab7857ef7c24" + integrity sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw== tsickle@^0.27.2: version "0.27.5" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.27.5.tgz#41e1a41a5acf971cbb2b0558a9590779234d591f" + integrity sha512-NP+CjM1EXza/M8mOXBLH3vkFEJiu1zfEAlC5WdJxHPn8l96QPz5eooP6uAgYtw1CcKfuSyIiheNUdKxtDWCNeg== dependencies: minimist "^1.2.0" mkdirp "^0.5.1" @@ -15926,38 +18684,46 @@ tsickle@^0.27.2: tslib@^1.6.0, tslib@^1.7.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= tunnel-agent@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us= tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-detect@^4.0.0: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== dependencies: media-typer "0.3.0" mime-types "~2.1.18" @@ -15965,37 +18731,32 @@ type-is@~1.6.15, type-is@~1.6.16: type-of@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" + integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -typescript-eslint-parser@^16.0.0: - version "16.0.1" - resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-16.0.1.tgz#b40681c7043b222b9772748b700a000b241c031b" - dependencies: - lodash.unescape "4.0.1" - semver "5.5.0" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^1.8.9: version "1.8.10" resolved "http://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e" - -typescript@^2.5.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + integrity sha1-tHXW4N/wv1DyluXKbvn7tccyDx4= typescript@~2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" + integrity sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q= ua-parser-js@^0.7.18: version "0.7.18" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed" + integrity sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA== uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== dependencies: commander "~2.13.0" source-map "~0.6.1" @@ -16003,6 +18764,7 @@ uglify-es@^3.3.4: uglify-js@3.4.9, uglify-js@3.4.x, uglify-js@^3.1.4: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -16010,6 +18772,7 @@ uglify-js@3.4.9, uglify-js@3.4.x, uglify-js@^3.1.4: uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= dependencies: source-map "~0.5.1" yargs "~3.10.0" @@ -16019,10 +18782,12 @@ uglify-js@^2.6: uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= uglifyjs-webpack-plugin@^1.2.4: version "1.3.0" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" + integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -16036,18 +18801,22 @@ uglifyjs-webpack-plugin@^1.2.4: uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== umask@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= unbzip2-stream@^1.0.9: version "1.2.5" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" + integrity sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og== dependencies: buffer "^3.0.1" through "^2.3.6" @@ -16055,10 +18824,12 @@ unbzip2-stream@^1.0.9: unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= underscore.string@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + integrity sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s= dependencies: sprintf-js "^1.0.3" util-deprecate "^1.0.2" @@ -16066,14 +18837,17 @@ underscore.string@^3.3.4: underscore@^1.7.0, underscore@^1.8.3: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= unherit@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c" + integrity sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g== dependencies: inherits "^2.0.1" xtend "^4.0.1" @@ -16081,10 +18855,12 @@ unherit@^1.0.4: unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" @@ -16092,10 +18868,12 @@ unicode-match-property-ecmascript@^1.0.4: unicode-match-property-value-ecmascript@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== unicode-properties@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-properties/-/unicode-properties-1.1.0.tgz#7a96eef49f75682ea69d2315eec9ac43ffdf00c1" + integrity sha1-epbu9J91aC6mnSMV7smsQ//fAME= dependencies: brfs "^1.4.0" unicode-trie "^0.3.0" @@ -16103,10 +18881,12 @@ unicode-properties@^1.0.0: unicode-property-aliases-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== unicode-trie@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" + integrity sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU= dependencies: pako "^0.2.5" tiny-inflate "^1.0.0" @@ -16114,6 +18894,7 @@ unicode-trie@^0.3.0: unified@^4.1.1: version "4.2.1" resolved "https://registry.yarnpkg.com/unified/-/unified-4.2.1.tgz#76ff43aa8da430f6e7e4a55c84ebac2ad2cfcd2e" + integrity sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4= dependencies: bail "^1.0.0" extend "^3.0.0" @@ -16125,6 +18906,7 @@ unified@^4.1.1: unified@^6.0.0, unified@^6.1.5: version "6.2.0" resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" + integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== dependencies: bail "^1.0.0" extend "^3.0.0" @@ -16136,6 +18918,7 @@ unified@^6.0.0, unified@^6.1.5: union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -16145,26 +18928,31 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= uniqs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= unique-filename@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= dependencies: imurmurhash "^0.1.4" unique-stream@^2.0.2: version "2.2.1" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + integrity sha1-WqADz76Uxf+GbE59ZouxxNuts2k= dependencies: json-stable-stringify "^1.0.0" through2-filter "^2.0.0" @@ -16172,18 +18960,21 @@ unique-stream@^2.0.2: unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= dependencies: crypto-random-string "^1.0.0" unist-builder@^1.0.1, unist-builder@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.3.tgz#ab0f9d0f10936b74f3e913521955b0478e0ff036" + integrity sha512-/KB8GEaoeHRyIqClL+Kam+Y5NWJ6yEiPsAfv1M+O1p+aKGgjR89WwoEHKTyOj17L6kAlqtKpAgv2nWvdbQDEig== dependencies: object-assign "^4.1.0" unist-util-find@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unist-util-find/-/unist-util-find-1.0.1.tgz#1062bbb6928c7a97c6adc89b53745d4c46c222a2" + integrity sha1-EGK7tpKMepfGrcibU3RdTEbCIqI= dependencies: lodash.iteratee "^4.5.0" remark "^5.0.1" @@ -16192,36 +18983,43 @@ unist-util-find@^1.0.1: unist-util-generated@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.2.tgz#8b993f9239d8e560be6ee6e91c3f7b7208e5ce25" + integrity sha512-1HcwiEO62dr0XWGT+abVK4f0aAm8Ik8N08c5nAYVmuSxfvpA9rCcNyX/le8xXj1pJK5nBrGlZefeWB6bN8Pstw== unist-util-is@^2.0.0, unist-util-is@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.2.tgz#1193fa8f2bfbbb82150633f3a8d2eb9a1c1d55db" + integrity sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw== unist-util-map@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/unist-util-map/-/unist-util-map-1.0.4.tgz#f27bb03e14e8072171379d132c96c1dfcea44574" + integrity sha512-Qv68pQz05hQbjPI+TubZQI5XII5DScRVWaKNc6+qfmHaFGxaGUbkV8i++mM2nk7XgwXE+vei99d/Q2d1tMA3EQ== dependencies: object-assign "^4.0.1" unist-util-modify-children@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz#c7f1b91712554ee59c47a05b551ed3e052a4e2d1" + integrity sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg== dependencies: array-iterate "^1.0.0" unist-util-position@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.1.tgz#8e220c24658239bf7ddafada5725ed0ea1ebbc26" + integrity sha512-05QfJDPI7PE1BIUtAxeSV+cDx21xP7+tUZgSval5CA7tr0pHBwybF7OnEa1dOFqg6BfYH/qiMUnWwWj+Frhlww== unist-util-remove-position@^1.0.0, unist-util-remove-position@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz#86b5dad104d0bbfbeb1db5f5c92f3570575c12cb" + integrity sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q== dependencies: unist-util-visit "^1.1.0" unist-util-select@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/unist-util-select/-/unist-util-select-1.5.0.tgz#a93c2be8c0f653827803b81331adec2aa24cd933" + integrity sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM= dependencies: css-selector-parser "^1.1.0" debug "^2.2.0" @@ -16230,38 +19028,46 @@ unist-util-select@^1.5.0: unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== unist-util-visit-children@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.2.tgz#bd78b53db9644b9c339ac502854f15471f964f5b" + integrity sha512-q4t6aprUcSQ2/+xlswuh2wUKwUUuMmDjSkfwkMjeVwCXc8NqX8g0FSmNf68CznCmbkrsOPDUR0wj14bCFXXqbA== unist-util-visit-parents@^2.0.0, unist-util-visit-parents@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz#63fffc8929027bee04bfef7d2cce474f71cb6217" + integrity sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA== dependencies: unist-util-is "^2.1.2" unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.3.0, unist-util-visit@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.0.tgz#1cb763647186dc26f5e1df5db6bd1e48b3cc2fb1" + integrity sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw== dependencies: unist-util-visit-parents "^2.0.0" universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unquote@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -16269,18 +19075,22 @@ unset-value@^1.0.0: unzip-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + integrity sha1-uYTwh3/AqJwsdzzB73tbIytbBv4= unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== update-notifier@^2.3.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== dependencies: boxen "^1.2.1" chalk "^2.0.1" @@ -16296,38 +19106,46 @@ update-notifier@^2.3.0: upper-case-first@^1.1.0, upper-case-first@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU= dependencies: upper-case "^1.1.1" upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urijs@^1.16.1, urijs@^1.18.2, urijs@^1.19.0: version "1.19.1" resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.1.tgz#5b0ff530c0cbde8386f6342235ba5ca6e995d25a" + integrity sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg== urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-join@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" + integrity sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg= url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= url-loader@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + integrity sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg== dependencies: loader-utils "^1.1.0" mime "^2.0.3" @@ -16336,18 +19154,21 @@ url-loader@^1.0.1: url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: prepend-http "^1.0.1" url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: prepend-http "^2.0.0" url-parse@^1.1.8, url-parse@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" + integrity sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw== dependencies: querystringify "^2.0.0" requires-port "^1.0.0" @@ -16355,20 +19176,24 @@ url-parse@^1.1.8, url-parse@^1.4.3: url-regex@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" + integrity sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ= dependencies: ip-regex "^1.0.1" url-template@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" @@ -16376,6 +19201,7 @@ url@^0.11.0: urltools@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/urltools/-/urltools-0.3.5.tgz#61c12cb2785feb17ffb4069c9972ed7e00c75b96" + integrity sha1-YcEssnhf6xf/tAacmXLtfgDHW5Y= dependencies: glob "^7.0.3" underscore "^1.8.3" @@ -16384,6 +19210,7 @@ urltools@^0.3.5: urltools@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/urltools/-/urltools-0.4.1.tgz#5d7905af70c049d7ba5490e7462694f477c50298" + integrity sha512-hGdweXMDjRXC0wC9RiJRRY05cAvlg6hnGBSg+6KWjJcqtvO0F6D4S2+ftp6t9x761jW8C0/lnKUOVUeA3rZlZQ== dependencies: glob "^7.0.3" underscore "^1.8.3" @@ -16392,18 +19219,22 @@ urltools@^0.4.1: use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" @@ -16411,66 +19242,80 @@ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" utila@~0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + integrity sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY= utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= utils-extend@^1.0.4, utils-extend@^1.0.6, utils-extend@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/utils-extend/-/utils-extend-1.0.8.tgz#ccfd7b64540f8e90ee21eec57769d0651cab8a5f" + integrity sha1-zP17ZFQPjpDuIe7Fd2nQZRyril8= utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== v8-compile-cache@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" + integrity sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA== v8flags@^2.0.10: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= dependencies: user-home "^1.1.1" v8flags@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.1.tgz#42259a1461c08397e37fe1d4f1cfb59cad85a053" + integrity sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ== dependencies: homedir-polyfill "^1.0.1" vali-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" + integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= valid-url@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -16478,24 +19323,29 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vendors@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -16504,16 +19354,19 @@ verror@1.10.0: vfile-location@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.3.tgz#083ba80e50968e8d420be49dd1ea9a992131df77" + integrity sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A== vfile-message@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.0.1.tgz#51a2ccd8a6b97a7980bb34efb9ebde9632e93677" + integrity sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug== dependencies: unist-util-stringify-position "^1.1.1" vfile-reporter@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-4.0.0.tgz#ea6f0ae1342f4841573985e05f941736f27de9da" + integrity sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do= dependencies: repeat-string "^1.5.0" string-width "^1.0.0" @@ -16524,18 +19377,22 @@ vfile-reporter@^4.0.0: vfile-sort@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-2.1.1.tgz#03acdc8a4d7870ecf0e35499f095ddd9d14cbc41" + integrity sha512-+fpTWKkVHwI6VF2xtkDTuCA6cH4UPLAxh+KxfU8g8pC0do5RSZCk1HXTTtMJguW0t5jC0PC19owjUZX9SGQ9tw== vfile-statistics@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.1.tgz#a22fd4eb844c9eaddd781ad3b3246db88375e2e3" + integrity sha512-dxUM6IYvGChHuwMT3dseyU5BHprNRXzAV0OHx1A769lVGsTiT50kU7BbpRFV+IE6oWmU+PwHdsTKfXhnDIRIgQ== vfile@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/vfile/-/vfile-1.4.0.tgz#c0fd6fa484f8debdb771f68c31ed75d88da97fe7" + integrity sha1-wP1vpIT43r23cfaMMe112I2pf+c= vfile@^2.0.0, vfile@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== dependencies: is-buffer "^1.1.4" replace-ext "1.0.0" @@ -16545,6 +19402,7 @@ vfile@^2.0.0, vfile@^2.3.0: vinyl-assign@^1.0.1: version "1.2.1" resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45" + integrity sha1-TRmIkbVRWRHXcajNnFSApGoHSkU= dependencies: object-assign "^4.0.1" readable-stream "^2.0.0" @@ -16552,6 +19410,7 @@ vinyl-assign@^1.0.1: vinyl-fs@^2.2.0: version "2.4.4" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" + integrity sha1-vm/zJwy1Xf19MGNkDegfJddTIjk= dependencies: duplexify "^3.2.0" glob-stream "^5.3.2" @@ -16574,6 +19433,7 @@ vinyl-fs@^2.2.0: vinyl-fs@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== dependencies: fs-mkdirp-stream "^1.0.0" glob-stream "^6.1.0" @@ -16596,6 +19456,7 @@ vinyl-fs@^3.0.2: vinyl-sourcemap@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= dependencies: append-buffer "^1.0.2" convert-source-map "^1.5.0" @@ -16608,6 +19469,7 @@ vinyl-sourcemap@^1.1.0: vinyl@^0.4.3: version "0.4.6" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + integrity sha1-LzVsh6VQolVGHza76ypbqL94SEc= dependencies: clone "^0.2.0" clone-stats "^0.0.1" @@ -16615,6 +19477,7 @@ vinyl@^0.4.3: vinyl@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= dependencies: clone "^1.0.0" clone-stats "^0.0.1" @@ -16623,6 +19486,7 @@ vinyl@^0.5.0: vinyl@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= dependencies: clone "^1.0.0" clone-stats "^0.0.1" @@ -16631,6 +19495,7 @@ vinyl@^1.0.0: vinyl@^2.0.0, vinyl@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== dependencies: clone "^2.1.1" clone-buffer "^1.0.0" @@ -16642,31 +19507,24 @@ vinyl@^2.0.0, vinyl@^2.1.0: viz.js@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/viz.js/-/viz.js-2.0.0.tgz#d34aa8e68f3b4eb7107f16ea6d1530a77109f315" + integrity sha512-OzUX9NWBc4u9QjFjVZYXGf7evbDHD8D9YcnVk9qEgrpYzWmeX+9Cov0n2KxbIidRRAef8OXwGrPfwnWubasKQg== vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= dependencies: indexof "0.0.1" -vue-eslint-parser@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" - dependencies: - debug "^3.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.2" - esquery "^1.0.0" - lodash "^4.17.4" - vue-template-compiler@^2.5.16: version "2.5.17" resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.17.tgz#52a4a078c327deb937482a509ae85c06f346c3cb" + integrity sha512-63uI4syCwtGR5IJvZM0LN5tVsahrelomHtCxvRkZPJ/Tf3ADm1U1wG6KWycK3qCfqR+ygM5vewUvmJ0REAYksg== dependencies: de-indent "^1.0.2" he "^1.1.0" @@ -16674,34 +19532,40 @@ vue-template-compiler@^2.5.16: w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= dependencies: browser-process-hrtime "^0.1.2" wait-for-expect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.0.0.tgz#edf2d5790c36dc67c4e21ac6ccedd7d4b79dc6ac" + integrity sha512-I6OlPKnd4qVdKJf1Gjx9M9qQjIk29rALoUkjwIKa9pNDCdzUuJTfaNv1mtsm2QdSvF0ZQogrWJMifTN1lUeXig== walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" ware@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" + integrity sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q= dependencies: wrap-fn "^0.1.0" warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= dependencies: loose-envify "^1.0.0" watch@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= dependencies: exec-sh "^0.2.0" minimist "^1.2.0" @@ -16709,6 +19573,7 @@ watch@~0.18.0: watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== dependencies: chokidar "^2.0.2" graceful-fs "^4.1.2" @@ -16717,26 +19582,31 @@ watchpack@^1.5.0: wbuf@^1.1.0, wbuf@^1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: defaults "^1.0.3" -web-namespaces@^1.0.0: +web-namespaces@^1.0.0, web-namespaces@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.2.tgz#c8dc267ab639505276bae19e129dbd6ae72b22b4" + integrity sha512-II+n2ms4mPxK+RnIxRPOw3zwF2jRscdJIUE9BfkKHm4FYEg9+biIoTMnaZF5MpemE3T+VhMLrhbyD4ilkPCSbg== webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-assets-manifest@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.0.2.tgz#d9c7f57d4e0a6a261e2558258073f7c5e95e3f32" + integrity sha512-HJ8IjwlPztZ15uwyCGOebexADexbCs3TRMod1Ep4nOHufhmPdKQdFoHW6G02gH77hFG771P6sBxB9/TzM6k09g== dependencies: chalk "^2.0" lodash.get "^4.0" @@ -16749,6 +19619,7 @@ webpack-assets-manifest@^3.0.2: webpack-dev-middleware@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" + integrity sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA== dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" @@ -16761,6 +19632,7 @@ webpack-dev-middleware@3.2.0: webpack-dev-middleware@^3.0.1: version "3.3.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.3.0.tgz#8104daf4d4f65defe06ee2eaaeea612a7c541462" + integrity sha512-5C5gXtOo1I6+0AEg4UPglYEtu3Rai6l5IiO6aUu65scHXz29dc3oIWMiRwvcNLXgL0HwRkRxa9N02ZjFt4hY8w== dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" @@ -16772,6 +19644,7 @@ webpack-dev-middleware@^3.0.1: webpack-dev-server@^3.1.1: version "3.1.8" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz#eb7a95945d1108170f902604fb3b939533d9daeb" + integrity sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -16805,6 +19678,7 @@ webpack-dev-server@^3.1.1: webpack-hot-middleware@^2.21.0: version "2.24.0" resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.24.0.tgz#d67ae5107edff29debbab3631a424c998856fd47" + integrity sha512-H6EMooeJMOEmEOx8OFllW3VRUdeA6CqQhdB1AlB+ReRFhISxypmDyt7YU0qEMCrPL06kYuXghnhDCi57wz6ORg== dependencies: ansi-html "0.0.7" html-entities "^1.2.0" @@ -16814,6 +19688,7 @@ webpack-hot-middleware@^2.21.0: webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: ansi-colors "^3.0.0" uuid "^3.3.2" @@ -16821,12 +19696,14 @@ webpack-log@^2.0.0: webpack-merge@^4.1.0: version "4.1.4" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" + integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ== dependencies: lodash "^4.17.5" webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.2.0.tgz#18181e0d013fce096faf6f8e6d41eeffffdceac2" + integrity sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" @@ -16834,10 +19711,12 @@ webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.2.0: webpack-stats-plugin@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.1.5.tgz#29e5f12ebfd53158d31d656a113ac1f7b86179d9" + integrity sha1-KeXxLr/VMVjTHWVqETrB97hhedk= webpack@^4.12.0, webpack@^4.14.0, webpack@^4.16.0: version "4.19.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.0.tgz#252296c8af2d21c0994911007defdb3913a7bc66" + integrity sha512-Ak3mMGtA8F1ar4ZP6VCLiICNIPoillROGYstnEd+LzI5Tkvz0qTITeTMcAFjxyYsaxu98F97yrCWdcxRUMPAYw== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-module-context" "1.7.6" @@ -16867,6 +19746,7 @@ webpack@^4.12.0, webpack@^4.14.0, webpack@^4.16.0: websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= dependencies: http-parser-js ">=0.4.0" websocket-extensions ">=0.1.1" @@ -16874,28 +19754,34 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621" + integrity sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg== dependencies: iconv-lite "0.4.23" whatwg-fetch@2.0.4: version "2.0.4" resolved "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== whatwg-mimetype@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" + integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== whatwg-url@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -16904,6 +19790,7 @@ whatwg-url@^6.4.1: whatwg-url@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -16912,76 +19799,91 @@ whatwg-url@^7.0.0: when@~3.6.x: version "3.6.4" resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + integrity sha1-RztRfsFZ4rhQBUl6E5g/CVQS404= whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which-pm-runs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" widest-line@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + integrity sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM= dependencies: string-width "^2.1.1" window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" +with-open-file@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.4.tgz#797e32055cbe55c58727ad026482fb0776474b2c" + integrity sha512-BswUwq/x/BYtNFMr4Uw9V+P2uroc9/tcDpZ2RdDHehzwCKJFF1PSIjJmBNfpUE3UQyJmVINRLOW49WTXQMEnvg== + dependencies: + p-finally "^1.0.0" + p-try "^2.0.0" + pify "^3.0.0" wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -workbox-background-sync@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.5.0.tgz#bc9a6fe58dd7e3c3b235225a35894e3f567965a0" +workbox-background-sync@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" + integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q== dependencies: - workbox-core "^3.5.0" + workbox-core "^3.6.3" -workbox-broadcast-cache-update@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.5.0.tgz#3be074b5abb333decd27fa2b31c39b643cdaad3f" +workbox-broadcast-cache-update@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" + integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg== dependencies: - workbox-core "^3.5.0" + workbox-core "^3.6.3" -workbox-build@^3.4.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.5.0.tgz#893e31b1e28727ac0ec993222b9c132f77ea4607" +workbox-build@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" + integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g== dependencies: babel-runtime "^6.26.0" common-tags "^1.4.0" @@ -16992,111 +19894,135 @@ workbox-build@^3.4.1: pretty-bytes "^4.0.2" stringify-object "^3.2.2" strip-comments "^1.0.2" - workbox-background-sync "^3.5.0" - workbox-broadcast-cache-update "^3.5.0" - workbox-cache-expiration "^3.5.0" - workbox-cacheable-response "^3.5.0" - workbox-core "^3.5.0" - workbox-google-analytics "^3.5.0" - workbox-navigation-preload "^3.5.0" - workbox-precaching "^3.5.0" - workbox-range-requests "^3.5.0" - workbox-routing "^3.5.0" - workbox-strategies "^3.5.0" - workbox-streams "^3.5.0" - workbox-sw "^3.5.0" - -workbox-cache-expiration@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.5.0.tgz#bc6ee8e6105c0251d6331a772cf48c6a77470fb9" - dependencies: - workbox-core "^3.5.0" - -workbox-cacheable-response@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.5.0.tgz#5073dbfb905639caac15285e31d779203fc9f66e" - dependencies: - workbox-core "^3.5.0" - -workbox-core@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.5.0.tgz#42d19d4322bfa17a67ab8a58f474784ae8dd8e80" - -workbox-google-analytics@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.5.0.tgz#fb4af515ecd207054370beae2917b08c7e9175dc" - dependencies: - workbox-background-sync "^3.5.0" - workbox-core "^3.5.0" - workbox-routing "^3.5.0" - workbox-strategies "^3.5.0" - -workbox-navigation-preload@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.5.0.tgz#3d2514976ce2a1208c92e29dac2cb2976636f18d" - dependencies: - workbox-core "^3.5.0" - -workbox-precaching@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.5.0.tgz#5b92690f424fe4c438c11823363e7468e5af8bf4" - dependencies: - workbox-core "^3.5.0" - -workbox-range-requests@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.5.0.tgz#fe4cb1f67be015eeef379c0dd479c31436a1a53d" - dependencies: - workbox-core "^3.5.0" - -workbox-routing@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.5.0.tgz#93ab4037b49f243c5b5cc7a09b2b391700cdb4d1" - dependencies: - workbox-core "^3.5.0" - -workbox-strategies@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.5.0.tgz#13cb04776cad4fa8b758b155245119909119cea6" - dependencies: - workbox-core "^3.5.0" - -workbox-streams@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.5.0.tgz#a2295c5e28f05eecb3c275296e1f67e2f07d2eac" - dependencies: - workbox-core "^3.5.0" - -workbox-sw@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.5.0.tgz#492a9b99f110d52f7ebda8bd0b045f0484685dae" + workbox-background-sync "^3.6.3" + workbox-broadcast-cache-update "^3.6.3" + workbox-cache-expiration "^3.6.3" + workbox-cacheable-response "^3.6.3" + workbox-core "^3.6.3" + workbox-google-analytics "^3.6.3" + workbox-navigation-preload "^3.6.3" + workbox-precaching "^3.6.3" + workbox-range-requests "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + workbox-streams "^3.6.3" + workbox-sw "^3.6.3" + +workbox-cache-expiration@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" + integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA== + dependencies: + workbox-core "^3.6.3" + +workbox-cacheable-response@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" + integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg== + dependencies: + workbox-core "^3.6.3" + +workbox-core@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" + integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ== + +workbox-google-analytics@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" + integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig== + dependencies: + workbox-background-sync "^3.6.3" + workbox-core "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + +workbox-navigation-preload@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" + integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw== + dependencies: + workbox-core "^3.6.3" + +workbox-precaching@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" + integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw== + dependencies: + workbox-core "^3.6.3" + +workbox-range-requests@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" + integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A== + dependencies: + workbox-core "^3.6.3" + +workbox-routing@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" + integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ== + dependencies: + workbox-core "^3.6.3" + +workbox-strategies@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" + integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g== + dependencies: + workbox-core "^3.6.3" + +workbox-streams@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" + integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w== + dependencies: + workbox-core "^3.6.3" + +workbox-sw@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" + integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg== worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== dependencies: errno "~0.1.7" wrap-ansi@^2.0.0: version "2.1.0" resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-fn@^0.1.0: version "0.1.5" resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" + integrity sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU= dependencies: co "3.1.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^1.1.4, write-file-atomic@^1.2.0: +write-file-atomic@^1.2.0: version "1.3.4" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -17105,6 +20031,7 @@ write-file-atomic@^1.1.4, write-file-atomic@^1.2.0: write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -17113,10 +20040,12 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: write-file-stdout@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" + integrity sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE= write-json-file@^2.2.0, write-json-file@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= dependencies: detect-indent "^5.0.0" graceful-fs "^4.1.2" @@ -17128,6 +20057,7 @@ write-json-file@^2.2.0, write-json-file@^2.3.0: write-pkg@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== dependencies: sort-keys "^2.0.0" write-json-file "^2.2.0" @@ -17135,44 +20065,47 @@ write-pkg@^3.1.0: write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= dependencies: mkdirp "^0.5.1" ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== dependencies: async-limiter "~1.0.0" ws@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" + integrity sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w== dependencies: async-limiter "~1.0.0" ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== dependencies: async-limiter "~1.0.0" safe-buffer "~5.1.0" ultron "~1.1.0" -x-is-array@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-array/-/x-is-array-0.1.0.tgz#de520171d47b3f416f5587d629b89d26b12dc29d" - x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= xhr@^2.0.1: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" + integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== dependencies: global "~4.3.0" is-function "^1.0.1" @@ -17182,6 +20115,7 @@ xhr@^2.0.1: xlsx@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/xlsx/-/xlsx-0.14.0.tgz#4da79b08ad9e32106de66613f7a0d3ce559b1fad" + integrity sha512-1MDQ7XYRj6JqbXmgCN+ivL6Nr77NzyynM2Inekr5xfmVdsr628FK1nvy6d3T7Y40fbzCj4EMaica4i6YT5UfBA== dependencies: adler-32 "~1.2.0" cfb "^1.1.0" @@ -17194,125 +20128,122 @@ xlsx@^0.14.0: xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xml-parse-from-string@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" + integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= xml-parser@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/xml-parser/-/xml-parser-1.2.1.tgz#c31f4c34f2975db82ad013222120592736156fcd" + integrity sha1-wx9MNPKXXbgq0BMiISBZJzYVb80= dependencies: debug "^2.2.0" xml2js@^0.4.5: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== dependencies: sax ">=0.6.0" xmlbuilder "~9.0.1" -xml@1.0.1: +xml@1.0.1, xml@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= xmlbuilder@~9.0.1: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= -xmldom@^0.1.27: +xmldom@^0.1.22, xmldom@^0.1.27: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" + integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== xstate@^3.1.0: version "3.3.3" resolved "https://registry.yarnpkg.com/xstate/-/xstate-3.3.3.tgz#64177cd4473d4c2424b3df7d2434d835404b09a9" + integrity sha512-p0ZYDPWxZZZRAJyD3jaGO9/MYioHuxZp6sjcLhPfBZHAprl4EDrZRGDqRVH9VvK8oa6Nrbpf+U5eNmn8KFwO3g== "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: +yallist@^2.0.0, yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= yaml-loader@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.5.0.tgz#86b1982d84a8e429e6647d93de9a0169e1c15827" + integrity sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A== dependencies: js-yaml "^3.5.2" yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= dependencies: camelcase "^4.1.0" -yargs-parser@^8.0.0, yargs-parser@^8.1.0: +yargs-parser@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== dependencies: camelcase "^4.1.0" yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= dependencies: camelcase "^4.1.0" -yargs@10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.0.0" - yargs@12.0.2, yargs@^12.0.1: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== dependencies: cliui "^4.0.0" decamelize "^2.0.0" @@ -17330,6 +20261,7 @@ yargs@12.0.2, yargs@^12.0.1: yargs@^10.0.3: version "10.1.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + integrity sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig== dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -17347,6 +20279,7 @@ yargs@^10.0.3: yargs@^11.0.0, yargs@^11.1.0: version "11.1.0" resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -17361,28 +20294,10 @@ yargs@^11.0.0, yargs@^11.1.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^4.8.1: - version "4.8.1" - resolved "http://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - 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.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= dependencies: camelcase "^4.1.0" cliui "^3.2.0" @@ -17401,6 +20316,7 @@ yargs@^8.0.2: yargs@^9.0.0, yargs@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= dependencies: camelcase "^4.1.0" cliui "^3.2.0" @@ -17419,6 +20335,7 @@ yargs@^9.0.0, yargs@^9.0.1: yargs@~3.10.0: version "3.10.0" resolved "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= dependencies: camelcase "^1.0.2" cliui "^2.1.0" @@ -17428,6 +20345,7 @@ yargs@~3.10.0: yauzl@^2.2.1, yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" @@ -17435,10 +20353,12 @@ yauzl@^2.2.1, yauzl@^2.4.2: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= yurnalist@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-0.2.1.tgz#2d32b9618ab6491891c131bd90a5295e19fd4bad" + integrity sha1-LTK5YYq2SRiRwTG9kKUpXhn9S60= dependencies: chalk "^1.1.1" death "^1.0.0" @@ -17460,17 +20380,21 @@ yurnalist@^0.2.1: zen-observable-ts@^0.8.6, zen-observable-ts@^0.8.9: version "0.8.9" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz#d3c97af08c0afdca37ebcadf7cc3ee96bda9bab1" + integrity sha512-KJz2O8FxbAdAU5CSc8qZ1K2WYEJb1HxS6XDRF+hOJ1rOYcg6eTMmS9xYHCXzqZZzKw6BbXWyF4UpwSsBQnHJeA== dependencies: zen-observable "^0.8.0" zen-observable@^0.8.0: version "0.8.9" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.9.tgz#0475c760ff0eda046bbdfa4dc3f95d392807ac53" + integrity sha512-Y9kPzjGvIZ5jchSlqlCpBW3I82zBBL4z+ulXDRVA1NwsKzjt5kwAi+gOYIy0htNkfuehGZZtP5mRXHRV6TjDWw== zone.js@^0.8.20: version "0.8.26" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d" + integrity sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA== zwitch@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.3.tgz#159fae4b3f737db1e42bf321d3423e4c96688a18" + integrity sha512-aynRpmJDw7JIq6X4NDWJoiK1yVSiG57ArWSg4HLC1SFupX5/bo0Cf4jpX0ifwuzBfxpYBuNSyvMlWNNRuy3cVA==