From 07e69be2038de51bdd829bb8298cf2e728d49007 Mon Sep 17 00:00:00 2001 From: Mikhail Novikov Date: Tue, 19 Mar 2019 15:08:24 +0200 Subject: [PATCH] feat(gatsby): allow schema customization (#11480) Allow customizing schema through new schema customization APIs --- .../index.md | 133 + examples/using-type-definitions/.gitignore | 69 + examples/using-type-definitions/.prettierrc | 5 + examples/using-type-definitions/LICENSE | 22 + examples/using-type-definitions/README.md | 97 + .../using-type-definitions/gatsby-config.js | 26 + .../using-type-definitions/gatsby-node.js | 131 + examples/using-type-definitions/package.json | 39 + .../src/components/header.js | 42 + .../src/components/image.js | 32 + .../src/components/layout.css | 624 + .../src/components/layout.js | 46 + .../src/components/seo.js | 96 + .../src/data/author.json | 16 + .../using-type-definitions/src/data/blog.json | 22 + .../src/data/comment.json | 7 + .../src/images/gatsby-astronaut.png | Bin 0 -> 167273 bytes .../src/images/gatsby-icon.png | Bin 0 -> 21212 bytes .../using-type-definitions/src/pages/404.js | 14 + .../using-type-definitions/src/pages/index.js | 65 + .../src/pages/page-2.js | 16 + examples/using-type-definitions/type-defs.gql | 4 + .../src/__tests__/extend-node.js | 75 +- .../src/__tests__/on-node-create.js | 64 +- packages/gatsby/graphql.js | 2 +- packages/gatsby/package.json | 3 +- packages/gatsby/src/bootstrap/index.js | 13 +- packages/gatsby/src/commands/develop.js | 12 +- .../src/db/__tests__/node-tracking-test.js | 21 +- .../src/db/loki/__tests__/nodes-query-test.js | 12 +- packages/gatsby/src/db/loki/nodes-query.js | 11 +- packages/gatsby/src/db/loki/nodes.js | 6 +- packages/gatsby/src/db/node-tracking.js | 4 +- packages/gatsby/src/db/nodes-query.js | 62 +- packages/gatsby/src/db/nodes.js | 19 +- .../query-runner/query-runner.js | 9 +- .../gatsby/src/redux/__tests__/redirects.js | 3 + packages/gatsby/src/redux/actions.js | 105 + packages/gatsby/src/redux/nodes.js | 4 +- packages/gatsby/src/redux/prepare-nodes.js | 129 + packages/gatsby/src/redux/reducers/index.js | 2 +- .../src/redux/reducers/schema-composer.js | 0 .../redux/reducers/schema-customization.js | 42 + .../src/redux/reducers/third-party-schemas.js | 8 - packages/gatsby/src/redux/run-sift.js | 153 +- ...s.snap => connection-input-fields.js.snap} | 0 .../data-tree-utils-test.js.snap | 85 - .../infer-graphql-type-test.js.snap | 152 - .../__snapshots__/kitchen-sink.js.snap | 80 + ...ions-test.js => build-node-connections.js} | 117 +- ...node-types-test.js => build-node-types.js} | 125 +- .../src/schema/__tests__/build-schema.js | 698 + ...s => connection-filter-on-linked-nodes.js} | 90 +- ...lds-test.js => connection-input-fields.js} | 40 +- .../gatsby/src/schema/__tests__/create-key.js | 27 - .../schema/__tests__/data-tree-utils-test.js | 517 - .../__tests__/fixtures/kitchen-sink.json | 11257 ++++++++++++++++ .../schema/__tests__/fixtures/node-model.js | 85 + .../src/schema/__tests__/fixtures/queries.js | 88 + ...fer-graphql-input-type-from-fields-test.js | 379 - .../infer-graphql-input-type-test.js | 203 - .../__tests__/infer-graphql-type-test.js | 912 -- .../src/schema/__tests__/kitchen-sink.js | 166 + .../gatsby/src/schema/__tests__/node-model.js | 366 + .../__tests__/page-dependency-resolver.js | 10 - .../gatsby/src/schema/__tests__/queries.js | 1074 ++ .../src/schema/__tests__/rebuild-schema.js | 129 + .../gatsby/src/schema/__tests__/run-query.js | 30 +- .../src/schema/build-connection-fields.js | 114 - .../src/schema/build-node-connections.js | 121 - .../gatsby/src/schema/build-node-types.js | 282 - packages/gatsby/src/schema/context.js | 18 + packages/gatsby/src/schema/create-key.js | 30 - .../gatsby/src/schema/create-sort-field.js | 50 - .../gatsby/src/schema/create-type-name.js | 28 - packages/gatsby/src/schema/data-tree-utils.js | 361 - packages/gatsby/src/schema/index.js | 90 +- .../infer-graphql-input-fields-from-fields.js | 227 - .../src/schema/infer-graphql-input-fields.js | 321 - .../gatsby/src/schema/infer-graphql-type.js | 419 - .../__snapshots__/example-value.js.snap | 167 + .../__tests__/__snapshots__/infer.js.snap | 252 + .../schema/infer/__tests__/example-value.js | 737 + .../src/schema/infer/__tests__/infer-input.js | 207 + .../src/schema/infer/__tests__/infer.js | 1055 ++ .../src/schema/infer/__tests__/merge-types.js | 279 + .../src/schema/infer/add-inferred-fields.js | 419 + .../gatsby/src/schema/infer/example-value.js | 187 + .../src/schema/infer/get-infer-config.js | 49 + packages/gatsby/src/schema/infer/index.js | 113 + .../src/schema/infer/is-32-bit-integer.js | 3 + packages/gatsby/src/schema/infer/is-file.js | 85 + .../{ => infer}/type-conflict-reporter.js | 14 +- packages/gatsby/src/schema/lazy-fields.js | 64 - packages/gatsby/src/schema/node-interface.js | 28 - packages/gatsby/src/schema/node-model.js | 276 + packages/gatsby/src/schema/node.js | 4 - .../src/schema/page-dependency-resolver.js | 36 - packages/gatsby/src/schema/resolvers.js | 198 + packages/gatsby/src/schema/schema-composer.js | 15 + packages/gatsby/src/schema/schema.js | 507 + .../schema/types/__tests__/filter-input.js | 56 + .../schema/types/__tests__/sort-and-filter.js | 453 + .../schema/types/{type-date.js => date.js} | 102 +- .../gatsby/src/schema/types/directives.js | 37 + packages/gatsby/src/schema/types/filter.js | 192 + .../gatsby/src/schema/types/node-interface.js | 72 + .../gatsby/src/schema/types/pagination.js | 98 + packages/gatsby/src/schema/types/sort.js | 79 + .../gatsby/src/schema/types/type-builders.js | 69 + packages/gatsby/src/schema/types/type-file.js | 175 - packages/gatsby/src/utils/api-node-docs.js | 68 + packages/gatsby/src/utils/api-runner-node.js | 12 + www/src/data/sidebars/doc-links.yaml | 2 + www/src/pages/docs/node-api-helpers.js | 7 +- www/src/pages/docs/node-model.js | 86 + yarn.lock | 2619 +--- 117 files changed, 22046 insertions(+), 7732 deletions(-) create mode 100644 docs/blog/2019-03-18-releasing-new-schema-customization/index.md create mode 100644 examples/using-type-definitions/.gitignore create mode 100644 examples/using-type-definitions/.prettierrc create mode 100644 examples/using-type-definitions/LICENSE create mode 100644 examples/using-type-definitions/README.md create mode 100644 examples/using-type-definitions/gatsby-config.js create mode 100644 examples/using-type-definitions/gatsby-node.js create mode 100644 examples/using-type-definitions/package.json create mode 100644 examples/using-type-definitions/src/components/header.js create mode 100644 examples/using-type-definitions/src/components/image.js create mode 100644 examples/using-type-definitions/src/components/layout.css create mode 100644 examples/using-type-definitions/src/components/layout.js create mode 100644 examples/using-type-definitions/src/components/seo.js create mode 100644 examples/using-type-definitions/src/data/author.json create mode 100644 examples/using-type-definitions/src/data/blog.json create mode 100644 examples/using-type-definitions/src/data/comment.json create mode 100644 examples/using-type-definitions/src/images/gatsby-astronaut.png create mode 100644 examples/using-type-definitions/src/images/gatsby-icon.png create mode 100644 examples/using-type-definitions/src/pages/404.js create mode 100644 examples/using-type-definitions/src/pages/index.js create mode 100644 examples/using-type-definitions/src/pages/page-2.js create mode 100644 examples/using-type-definitions/type-defs.gql create mode 100644 packages/gatsby/src/redux/prepare-nodes.js create mode 100644 packages/gatsby/src/redux/reducers/schema-composer.js create mode 100644 packages/gatsby/src/redux/reducers/schema-customization.js delete mode 100644 packages/gatsby/src/redux/reducers/third-party-schemas.js rename packages/gatsby/src/schema/__tests__/__snapshots__/{connection-input-fields-test.js.snap => connection-input-fields.js.snap} (100%) delete mode 100644 packages/gatsby/src/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap delete mode 100644 packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-type-test.js.snap create mode 100644 packages/gatsby/src/schema/__tests__/__snapshots__/kitchen-sink.js.snap rename packages/gatsby/src/schema/__tests__/{build-node-connections-test.js => build-node-connections.js} (68%) rename packages/gatsby/src/schema/__tests__/{build-node-types-test.js => build-node-types.js} (75%) create mode 100644 packages/gatsby/src/schema/__tests__/build-schema.js rename packages/gatsby/src/schema/__tests__/{connections-filter-on-linked-nodes.js => connection-filter-on-linked-nodes.js} (76%) rename packages/gatsby/src/schema/__tests__/{connection-input-fields-test.js => connection-input-fields.js} (89%) delete mode 100644 packages/gatsby/src/schema/__tests__/create-key.js delete mode 100644 packages/gatsby/src/schema/__tests__/data-tree-utils-test.js create mode 100644 packages/gatsby/src/schema/__tests__/fixtures/kitchen-sink.json create mode 100644 packages/gatsby/src/schema/__tests__/fixtures/node-model.js create mode 100644 packages/gatsby/src/schema/__tests__/fixtures/queries.js delete mode 100644 packages/gatsby/src/schema/__tests__/infer-graphql-input-type-from-fields-test.js delete mode 100644 packages/gatsby/src/schema/__tests__/infer-graphql-input-type-test.js delete mode 100644 packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js create mode 100644 packages/gatsby/src/schema/__tests__/kitchen-sink.js create mode 100644 packages/gatsby/src/schema/__tests__/node-model.js delete mode 100644 packages/gatsby/src/schema/__tests__/page-dependency-resolver.js create mode 100644 packages/gatsby/src/schema/__tests__/queries.js create mode 100644 packages/gatsby/src/schema/__tests__/rebuild-schema.js delete mode 100644 packages/gatsby/src/schema/build-connection-fields.js delete mode 100644 packages/gatsby/src/schema/build-node-connections.js delete mode 100644 packages/gatsby/src/schema/build-node-types.js create mode 100644 packages/gatsby/src/schema/context.js delete mode 100644 packages/gatsby/src/schema/create-key.js delete mode 100644 packages/gatsby/src/schema/create-sort-field.js delete mode 100644 packages/gatsby/src/schema/create-type-name.js delete mode 100644 packages/gatsby/src/schema/data-tree-utils.js delete mode 100644 packages/gatsby/src/schema/infer-graphql-input-fields-from-fields.js delete mode 100644 packages/gatsby/src/schema/infer-graphql-input-fields.js delete mode 100644 packages/gatsby/src/schema/infer-graphql-type.js create mode 100644 packages/gatsby/src/schema/infer/__tests__/__snapshots__/example-value.js.snap create mode 100644 packages/gatsby/src/schema/infer/__tests__/__snapshots__/infer.js.snap create mode 100644 packages/gatsby/src/schema/infer/__tests__/example-value.js create mode 100644 packages/gatsby/src/schema/infer/__tests__/infer-input.js create mode 100644 packages/gatsby/src/schema/infer/__tests__/infer.js create mode 100644 packages/gatsby/src/schema/infer/__tests__/merge-types.js create mode 100644 packages/gatsby/src/schema/infer/add-inferred-fields.js create mode 100644 packages/gatsby/src/schema/infer/example-value.js create mode 100644 packages/gatsby/src/schema/infer/get-infer-config.js create mode 100644 packages/gatsby/src/schema/infer/index.js create mode 100644 packages/gatsby/src/schema/infer/is-32-bit-integer.js create mode 100644 packages/gatsby/src/schema/infer/is-file.js rename packages/gatsby/src/schema/{ => infer}/type-conflict-reporter.js (90%) delete mode 100644 packages/gatsby/src/schema/lazy-fields.js delete mode 100644 packages/gatsby/src/schema/node-interface.js create mode 100644 packages/gatsby/src/schema/node-model.js delete mode 100644 packages/gatsby/src/schema/node.js delete mode 100644 packages/gatsby/src/schema/page-dependency-resolver.js create mode 100644 packages/gatsby/src/schema/resolvers.js create mode 100644 packages/gatsby/src/schema/schema-composer.js create mode 100644 packages/gatsby/src/schema/schema.js create mode 100644 packages/gatsby/src/schema/types/__tests__/filter-input.js create mode 100644 packages/gatsby/src/schema/types/__tests__/sort-and-filter.js rename packages/gatsby/src/schema/types/{type-date.js => date.js} (57%) create mode 100644 packages/gatsby/src/schema/types/directives.js create mode 100644 packages/gatsby/src/schema/types/filter.js create mode 100644 packages/gatsby/src/schema/types/node-interface.js create mode 100644 packages/gatsby/src/schema/types/pagination.js create mode 100644 packages/gatsby/src/schema/types/sort.js create mode 100644 packages/gatsby/src/schema/types/type-builders.js delete mode 100644 packages/gatsby/src/schema/types/type-file.js create mode 100644 www/src/pages/docs/node-model.js diff --git a/docs/blog/2019-03-18-releasing-new-schema-customization/index.md b/docs/blog/2019-03-18-releasing-new-schema-customization/index.md new file mode 100644 index 0000000000000..88c407e1ceed7 --- /dev/null +++ b/docs/blog/2019-03-18-releasing-new-schema-customization/index.md @@ -0,0 +1,133 @@ +--- +title: New Schema Customization API - Available in Gatsby 2.2.0 +date: 2019-03-19 +author: Mikhail Novikov +tags: + - schema + - graphql +--- + +Two weeks ago, we announced our plans for a [new schema customization API](/blog/2019-03-04-new-schema-customization/). Today we are making this set of new APIs and enhancements available to all in `gatsby`@`2.2.0`. + +First, install the latest and greatest version of `gatsby`, like so: + +```shell +npm install gatsby --save +``` + +Next, continue reading below to see if any of the great, new features we've enabled scratch a particular itch. We feel very confident they will πŸ’œ + +# Recap of schema customization + +Before this change, the Gatsby GraphQL schema was generated automatically from the data that the user added to Gatsby. While very convenient and easy to start, changes to the data could cause changes to the schema, which could cause breakage in unrelated locations. Those bugs were confusing and hard to debug. To alleviate this problem, we've added a schema customization API that lets you customize, fix, and enhance types in your Gatsby GraphQL schema. + +There are two new APIs, `createTypes` and `createResolvers`. + +## `createTypes` + +`createTypes` can be used to define, fix, or extend a Gatsby GraphQL type that represents some of your app's data. Think of it like an escape hatch to politely inform Gatsby of your data's shape. + +```js:title=gatsby-node.js +exports.sourceNodes = ({ actions }) => { + const { createTypes } = actions + const typeDefs = ` + type AuthorJson implements Node { + name: String + birthday: Date + } + ` + createTypes(typeDefs) +} +``` + +After adding this to your [gatsby-node](/docs/gatsby-project-structure/#files) file, the `AuthorJson` type will always have fields name and birthday, regardless of the automatically inferred data shape. The rest of the fields will still be inferred normally, allowing you to enjoy the default benefits of Gatsby schema inference. + +## `createResolvers` + +`createResolvers` allows doing additional customization after all schema processing has been finished. Thus it can be used to add fields to any types, including root types like `Query` and types from third party schemas. + +```js:title=gatsby-node.js +createResolvers({ + Query: { + allAuthorFullNames: { + type: `[String!]!`, + resolve(source, args, context, info) { + const authors = context.nodeModel.getAllNodes({ + type: `AuthorJson`, + }) + return authors.map(author => author.name) + }, + }, + }, +}) +``` + +## The Type Builder API + +While `createTypes` accepts GraphQL types as a [Schema Definition Language (SDL)](https://graphql.org/learn/schema/) string, we've also added an option to use `graphql-js` types so that users could create types with resolvers. However, `graphql-js` is somewhat verbose and it can be hard to refer to types that don't yet exist or don't exist in a current scope. Therefore, we decided to add another programmatic API that combines brevity of SDL with flexibility of `graphql-js`. + +We refer to this API as the _Type Builder API_. It is available in the `schema` field of the arguments object passed to [Gatsby Node APIs](/docs/node-apis/). + +```js:title=gatsby-node.js +exports.sourceNodes = ({ actions, schema }) => { + const { createTypes } = actions + createTypes([ + schema.buildObjectType({ + name: `CommentJson`, + fields: { + text: `String!`, + blog: { + type: `BlogJson`, + resolve(parent, args, context) { + return context.nodeModel.getNodeById({ + id: parent.author, + type: `BlogJson`, + }) + }, + }, + author: { + type: `AuthorJson`, + resolve(parent, args, context) { + return context.nodeModel.getNodeById({ + id: parent.author, + type: `AuthorJson`, + }) + }, + }, + }, + interfaces: [`Node`], + }), + ]) +} +``` + +# Potential for Breaking Changes + +We have tried to avoid any breaking changes in this refactor of the underlying GraphQL layer, testing it in notable Gatsby sites and ensuring all tests were passing. However, there are areas where we needed to introduce more stable naming, and in these instances it _could_ be possible that a breaking change was introduced if you were relying on this undocumented API. + +Specifically, before this refactor Gatsby type names weren't stable. They could have names like `frontmatter_2` because of some quirks in our schema generation. Now the types names are **stable** and **defined**. For a `Node`, it's always a Pascal Camel Cased name of the `Node` type (for example, `MarkdownRemark`). For an inline object, it's the name of the node plus the name of the field, again Pascal Camel Cased. So `frontmatter_2` would be available as `MarkdownRemarkFrontmatter` now. If you've had fragments referring to some types by their old names, you may need to change it to new names, e.g.: + +```diff +- fragment someFragment on frontmatter_2 { ++ fragment someFragment on MarkdownRemarkFrontmatter { + title +} +``` + +Another change relates to inference. Previously, ordering of the Nodes in your data source could affect which type Gatsby inferred. Now, we always consider all possible types, thus you might experience type conflicts for conflicting data sources. They can be solved by either fixing the data or defining a type using new schema customization APIs that we've exposed. + +# Wrap-up + +As next steps, we will work on adding more convenient tooling to "freeze" your schema type definitions, so that you can quickly start using this feature. We will also be working on improving API docs for this. + +We strongly believe that these new APIs are the foundation of an evolutionary leap of the Gatsby GraphQL API. These changes make the GraphQL API more stable, more robust, and more easily customizable. They will enable further customization and use cases, like [theming](/blog/2018-11-11-introducing-gatsby-themes/) and more still that we haven't even envisioned yet. We truly can't wait to see the great things you build and how you use these new APIs and improvements powered by Gatsby and its improved GraphQL layer. We got some very enthusiastic feedback about this feature and we are happy to have it released. + +

Wow, this is huge, and could potentially solve most of the issues users are currently experiencing integrating any CMS with @gatsbyjs! Great work guys, can't wait to do some tests with our source plugin! πŸ† https://t.co/REcehYiU8V

— DatoCMS (@datocms) March 8, 2019
+ +## Additional Resources + +- [Meta issue](https://github.com/gatsbyjs/gatsby/issues/12272) for bug reports +- [API docs for createTypes](/docs/actions/#createTypes) +- [API docs for createResolvers](/docs/node-apis/#createResolvers) +- [API docs for node model](/docs/node-model) +- [Using type definitions example](https://github.com/gatsbyjs/gatsby/tree/master/examples/using-type-definitions) diff --git a/examples/using-type-definitions/.gitignore b/examples/using-type-definitions/.gitignore new file mode 100644 index 0000000000000..e86fe25559ba0 --- /dev/null +++ b/examples/using-type-definitions/.gitignore @@ -0,0 +1,69 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# dotenv environment variables file +.env + +# gatsby files +.cache/ +public + +# Mac files +.DS_Store + +# Yarn +yarn-error.log +.pnp/ +.pnp.js +# Yarn Integrity file +.yarn-integrity diff --git a/examples/using-type-definitions/.prettierrc b/examples/using-type-definitions/.prettierrc new file mode 100644 index 0000000000000..36301bc5cff6c --- /dev/null +++ b/examples/using-type-definitions/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "es5" +} diff --git a/examples/using-type-definitions/LICENSE b/examples/using-type-definitions/LICENSE new file mode 100644 index 0000000000000..5169a5e4135e9 --- /dev/null +++ b/examples/using-type-definitions/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 gatsbyjs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/examples/using-type-definitions/README.md b/examples/using-type-definitions/README.md new file mode 100644 index 0000000000000..11e2af0eab56b --- /dev/null +++ b/examples/using-type-definitions/README.md @@ -0,0 +1,97 @@ + +

+ + Gatsby + +

+

+ Gatsby's default starter +

+ +Kick off your project with this default boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React. + +_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._ + +## πŸš€ Quick start + +1. **Create a Gatsby site.** + + Use the Gatsby CLI to create a new site, specifying the default starter. + + ```sh + # create a new Gatsby site using the default starter + gatsby new my-default-starter https://github.com/gatsbyjs/gatsby-starter-default + ``` + +1. **Start developing.** + + Navigate into your new site’s directory and start it up. + + ```sh + cd my-default-starter/ + gatsby develop + ``` + +1. **Open the source code and start editing!** + + Your site is now running at `http://localhost:8000`! + + _Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql)._ + + Open the `my-default-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time! + +## 🧐 What's inside? + +A quick look at the top-level files and directories you'll see in a Gatsby project. + + . + β”œβ”€β”€ node_modules + β”œβ”€β”€ src + β”œβ”€β”€ .gitignore + β”œβ”€β”€ .prettierrc + β”œβ”€β”€ gatsby-browser.js + β”œβ”€β”€ gatsby-config.js + β”œβ”€β”€ gatsby-node.js + β”œβ”€β”€ gatsby-ssr.js + β”œβ”€β”€ LICENSE + β”œβ”€β”€ package-lock.json + β”œβ”€β”€ package.json + └── README.md + +1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed. + +2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for β€œsource code”. + +3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for. + +4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent. + +5. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser. + +6. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail). + +7. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process. + +8. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering. + +9. **`LICENSE`**: Gatsby is licensed under the MIT license. + +10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).** + +11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project. + +12. **`README.md`**: A text file containing useful reference information about your project. + +## πŸŽ“ Learning Gatsby + +Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start: + +- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process. + +- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar. + +## πŸ’« Deploy + +[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-default) + + diff --git a/examples/using-type-definitions/gatsby-config.js b/examples/using-type-definitions/gatsby-config.js new file mode 100644 index 0000000000000..17c273c627a3b --- /dev/null +++ b/examples/using-type-definitions/gatsby-config.js @@ -0,0 +1,26 @@ +module.exports = { + siteMetadata: { + title: `Gatsby Default Starter`, + description: `Kick off your next, great Gatsby project with this default starter. This barebones starter ships with the main Gatsby configuration files you might need.`, + author: `@gatsbyjs`, + }, + plugins: [ + { + resolve: `gatsby-source-filesystem`, + options: { + name: `images`, + path: `./src/images`, + }, + }, + `gatsby-transformer-sharp`, + `gatsby-plugin-sharp`, + `gatsby-transformer-json`, + { + resolve: `gatsby-source-filesystem`, + options: { + name: `data`, + path: `./src/data/`, + }, + }, + ], +} diff --git a/examples/using-type-definitions/gatsby-node.js b/examples/using-type-definitions/gatsby-node.js new file mode 100644 index 0000000000000..75b79eb2ac196 --- /dev/null +++ b/examples/using-type-definitions/gatsby-node.js @@ -0,0 +1,131 @@ +const fs = require(`fs`) + +exports.sourceNodes = ({ actions, schema }) => { + const { createTypes } = actions + + // Type definitions can be provided in SDL + const typeDefs = ` + type AuthorJson implements Node { + name: String! + firstName: String! + email: String! + picture: File + } + + type BlogJson implements Node { + title: String! + authors: [AuthorJson] + text: String + date: Date + tags: [String] + meta: Metadata + } + ` + createTypes(typeDefs) + + // Alternatively, you can use type builders to construct types + createTypes([ + schema.buildObjectType({ + name: `CommentJson`, + fields: { + text: `String!`, + blog: { + type: `BlogJson`, + resolve(parent, args, context) { + return context.nodeModel.getNodeById({ + id: parent.author, + type: `BlogJson`, + }) + }, + }, + author: { + type: `AuthorJson`, + resolve(parent, args, context) { + return context.nodeModel.getNodeById({ + id: parent.author, + type: `AuthorJson`, + }) + }, + }, + }, + interfaces: [`Node`], + }), + ]) + + // It is of course also possible to read type definitions from a .gql file, + // which will give you proper syntax highlighting + const additionalTypeDefs = fs.readFileSync(`type-defs.gql`, { + encoding: `utf-8`, + }) + createTypes(additionalTypeDefs) +} + +exports.createResolvers = ({ createResolvers }) => { + createResolvers({ + Query: { + // Create a new root query field. + allAuthorFullNames: { + type: [`String!`], + resolve(source, args, context, info) { + const authors = context.nodeModel.getAllNodes({ + type: `AuthorJson`, + }) + return authors.map(author => `${author.name}, ${author.firstName}`) + }, + }, + // Field resolvers can use all of Gatsby's querying capabilities + allPostsTaggedWithBaz: { + type: [`BlogJson`], + resolve(source, args, context, info) { + return context.nodeModel.runQuery({ + query: { filter: { tags: { eq: `baz` } } }, + type: `BlogJson`, + firstOnly: false, + }) + }, + }, + }, + AuthorJson: { + // Add a field to an existing type by providing a field config. + // Note that added fields will not be available in the input filter + // when no type definitions are provided wth `createTypes`. + posts: { + type: [`BlogJson`], + resolve(source, args, context, info) { + // We use an author's `email` as foreign key in `BlogJson.authors` + const fieldValue = source.email + + const posts = context.nodeModel.getAllNodes({ + type: `BlogJson`, + }) + return posts.filter(post => + (post.authors || []).some(author => author === fieldValue) + ) + }, + }, + }, + BlogJson: { + // Add a resolver to a field defined with `createTypes`. + authors: { + resolve(source, args, context, info) { + const emails = source[info.fieldName] + if (emails == null) return null + + const authors = context.nodeModel.getAllNodes({ + type: `AuthorJson`, + }) + return authors.filter(author => emails.includes(author.email)) + }, + }, + comments: { + type: `[CommentJson!]!`, + resolve(source, args, context, info) { + const result = context.nodeModel.getAllNodes({ + type: `CommentJson`, + }) + return result.filter(({ blog }) => blog === source.id) + }, + }, + }, + }) +} diff --git a/examples/using-type-definitions/package.json b/examples/using-type-definitions/package.json new file mode 100644 index 0000000000000..4404ea8a12137 --- /dev/null +++ b/examples/using-type-definitions/package.json @@ -0,0 +1,39 @@ +{ + "name": "using-type-definitions", + "private": true, + "description": "An example site using createTypes action and createResolvers API", + "version": "0.1.0", + "dependencies": { + "gatsby": "schema-customization", + "gatsby-image": "^2.0.20", + "gatsby-plugin-sharp": "^2.0.14", + "gatsby-source-filesystem": "^2.0.13", + "gatsby-transformer-json": "^2.1.7", + "gatsby-transformer-sharp": "^2.1.8", + "prop-types": "^15.6.2", + "react": "^16.6.3", + "react-dom": "^16.6.3", + "react-helmet": "^5.2.0" + }, + "keywords": [ + "gatsby" + ], + "license": "MIT", + "scripts": { + "build": "gatsby build", + "develop": "gatsby develop", + "start": "npm run develop", + "format": "prettier --write \"src/**/*.js\"", + "test": "echo \"Write tests! -> https://gatsby.app/unit-testing\"" + }, + "devDependencies": { + "prettier": "^1.15.2" + }, + "repository": { + "type": "git", + "url": "https://github.com/gatsbyjs/gatsby-starter-default" + }, + "bugs": { + "url": "https://github.com/gatsbyjs/gatsby/issues" + } +} diff --git a/examples/using-type-definitions/src/components/header.js b/examples/using-type-definitions/src/components/header.js new file mode 100644 index 0000000000000..235f8834818a3 --- /dev/null +++ b/examples/using-type-definitions/src/components/header.js @@ -0,0 +1,42 @@ +import { Link } from 'gatsby' +import PropTypes from 'prop-types' +import React from 'react' + +const Header = ({ siteTitle }) => ( +
+
+

+ + {siteTitle} + +

+
+
+) + +Header.propTypes = { + siteTitle: PropTypes.string, +} + +Header.defaultProps = { + siteTitle: ``, +} + +export default Header diff --git a/examples/using-type-definitions/src/components/image.js b/examples/using-type-definitions/src/components/image.js new file mode 100644 index 0000000000000..9ed27ee238349 --- /dev/null +++ b/examples/using-type-definitions/src/components/image.js @@ -0,0 +1,32 @@ +import React from 'react' +import { StaticQuery, graphql } from 'gatsby' +import Img from 'gatsby-image' + +/* + * This component is built using `gatsby-image` to automatically serve optimized + * images with lazy loading and reduced file sizes. The image is loaded using a + * `StaticQuery`, which allows us to load the image from directly within this + * component, rather than having to pass the image data down from pages. + * + * For more information, see the docs: + * - `gatsby-image`: https://gatsby.app/gatsby-image + * - `StaticQuery`: https://gatsby.app/staticquery + */ + +const Image = () => ( + } + /> +) +export default Image diff --git a/examples/using-type-definitions/src/components/layout.css b/examples/using-type-definitions/src/components/layout.css new file mode 100644 index 0000000000000..68aa9337485f7 --- /dev/null +++ b/examples/using-type-definitions/src/components/layout.css @@ -0,0 +1,624 @@ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +progress { + vertical-align: baseline; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:active, +a:hover { + outline-width: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} +b, +strong { + font-weight: inherit; + font-weight: bolder; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background-color: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +img { + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +button, +input, +optgroup, +select, +textarea { + font: inherit; + margin: 0; +} +optgroup { + font-weight: 700; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +[type='reset'], +[type='submit'], +button, +html [type='button'] { + -webkit-appearance: button; +} +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type='button']:-moz-focusring, +[type='reset']:-moz-focusring, +[type='submit']:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +textarea { + overflow: auto; +} +[type='checkbox'], +[type='radio'] { + box-sizing: border-box; + padding: 0; +} +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} +[type='search'] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-input-placeholder { + color: inherit; + opacity: 0.54; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +html { + font: 112.5%/1.45em georgia, serif; + box-sizing: border-box; + overflow-y: scroll; +} +* { + box-sizing: inherit; +} +*:before { + box-sizing: inherit; +} +*:after { + box-sizing: inherit; +} +body { + color: hsla(0, 0%, 0%, 0.8); + font-family: georgia, serif; + font-weight: normal; + word-wrap: break-word; + font-kerning: normal; + -moz-font-feature-settings: 'kern', 'liga', 'clig', 'calt'; + -ms-font-feature-settings: 'kern', 'liga', 'clig', 'calt'; + -webkit-font-feature-settings: 'kern', 'liga', 'clig', 'calt'; + font-feature-settings: 'kern', 'liga', 'clig', 'calt'; +} +img { + max-width: 100%; + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +h1 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 2.25rem; + line-height: 1.1; +} +h2 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1.62671rem; + line-height: 1.1; +} +h3 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1.38316rem; + line-height: 1.1; +} +h4 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1rem; + line-height: 1.1; +} +h5 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 0.85028rem; + line-height: 1.1; +} +h6 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 0.78405rem; + line-height: 1.1; +} +hgroup { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +ul { + margin-left: 1.45rem; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + list-style-position: outside; + list-style-image: none; +} +ol { + margin-left: 1.45rem; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + list-style-position: outside; + list-style-image: none; +} +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +dd { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +p { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +figure { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +pre { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + font-size: 0.85rem; + line-height: 1.42; + background: hsla(0, 0%, 0%, 0.04); + border-radius: 3px; + overflow: auto; + word-wrap: normal; + padding: 1.45rem; +} +table { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + font-size: 1rem; + line-height: 1.45rem; + border-collapse: collapse; + width: 100%; +} +fieldset { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +blockquote { + margin-left: 1.45rem; + margin-right: 1.45rem; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +form { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +noscript { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +iframe { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +hr { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: calc(1.45rem - 1px); + background: hsla(0, 0%, 0%, 0.2); + border: none; + height: 1px; +} +address { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +b { + font-weight: bold; +} +strong { + font-weight: bold; +} +dt { + font-weight: bold; +} +th { + font-weight: bold; +} +li { + margin-bottom: calc(1.45rem / 2); +} +ol li { + padding-left: 0; +} +ul li { + padding-left: 0; +} +li > ol { + margin-left: 1.45rem; + margin-bottom: calc(1.45rem / 2); + margin-top: calc(1.45rem / 2); +} +li > ul { + margin-left: 1.45rem; + margin-bottom: calc(1.45rem / 2); + margin-top: calc(1.45rem / 2); +} +blockquote *:last-child { + margin-bottom: 0; +} +li *:last-child { + margin-bottom: 0; +} +p *:last-child { + margin-bottom: 0; +} +li > p { + margin-bottom: calc(1.45rem / 2); +} +code { + font-size: 0.85rem; + line-height: 1.45rem; +} +kbd { + font-size: 0.85rem; + line-height: 1.45rem; +} +samp { + font-size: 0.85rem; + line-height: 1.45rem; +} +abbr { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; +} +acronym { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; +} +abbr[title] { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; + text-decoration: none; +} +thead { + text-align: left; +} +td, +th { + text-align: left; + border-bottom: 1px solid hsla(0, 0%, 0%, 0.12); + font-feature-settings: 'tnum'; + -moz-font-feature-settings: 'tnum'; + -ms-font-feature-settings: 'tnum'; + -webkit-font-feature-settings: 'tnum'; + padding-left: 0.96667rem; + padding-right: 0.96667rem; + padding-top: 0.725rem; + padding-bottom: calc(0.725rem - 1px); +} +th:first-child, +td:first-child { + padding-left: 0; +} +th:last-child, +td:last-child { + padding-right: 0; +} +tt, +code { + background-color: hsla(0, 0%, 0%, 0.04); + border-radius: 3px; + font-family: 'SFMono-Regular', Consolas, 'Roboto Mono', 'Droid Sans Mono', + 'Liberation Mono', Menlo, Courier, monospace; + padding: 0; + padding-top: 0.2em; + padding-bottom: 0.2em; +} +pre code { + background: none; + line-height: 1.42; +} +code:before, +code:after, +tt:before, +tt:after { + letter-spacing: -0.2em; + content: ' '; +} +pre code:before, +pre code:after, +pre tt:before, +pre tt:after { + content: ''; +} +@media only screen and (max-width: 480px) { + html { + font-size: 100%; + } +} diff --git a/examples/using-type-definitions/src/components/layout.js b/examples/using-type-definitions/src/components/layout.js new file mode 100644 index 0000000000000..0750dcd6422fe --- /dev/null +++ b/examples/using-type-definitions/src/components/layout.js @@ -0,0 +1,46 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StaticQuery, graphql } from 'gatsby' + +import Header from './header' +import './layout.css' + +const Layout = ({ children }) => ( + ( + <> +
+
+ {children} +
+ Β© {new Date().getFullYear()}, Built with + {` `} + Gatsby +
+
+ + )} + /> +) + +Layout.propTypes = { + children: PropTypes.node.isRequired, +} + +export default Layout diff --git a/examples/using-type-definitions/src/components/seo.js b/examples/using-type-definitions/src/components/seo.js new file mode 100644 index 0000000000000..f639bd883cdf1 --- /dev/null +++ b/examples/using-type-definitions/src/components/seo.js @@ -0,0 +1,96 @@ +import React from 'react' +import PropTypes from 'prop-types' +import Helmet from 'react-helmet' +import { StaticQuery, graphql } from 'gatsby' + +function SEO({ description, lang, meta, keywords, title }) { + return ( + { + const metaDescription = + description || data.site.siteMetadata.description + return ( + 0 + ? { + name: `keywords`, + content: keywords.join(`, `), + } + : [] + ) + .concat(meta)} + /> + ) + }} + /> + ) +} + +SEO.defaultProps = { + lang: `en`, + meta: [], + keywords: [], +} + +SEO.propTypes = { + description: PropTypes.string, + lang: PropTypes.string, + meta: PropTypes.array, + keywords: PropTypes.arrayOf(PropTypes.string), + title: PropTypes.string.isRequired, +} + +export default SEO + +const detailsQuery = graphql` + query DefaultSEOQuery { + site { + siteMetadata { + title + description + author + } + } + } +` diff --git a/examples/using-type-definitions/src/data/author.json b/examples/using-type-definitions/src/data/author.json new file mode 100644 index 0000000000000..e42a1e2160170 --- /dev/null +++ b/examples/using-type-definitions/src/data/author.json @@ -0,0 +1,16 @@ +[ + { + "id": "author-1", + "name": "Novikov", + "firstName": "Mikhail", + "email": "m@example.com", + "picture": "../images/gatsby-astronaut.png" + }, + { + "id": "author-2", + "name": "Probst", + "firstName": "Stefan", + "email": "s@example.com", + "picture": "../images/gatsby-astronaut.png" + } +] diff --git a/examples/using-type-definitions/src/data/blog.json b/examples/using-type-definitions/src/data/blog.json new file mode 100644 index 0000000000000..d24a819092b3b --- /dev/null +++ b/examples/using-type-definitions/src/data/blog.json @@ -0,0 +1,22 @@ +[ + { + "id": "blog-1", + "title": "Gatsby is pretty amazing", + "authors": ["m@example.com"], + "date": "2019-01-01", + "tags": ["foo", "bar"] + }, + { + "id": "blog-2", + "title": "But Gatsby blog posts might not have an author", + "date": "2018-01-01", + "tags": ["baz", "bar"] + }, + { + "id": "blog-3", + "title": "Or they might have more than one author", + "authors": ["m@example.com", "s@example.com"], + "date": "2017-01-01", + "tags": ["baz"] + } +] diff --git a/examples/using-type-definitions/src/data/comment.json b/examples/using-type-definitions/src/data/comment.json new file mode 100644 index 0000000000000..ab82243acc725 --- /dev/null +++ b/examples/using-type-definitions/src/data/comment.json @@ -0,0 +1,7 @@ +[ + { + "text": "Wow, so cool!", + "blog": "blog-1", + "author": "author-1" + } +] diff --git a/examples/using-type-definitions/src/images/gatsby-astronaut.png b/examples/using-type-definitions/src/images/gatsby-astronaut.png new file mode 100644 index 0000000000000000000000000000000000000000..da58ece0a8c5b4f0e4d25fa443e65278349b4f3a GIT binary patch literal 167273 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

RzA~%3+!rm2%Do1R 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 NNQ%mdR0!#R{eKbVnbrUR literal 0 HcmV?d00001 diff --git a/examples/using-type-definitions/src/images/gatsby-icon.png b/examples/using-type-definitions/src/images/gatsby-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..908bc78a7f5596fab5a638d6ac07e331dc4c74d4 GIT binary patch literal 21212 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 Pwx}U%bK8?;ra1Edyv(7f literal 0 HcmV?d00001 diff --git a/examples/using-type-definitions/src/pages/404.js b/examples/using-type-definitions/src/pages/404.js new file mode 100644 index 0000000000000..77a691f9da56d --- /dev/null +++ b/examples/using-type-definitions/src/pages/404.js @@ -0,0 +1,14 @@ +import React from 'react' + +import Layout from '../components/layout' +import SEO from '../components/seo' + +const NotFoundPage = () => ( + + +

NOT FOUND

+

You just hit a route that doesn't exist... the sadness.

+ +) + +export default NotFoundPage diff --git a/examples/using-type-definitions/src/pages/index.js b/examples/using-type-definitions/src/pages/index.js new file mode 100644 index 0000000000000..d64b7eff6973d --- /dev/null +++ b/examples/using-type-definitions/src/pages/index.js @@ -0,0 +1,65 @@ +import React from 'react' +import { Link, graphql } from 'gatsby' + +import Layout from '../components/layout' +import SEO from '../components/seo' + +const IndexPage = ({ data }) => ( + + +

Hi people

+

Welcome to your new Gatsby site.

+

Now go build something great.

+
+ {data.allAuthorJson.edges.map(({ node }) => ( +
+

+ Posts by {node.firstName} {node.name} +

+
    + {node.posts.map(post => ( +
  • +
    {post.title}
    +
      + {post.comments.map((comment, i) => ( +
    • + {comment.author.name} - {comment.text} +
    • + ))} +
    +
  • + ))} +
+
+ ))} +
+ + Go to page 2 +
+) + +export default IndexPage + +export const query = graphql` + { + allAuthorJson { + edges { + node { + id + name + firstName + posts { + id + title + comments { + text + author { + name + } + } + } + } + } + } + } +` diff --git a/examples/using-type-definitions/src/pages/page-2.js b/examples/using-type-definitions/src/pages/page-2.js new file mode 100644 index 0000000000000..6d8cfa70f5fec --- /dev/null +++ b/examples/using-type-definitions/src/pages/page-2.js @@ -0,0 +1,16 @@ +import React from 'react' +import { Link } from 'gatsby' + +import Layout from '../components/layout' +import SEO from '../components/seo' + +const SecondPage = () => ( + + +

Hi from the second page

+

Welcome to page 2

+ Go back to the homepage +
+) + +export default SecondPage diff --git a/examples/using-type-definitions/type-defs.gql b/examples/using-type-definitions/type-defs.gql new file mode 100644 index 0000000000000..de80b35c7119e --- /dev/null +++ b/examples/using-type-definitions/type-defs.gql @@ -0,0 +1,4 @@ +type Metadata { + publishedAt: Date + updatedAt: Date +} diff --git a/packages/gatsby-transformer-remark/src/__tests__/extend-node.js b/packages/gatsby-transformer-remark/src/__tests__/extend-node.js index 435fc8b8d1862..27fe09bfbe6e1 100644 --- a/packages/gatsby-transformer-remark/src/__tests__/extend-node.js +++ b/packages/gatsby-transformer-remark/src/__tests__/extend-node.js @@ -1,26 +1,13 @@ -const { - graphql, - GraphQLObjectType, - GraphQLList, - GraphQLSchema, -} = require(`gatsby/graphql`) +const { graphql } = require(`gatsby/graphql`) const { onCreateNode } = require(`../gatsby-node`) -const { - inferObjectStructureFromNodes, -} = require(`../../../gatsby/src/schema/infer-graphql-type`) const extendNodeType = require(`../extend-node-type`) // given a set of nodes and a query, return the result of the query async function queryResult( nodes, fragment, - { types = [] } = {}, { additionalParameters = {}, pluginOptions = {} } ) { - const inferredFields = inferObjectStructureFromNodes({ - nodes, - types: [...types], - }) const extendNodeTypeFields = await extendNodeType( { type: { name: `MarkdownRemark` }, @@ -37,32 +24,30 @@ async function queryResult( } ) - const markdownRemarkFields = { - ...inferredFields, - ...extendNodeTypeFields, - } - - const schema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: () => { - return { - listNode: { - name: `LISTNODE`, - type: new GraphQLList( - new GraphQLObjectType({ - name: `MarkdownRemark`, - fields: markdownRemarkFields, - }) - ), - resolve() { - return nodes - }, - }, - } - }, - }), + const { + createSchemaComposer, + } = require(`../../../gatsby/src/schema/schema-composer`) + + const { + addInferredFields, + } = require(`../../../gatsby/src/schema/infer/add-inferred-fields`) + const { + getExampleValue, + } = require(`../../../gatsby/src/schema/infer/example-value`) + + const typeName = `MarkdownRemark` + const sc = createSchemaComposer() + const tc = sc.createTC(typeName) + addInferredFields({ + schemaComposer: sc, + typeComposer: tc, + exampleValue: getExampleValue({ nodes, typeName }), + }) + tc.addFields(extendNodeTypeFields) + sc.Query.addFields({ + listNode: { type: [tc], resolve: () => nodes }, }) + const schema = sc.buildSchema() const result = await graphql( schema, @@ -97,14 +82,10 @@ const bootstrapTest = ( it(label, async done => { node.content = content const createNode = markdownNode => { - queryResult( - [markdownNode], - query, - { - types: [{ name: `MarkdownRemark` }], - }, - { additionalParameters, pluginOptions } - ).then(result => { + queryResult([markdownNode], query, { + additionalParameters, + pluginOptions, + }).then(result => { try { test(result.data.listNode[0]) done() diff --git a/packages/gatsby-transformer-remark/src/__tests__/on-node-create.js b/packages/gatsby-transformer-remark/src/__tests__/on-node-create.js index 62564aedcfa9e..873597270c283 100644 --- a/packages/gatsby-transformer-remark/src/__tests__/on-node-create.js +++ b/packages/gatsby-transformer-remark/src/__tests__/on-node-create.js @@ -1,17 +1,7 @@ const Promise = require(`bluebird`) const _ = require(`lodash`) - const onCreateNode = require(`../on-node-create`) - -const { - graphql, - GraphQLObjectType, - GraphQLList, - GraphQLSchema, -} = require(`gatsby/graphql`) -const { - inferObjectStructureFromNodes, -} = require(`../../../gatsby/src/schema/infer-graphql-type`) +const { graphql } = require(`gatsby/graphql`) let node let actions @@ -124,31 +114,29 @@ yadda yadda describe(`process graphql correctly`, () => { // given a set of nodes and a query, return the result of the query - async function queryResult(nodes, fragment, { types = [] } = {}) { - const schema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: () => { - return { - listNode: { - name: `LISTNODE`, - type: new GraphQLList( - new GraphQLObjectType({ - name: `MarkdownRemark`, - fields: inferObjectStructureFromNodes({ - nodes, - types: [...types], - }), - }) - ), - resolve() { - return nodes - }, - }, - } - }, - }), + async function queryResult(nodes, fragment) { + const { + createSchemaComposer, + } = require(`../../../gatsby/src/schema/schema-composer`) + const { + addInferredFields, + } = require(`../../../gatsby/src/schema/infer/add-inferred-fields`) + const { + getExampleValue, + } = require(`../../../gatsby/src/schema/infer/example-value`) + + const sc = createSchemaComposer() + const typeName = `MarkdownRemark` + const tc = sc.createTC(typeName) + addInferredFields({ + schemaComposer: sc, + typeComposer: tc, + exampleValue: getExampleValue({ nodes, typeName }), + }) + sc.Query.addFields({ + listNode: { type: [tc], resolve: () => nodes }, }) + const schema = sc.buildSchema() const result = await graphql( schema, @@ -191,8 +179,7 @@ Sed bibendum sem iaculis, pellentesque leo sed, imperdiet ante. Sed consequat ma frontmatter { title } - `, - { types: [{ name: `MarkdownRemark` }] } + ` ).then(result => { try { createdNode = result.data.listNode[0] @@ -252,8 +239,7 @@ Sed bibendum sem iaculis, pellentesque leo sed, imperdiet ante. Sed consequat ma frontmatter { title } - `, - { types: [{ name: `MarkdownRemark` }] } + ` ).then(result => { try { createdNode = result.data.listNode[0] diff --git a/packages/gatsby/graphql.js b/packages/gatsby/graphql.js index b8878535d40d8..40b2d5bde0223 100644 --- a/packages/gatsby/graphql.js +++ b/packages/gatsby/graphql.js @@ -1,6 +1,6 @@ "use strict" const graphql = require(`graphql`) -const GraphQLJSON = require(`graphql-type-json`) +const { GraphQLJSON } = require(`graphql-compose`) module.exports = Object.assign({}, graphql, { GraphQLJSON }) diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index cf70744f0d91c..106641cda4f79 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -70,11 +70,10 @@ "gatsby-react-router-scroll": "^2.0.6", "glob": "^7.1.1", "graphql": "^14.1.1", + "graphql-compose": "^5.11.0", "graphql-playground-middleware-express": "^1.7.10", "graphql-relay": "^0.6.0", - "graphql-skip-limit": "^2.0.6", "graphql-tools": "^3.0.4", - "graphql-type-json": "^0.2.1", "hash-mod": "^0.0.5", "invariant": "^2.2.4", "is-relative": "^1.0.0", diff --git a/packages/gatsby/src/bootstrap/index.js b/packages/gatsby/src/bootstrap/index.js index f29a1b63beb1d..ba3bd0b7f6ec5 100644 --- a/packages/gatsby/src/bootstrap/index.js +++ b/packages/gatsby/src/bootstrap/index.js @@ -21,6 +21,7 @@ const getConfigFile = require(`./get-config-file`) const tracer = require(`opentracing`).globalTracer() const preferDefault = require(`./prefer-default`) const nodeTracking = require(`../db/node-tracking`) +const withResolverContext = require(`../schema/context`) require(`../db`).startAutosave() // Show stack trace on unhandled promises. @@ -387,7 +388,13 @@ module.exports = async (args: BootstrapArgs) => { const graphqlRunner = (query, context = {}) => { const schema = store.getState().schema - return graphql(schema, query, context, context, context) + return graphql( + schema, + query, + context, + withResolverContext(context, schema), + context + ) } // Collect pages. @@ -431,11 +438,9 @@ module.exports = async (args: BootstrapArgs) => { parentSpan: bootstrapSpan, }) activity.start() - await require(`../schema`).build({ parentSpan: activity.span }) + await require(`../schema`).rebuildWithSitePage({ parentSpan: activity.span }) activity.end() - require(`../schema/type-conflict-reporter`).printConflicts() - // Extract queries activity = report.activityTimer(`extract queries from components`, { parentSpan: bootstrapSpan, diff --git a/packages/gatsby/src/commands/develop.js b/packages/gatsby/src/commands/develop.js index 24087560d5325..9b9e5c9b30a36 100644 --- a/packages/gatsby/src/commands/develop.js +++ b/packages/gatsby/src/commands/develop.js @@ -23,6 +23,7 @@ const launchEditor = require(`react-dev-utils/launchEditor`) const formatWebpackMessages = require(`react-dev-utils/formatWebpackMessages`) const chalk = require(`chalk`) const address = require(`address`) +const withResolverContext = require(`../schema/context`) const sourceNodes = require(`../utils/source-nodes`) const websocketManager = require(`../utils/websocket-manager`) const getSslCert = require(`../utils/get-ssl-cert`) @@ -105,9 +106,14 @@ async function startServer(program) { } app.use( `/___graphql`, - graphqlHTTP({ - schema: store.getState().schema, - graphiql: process.env.GATSBY_GRAPHQL_IDE === `playground` ? false : true, + graphqlHTTP(() => { + const schema = store.getState().schema + return { + schema, + graphiql: + process.env.GATSBY_GRAPHQL_IDE === `playground` ? false : true, + context: withResolverContext({}, schema), + } }) ) diff --git a/packages/gatsby/src/db/__tests__/node-tracking-test.js b/packages/gatsby/src/db/__tests__/node-tracking-test.js index 491a346c95ed9..d646932bfd502 100644 --- a/packages/gatsby/src/db/__tests__/node-tracking-test.js +++ b/packages/gatsby/src/db/__tests__/node-tracking-test.js @@ -4,7 +4,6 @@ const { } = 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`)() @@ -18,7 +17,7 @@ function makeNode() { }, inlineArray: [1, 2, 3], internal: { - type: `TestNode`, + type: `Test`, contentDigest: `digest1`, owner: `test`, }, @@ -43,7 +42,7 @@ describe(`track root nodes`, () => { }, inlineArray: [1, 2, 3], internal: { - type: `TestNode`, + type: `Test`, contentDigest: `digest2`, }, }, @@ -89,7 +88,21 @@ describe(`track root nodes`, () => { let type beforeAll(async () => { - type = (await nodeTypes.buildAll({})).testNode.nodeObjectType + const { createSchemaComposer } = require(`../../schema/schema-composer`) + const { + addInferredFields, + } = require(`../../schema/infer/add-inferred-fields`) + const { getExampleValue } = require(`../../schema/infer/example-value`) + + const sc = createSchemaComposer() + const typeName = `Test` + const tc = sc.createTC(typeName) + addInferredFields({ + schemaComposer: sc, + typeComposer: tc, + exampleValue: getExampleValue({ nodes: [makeNode()], typeName }), + }) + type = tc.getType() }) it(`Tracks objects when running query without filter`, async () => { diff --git a/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js b/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js index fbde8ade5970e..aae1f42b82907 100644 --- a/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js +++ b/packages/gatsby/src/db/loki/__tests__/nodes-query-test.js @@ -1,6 +1,6 @@ if (process.env.GATSBY_DB_NODES === `loki`) { const _ = require(`lodash`) - const nodeTypes = require(`../../../schema/build-node-types`) + const { GraphQLObjectType } = require(`graphql`) const { store } = require(`../../../redux`) const runQuery = require(`../nodes-query`) const { getNodeTypeCollection } = require(`../nodes`) @@ -21,11 +21,11 @@ if (process.env.GATSBY_DB_NODES === `loki`) { for (const node of nodes) { store.dispatch({ type: `CREATE_NODE`, payload: node }) } - const gqlType = nodeTypes.buildNodeObjectType({ - typeName: `Test`, - nodes, - pluginFields: [], - processedTypes: {}, + const gqlType = new GraphQLObjectType({ + name: `Test`, + fields: { + foo: { type: `String` }, + }, }) const queryArgs = { filter: { foo: { eq: `bar` } } } const args = { gqlType, queryArgs } diff --git a/packages/gatsby/src/db/loki/nodes-query.js b/packages/gatsby/src/db/loki/nodes-query.js index 9922bede16332..1f9f22a53064e 100644 --- a/packages/gatsby/src/db/loki/nodes-query.js +++ b/packages/gatsby/src/db/loki/nodes-query.js @@ -248,8 +248,8 @@ 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 = order[i] === `desc` + const dottedField = fields[i] + const isDesc = order[i] && order[i].toLowerCase() === `desc` lokiSortFields.push([dottedField, isDesc]) } return lokiSortFields @@ -291,8 +291,11 @@ function ensureFieldIndexes(coll, lokiArgs) { * @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 }) { - const lokiArgs = convertArgs(queryArgs, gqlType) +async function runQuery({ gqlType, queryArgs, 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) diff --git a/packages/gatsby/src/db/loki/nodes.js b/packages/gatsby/src/db/loki/nodes.js index 36071a9c7d764..802db08fe8ab9 100644 --- a/packages/gatsby/src/db/loki/nodes.js +++ b/packages/gatsby/src/db/loki/nodes.js @@ -141,8 +141,8 @@ function getNodesByType(typeName) { * `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)) + const nodeTypes = getTypes() + return _.flatMap(nodeTypes, nodeType => getNodesByType(nodeType)) } /** @@ -335,9 +335,9 @@ module.exports = { getNodes, getNode, getNodesByType, + getTypes, hasNodeChanged, getNodeAndSavePathDependency, - getTypes, createNode, updateNode, diff --git a/packages/gatsby/src/db/node-tracking.js b/packages/gatsby/src/db/node-tracking.js index fa0e5587facb5..b344a6266136c 100644 --- a/packages/gatsby/src/db/node-tracking.js +++ b/packages/gatsby/src/db/node-tracking.js @@ -1,5 +1,4 @@ const _ = require(`lodash`) -const { getNode, getNodes } = require(`./nodes`) /** * Map containing links between inline objects or arrays @@ -50,6 +49,8 @@ exports.trackInlineObjectsInRootNode = trackInlineObjectsInRootNode * or first node that meet predicate conditions if predicate is specified */ const findRootNodeAncestor = (obj, predicate = null) => { + const { getNode } = require(`./nodes`) + // Find the root node. let rootNode = obj let whileCount = 0 @@ -79,6 +80,7 @@ const findRootNodeAncestor = (obj, predicate = null) => { } function trackDbNodes() { + const { getNodes } = require(`./nodes`) _.each(getNodes(), node => { trackInlineObjectsInRootNode(node) }) diff --git a/packages/gatsby/src/db/nodes-query.js b/packages/gatsby/src/db/nodes-query.js index 09273499d9ba4..c933c33f7d0bb 100644 --- a/packages/gatsby/src/db/nodes-query.js +++ b/packages/gatsby/src/db/nodes-query.js @@ -1,12 +1,52 @@ -const backend = process.env.GATSBY_DB_NODES || `redux` +const _ = require(`lodash`) +const { getNamedType } = require(`graphql`) + const lokiRunQuery = require(`./loki/nodes-query`) const siftRunQuery = require(`../redux/run-sift`) -const lazyFields = require(`../schema/lazy-fields`) + +// FIXME: This is duplicate code (`extractFieldsToSift`) +const dropQueryOperators = filter => + Object.keys(filter).reduce((acc, key) => { + let value = filter[key] + let k = Object.keys(value)[0] + let v = value[k] + if (_.isPlainObject(value) && _.isPlainObject(v)) { + acc[key] = + k === `elemMatch` ? dropQueryOperators(v) : dropQueryOperators(value) + } else { + acc[key] = true + } + return acc + }, {}) + +const hasFieldResolvers = (type, filterFields) => { + const fields = type.getFields() + return Object.keys(filterFields).some(fieldName => { + const filterValue = filterFields[fieldName] + const field = fields[fieldName] + return ( + Boolean(field.resolve) || + (filterValue !== true && + hasFieldResolvers(getNamedType(field.type), filterValue)) + ) + }) +} function chooseQueryEngine(args) { + const { backend } = require(`./nodes`) + const { queryArgs, gqlType } = args + // TODO: Resolve nodes on sort fields + // TODO: Need to get group and distinct `field` arg from projection const { filter } = queryArgs - if (backend === `loki` && !lazyFields.contains(filter, gqlType)) { + const fields = filter ? dropQueryOperators(filter) : {} + + // NOTE: `hasFieldResolvers` is also true for Date fields + if ( + backend === `loki` && + !args.nodes && + !hasFieldResolvers(gqlType, fields) + ) { return lokiRunQuery } else { return siftRunQuery @@ -16,15 +56,15 @@ function chooseQueryEngine(args) { /** * 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. + * or if the query includes fields with custom resolver functions, + * 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 + * If the query does *not* include fields with custom resolver functions, + * 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: diff --git a/packages/gatsby/src/db/nodes.js b/packages/gatsby/src/db/nodes.js index 281c3049597c3..df1f80470526f 100644 --- a/packages/gatsby/src/db/nodes.js +++ b/packages/gatsby/src/db/nodes.js @@ -1,8 +1,23 @@ +/* @flow */ const _ = require(`lodash`) const { store } = require(`../redux`) +const { run: runQuery } = require(`./nodes-query`) +const { findRootNodeAncestor } = require(`../db/node-tracking`) + +interface NodeStore { + getNodes: () => Array; + getNode: (id: string) => any | undefined; + getNodesByType: (type: string) => Array; + getTypes: () => Array; + hasNodeChanged: (id: string, digest: string) => boolean; + getNodeAndSavePathDependency: (id: string, path: string) => any | undefined; + // XXX(freiksenet): types + runQuery: (...args: any) => any | undefined; + findRootNodeAncestor: (...args: any) => any | undefined; +} const backend = process.env.GATSBY_DB_NODES || `redux` -let nodesDb +let nodesDb: NodeStore switch (backend) { case `redux`: nodesDb = require(`../redux/nodes`) @@ -16,7 +31,7 @@ switch (backend) { ) } -module.exports = { ...nodesDb } +module.exports = { ...nodesDb, runQuery, findRootNodeAncestor } module.exports.backend = backend /** 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 1e3197efc43f4..298af3f67a39a 100644 --- a/packages/gatsby/src/internal-plugins/query-runner/query-runner.js +++ b/packages/gatsby/src/internal-plugins/query-runner/query-runner.js @@ -7,6 +7,7 @@ const websocketManager = require(`../../utils/websocket-manager`) const path = require(`path`) const { store } = require(`../../redux`) +const withResolverContext = require(`../../schema/context`) const { generatePathChunkName } = require(`../../utils/js-chunk-names`) const { formatErrorDetails } = require(`./utils`) const mod = require(`hash-mod`)(999) @@ -28,7 +29,13 @@ module.exports = async (queryJob: QueryJob, component: Any) => { const { schema, program } = store.getState() const graphql = (query, context) => - graphqlFunction(schema, query, context, context, context) + graphqlFunction( + schema, + query, + context, + withResolverContext(context, schema), + context + ) // Run query let result diff --git a/packages/gatsby/src/redux/__tests__/redirects.js b/packages/gatsby/src/redux/__tests__/redirects.js index e5a9707b3f633..35c982055328d 100644 --- a/packages/gatsby/src/redux/__tests__/redirects.js +++ b/packages/gatsby/src/redux/__tests__/redirects.js @@ -7,6 +7,9 @@ jest.mock(`../index`, () => { getState: jest.fn(), }, dispath: () => {}, + emitter: { + on: jest.fn(), + }, } }) diff --git a/packages/gatsby/src/redux/actions.js b/packages/gatsby/src/redux/actions.js index 618e5520dec93..4a80c16d6c4f7 100644 --- a/packages/gatsby/src/redux/actions.js +++ b/packages/gatsby/src/redux/actions.js @@ -1179,6 +1179,111 @@ actions.addThirdPartySchema = ( } } +import type GatsbyGraphQLType from "../schema/types/type-builders" +/** + * Add type definitions to the GraphQL schema. + * + * @param {string | GraphQLOutputType | GatsbyGraphQLType | string[] | GraphQLOutputType[] | GatsbyGraphQLType[]} types Type definitions + * + * Type definitions can be provided either as + * [`graphql-js` types](https://graphql.org/graphql-js/), in + * [GraphQL schema definition language (SDL)](https://graphql.org/learn/) + * or using Gatsby Type Builders available on the `schema` API argument. + * + * Things to note: + * * needs to be called *before* schema generation. It is recommended to use + * `createTypes` in the `sourceNodes` API. + * * type definitions targeting node types, i.e. `MarkdownRemark` and others + * added in `sourceNodes` or `onCreateNode` APIs, need to implement the + * `Node` interface. Interface fields will be added automatically, but it + * is mandatory to label those types with `implements Node`. + * * by default, explicit type definitions from `createTypes` will be merged + * with inferred field types, and default field resolvers for `Date` (which + * adds formatting options) and `File` (which resolves the field value as + * a `relativePath` foreign-key field) are added. This behavior can be + * customised with `@infer` and `@dontInfer` directives, and their + * `noDefaultResolvers` argument. + * + * @example + * exports.sourceNodes = ({ actions }) => { + * const { createTypes } = actions + * const typeDefs = ` + * """ + * Markdown Node + * """ + * type MarkdownRemark implements Node { + * frontmatter: Frontmatter! + * } + * + * """ + * Markdown Frontmatter + * """ + * type Frontmatter { + * title: String! + * author: AuthorJson! + * date: Date! + * published: Boolean! + * tags: [String!]! + * } + * + * """ + * Author information + * """ + * # Does not include automatically inferred fields + * type AuthorJson implements Node @dontInfer(noFieldResolvers: true) { + * name: String! + * birthday: Date! # no default resolvers for Date formatting added + * } + * ` + * createTypes(typeDefs) + * } + * + * // using Gatsby Type Builder API + * exports.sourceNodes = ({ actions, schema }) => { + * const { createTypes } = actions + * const typeDefs = [ + * schema.buildObjectType({ + * name: 'MarkdownRemark', + * fields: { + * frontmatter: 'Frontmatter!' + * }, + * }), + * schema.buildObjectType({ + * name: 'Frontmatter', + * fields: { + * title: { + * type: 'String!', + * resolve(parent) { + * return parent.title || '(Untitled)' + * } + * }, + * author: 'AuthorJson!', + * date: 'Date!', + * published: 'Boolean!', + * tags: '[String!]!', + * } + * }) + * ] + * createTypes(typeDefs) + * } + */ +actions.createTypes = ( + types: + | string + | GraphQLOutputType + | GatsbyGraphQLType + | Array, + plugin: Plugin, + traceId?: string +) => { + return { + type: `CREATE_TYPES`, + plugin, + traceId, + payload: types, + } +} + /** * All action creators wrapped with a dispatch. */ diff --git a/packages/gatsby/src/redux/nodes.js b/packages/gatsby/src/redux/nodes.js index 924a322ad69fd..e53da404087e8 100644 --- a/packages/gatsby/src/redux/nodes.js +++ b/packages/gatsby/src/redux/nodes.js @@ -1,3 +1,5 @@ +/* @flow */ + const { store } = require(`./index`) /** @@ -43,7 +45,7 @@ const getNodesByType = type => { exports.getNodesByType = getNodesByType /** - * Get all types from redux store. + * Get all type names from redux store. * * @returns {Array} */ diff --git a/packages/gatsby/src/redux/prepare-nodes.js b/packages/gatsby/src/redux/prepare-nodes.js new file mode 100644 index 0000000000000..81451c2246958 --- /dev/null +++ b/packages/gatsby/src/redux/prepare-nodes.js @@ -0,0 +1,129 @@ +const _ = require(`lodash`) +const { trackInlineObjectsInRootNode } = require(`../db/node-tracking`) +const { store } = require(`../redux`) +const { getNullableType, getNamedType } = require(`graphql`) +const withResolverContext = require(`../schema/context`) + +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 + +///////////////////////////////////////////////////////////////////// +// Resolve nodes +///////////////////////////////////////////////////////////////////// + +function awaitSiftField(fields, node, k) { + const field = fields[k] + if (field.resolve) { + const { schema } = store.getState() + return field.resolve(node, {}, withResolverContext({}, schema), { + fieldName: k, + schema, + returnType: field.type, + }) + } 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] + + const innerType = getNullableType(innerGqConfig.type) + const innerListType = getNamedType(innerType) + if (_.isObject(innerSift) && v != null && innerType) { + if (_.isFunction(innerType.getFields)) { + // this is single object + return resolveRecursive(v, innerSift, innerType.getFields()) + } else if (_.isArray(v) && _.isFunction(innerListType.getFields)) { + // this is array + return Promise.all( + v.map(item => + resolveRecursive(item, innerSift, innerListType.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 { resolvedNodesCache } = store.getState() + 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 (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 => { + store.dispatch({ + type: `SET_RESOLVED_NODES`, + payload: { + key: nodesCacheKey, + nodes: resolvedNodes, + }, + }) + return resolvedNodes + }) + } +} + +module.exports = { + resolveNodes, + resolveRecursive, +} diff --git a/packages/gatsby/src/redux/reducers/index.js b/packages/gatsby/src/redux/reducers/index.js index cef9e829332d0..3b2e9dab8d5d6 100644 --- a/packages/gatsby/src/redux/reducers/index.js +++ b/packages/gatsby/src/redux/reducers/index.js @@ -42,6 +42,6 @@ module.exports = { redirects: require(`./redirects`), babelrc: require(`./babelrc`), jsonDataPaths: require(`./json-data-paths`), - thirdPartySchemas: require(`./third-party-schemas`), + schemaCustomization: require(`./schema-customization`), themes: require(`./themes`), } diff --git a/packages/gatsby/src/redux/reducers/schema-composer.js b/packages/gatsby/src/redux/reducers/schema-composer.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/gatsby/src/redux/reducers/schema-customization.js b/packages/gatsby/src/redux/reducers/schema-customization.js new file mode 100644 index 0000000000000..baf6929f989c8 --- /dev/null +++ b/packages/gatsby/src/redux/reducers/schema-customization.js @@ -0,0 +1,42 @@ +const _ = require(`lodash`) +module.exports = ( + state = { + composer: null, + thirdPartySchemas: [], + types: [], + }, + action +) => { + switch (action.type) { + case `ADD_THIRD_PARTY_SCHEMA`: + return { + ...state, + thirdPartySchemas: [...state.thirdPartySchemas, action.payload], + } + case `SET_SCHEMA_COMPOSER`: + return { + ...state, + composer: action.payload, + } + case `CREATE_TYPES`: { + let types + if (_.isArray(action.payload)) { + types = [...state.types, ...action.payload] + } else { + types = [...state.types, action.payload] + } + return { + ...state, + types, + } + } + case `DELETE_CACHE`: + return { + composer: null, + thirdPartySchemas: [], + types: [], + } + default: + return state + } +} diff --git a/packages/gatsby/src/redux/reducers/third-party-schemas.js b/packages/gatsby/src/redux/reducers/third-party-schemas.js deleted file mode 100644 index da4550f19c6d8..0000000000000 --- a/packages/gatsby/src/redux/reducers/third-party-schemas.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = (state = [], action) => { - switch (action.type) { - case `ADD_THIRD_PARTY_SCHEMA`: - return [...state, action.payload] - default: - return state - } -} diff --git a/packages/gatsby/src/redux/run-sift.js b/packages/gatsby/src/redux/run-sift.js index 709f8f988d5ae..8fd492373d874 100644 --- a/packages/gatsby/src/redux/run-sift.js +++ b/packages/gatsby/src/redux/run-sift.js @@ -2,21 +2,7 @@ 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 { store } = require(`.`) - -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 { resolveNodes, resolveRecursive } = require(`./prepare-nodes`) ///////////////////////////////////////////////////////////////////// // Parse filter @@ -85,7 +71,7 @@ function parseFilter(filter) { } ///////////////////////////////////////////////////////////////////// -// Resolve nodes +// Run Sift ///////////////////////////////////////////////////////////////////// function isEqId(firstOnly, fieldsToSift, siftArgs) { @@ -98,130 +84,6 @@ function isEqId(firstOnly, fieldsToSift, siftArgs) { ) } -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 { resolvedNodesCache } = store.getState() - 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 (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 => { - store.dispatch({ - type: `SET_RESOLVED_NODES`, - payload: { - key: nodesCacheKey, - nodes: resolvedNodes, - }, - }) - return resolvedNodes - }) - } -} - -///////////////////////////////////////////////////////////////////// -// Run Sift -///////////////////////////////////////////////////////////////////// - function handleFirst(siftArgs, nodes) { const index = _.isEmpty(siftArgs) ? 0 @@ -255,11 +117,10 @@ function handleMany(siftArgs, nodes, sort) { 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)) + const sortFields = sort.fields.map(field => v => _.get(v, field)) + const sortOrder = sort.order.map(order => order.toLowerCase()) - result = _.orderBy(result, convertedFields, sort.order) + result = _.orderBy(result, sortFields, sortOrder) } return result } @@ -278,12 +139,16 @@ function handleMany(siftArgs, nodes, sort) { * if `firstOnly` is true */ module.exports = (args: Object) => { + const { getNode, getNodesByType } = require(`../db/nodes`) + const { queryArgs, gqlType, firstOnly = false } = args // If nodes weren't provided, then load them from the DB const nodes = args.nodes || getNodesByType(gqlType.name) const { siftArgs, fieldsToSift } = parseFilter(queryArgs.filter) + // FIXME: fieldsToSift must include `sort.fields` as well as the + // `field` arg on `group` and `distinct` // 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. diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields-test.js.snap b/packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields.js.snap similarity index 100% rename from packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields-test.js.snap rename to packages/gatsby/src/schema/__tests__/__snapshots__/connection-input-fields.js.snap diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap b/packages/gatsby/src/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap deleted file mode 100644 index 9817db5f9662f..0000000000000 --- a/packages/gatsby/src/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap +++ /dev/null @@ -1,85 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Gatsby data tree utils build enum values for fields from array on nodes 1`] = ` -Object { - "anArray": Object { - "field": "anArray", - }, - "context___nestedObject___name": Object { - "field": "context___nestedObject___name", - }, - "context___nestedObject___someOtherProperty": Object { - "field": "context___nestedObject___someOtherProperty", - }, - "date": Object { - "field": "date", - }, - "frontmatter___blue": Object { - "field": "frontmatter___blue", - }, - "frontmatter___circle": Object { - "field": "frontmatter___circle", - }, - "frontmatter___date": Object { - "field": "frontmatter___date", - }, - "frontmatter___draft": Object { - "field": "frontmatter___draft", - }, - "frontmatter___title": Object { - "field": "frontmatter___title", - }, - "hair": Object { - "field": "hair", - }, - "key_with__unsupported_values": Object { - "field": "key-with..unsupported-values", - }, - "name": Object { - "field": "name", - }, - "nestedArrays": Object { - "field": "nestedArrays", - }, - "objectsInArray": Object { - "field": "objectsInArray", - }, -} -`; - -exports[`Gatsby data tree utils builds field examples from an array of nodes 1`] = ` -Object { - "anArray": Array [ - 1, - ], - "context": Object { - "nestedObject": Object { - "name": "Inner name", - "someOtherProperty": 1, - }, - }, - "date": "2006-07-22T22:39:53.000Z", - "frontmatter": Object { - "blue": 100, - "circle": "happy", - "date": "2006-07-22T22:39:53.000Z", - "draft": false, - "title": "The world of dash and adventure", - }, - "hair": 1, - "key-with..unsupported-values": true, - "name": "The Mad Max", - "nestedArrays": Array [ - Array [ - 1, - ], - ], - "objectsInArray": Array [ - Object { - "field1": true, - "field2": 1, - "field3": "foo", - }, - ], -} -`; diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-type-test.js.snap b/packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-type-test.js.snap deleted file mode 100644 index a41450342d450..0000000000000 --- a/packages/gatsby/src/schema/__tests__/__snapshots__/infer-graphql-type-test.js.snap +++ /dev/null @@ -1,152 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`GraphQL type inferance Handles dates Infers from Date objects 1`] = ` -Object { - "data": Object { - "listNode": Array [ - Object { - "dateObject": "2012-11-05T00:00:00.000Z", - }, - Object { - "dateObject": "2012-11-05T00:00:00.000Z", - }, - ], - }, -} -`; - -exports[`GraphQL type inferance Handles dates Infers from array of Date objects 1`] = ` -Object { - "data": Object { - "listNode": Array [ - Object { - "dateObject": Array [ - "2012-11-05T00:00:00.000Z", - "2012-11-06T00:00:00.000Z", - ], - }, - Object { - "dateObject": Array [ - "2012-11-05T00:00:00.000Z", - ], - }, - ], - }, -} -`; - -exports[`GraphQL type inferance Infers graphql type from array of nodes 1`] = ` -Object { - "data": Object { - "listNode": Array [ - Object { - "aBoolean": true, - "aNestedArray": Array [ - Array [ - 1, - 2, - 3, - 4, - ], - Array [ - 5, - 6, - 7, - 8, - ], - ], - "anArray": Array [ - 1, - 2, - 3, - 4, - ], - "anObjectArray": Array [ - Object { - "aBoolean": true, - "aNumber": 2, - "anArray": null, - "anotherObjectArray": null, - }, - Object { - "aBoolean": null, - "aNumber": 2, - "anArray": Array [ - 1, - 2, - ], - "anotherObjectArray": null, - }, - Object { - "aBoolean": null, - "aNumber": null, - "anArray": null, - "anotherObjectArray": Array [ - Object { - "bar": 10, - "baz": null, - }, - ], - }, - ], - "date": "1012", - "deepObject": Object { - "deepObject": Object { - "deepObject": Object { - "level": 3, - }, - "level": 2, - }, - "level": 1, - }, - "domain": "pizza.com", - "externalUrl": "https://example.com/awesome.jpg", - "frontmatter": Object { - "date": "1012", - "title": "The world of dash and adventure", - }, - "hair": 1, - }, - Object { - "aBoolean": null, - "aNestedArray": Array [ - Array [ - 1, - 2, - 3, - 4, - ], - ], - "anArray": Array [ - 1, - 2, - 5, - 4, - ], - "anObjectArray": Array [ - Object { - "aBoolean": null, - "aNumber": null, - "anArray": null, - "anotherObjectArray": Array [ - Object { - "bar": null, - "baz": "quz", - }, - ], - }, - ], - "date": "1984", - "deepObject": null, - "domain": null, - "externalUrl": null, - "frontmatter": Object { - "date": "1984", - "title": "The world of slash and adventure", - }, - "hair": 2, - }, - ], - }, -} -`; diff --git a/packages/gatsby/src/schema/__tests__/__snapshots__/kitchen-sink.js.snap b/packages/gatsby/src/schema/__tests__/__snapshots__/kitchen-sink.js.snap new file mode 100644 index 0000000000000..e16ee8e2d0b3b --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/__snapshots__/kitchen-sink.js.snap @@ -0,0 +1,80 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Kichen sink schema test passes kitchen sink query 1`] = ` +Object { + "data": Object { + "addResolvers": Array [ + Object { + "code": "BdiU-TTFP4h", + "id": "1685001452849004065", + "likes": 33, + }, + Object { + "code": "BdIpEzalAJx", + "id": "1677771511187112561", + "likes": 29, + }, + ], + "filter": Object { + "edges": Array [ + Object { + "node": Object { + "comment": 1, + "id": "1270677182602272387", + }, + }, + Object { + "node": Object { + "comment": 0, + "id": "1256134251849702933", + }, + }, + ], + }, + "resolveFilter": Object { + "id": "1601601194425654597", + "idWithDecoration": "decoration-1601601194425654597", + "likes": 9, + }, + "sort": Object { + "edges": Array [ + Object { + "node": Object { + "_3invalidKey": null, + "code": "BShF_8qhtEv", + "comment": 0, + "id": "1486495736706552111", + "idWithDecoration": "decoration-1486495736706552111", + "image": Object { + "childImageSharp": Object { + "id": "f5f0e564-899f-5bbc-92de-a2325b69cb75", + }, + }, + "likes": 8, + "time": "05.04.2017", + }, + }, + Object { + "node": Object { + "_3invalidKey": null, + "code": "BY6B8z5lR1F", + "comment": 0, + "id": "1601601194425654597", + "idWithDecoration": "decoration-1601601194425654597", + "image": Object { + "childImageSharp": Object { + "id": "6ba97198-5331-53d6-a0e0-c9c063c5094e", + }, + }, + "likes": 9, + "time": "11.09.2017", + }, + }, + ], + }, + "thirdPartyStuff": Object { + "text": "Hello third-party schema!", + }, + }, +} +`; diff --git a/packages/gatsby/src/schema/__tests__/build-node-connections-test.js b/packages/gatsby/src/schema/__tests__/build-node-connections.js similarity index 68% rename from packages/gatsby/src/schema/__tests__/build-node-connections-test.js rename to packages/gatsby/src/schema/__tests__/build-node-connections.js index 8878f4652d929..762bb5a18dbd8 100644 --- a/packages/gatsby/src/schema/__tests__/build-node-connections-test.js +++ b/packages/gatsby/src/schema/__tests__/build-node-connections.js @@ -1,67 +1,76 @@ -const { graphql, GraphQLObjectType, GraphQLSchema } = require(`graphql`) -const _ = require(`lodash`) -const createPageDependency = require(`../../redux/actions/add-page-dependency`) +const { graphql } = require(`graphql`) +const { createSchemaComposer } = require(`../schema-composer`) +const { buildSchema } = require(`../schema`) +const { LocalNodeModel } = require(`../node-model`) +const nodeStore = require(`../../db/nodes`) +const { store } = require(`../../redux`) + jest.mock(`../../redux/actions/add-page-dependency`) -const nodeTypes = require(`../build-node-types`) -const nodeConnections = require(`../build-node-connections`) +const createPageDependency = require(`../../redux/actions/add-page-dependency`) + require(`../../db/__tests__/fixtures/ensure-loki`)() -describe(`build-node-connections`, () => { - let schema, store, types, connections +const makeNodes = () => [ + { + 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`, + }, +] - 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`)) +describe(`build-node-connections`, () => { + async function runQuery(query, nodes = makeNodes()) { 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 })) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) - types = await nodeTypes.buildAll({}) - connections = await nodeConnections.buildAll(_.values(types)) + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types: [], + thirdPartySchemas: [], + }) + store.dispatch({ type: `SET_SCHEMA`, payload: schema }) - schema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: { ...connections, ..._.mapValues(types, `node`) }, + let context = { path: `foo` } + let { data, errors } = await graphql(schema, query, undefined, { + ...context, + nodeModel: new LocalNodeModel({ + schema, + nodeStore, + createPageDependency, }), }) - }) + expect(errors).not.toBeDefined() + return data + } - it(`should build connections`, () => { - expect(Object.keys(connections)).toHaveLength(3) + afterEach(() => { + createPageDependency.mockClear() }) it(`should result in a valid queryable schema`, async () => { diff --git a/packages/gatsby/src/schema/__tests__/build-node-types-test.js b/packages/gatsby/src/schema/__tests__/build-node-types.js similarity index 75% rename from packages/gatsby/src/schema/__tests__/build-node-types-test.js rename to packages/gatsby/src/schema/__tests__/build-node-types.js index 78a56861c5461..05071b4a38cf6 100644 --- a/packages/gatsby/src/schema/__tests__/build-node-types-test.js +++ b/packages/gatsby/src/schema/__tests__/build-node-types.js @@ -1,28 +1,80 @@ -const { - graphql, - GraphQLObjectType, - GraphQLSchema, - GraphQLString, -} = require(`graphql`) -const _ = require(`lodash`) +const { graphql, GraphQLString } = require(`graphql`) require(`../../db/__tests__/fixtures/ensure-loki`)() +const { createSchemaComposer } = require(`../schema-composer`) +const { buildSchema } = require(`../schema`) +const { LocalNodeModel } = require(`../node-model`) +const nodeStore = require(`../../db/nodes`) +const { store } = require(`../../redux`) + 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`) +const createPageDependency = require(`../../redux/actions/add-page-dependency`) -const { typeConflictReporter } = require(`../type-conflict-reporter`) +const { TypeConflictReporter } = require(`../infer/type-conflict-reporter`) +const typeConflictReporter = new TypeConflictReporter() const addConflictSpy = jest.spyOn(typeConflictReporter, `addConflict`) +const makeNodes = () => [ + { + 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`, + pluginField: `string`, + }, + { + id: `c2`, + internal: { type: `Child` }, + hair: `blonde`, + children: [], + parent: `p1`, + pluginField: 5, + }, +] + describe(`build-node-types`, () => { - let schema, store, types + async function runQuery(query, nodes = makeNodes()) { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) + + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types: [], + typeConflictReporter, + thirdPartySchemas: [], + }) + store.dispatch({ type: `SET_SCHEMA`, payload: schema }) - async function runQuery(query) { let context = { path: `foo` } - let { data, errors } = await graphql(schema, query, context, context) + let { data, errors } = await graphql(schema, query, undefined, { + ...context, + nodeModel: new LocalNodeModel({ + schema, + nodeStore, + createPageDependency, + }), + }) expect(errors).not.toBeDefined() return data } @@ -35,56 +87,11 @@ describe(`build-node-types`, () => { pluginField: { type: GraphQLString, description: `test description`, - resolve: parent => `pluginFieldValue`, + resolve: () => `pluginFieldValue`, }, }, ] apiRunnerNode.mockImplementation(() => apiRunnerResponse) - ;({ 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`, - pluginField: `string`, - }, - { - id: `c2`, - internal: { type: `Child` }, - hair: `blonde`, - children: [], - parent: `p1`, - pluginField: 5, - }, - ].forEach(n => store.dispatch({ type: `CREATE_NODE`, payload: n })) - - types = await nodeTypes.buildAll({}) - schema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: _.mapValues(types, `node`), - }), - }) - }) - - it(`should build types`, () => { - expect(Object.keys(types)).toHaveLength(3) }) it(`should result in a valid queryable schema`, async () => { diff --git a/packages/gatsby/src/schema/__tests__/build-schema.js b/packages/gatsby/src/schema/__tests__/build-schema.js new file mode 100644 index 0000000000000..7b96d22848e96 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/build-schema.js @@ -0,0 +1,698 @@ +const { + GraphQLObjectType, + GraphQLNonNull, + GraphQLString, + GraphQLInterfaceType, + GraphQLUnionType, + GraphQLBoolean, +} = require(`graphql`) +const { SchemaComposer } = require(`graphql-compose`) +jest.mock(`../../utils/api-runner-node`) +const { store } = require(`../../redux`) +const { build } = require(`..`) +const { + buildObjectType, + buildUnionType, + buildInterfaceType, +} = require(`../types/type-builders`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +const nodes = require(`./fixtures/node-model`) + +describe(`Build schema`, () => { + beforeAll(() => { + addDefaultApiRunnerMock() + }) + + beforeEach(async () => { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: { ...node } }) + ) + }) + + afterEach(() => { + addDefaultApiRunnerMock() + }) + + describe(`createTypes`, () => { + it(`allows adding graphql-js types`, async () => { + createTypes( + new GraphQLObjectType({ + name: `Foo`, + fields: { + text: { + type: GraphQLString, + }, + }, + }) + ) + const schema = await buildSchema() + const fooType = schema.getType(`Foo`) + expect(fooType).toBeInstanceOf(GraphQLObjectType) + const fields = fooType.getFields() + expect(fields[`text`]).toBeDefined() + expect(fields[`text`].type).toBe(GraphQLString) + }) + + it(`allows adding type in SDL`, async () => { + createTypes(`type Foo implements Node { text: String! }`) + const schema = await buildSchema() + const fooType = schema.getType(`Foo`) + expect(fooType).toBeInstanceOf(GraphQLObjectType) + expect(fooType.getInterfaces()).toEqual([schema.getType(`Node`)]) + const fields = fooType.getFields() + expect(fields[`text`]).toBeDefined() + expect(fields[`text`].type).toBeInstanceOf(GraphQLNonNull) + expect(fields[`text`].type.ofType).toBe(GraphQLString) + }) + + it(`allows adding type in gatsby type def language`, async () => { + createTypes( + buildObjectType({ + name: `Foo`, + fields: { + text: `String!`, + withArgs: { + type: `Boolean`, + args: { + what: { + type: `Boolean`, + }, + }, + resolve(parent, args) { + return Boolean(args.what) + }, + }, + }, + interfaces: [`Node`], + }) + ) + const schema = await buildSchema() + const fooType = schema.getType(`Foo`) + expect(fooType).toBeInstanceOf(GraphQLObjectType) + expect(fooType.getInterfaces()).toEqual([schema.getType(`Node`)]) + const fields = fooType.getFields() + expect(fields[`text`]).toBeDefined() + expect(fields[`text`].type).toBeInstanceOf(GraphQLNonNull) + expect(fields[`text`].type.ofType).toBe(GraphQLString) + expect(fields[`withArgs`]).toBeDefined() + expect(fields[`withArgs`].type).toBe(GraphQLBoolean) + expect(fields[`withArgs`].args[0]).toBeDefined() + expect(fields[`withArgs`].args[0].name).toEqual(`what`) + expect(fields[`withArgs`].args[0].type).toBe(GraphQLBoolean) + expect(fields[`withArgs`].resolve({}, { what: true })).toBe(true) + }) + + it(`allows adding array of types`, async () => { + createTypes([ + new GraphQLObjectType({ + name: `Foo`, + fields: { + text: { + type: GraphQLString, + }, + }, + }), + new GraphQLObjectType({ + name: `Bar`, + fields: { + text: { + type: GraphQLString, + }, + }, + }), + `type Baz implements Node { text: String }`, + `type Author implements Node { text: String }`, + ]) + const schema = await buildSchema() + + ;[(`Foo`, `Bar`, `Baz`, `Author`)].forEach(typeName => { + const type = schema.getType(typeName) + expect(type).toBeInstanceOf(GraphQLObjectType) + const fields = type.getFields() + expect(fields[`text`]).toBeDefined() + expect(fields[`text`].type).toBe(GraphQLString) + }) + }) + + it(`adds node interface fields`, async () => { + createTypes(` + type Foo implements Node { text: String! } + + type Bar implements Node { + id: ID! + parent: Node + children: [Node!]! + internal: Internal! + } + `) + + const schema = await buildSchema() + ;[(`Foo`, `Bar`)].forEach(typeName => { + const type = schema.getType(typeName) + expect(type).toBeInstanceOf(GraphQLObjectType) + expect(type.getInterfaces()).toEqual([schema.getType(`Node`)]) + const fields = type.getFields() + expect(fields[`id`]).toBeDefined() + expect(fields[`id`].type.toString()).toEqual(`ID!`) + expect(fields[`parent`]).toBeDefined() + expect(fields[`parent`].type.toString()).toEqual(`Node`) + expect(fields[`children`]).toBeDefined() + expect(fields[`children`].type.toString()).toEqual(`[Node!]!`) + expect(fields[`internal`]).toBeDefined() + expect(fields[`internal`].type.toString()).toEqual(`Internal!`) + }) + }) + + it(`allows adding abstract types in SDL`, async () => { + createTypes(` + interface FooBar { + text: String! + } + + type Foo implements Node & FooBar { + text: String! + } + + type Bar implements Node & FooBar { + text: String! + } + + type Author implements Node & FooBar { + text: String! + } + + union UFooBar = Foo | Bar | Author + `) + + const schema = await buildSchema() + + const interfaceType = schema.getType(`FooBar`) + expect(interfaceType).toBeInstanceOf(GraphQLInterfaceType) + const unionType = schema.getType(`UFooBar`) + expect(unionType).toBeInstanceOf(GraphQLUnionType) + ;[(`Foo`, `Bar`, `Author`)].forEach(typeName => { + const type = schema.getType(typeName) + const typeSample = { internal: { type: typeName } } + expect(interfaceType.resolveType(typeSample)).toBe(typeName) + expect(unionType.resolveType(typeSample)).toBe(typeName) + expect(new Set(type.getInterfaces())).toEqual( + new Set([schema.getType(`Node`), schema.getType(`FooBar`)]) + ) + }) + }) + + it(`allows adding abstract types in gatsby type def language`, async () => { + createTypes([ + buildInterfaceType({ + name: `FooBar`, + fields: { + text: `String!`, + }, + }), + buildObjectType({ + name: `Foo`, + fields: { + text: `String!`, + }, + interfaces: [`Node`, `FooBar`], + }), + buildObjectType({ + name: `Bar`, + fields: { + text: `String!`, + }, + interfaces: [`Node`, `FooBar`], + }), + buildObjectType({ + name: `Author`, + fields: { + text: `String!`, + }, + interfaces: [`Node`, `FooBar`], + }), + buildUnionType({ + name: `UFooBar`, + types: [`Foo`, `Bar`, `Author`], + }), + ]) + + const schema = await buildSchema() + + const interfaceType = schema.getType(`FooBar`) + expect(interfaceType).toBeInstanceOf(GraphQLInterfaceType) + const unionType = schema.getType(`UFooBar`) + expect(unionType).toBeInstanceOf(GraphQLUnionType) + ;[(`Foo`, `Bar`, `Author`)].forEach(typeName => { + const type = schema.getType(typeName) + const typeSample = { internal: { type: typeName } } + expect(interfaceType.resolveType(typeSample)).toBe(typeName) + expect(unionType.resolveType(typeSample)).toBe(typeName) + expect(new Set(type.getInterfaces())).toEqual( + new Set([schema.getType(`Node`), schema.getType(`FooBar`)]) + ) + }) + }) + + it(`adds args to field`, async () => { + createTypes(` + type Author implements Node { + name(withHello: Boolean = false): String! + } + `) + const schema = await buildSchema() + const type = schema.getType(`Author`) + const fields = type.getFields() + const arg = fields[`name`].args.find(arg => arg.name === `withHello`) + expect(arg).toBeDefined() + expect(arg.type.toString()).toEqual(`Boolean`) + expect(arg.defaultValue).toEqual(false) + }) + + // TODO: Define what "handles being called multiple times mean" + it.todo(`handles being called multiple times`) + + it(`displays error message for reserved Node interface`, () => { + const typeDefs = [ + `interface Node { foo: Boolean }`, + `type Node { foo: Boolean }`, + new GraphQLInterfaceType({ name: `Node`, fields: {} }), + buildInterfaceType({ name: `Node`, fields: {} }), + ] + return Promise.all( + typeDefs.map(def => { + store.dispatch({ type: `DELETE_CACHE` }) + createTypes(def) + return expect(buildSchema()).rejects.toThrow( + `The GraphQL type \`Node\` is reserved for internal use.` + ) + }) + ) + }) + + it(`displays error message for reserved type names`, () => { + const typeDefs = [ + [`TestSortInput`, `type TestSortInput { foo: Boolean }`], + [ + `TestFilterInput`, + `type TestFilterInput implements Node { foo: Boolean }`, + ], + [ + `TestSortInput`, + new GraphQLObjectType({ name: `TestSortInput`, fields: {} }), + ], + [ + `TestFilterInput`, + buildObjectType({ name: `TestFilterInput`, fields: {} }), + ], + ] + return Promise.all( + typeDefs.map(([name, def]) => { + store.dispatch({ type: `DELETE_CACHE` }) + createTypes(def) + return expect(buildSchema()).rejects.toThrow( + `GraphQL type names ending with "FilterInput" or "SortInput" are ` + + `reserved for internal use. Please rename \`${name}\`.` + ) + }) + ) + }) + + it(`displays error message for reserved type names`, () => { + const typeDefs = [ + [`JSON`, `type JSON { foo: Boolean }`], + [`Date`, new GraphQLObjectType({ name: `Date`, fields: {} })], + [`Float`, buildObjectType({ name: `Float`, fields: {} })], + ] + return Promise.all( + typeDefs.map(([name, def]) => { + store.dispatch({ type: `DELETE_CACHE` }) + createTypes(def) + return expect(buildSchema()).rejects.toThrow( + `The GraphQL type \`${name}\` is reserved for internal use by ` + + `built-in scalar types.` + ) + }) + ) + }) + }) + + describe(`createResolvers`, () => { + it(`allows adding resolver to field`, async () => { + createTypes(` + type Author implements Node { + name(withHello: Boolean = false): String! + } + `) + createCreateResolversMock({ + Author: { + name: { + resolve(parent, args, context, info) { + if (args.withHello) { + return `Hello ${parent.name}` + } else { + return info.originalResolver(parent, args, context, info) + } + }, + }, + }, + }) + const schema = await buildSchema() + const type = schema.getType(`Author`) + const fields = type.getFields() + expect(fields[`name`].resolve).toBeDefined() + expect( + fields[`name`].resolve( + { name: `Mikhail` }, + { withHello: true }, + {}, + { + fieldName: `name`, + } + ) + ).toEqual(`Hello Mikhail`) + expect( + fields[`name`].resolve( + { name: `Mikhail` }, + { withHello: false }, + {}, + { + fieldName: `name`, + } + ) + ).toEqual(`Mikhail`) + }) + + it(`allows adding args to field`, async () => { + createCreateResolversMock({ + Author: { + name: { + args: { + withHello: { + type: `Boolean`, + defaultValue: false, + }, + }, + resolve(parent, args, context, info) { + if (args.withHello) { + return `Hello ${parent.name}` + } else { + return info.originalResolver(parent, args, context, info) + } + }, + }, + }, + }) + const schema = await buildSchema() + const type = schema.getType(`Author`) + const fields = type.getFields() + expect(fields[`name`].resolve).toBeDefined() + expect( + fields[`name`].resolve( + { name: `Mikhail` }, + { withHello: true }, + {}, + { + fieldName: `name`, + } + ) + ).toEqual(`Hello Mikhail`) + expect( + fields[`name`].resolve( + { name: `Mikhail` }, + { withHello: false }, + {}, + { + fieldName: `name`, + } + ) + ).toEqual(`Mikhail`) + }) + + it(`disallows overriding field type on field`, async () => { + createCreateResolversMock({ + Author: { + name: { + type: `Boolean`, + }, + }, + }) + const schema = await buildSchema() + const type = schema.getType(`Author`) + const fields = type.getFields() + expect(fields[`name`].type).toEqual(GraphQLString) + }) + + it(`allows overriding field type on field on third-party type`, async () => { + addThirdPartySchema(` + type ThirdPartyFoo { + text: String + } + + type Query { + foo: ThirdPartyFoo + } + `) + createCreateResolversMock({ + ThirdPartyFoo: { + text: { + type: `Boolean`, + }, + }, + }) + + const schema = await buildSchema() + const type = schema.getType(`ThirdPartyFoo`) + const fields = type.getFields() + expect(fields[`text`].type).toEqual(GraphQLBoolean) + }) + + it(`allows adding new field`, async () => { + createCreateResolversMock({ + Author: { + newField: { + type: `String`, + }, + }, + }) + + const schema = await buildSchema() + const type = schema.getType(`Author`) + const fields = type.getFields() + expect(fields[`newField`]).toBeDefined() + expect(fields[`newField`].type).toEqual(GraphQLString) + }) + + it(`disallows adding if type does not exist`, async () => { + createCreateResolversMock({ + FakeType: { + newField: { + type: `String`, + }, + }, + }) + const schema = await buildSchema() + const type = schema.getType(`FakeType`) + expect(type).not.toBeDefined() + }) + + it(`makes original field resolver available on info`, async () => { + createCreateResolversMock({ + PostFrontmatter: { + date: { + resolve(parent, args, context, info) { + if (parent.date.getFullYear() < 2018) { + return info.originalResolver( + { + ...parent, + date: new Date(2018, 10, 10), + }, + args, + context, + info + ) + } else { + return info.originalResolver(parent, args, context, info) + } + }, + }, + }, + }) + const schema = await buildSchema() + const type = schema.getType(`PostFrontmatter`) + const fields = type.getFields() + expect( + fields[`date`].resolve( + { date: new Date(2019, 10, 10) }, + { formatString: `YYYY` }, + {}, + { + fieldName: `date`, + } + ) + ).toEqual(`2019`) + expect( + fields[`date`].resolve( + { date: new Date(2010, 10, 10) }, + { formatString: `YYYY` }, + {}, + { + fieldName: `date`, + } + ) + ).toEqual(`2018`) + }) + + // TODO: Define what "handles being called multiple times mean" + it.todo(`handles being called multiple times`) + }) + + describe(`addThirdPartySchemas`, () => { + it(`makes third-party schema available on root Query type`, async () => { + addThirdPartySchema(` + type ThirdPartyFoo { + text: String + } + + type Query { + foo: ThirdPartyFoo + foos: [ThirdPartyFoo] + } + `) + createCreateResolversMock({ + ThirdPartyFoo: { + text: { + type: `Boolean`, + }, + }, + }) + + const schema = await buildSchema() + const type = schema.getType(`Query`) + const fields = type.getFields() + expect(fields[`foo`].type.toString()).toEqual(`ThirdPartyFoo`) + expect(fields[`foos`].type.toString()).toEqual(`[ThirdPartyFoo]`) + }) + + it(`adds third-party types to schema`, async () => { + addThirdPartySchema(` + type ThirdPartyFoo { + text: String + } + + type ThirdPartyBar { + baz: String + } + + union ThirdPartyUnion = ThirdPartyFoo | ThirdPartyBar + + type Query { + union: ThirdPartyUnion + } + `) + + const schema = await buildSchema() + ;[`ThirdPartyFoo`, `ThirdPartyBar`, `ThirdPartyUnion`].forEach( + typeName => { + const type = schema.getType(typeName) + expect(type).toBeDefined() + } + ) + }) + }) + + describe(`setFieldsOnGraphQLNodeType`, () => { + it(`allows adding fields`, async () => { + createSetFieldsOnNodeTypeMock(({ type: { name } }) => { + if (name === `Author`) { + return [ + { + newField: { + type: GraphQLString, + }, + }, + ] + } else { + return [] + } + }) + + const schema = await buildSchema() + const type = schema.getType(`Author`) + const fields = type.getFields() + expect(fields[`newField`]).toBeDefined() + expect(fields[`newField`].type).toBe(GraphQLString) + }) + + it(`allows adding nested fields`, async () => { + createSetFieldsOnNodeTypeMock(({ type: { name } }) => { + if (name === `Post`) { + return [ + { + newField: { + type: GraphQLString, + }, + "frontmatter.newField": { + type: GraphQLString, + }, + }, + ] + } else { + return [] + } + }) + + const schema = await buildSchema() + const type = schema.getType(`Post`) + const fields = type.getFields() + expect(fields[`newField`]).toBeDefined() + expect(fields[`newField`].type).toBe(GraphQLString) + const frontmatterType = fields[`frontmatter`].type + const frontmatterFields = frontmatterType.getFields() + expect(frontmatterFields[`newField`]).toBeDefined() + expect(frontmatterFields[`newField`].type).toBe(GraphQLString) + }) + }) +}) + +const createTypes = types => { + store.dispatch({ type: `CREATE_TYPES`, payload: types }) +} + +const createCreateResolversMock = resolvers => { + const apiRunnerNode = require(`../../utils/api-runner-node`) + apiRunnerNode.mockImplementation((api, { createResolvers }) => { + if (api === `createResolvers`) { + return createResolvers(resolvers) + } + return [] + }) +} + +const createSetFieldsOnNodeTypeMock = mock => { + const apiRunnerNode = require(`../../utils/api-runner-node`) + apiRunnerNode.mockImplementation((api, ...args) => { + if (api === `setFieldsOnGraphQLNodeType`) { + return mock(...args) + } + return [] + }) +} + +const addDefaultApiRunnerMock = () => { + const apiRunnerNode = require(`../../utils/api-runner-node`) + apiRunnerNode.mockImplementation(() => []) +} + +const buildSchema = async () => { + await build({}) + return store.getState().schema +} + +const addThirdPartySchema = async typeDefs => { + const schemaComposer = new SchemaComposer() + schemaComposer.addTypeDefs(typeDefs) + const schema = schemaComposer.buildSchema() + store.dispatch({ type: `ADD_THIRD_PARTY_SCHEMA`, payload: schema }) +} diff --git a/packages/gatsby/src/schema/__tests__/connections-filter-on-linked-nodes.js b/packages/gatsby/src/schema/__tests__/connection-filter-on-linked-nodes.js similarity index 76% rename from packages/gatsby/src/schema/__tests__/connections-filter-on-linked-nodes.js rename to packages/gatsby/src/schema/__tests__/connection-filter-on-linked-nodes.js index 711eb2dabc10e..ee603bbee6319 100644 --- a/packages/gatsby/src/schema/__tests__/connections-filter-on-linked-nodes.js +++ b/packages/gatsby/src/schema/__tests__/connection-filter-on-linked-nodes.js @@ -1,13 +1,8 @@ -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 { createSchemaComposer } = require(`../schema-composer`) +const { buildSchema } = require(`../schema`) +const { LocalNodeModel } = require(`../node-model`) +const nodeStore = require(`../../db/nodes`) const { store } = require(`../../redux`) require(`../../db/__tests__/fixtures/ensure-loki`)() @@ -32,26 +27,31 @@ function makeNodes() { ] } -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)) +async function queryResult(nodes, query) { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => store.dispatch({ type: `CREATE_NODE`, payload: node })) - // Pull off just the graphql node from each type object. - const nodes = _.mapValues(typesGQL, `node`) - - const schema = buildNodesSchema({ ...connections, ...nodes }) + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types: [], + thirdPartySchemas: [], + }) + store.dispatch({ type: `SET_SCHEMA`, payload: schema }) - return graphql(schema, query) + let context = { path: `foo` } + return graphql(schema, query, undefined, { + ...context, + nodeModel: new LocalNodeModel({ + schema, + nodeStore, + createPageDependency: jest.fn(), + }), + }) } 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([ @@ -249,45 +249,11 @@ describe(`filtering on linked nodes`, () => { ) }) - 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.skip(`doesn't mutate node object`, async () => { + // We now infer the InputObjectType from the ObjectType, not from exampleValue }) - it(`skips fields with missing nodes`, async () => { - const fields = inferInputObjectStructureFromNodes({ - nodes: [], - exampleValue: { - movie___NODE: `foobar`, - }, - }).inferredFields - - expect(Object.keys(fields)).toHaveLength(0) + it.skip(`skips fields with missing nodes`, async () => { + // We now infer the InputObjectType from the ObjectType, not from exampleValue }) }) diff --git a/packages/gatsby/src/schema/__tests__/connection-input-fields-test.js b/packages/gatsby/src/schema/__tests__/connection-input-fields.js similarity index 89% rename from packages/gatsby/src/schema/__tests__/connection-input-fields-test.js rename to packages/gatsby/src/schema/__tests__/connection-input-fields.js index 29a458c3f7321..d693053644ad3 100644 --- a/packages/gatsby/src/schema/__tests__/connection-input-fields-test.js +++ b/packages/gatsby/src/schema/__tests__/connection-input-fields.js @@ -1,9 +1,8 @@ -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 { createSchemaComposer } = require(`../schema-composer`) +const { buildSchema } = require(`../schema`) +const { LocalNodeModel } = require(`../node-model`) +const nodeStore = require(`../../db/nodes`) const { store } = require(`../../redux`) require(`../../db/__tests__/fixtures/ensure-loki`)() @@ -132,21 +131,28 @@ function makeNodes() { ] } -async function queryResult(nodesData, query, { types = [] } = {}) { +async function queryResult(nodes, query) { 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)) + nodes.forEach(node => store.dispatch({ type: `CREATE_NODE`, payload: node })) - // Pull off just the graphql node from each type object. - const nodes = _.mapValues(typesGQL, `node`) - - const schema = buildNodesSchema({ ...connections, ...nodes }) + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types: [], + thirdPartySchemas: [], + }) + store.dispatch({ type: `SET_SCHEMA`, payload: schema }) - return graphql(schema, query) + let context = { path: `foo` } + return graphql(schema, query, undefined, { + ...context, + nodeModel: new LocalNodeModel({ + schema, + nodeStore, + createPageDependency: jest.fn(), + }), + }) } describe(`connection input fields`, () => { diff --git a/packages/gatsby/src/schema/__tests__/create-key.js b/packages/gatsby/src/schema/__tests__/create-key.js deleted file mode 100644 index 4ff52b57bf269..0000000000000 --- a/packages/gatsby/src/schema/__tests__/create-key.js +++ /dev/null @@ -1,27 +0,0 @@ -const createKey = require(`../create-key`) - -describe(`createKey`, () => { - it(`leaves valid strings as is`, () => { - ;[`validstring`, `_hello`, `_`].forEach(input => { - expect(createKey(input)).toBe(input) - }) - }) - - it(`replaces invalid characters`, () => { - ;[ - [`/hello`, `_hello`], - [`~/path/to/some/module`, `_xpathxtoxsomexmodule`], - [`/*`, `_x`], - [`/*.js`, `_xxjs`], - [`01234`, `_01234`], - ].forEach(([input, output]) => { - expect(createKey(input)).toBe(output) - }) - }) - - it(`does not generate same key for different input`, () => { - ;[[`/*.js`, `*js`]].forEach(([one, two]) => { - expect(createKey(one)).not.toBe(createKey(two)) - }) - }) -}) diff --git a/packages/gatsby/src/schema/__tests__/data-tree-utils-test.js b/packages/gatsby/src/schema/__tests__/data-tree-utils-test.js deleted file mode 100644 index 04e81693d81fa..0000000000000 --- a/packages/gatsby/src/schema/__tests__/data-tree-utils-test.js +++ /dev/null @@ -1,517 +0,0 @@ -const { - getExampleValues, - buildFieldEnumValues, - clearTypeExampleValues, - INVALID_VALUE, -} = require(`../data-tree-utils`) -const { - typeConflictReporter, - TypeConflictEntry, -} = require(`../type-conflict-reporter`) - -describe(`Gatsby data tree utils`, () => { - beforeEach(() => { - clearTypeExampleValues() - }) - - const nodes = [ - { - name: `The Mad Max`, - hair: 1, - date: `2006-07-22T22:39:53.000Z`, - "key-with..unsupported-values": true, - emptyArray: [], - anArray: [1, 2, 3, 4], - nestedArrays: [[1, 2, 3], [4, 5, 6]], - objectsInArray: [{ field1: true }, { field2: 1 }], - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of dash and adventure`, - blue: 100, - }, - context: { - nestedObject: null, - }, - }, - { - name: `The Mad Wax`, - hair: 2, - date: `2006-07-22T22:39:53.000Z`, - emptyArray: [undefined, null], - anArray: [1, 2, 5, 4], - iAmNull: null, - nestedArrays: [[1, 2, 3]], - objectsInArray: [{ field3: `foo` }], - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of slash and adventure`, - blue: 10010, - circle: `happy`, - draft: false, - }, - context: { - nestedObject: { - someOtherProperty: 1, - }, - }, - }, - { - name: `The Mad Wax`, - hair: 3, - date: `2006-07-22T22:39:53.000Z`, - anArray: [], - iAmNull: null, - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of slash and adventure`, - blue: 10010, - circle: `happy`, - draft: false, - }, - context: { - nestedObject: { - someOtherProperty: 2, - }, - }, - }, - { - name: `The Mad Wax`, - hair: 4, - date: `2006-07-22T22:39:53.000Z`, - anArray: [4, 6, 2], - iAmNull: null, - frontmatter: { - date: `2006-07-22T22:39:53.000Z`, - title: `The world of slash and adventure`, - blue: 10010, - circle: `happy`, - draft: false, - }, - context: { - nestedObject: { - name: `Inner name`, - someOtherProperty: 3, - }, - }, - "": ``, - }, - ] - - it(`builds field examples from an array of nodes`, () => { - expect(getExampleValues({ nodes })).toMatchSnapshot() - }) - - it(`skips null fields`, () => { - expect(getExampleValues({ nodes }).iAmNull).not.toBeDefined() - }) - - it(`skips fields with key set to empty string`, () => { - expect(getExampleValues({ nodes })[``]).not.toBeDefined() - }) - - it(`should not mutate the nodes`, () => { - getExampleValues({ nodes }) - expect(nodes[0].context.nestedObject).toBeNull() - expect(nodes[1].context.nestedObject.someOtherProperty).toEqual(1) - expect(nodes[2].context.nestedObject.someOtherProperty).toEqual(2) - expect(nodes[3].context.nestedObject.someOtherProperty).toEqual(3) - }) - - it(`skips empty or sparse arrays`, () => { - expect(getExampleValues({ nodes }).emptyArray).not.toBeDefined() - expect(getExampleValues({ nodes }).hair).toBeDefined() - }) - - it(`skips ignoredFields at the top level`, () => { - const example = getExampleValues({ - nodes, - ignoreFields: [`name`, `anArray`], - }) - - expect(example.name).not.toBeDefined() - expect(example.anArray).not.toBeDefined() - expect(example.hair).toBeDefined() - expect(example.context.nestedObject.name).toBeDefined() - }) - - it(`build enum values for fields from array on nodes`, () => { - expect(buildFieldEnumValues({ nodes })).toMatchSnapshot() - }) - - it(`turns polymorphic fields null`, () => { - let example = getExampleValues({ - nodes: [{ foo: null }, { foo: [1] }, { foo: { field: 1 } }], - }) - expect(example.foo).toBe(INVALID_VALUE) - }) - - it(`handles polymorphic arrays`, () => { - let example = getExampleValues({ - nodes: [{ foo: [[`foo`, `bar`]] }, { foo: [{ field: 1 }] }], - }) - expect(example.foo).toBe(INVALID_VALUE) - }) - - it(`doesn't confuse empty fields for polymorhpic ones`, () => { - let example = getExampleValues({ - nodes: [{ foo: { bar: 1 } }, { foo: null }, { foo: { field: 1 } }], - }) - expect(example.foo).toEqual({ field: 1, bar: 1 }) - - example = getExampleValues({ - nodes: [ - { foo: [{ bar: 1 }] }, - { foo: null }, - { foo: [{ field: 1 }, { baz: 1 }] }, - ], - }) - expect(example.foo).toEqual([{ field: 1, bar: 1, baz: 1 }]) - }) - - it(`skips unsupported types`, () => { - // Skips functions - let example = getExampleValues({ nodes: [{ foo: () => {} }] }) - expect(example.foo).not.toBeDefined() - - // Skips array of functions - example = getExampleValues({ nodes: [{ foo: [() => {}] }] }) - expect(example.foo).not.toBeDefined() - }) - - it(`prefers float when multiple number types`, () => { - let example - - // nodes starting with 32-bit integer ("big" ints are float) - example = getExampleValues({ nodes: [{ number: 5 }, { number: 2.5 }] }) - expect(example.number).toBeDefined() - expect(example.number).toEqual(2.5) - example = getExampleValues({ - nodes: [{ number: 5 }, { number: 3000000000 }], - }) - expect(example.number).toBeDefined() - expect(example.number).toEqual(3000000000) - - // with node not containing number field - example = getExampleValues({ nodes: [{ number: 5 }, {}, { number: 2.5 }] }) - expect(example.number).toBeDefined() - expect(example.number).toEqual(2.5) - - // nodes starting with float ("big" ints are float) - example = getExampleValues({ nodes: [{ number: 2.5 }, { number: 5 }] }) - expect(example.number).toBeDefined() - expect(example.number).toEqual(2.5) - example = getExampleValues({ - nodes: [{ number: 3000000000 }, { number: 5 }], - }) - expect(example.number).toBeDefined() - expect(example.number).toEqual(3000000000) - - // array of numbers - starting with float - example = getExampleValues({ nodes: [{ numbers: [2.5, 5] }] }) - expect(example.numbers).toBeDefined() - expect(Array.isArray(example.numbers)).toBe(true) - expect(example.numbers.length).toBe(1) - expect(example.numbers[0]).toBe(2.5) - example = getExampleValues({ nodes: [{ numbers: [3000000000, 5] }] }) - expect(example.numbers).toBeDefined() - expect(Array.isArray(example.numbers)).toBe(true) - expect(example.numbers.length).toBe(1) - expect(example.numbers[0]).toBe(3000000000) - - // array of numbers - starting with 32-bit integer - example = getExampleValues({ nodes: [{ numbers: [5, 2.5] }] }) - expect(example.numbers).toBeDefined() - expect(Array.isArray(example.numbers)).toBe(true) - expect(example.numbers.length).toBe(1) - expect(example.numbers[0]).toBe(2.5) - example = getExampleValues({ nodes: [{ numbers: [5, 3000000000] }] }) - expect(example.numbers).toBeDefined() - expect(Array.isArray(example.numbers)).toBe(true) - expect(example.numbers.length).toBe(1) - expect(example.numbers[0]).toBe(3000000000) - }) - - it(`handles mix of date strings and date objects`, () => { - let example - - // should be valid - example = getExampleValues({ - nodes: [ - { date: new Date(`2017-12-01T14:59:45.600Z`) }, - { date: `2017-01-12T18:13:38.326Z` }, - ], - }) - expect(example.date).not.toBe(INVALID_VALUE) - - // should be invalid (string is not a date) - example = getExampleValues({ - nodes: [ - { date: new Date(`2017-12-01T14:59:45.600Z`) }, - { date: `This is not a date!!!!!!` }, - ], - }) - expect(example.date).toBe(INVALID_VALUE) - - // should be valid - reversed order - example = getExampleValues({ - nodes: [ - { date: `2017-01-12T18:13:38.326Z` }, - { date: new Date(`2017-12-01T14:59:45.600Z`) }, - ], - }) - expect(example.date).not.toBe(INVALID_VALUE) - - // should be invalid (string is not a date) - reversed order - example = getExampleValues({ - nodes: [ - { date: `This is not a date!!!!!!` }, - { date: new Date(`2017-12-01T14:59:45.600Z`) }, - ], - }) - expect(example.date).toBe(INVALID_VALUE) - }) - - it(`handles arrays with mix of date strings and date objects`, () => { - let example - - // should be valid - separate arrays of unique types - example = getExampleValues({ - nodes: [ - { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, - { dates: [`2017-01-12T18:13:38.326Z`] }, - ], - }) - expect(example.dates).not.toBe(INVALID_VALUE) - - // should be invalid - separate arrays of unique types (string is not a date) - example = getExampleValues({ - nodes: [ - { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, - { dates: [`This is not a date!!!!!!`] }, - ], - }) - expect(example.dates).toBe(INVALID_VALUE) - - // should be valid - single array of mixed types - example = getExampleValues({ - nodes: [ - { - dates: [ - new Date(`2017-12-01T14:59:45.600Z`), - `2017-01-12T18:13:38.326Z`, - ], - }, - ], - }) - expect(example.dates).not.toBe(INVALID_VALUE) - - // should be invalid - single array of mixed types (string is not a date) - example = getExampleValues({ - nodes: [ - { - dates: [ - new Date(`2017-12-01T14:59:45.600Z`), - `This is not a date!!!!!!`, - ], - }, - ], - }) - expect(example.dates).toBe(INVALID_VALUE) - - // should be valid - separate arrays of both unique types and mixed types - example = getExampleValues({ - nodes: [ - { - dates: [ - new Date(`2017-12-01T14:59:45.600Z`), - `2017-01-12T18:13:38.326Z`, - ], - }, - { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, - { dates: [`2017-01-12T18:13:38.326Z`] }, - ], - }) - expect(example.dates).not.toBe(INVALID_VALUE) - - // should be valid - separate arrays of both unique types and mixed types (string is not a date) #1 - example = getExampleValues({ - nodes: [ - { - dates: [ - new Date(`2017-12-01T14:59:45.600Z`), - `This is not a date!!!!!!`, - ], - }, - { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, - { dates: [`2017-01-12T18:13:38.326Z`] }, - ], - }) - expect(example.dates).toBe(INVALID_VALUE) - - // should be valid - separate arrays of both unique types and mixed types (string is not a date) #2 - example = getExampleValues({ - nodes: [ - { - dates: [ - new Date(`2017-12-01T14:59:45.600Z`), - `2017-01-12T18:13:38.326Z`, - ], - }, - { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, - { dates: [`This is not a date!!!!!!`] }, - ], - }) - expect(example.dates).toBe(INVALID_VALUE) - - // should be valid - separate arrays of both unique types and mixed types (string is not a date) #2 - example = getExampleValues({ - nodes: [ - { - dates: [ - new Date(`2017-12-01T14:59:45.600Z`), - `This is not a date!!!!!!`, - ], - }, - { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, - { dates: [`This is not a date!!!!!!`] }, - ], - }) - expect(example.dates).toBe(INVALID_VALUE) - }) -}) - -describe(`Type conflicts`, () => { - let addConflictSpy = jest.spyOn(typeConflictReporter, `addConflict`) - let addConflictExampleSpy = jest.spyOn( - TypeConflictEntry.prototype, - `addExample` - ) - - beforeEach(() => { - clearTypeExampleValues() - addConflictExampleSpy.mockReset() - }) - - afterAll(() => { - addConflictSpy.mockRestore() - addConflictExampleSpy.mockRestore() - }) - - it(`Doesn't report conflicts if there are none`, () => { - const nodes = [ - { - id: `id1`, - string: `string`, - number: 5, - boolean: true, - arrayOfStrings: [`string1`], - }, - { - id: `id2`, - string: `other string`, - number: 3.5, - boolean: false, - arrayOfStrings: null, - }, - ] - - getExampleValues({ nodes, typeName: `NoConflict` }) - - expect(addConflictExampleSpy).not.toBeCalled() - }) - - it(`Report type conflicts and its origin`, () => { - const nodes = [ - { - id: `id1`, - stringOrNumber: `string`, - number: 5, - boolean: true, - arrayOfStrings: [`string1`], - }, - { - id: `id2`, - stringOrNumber: 5, - number: 3.5, - boolean: false, - arrayOfStrings: null, - }, - ] - - getExampleValues({ nodes, typeName: `Conflict_1` }) - - expect(addConflictSpy).toBeCalled() - expect(addConflictSpy).toBeCalledWith( - `Conflict_1.stringOrNumber`, - expect.any(Array) - ) - - expect(addConflictExampleSpy).toHaveBeenCalledTimes(2) - expect(addConflictExampleSpy).toBeCalledWith( - expect.objectContaining({ - value: nodes[0].stringOrNumber, - type: `string`, - parent: nodes[0], - }) - ) - expect(addConflictExampleSpy).toBeCalledWith( - expect.objectContaining({ - value: nodes[1].stringOrNumber, - type: `number`, - parent: nodes[1], - }) - ) - }) - - it(`Report conflict when array has mixed types and its origin`, () => { - const nodes = [ - { - id: `id1`, - arrayOfMixedType: [`string1`, 5, `string2`, true], - }, - ] - - getExampleValues({ nodes, typeName: `Conflict_2` }) - expect(addConflictSpy).toBeCalled() - expect(addConflictSpy).toBeCalledWith( - `Conflict_2.arrayOfMixedType`, - expect.any(Array) - ) - - expect(addConflictExampleSpy).toBeCalled() - expect(addConflictExampleSpy).toHaveBeenCalledTimes(1) - expect(addConflictExampleSpy).toBeCalledWith( - expect.objectContaining({ - value: nodes[0].arrayOfMixedType, - type: `array`, - parent: nodes[0], - }) - ) - }) - - it(`Doesn't report ignored fields`, () => { - const nodes = [ - { - id: `id1`, - stringOrNumber: `string`, - other: 1, - }, - { - id: `id2`, - stringOrNumber: 5, - other: `foo`, - }, - ] - - getExampleValues({ - nodes, - typeName: `Conflict_3`, - ignoreFields: [`stringOrNumber`], - }) - - expect(addConflictSpy).toBeCalled() - expect(addConflictSpy).toBeCalledWith(`Conflict_3.other`, expect.any(Array)) - expect(addConflictSpy).not.toBeCalledWith(`Conflict_3.stringOrNumber`) - expect(addConflictExampleSpy).toBeCalled() - }) -}) diff --git a/packages/gatsby/src/schema/__tests__/fixtures/kitchen-sink.json b/packages/gatsby/src/schema/__tests__/fixtures/kitchen-sink.json new file mode 100644 index 0000000000000..c9ac2f76726e1 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/fixtures/kitchen-sink.json @@ -0,0 +1,11257 @@ +[ + { + "jsonName": "dev-404-page-5f9", + "internalComponentName": "ComponentDev404Page", + "path": "/dev-404-page/", + "component": "/examples/gatsbygram/.cache/dev-404-page.js", + "componentChunkName": "component---cache-dev-404-page-js", + "context": {}, + "pluginCreator___NODE": "d48d1c52-fe48-53cb-8f08-aa4b47dde5a5", + "pluginCreatorId": "d48d1c52-fe48-53cb-8f08-aa4b47dde5a5", + "componentPath": "/examples/gatsbygram/.cache/dev-404-page.js", + "id": "SitePage /dev-404-page/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "42a24b67a94307f5e21997eb6cfc9cc5", + "description": "d48d1c52-fe48-53cb-8f08-aa4b47dde5a5", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/dev-404-page", + "id": "d48d1c52-fe48-53cb-8f08-aa4b47dde5a5", + "name": "dev-404-page", + "version": "1.0.0", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "createPagesStatefully" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/dev-404-page", + "packageJson": { + "name": "dev-404-page", + "description": "Internal plugin to add a 404 page in development with helpful information", + "version": "1.0.0", + "main": "index.js", + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [], + "devDependencies": [], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "2b5b4bced853926de0d5335ae5f9a5d3", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/load-babel-config", + "id": "1fc32581-893a-55e8-8927-bcd667e2b700", + "name": "load-babel-config", + "version": "1.0.0", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onPreBootstrap" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/load-babel-config", + "packageJson": { + "name": "load-babel-config", + "description": "Internal plugin that handles loading Babel configs", + "version": "1.0.0", + "main": "index.js", + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [], + "devDependencies": [], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "50184920d40e80f70b8bc61a8def475f", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/internal-data-bridge", + "id": "a5079d69-ba80-53dc-82f9-0f440bd5448c", + "name": "internal-data-bridge", + "version": "1.0.0", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "sourceNodes", + "onCreatePage" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/internal-data-bridge", + "packageJson": { + "name": "internal-data-bridge", + "description": "An internal Gatsby plugin which creates data nodes from internal data", + "version": "1.0.0", + "main": "index.js", + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [], + "devDependencies": [], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "85bcc671b6e460a752264931c2cec1b6", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/prod-404", + "id": "f795702c-a3b8-5a88-88ee-5d06019d44fa", + "name": "prod-404", + "version": "1.0.0", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onCreatePage" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/prod-404", + "packageJson": { + "name": "prod-404", + "description": "Internal plugin to detect various flavors of 404 pages and ensure there's a 404.html path created as well to ensure compatability with static hosts", + "version": "1.0.0", + "main": "index.js", + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [], + "devDependencies": [], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "a4f893432f792cfe311d087d4d920c74", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/query-runner", + "id": "84dad27f-1d44-51fc-ac56-4db2e5222995", + "name": "query-runner", + "version": "1.0.0", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onCreatePage" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/query-runner", + "packageJson": { + "name": "query-runner", + "description": "Internal plugin for running queries", + "version": "1.0.0", + "main": "index.js", + "author": "", + "license": "MIT", + "dependencies": [], + "devDependencies": [], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "85803f60a930a1147b86ff8022857e5f", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/webpack-theme-component-shadowing", + "id": "6f4b2fa9-66b5-5205-a03f-140005a2cfe5", + "name": "webpack-theme-component-shadowing", + "version": "1.0.0", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onCreateWebpackConfig" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby/dist/internal-plugins/webpack-theme-component-shadowing", + "packageJson": { + "name": "webpack-theme-component-shadowing", + "description": "An internal Gatsby plugin which handles configuring webpack to ensure theme components fall back from the user's site to theme modules.", + "version": "1.0.0", + "main": "index.js", + "author": "Chris Biscardi ", + "license": "MIT", + "dependencies": [], + "devDependencies": [], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "4dfb9738a5f82d68075b870cdd6346eb", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-source-filesystem", + "id": "9855a692-fe04-5c80-9f07-de8fe989d990", + "name": "gatsby-source-filesystem", + "version": "2.0.17", + "pluginOptions": { + "plugins": [], + "name": "data", + "path": "/examples/gatsbygram/data" + }, + "nodeAPIs": [ + "sourceNodes", + "setFieldsOnGraphQLNodeType" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-source-filesystem", + "packageJson": { + "name": "gatsby-source-filesystem", + "description": "Gatsby plugin which parses files within a directory for further parsing by other plugins", + "version": "2.0.17", + "keywords": [ + "gatsby", + "gatsby-plugin" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "better-queue", + "version": "^3.8.7" + }, + { + "name": "bluebird", + "version": "^3.5.0" + }, + { + "name": "chokidar", + "version": "^1.7.0" + }, + { + "name": "file-type", + "version": "^10.2.0" + }, + { + "name": "fs-extra", + "version": "^5.0.0" + }, + { + "name": "got", + "version": "^7.1.0" + }, + { + "name": "md5-file", + "version": "^3.1.1" + }, + { + "name": "mime", + "version": "^2.2.0" + }, + { + "name": "pretty-bytes", + "version": "^4.0.2" + }, + { + "name": "progress", + "version": "^1.1.8" + }, + { + "name": "read-chunk", + "version": "^3.0.0" + }, + { + "name": "slash", + "version": "^1.0.0" + }, + { + "name": "valid-url", + "version": "^1.0.9" + }, + { + "name": "xstate", + "version": "^3.1.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">2.0.0-alpha" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "b989561eb4aee8115abfb92098ce322b", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-sharp", + "id": "84d6154d-4241-556c-a679-cc8339cac100", + "name": "gatsby-plugin-sharp", + "version": "2.0.18", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onPreInit" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-sharp", + "packageJson": { + "name": "gatsby-plugin-sharp", + "description": "Wrapper of the Sharp image manipulation library for Gatsby plugins", + "version": "2.0.18", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin", + "image", + "sharp" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "async", + "version": "^2.1.2" + }, + { + "name": "bluebird", + "version": "^3.5.0" + }, + { + "name": "fs-exists-cached", + "version": "^1.0.0" + }, + { + "name": "fs-extra", + "version": "^7.0.0" + }, + { + "name": "imagemin", + "version": "^6.0.0" + }, + { + "name": "imagemin-mozjpeg", + "version": "^8.0.0" + }, + { + "name": "imagemin-pngquant", + "version": "^6.0.0" + }, + { + "name": "imagemin-webp", + "version": "^5.0.0" + }, + { + "name": "lodash", + "version": "^4.17.10" + }, + { + "name": "mini-svg-data-uri", + "version": "^1.0.0" + }, + { + "name": "potrace", + "version": "^2.1.1" + }, + { + "name": "probe-image-size", + "version": "^4.0.0" + }, + { + "name": "progress", + "version": "^1.1.8" + }, + { + "name": "sharp", + "version": "^0.21.0" + }, + { + "name": "svgo", + "version": "^0.7.2" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">2.0.0-alpha" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "8add3038ea3427eb78b761b82dcb7666", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-transformer-sharp", + "id": "da3d06eb-685e-5c77-ae1d-750eb6a2e4a9", + "name": "gatsby-transformer-sharp", + "version": "2.1.12", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onCreateNode", + "setFieldsOnGraphQLNodeType", + "onPreExtractQueries" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-transformer-sharp", + "packageJson": { + "name": "gatsby-transformer-sharp", + "description": "Gatsby transformer plugin for images using Sharp", + "version": "2.1.12", + "keywords": [ + "gatsby", + "gatsby-plugin", + "image", + "sharp" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "bluebird", + "version": "^3.5.0" + }, + { + "name": "fs-extra", + "version": "^4.0.2" + }, + { + "name": "potrace", + "version": "^2.1.1" + }, + { + "name": "probe-image-size", + "version": "^4.0.0" + }, + { + "name": "sharp", + "version": "^0.21.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": "^2.0.33" + }, + { + "name": "gatsby-plugin-sharp", + "version": "^2.0.0-beta.3" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "a590bcac2abc9aa140121a41d81e80eb", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-transformer-json", + "id": "6aa321d5-19bf-5a36-99ac-3b6091585e24", + "name": "gatsby-transformer-json", + "version": "2.1.7", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onCreateNode" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-transformer-json", + "packageJson": { + "name": "gatsby-transformer-json", + "description": "Gatsby transformer plugin for JSON files", + "version": "2.1.7", + "keywords": [ + "gatsby", + "gatsby-plugin", + "json" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "bluebird", + "version": "^3.5.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">=2.0.15" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "d57cc1b24d600a05fce36573de3cc390", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-glamor", + "id": "35060b81-dece-5ee0-8b77-8e505cbed3a6", + "name": "gatsby-plugin-glamor", + "version": "2.0.7", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "onCreateWebpackConfig", + "onCreateBabelConfig" + ], + "browserAPIs": [ + "onClientEntry" + ], + "ssrAPIs": [ + "replaceRenderer" + ], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-glamor", + "packageJson": { + "name": "gatsby-plugin-glamor", + "description": "Gatsby plugin to add support for Glamor", + "version": "2.0.7", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin", + "glamor" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">2.0.0-alpha" + }, + { + "name": "glamor", + "version": "^2.20.29" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "07fe11bf009b042d7610d6584a6a82f0", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-manifest", + "id": "354c933d-4995-53d9-833e-04b2604718cf", + "name": "gatsby-plugin-manifest", + "version": "2.0.13", + "pluginOptions": { + "plugins": [], + "name": "Gatsbygram", + "short_name": "Gatsbygram", + "start_url": "/", + "background_color": "#f7f7f7", + "theme_color": "#191919", + "display": "minimal-ui" + }, + "nodeAPIs": [ + "onPostBootstrap" + ], + "browserAPIs": [], + "ssrAPIs": [ + "onRenderBody" + ], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-manifest", + "packageJson": { + "name": "gatsby-plugin-manifest", + "description": "Gatsby plugin which adds a manifest.webmanifest to make sites progressive web apps", + "version": "2.0.13", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin", + "favicon", + "icons", + "manifest.webmanifest", + "progressive-web-app", + "pwa" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "bluebird", + "version": "^3.5.0" + }, + { + "name": "sharp", + "version": "^0.21.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">2.0.0-alpha" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "2a1e638a5fb60ec5262cbc8ed62e5cc6", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-offline", + "id": "63e5f7ff-e5f1-58f7-8e2c-55872ac42281", + "name": "gatsby-plugin-offline", + "version": "2.0.21", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "createPages", + "onPostBuild" + ], + "browserAPIs": [ + "registerServiceWorker", + "onServiceWorkerActive", + "onPostPrefetchPathname" + ], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-offline", + "packageJson": { + "name": "gatsby-plugin-offline", + "description": "Gatsby plugin which sets up a site to be able to run offline", + "version": "2.0.21", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin", + "offline", + "precache", + "service-worker" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "cheerio", + "version": "^1.0.0-rc.2" + }, + { + "name": "idb-keyval", + "version": "^3.1.0" + }, + { + "name": "lodash", + "version": "^4.17.10" + }, + { + "name": "workbox-build", + "version": "^3.6.3" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">=2.0.53" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "9ffbbc3953e1390fee5266216806594e", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-google-analytics", + "id": "9abf9609-8fa7-52f9-89e6-affec700ccb8", + "name": "gatsby-plugin-google-analytics", + "version": "2.0.10", + "pluginOptions": { + "plugins": [], + "trackingId": "UA-91652198-1" + }, + "nodeAPIs": [], + "browserAPIs": [ + "onRouteUpdate" + ], + "ssrAPIs": [ + "onRenderBody" + ], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-google-analytics", + "packageJson": { + "name": "gatsby-plugin-google-analytics", + "description": "Gatsby plugin to add google analytics onto a site", + "version": "2.0.10", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin", + "google analytics" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">2.0.0-alpha" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "d6337969d7a1d54a73b0003fb2fe099b", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-typography", + "id": "64059fc2-eafe-53ab-a542-ad6d70a5c7ff", + "name": "gatsby-plugin-typography", + "version": "2.2.5", + "pluginOptions": { + "plugins": [], + "pathToConfigModule": "src/utils/typography" + }, + "nodeAPIs": [ + "onPreBootstrap" + ], + "browserAPIs": [ + "onClientEntry" + ], + "ssrAPIs": [ + "onRenderBody" + ], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-typography", + "packageJson": { + "name": "gatsby-plugin-typography", + "description": "Gatsby plugin to setup server rendering of Typography.js' CSS", + "version": "2.2.5", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin", + "typography", + "typography.js" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.1.4" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": ">2.0.0-alpha" + }, + { + "name": "react-typography", + "version": "^0.16.1 || ^1.0.0-alpha.0" + }, + { + "name": "typography", + "version": "^0.16.0 || ^1.0.0-alpha.0" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "81344244d96b1e3dca196f0e0116e4c2", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram", + "id": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "name": "default-site-plugin", + "version": "c903a11cb8a9951bb996b03d186e2f0d", + "pluginOptions": { + "plugins": [] + }, + "nodeAPIs": [ + "createPages", + "sourceNodes", + "addResolvers" + ], + "browserAPIs": [ + "shouldUpdateScroll", + "onInitialClientRender" + ], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram", + "packageJson": { + "name": "gatsby-example-image-gallery", + "description": "Gatsby example site: image gallery", + "version": "1.0.0", + "main": "n/a", + "keywords": [ + "gatsby" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "core-js", + "version": "^2.5.5" + }, + { + "name": "gatsby", + "version": "2.0.110" + }, + { + "name": "gatsby-image", + "version": "^2.0.5" + }, + { + "name": "gatsby-plugin-glamor", + "version": "^2.0.5" + }, + { + "name": "gatsby-plugin-google-analytics", + "version": "^2.0.5" + }, + { + "name": "gatsby-plugin-manifest", + "version": "^2.0.2" + }, + { + "name": "gatsby-plugin-offline", + "version": "^2.0.5" + }, + { + "name": "gatsby-plugin-sharp", + "version": "^2.0.5" + }, + { + "name": "gatsby-plugin-typography", + "version": "^2.2.0" + }, + { + "name": "gatsby-source-filesystem", + "version": "^2.0.1" + }, + { + "name": "gatsby-transformer-json", + "version": "^2.1.1" + }, + { + "name": "gatsby-transformer-sharp", + "version": "^2.1.1" + }, + { + "name": "glamor", + "version": "^2.20.40" + }, + { + "name": "graphql-compose", + "version": "^5.10.1" + }, + { + "name": "graphql", + "version": "^14.1.1" + }, + { + "name": "instagram-screen-scrape", + "version": "^2.0.0" + }, + { + "name": "lodash", + "version": "^4.17.10" + }, + { + "name": "mkdirp", + "version": "^0.5.1" + }, + { + "name": "mousetrap", + "version": "^1.6.0" + }, + { + "name": "progress", + "version": "^2.0.0" + }, + { + "name": "prop-types", + "version": "^15.5.8" + }, + { + "name": "react", + "version": "^16.3.2" + }, + { + "name": "react-dom", + "version": "^16.3.2" + }, + { + "name": "react-gravatar", + "version": "^2.6.1" + }, + { + "name": "react-icons", + "version": "^2.2.7" + }, + { + "name": "react-modal", + "version": "^3.4.2" + }, + { + "name": "react-typography", + "version": "^0.16.13" + }, + { + "name": "request", + "version": "^2.79.0" + }, + { + "name": "slug", + "version": "^0.9.1" + }, + { + "name": "typeface-space-mono", + "version": "0.0.54" + }, + { + "name": "typography", + "version": "^0.16.6" + } + ], + "devDependencies": [ + { + "name": "cypress", + "version": "^3.1.0" + }, + { + "name": "start-server-and-test", + "version": "^1.1.4" + } + ], + "peerDependencies": [], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "ba80e871b6f1f077cc01118f4075271d", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "resolve": "/examples/gatsbygram/node_modules/gatsby-plugin-page-creator", + "id": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "name": "gatsby-plugin-page-creator", + "version": "2.0.6", + "pluginOptions": { + "plugins": [], + "path": "/examples/gatsbygram/src/pages", + "pathCheck": false + }, + "nodeAPIs": [ + "createPagesStatefully" + ], + "browserAPIs": [], + "ssrAPIs": [], + "pluginFilepath": "/examples/gatsbygram/node_modules/gatsby-plugin-page-creator", + "packageJson": { + "name": "gatsby-plugin-page-creator", + "description": "Gatsby plugin that automatically creates pages from React components in specified directories", + "version": "2.0.6", + "main": "index.js", + "keywords": [ + "gatsby", + "gatsby-plugin" + ], + "author": "Kyle Mathews ", + "license": "MIT", + "dependencies": [ + { + "name": "@babel/runtime", + "version": "^7.0.0" + }, + { + "name": "bluebird", + "version": "^3.5.0" + }, + { + "name": "chokidar", + "version": "^1.7.0" + }, + { + "name": "fs-exists-cached", + "version": "^1.0.0" + }, + { + "name": "glob", + "version": "^7.1.1" + }, + { + "name": "lodash", + "version": "^4.17.10" + }, + { + "name": "micromatch", + "version": "^3.1.10" + }, + { + "name": "parse-filepath", + "version": "^1.0.1" + }, + { + "name": "slash", + "version": "^1.0.0" + } + ], + "devDependencies": [ + { + "name": "@babel/cli", + "version": "^7.0.0" + }, + { + "name": "@babel/core", + "version": "^7.0.0" + }, + { + "name": "babel-preset-gatsby-package", + "version": "^0.1.3" + }, + { + "name": "cross-env", + "version": "^5.0.5" + } + ], + "peerDependencies": [ + { + "name": "gatsby", + "version": "^2.0.0" + } + ], + "optionalDependecies": [], + "bundledDependecies": [] + }, + "parent": null, + "children": [], + "internal": { + "contentDigest": "a5b91bd941c5cd288ffd494d6287e2e8", + "type": "SitePlugin", + "owner": "internal-data-bridge" + } + }, + { + "siteMetadata": { + "title": "Gatsbygram" + }, + "port": "8000", + "host": "localhost", + "pathPrefix": "", + "polyfill": true, + "buildTime": "2019-02-14T09:17:58.369Z", + "id": "Site", + "parent": null, + "children": [], + "internal": { + "contentDigest": "70bb763c0bc449768affd27a058600c4", + "type": "Site", + "owner": "internal-data-bridge" + } + }, + { + "id": "61d88d2c-01e8-5539-9bda-2f6c3e50f26f", + "children": [], + "parent": null, + "internal": { + "contentDigest": "7c287a06a2b98e74381a857d58c42d87", + "type": "Directory", + "description": "Directory \"data\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data", + "relativePath": "", + "extension": "", + "size": 4096, + "prettySize": "4.1 kB", + "modifiedTime": "2019-02-14T08:37:54.870Z", + "accessTime": "2019-01-25T13:36:16.858Z", + "changeTime": "2019-02-14T08:37:54.870Z", + "birthTime": "2019-02-14T08:37:54.870Z", + "root": "/", + "dir": "/examples/gatsbygram", + "base": "data", + "ext": "", + "name": "data", + "relativeDirectory": "..", + "dev": 65024, + "mode": 16877, + "nlink": 3, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17465654, + "blocks": 8, + "atimeMs": 1548423376858.1704, + "mtimeMs": 1550133474870.4333, + "ctimeMs": 1550133474870.4333, + "birthtimeMs": 1550133474870.4333, + "atime": "2019-01-25T13:36:16.858Z", + "mtime": "2019-02-14T08:37:54.870Z", + "ctime": "2019-02-14T08:37:54.870Z", + "birthtime": "2019-02-14T08:37:54.870Z" + }, + { + "id": "99b099fc-c5b9-5b71-8d78-415bd969cd9d", + "children": [], + "parent": null, + "internal": { + "contentDigest": "2391d2ba19bc435c9dbe78d320cac52a", + "type": "Directory", + "description": "Directory \"data/images\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images", + "relativePath": "images", + "extension": "", + "size": 4096, + "prettySize": "4.1 kB", + "modifiedTime": "2019-02-08T08:55:07.965Z", + "accessTime": "2019-01-25T13:36:16.858Z", + "changeTime": "2019-02-08T08:55:07.965Z", + "birthTime": "2019-02-08T08:55:07.965Z", + "root": "/", + "dir": "/examples/gatsbygram/data", + "base": "images", + "ext": "", + "name": "images", + "relativeDirectory": "", + "dev": 65024, + "mode": 16877, + "nlink": 2, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17465655, + "blocks": 8, + "atimeMs": 1548423376858.1704, + "mtimeMs": 1549616107964.5935, + "ctimeMs": 1549616107964.5935, + "birthtimeMs": 1549616107964.5935, + "atime": "2019-01-25T13:36:16.858Z", + "mtime": "2019-02-08T08:55:07.965Z", + "ctime": "2019-02-08T08:55:07.965Z", + "birthtime": "2019-02-08T08:55:07.965Z" + }, + { + "id": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "children": [ + "1685001452849004065", + "1677771511187112561", + "1632234281433883850", + "1601601194425654597", + "1601530617317009166", + "1565766376903475329", + "1515268510112420213", + "1486495736706552111", + "1483463111452464830", + "1478435327902728655", + "1360516742464695325", + "1346779149175505545", + "1270677182602272387", + "1256134251849702933", + "1232199266021400176", + "1192421294565743753", + "1179335444856560759", + "1093024552502680593", + "1082958063116475674", + "1072104297123274725", + "1050382401524719413", + "1047380412691897508", + "1019954573251698010", + "1011212316101041196", + "1001206739996237060", + "996585130438155443", + "976313048697659257", + "973323047219223582", + "811160600493415566", + "811160112838466685", + "800034649663593593", + "783599315140730647", + "734060454761192929", + "734060430375509472", + "734060413657013727", + "732757276941868346", + "732747494080109637", + "732734464004972239", + "732606339090734326", + "732532731974770038", + "732520051645864977", + "732518754003705841", + "723243022496816380", + "722040340713037050", + "709713470394982233", + "707264656279068376", + "695949453427990223", + "695178098877128227", + "682173039289556382", + "680440398655774583", + "679681270014532918", + "673465739406204031", + "673461065357712415", + "673457707733475299", + "665350447119457524", + "650011560209800782", + "640022460883001336", + "636409258827833279", + "635682624046882725", + "633544903908122621", + "633500736435772673", + "632772965954739789", + "620418901388549762", + "617411858855616370", + "613426420792942449", + "611758039731788991", + "607214368319594481", + "603923376229310167", + "602898508977266473", + "599599505648902132", + "597507196258082479", + "596440361295142025", + "587804514970754664", + "584320489442499989", + "529876495778438153", + "529863260585057945", + "528199217793195914", + "528198485736152948", + "528197163355987780", + "523176638502133365", + "515988147267690192", + "514154189823401179", + "493743881078431577", + "491519698525216526", + "474753551234752325", + "465165262878137499", + "463285372889325235", + "463283463063330440", + "433258973868842114", + "432671828728864094", + "432671016199904582", + "432595958039305297", + "402249729178853273", + "396657460300210097", + "394910241079418429", + "389212604606962827", + "388739099008425940", + "358263540721901467", + "358258295744749374", + "354333585801731194" + ], + "parent": null, + "internal": { + "contentDigest": "f32cd3d16b306b4c62bd0f7f6404c945", + "type": "File", + "mediaType": "application/json", + "description": "File \"data/posts.json\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/posts.json", + "relativePath": "posts.json", + "extension": "json", + "size": 41712, + "prettySize": "41.7 kB", + "modifiedTime": "2019-02-11T12:36:25.701Z", + "accessTime": "2019-02-11T12:36:25.701Z", + "changeTime": "2019-02-11T12:36:25.701Z", + "birthTime": "2019-02-11T12:36:25.701Z", + "root": "/", + "dir": "/examples/gatsbygram/data", + "base": "posts.json", + "ext": ".json", + "name": "posts", + "relativeDirectory": "", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453936, + "blocks": 88, + "atimeMs": 1549888585701.1294, + "mtimeMs": 1549888585701.1294, + "ctimeMs": 1549888585701.1294, + "birthtimeMs": 1549888585701.1294, + "atime": "2019-02-11T12:36:25.701Z", + "mtime": "2019-02-11T12:36:25.701Z", + "ctime": "2019-02-11T12:36:25.701Z", + "birthtime": "2019-02-11T12:36:25.701Z" + }, + { + "id": "632c83c7-e76d-5478-8863-fc5a593f7119", + "children": [ + "8d8852d5-d464-5153-b1fe-afc94b70d0a1" + ], + "parent": null, + "internal": { + "contentDigest": "e6879945b14d6234875718df657b8beb", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/2B8CeRM9we.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/2B8CeRM9we.jpg", + "relativePath": "images/2B8CeRM9we.jpg", + "extension": "jpg", + "size": 110182, + "prettySize": "110 kB", + "modifiedTime": "2019-02-08T08:55:07.921Z", + "accessTime": "2019-02-08T08:55:07.921Z", + "changeTime": "2019-02-08T08:55:07.921Z", + "birthTime": "2019-02-08T08:55:07.921Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "2B8CeRM9we.jpg", + "ext": ".jpg", + "name": "2B8CeRM9we", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453836, + "blocks": 216, + "atimeMs": 1549616107921.2603, + "mtimeMs": 1549616107921.2603, + "ctimeMs": 1549616107921.2603, + "birthtimeMs": 1549616107921.2603, + "atime": "2019-02-08T08:55:07.921Z", + "mtime": "2019-02-08T08:55:07.921Z", + "ctime": "2019-02-08T08:55:07.921Z", + "birthtime": "2019-02-08T08:55:07.921Z" + }, + { + "id": "cfedef16-1f17-5489-aea7-61529e33d160", + "children": [ + "39d3bdcd-5adf-5f04-83b5-40c4e7dc60d5" + ], + "parent": null, + "internal": { + "contentDigest": "5c7a76710cb2f7e4d3f2f2ebe64f628d", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/2Mj4uJM995.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/2Mj4uJM995.jpg", + "relativePath": "images/2Mj4uJM995.jpg", + "extension": "jpg", + "size": 83530, + "prettySize": "83.5 kB", + "modifiedTime": "2019-02-08T08:55:07.921Z", + "accessTime": "2019-02-08T08:55:07.921Z", + "changeTime": "2019-02-08T08:55:07.921Z", + "birthTime": "2019-02-08T08:55:07.921Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "2Mj4uJM995.jpg", + "ext": ".jpg", + "name": "2Mj4uJM995", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453837, + "blocks": 168, + "atimeMs": 1549616107921.2603, + "mtimeMs": 1549616107921.2603, + "ctimeMs": 1549616107921.2603, + "birthtimeMs": 1549616107921.2603, + "atime": "2019-02-08T08:55:07.921Z", + "mtime": "2019-02-08T08:55:07.921Z", + "ctime": "2019-02-08T08:55:07.921Z", + "birthtime": "2019-02-08T08:55:07.921Z" + }, + { + "id": "a03bf39a-da09-5c14-9cf6-103c439f3472", + "children": [ + "9fdf7ff2-9e51-5c2c-90cf-4c3a4af4e6b4" + ], + "parent": null, + "internal": { + "contentDigest": "30c7fb1607938caece1719e539c54154", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/4IjD5ts9ws.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/4IjD5ts9ws.jpg", + "relativePath": "images/4IjD5ts9ws.jpg", + "extension": "jpg", + "size": 87898, + "prettySize": "87.9 kB", + "modifiedTime": "2019-02-08T08:55:07.921Z", + "accessTime": "2019-02-08T08:55:07.921Z", + "changeTime": "2019-02-08T08:55:07.921Z", + "birthTime": "2019-02-08T08:55:07.921Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "4IjD5ts9ws.jpg", + "ext": ".jpg", + "name": "4IjD5ts9ws", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453840, + "blocks": 176, + "atimeMs": 1549616107921.2603, + "mtimeMs": 1549616107921.2603, + "ctimeMs": 1549616107921.2603, + "birthtimeMs": 1549616107921.2603, + "atime": "2019-02-08T08:55:07.921Z", + "mtime": "2019-02-08T08:55:07.921Z", + "ctime": "2019-02-08T08:55:07.921Z", + "birthtime": "2019-02-08T08:55:07.921Z" + }, + { + "id": "5fb18353-ad2b-55d6-8f8b-365ab131d348", + "children": [ + "0b06bdfe-f253-5859-8321-b42b5d737195" + ], + "parent": null, + "internal": { + "contentDigest": "d41e8de7afad8820915adf302f4bce27", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/3lADm0M90E.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/3lADm0M90E.jpg", + "relativePath": "images/3lADm0M90E.jpg", + "extension": "jpg", + "size": 73520, + "prettySize": "73.5 kB", + "modifiedTime": "2019-02-08T08:55:07.921Z", + "accessTime": "2019-02-08T08:55:07.921Z", + "changeTime": "2019-02-08T08:55:07.921Z", + "birthTime": "2019-02-08T08:55:07.921Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "3lADm0M90E.jpg", + "ext": ".jpg", + "name": "3lADm0M90E", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453839, + "blocks": 144, + "atimeMs": 1549616107921.2603, + "mtimeMs": 1549616107921.2603, + "ctimeMs": 1549616107921.2603, + "birthtimeMs": 1549616107921.2603, + "atime": "2019-02-08T08:55:07.921Z", + "mtime": "2019-02-08T08:55:07.921Z", + "ctime": "2019-02-08T08:55:07.921Z", + "birthtime": "2019-02-08T08:55:07.921Z" + }, + { + "id": "eadfe4c4-6636-55b1-95ee-b24faa4d46f3", + "children": [ + "4abaade8-8f68-5bbb-9e81-798fa66a160d" + ], + "parent": null, + "internal": { + "contentDigest": "b648f5c6b4dd19a1e20f59eab97dcccb", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/4nm0fJs91a.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/4nm0fJs91a.jpg", + "relativePath": "images/4nm0fJs91a.jpg", + "extension": "jpg", + "size": 68049, + "prettySize": "68 kB", + "modifiedTime": "2019-02-08T08:55:07.925Z", + "accessTime": "2019-02-08T08:55:07.921Z", + "changeTime": "2019-02-08T08:55:07.925Z", + "birthTime": "2019-02-08T08:55:07.925Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "4nm0fJs91a.jpg", + "ext": ".jpg", + "name": "4nm0fJs91a", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453841, + "blocks": 136, + "atimeMs": 1549616107921.2603, + "mtimeMs": 1549616107924.5935, + "ctimeMs": 1549616107924.5935, + "birthtimeMs": 1549616107924.5935, + "atime": "2019-02-08T08:55:07.921Z", + "mtime": "2019-02-08T08:55:07.925Z", + "ctime": "2019-02-08T08:55:07.925Z", + "birthtime": "2019-02-08T08:55:07.925Z" + }, + { + "id": "e882dc2b-8f14-576e-8f17-a491cd037251", + "children": [ + "e6681fae-b509-5472-a7e4-077f9038072f" + ], + "parent": null, + "internal": { + "contentDigest": "9af0ebae8944fcbeb03e57571babe823", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/6JCu-jM9yk.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/6JCu-jM9yk.jpg", + "relativePath": "images/6JCu-jM9yk.jpg", + "extension": "jpg", + "size": 101649, + "prettySize": "102 kB", + "modifiedTime": "2019-02-08T08:55:07.925Z", + "accessTime": "2019-02-08T08:55:07.925Z", + "changeTime": "2019-02-08T08:55:07.925Z", + "birthTime": "2019-02-08T08:55:07.925Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "6JCu-jM9yk.jpg", + "ext": ".jpg", + "name": "6JCu-jM9yk", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453842, + "blocks": 200, + "atimeMs": 1549616107924.5935, + "mtimeMs": 1549616107924.5935, + "ctimeMs": 1549616107924.5935, + "birthtimeMs": 1549616107924.5935, + "atime": "2019-02-08T08:55:07.925Z", + "mtime": "2019-02-08T08:55:07.925Z", + "ctime": "2019-02-08T08:55:07.925Z", + "birthtime": "2019-02-08T08:55:07.925Z" + }, + { + "id": "5bc47ad3-c074-5e02-be9b-0150d6322b2c", + "children": [ + "e3621331-a649-549c-bee4-a9d9bd112e47" + ], + "parent": null, + "internal": { + "contentDigest": "c99a72470ab736db7b1546334122f456", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/6TtTqhM981.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/6TtTqhM981.jpg", + "relativePath": "images/6TtTqhM981.jpg", + "extension": "jpg", + "size": 110964, + "prettySize": "111 kB", + "modifiedTime": "2019-02-08T08:55:07.925Z", + "accessTime": "2019-02-08T08:55:07.925Z", + "changeTime": "2019-02-08T08:55:07.925Z", + "birthTime": "2019-02-08T08:55:07.925Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "6TtTqhM981.jpg", + "ext": ".jpg", + "name": "6TtTqhM981", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453843, + "blocks": 224, + "atimeMs": 1549616107924.5935, + "mtimeMs": 1549616107924.5935, + "ctimeMs": 1549616107924.5935, + "birthtimeMs": 1549616107924.5935, + "atime": "2019-02-08T08:55:07.925Z", + "mtime": "2019-02-08T08:55:07.925Z", + "ctime": "2019-02-08T08:55:07.925Z", + "birthtime": "2019-02-08T08:55:07.925Z" + }, + { + "id": "28c84528-48f8-59b0-ba66-3da2c17fd0a7", + "children": [ + "09df17a3-2377-5cb1-ae72-a42c552bc588" + ], + "parent": null, + "internal": { + "contentDigest": "b6bb6cf1090c42d50f02d7c66669c898", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/7g4S2QM9_l.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/7g4S2QM9_l.jpg", + "relativePath": "images/7g4S2QM9_l.jpg", + "extension": "jpg", + "size": 129607, + "prettySize": "130 kB", + "modifiedTime": "2019-02-08T08:55:07.925Z", + "accessTime": "2019-02-08T08:55:07.925Z", + "changeTime": "2019-02-08T08:55:07.925Z", + "birthTime": "2019-02-08T08:55:07.925Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "7g4S2QM9_l.jpg", + "ext": ".jpg", + "name": "7g4S2QM9_l", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453844, + "blocks": 256, + "atimeMs": 1549616107924.5935, + "mtimeMs": 1549616107924.5935, + "ctimeMs": 1549616107924.5935, + "birthtimeMs": 1549616107924.5935, + "atime": "2019-02-08T08:55:07.925Z", + "mtime": "2019-02-08T08:55:07.925Z", + "ctime": "2019-02-08T08:55:07.925Z", + "birthtime": "2019-02-08T08:55:07.925Z" + }, + { + "id": "7d697ee3-2e66-51f6-a386-b1e5d8cf5dba", + "children": [ + "98324bbd-3257-5c70-a3be-e713965f5fa6" + ], + "parent": null, + "internal": { + "contentDigest": "ad40145e18355345c530559aa46945ad", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/8HcJ7is90a.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/8HcJ7is90a.jpg", + "relativePath": "images/8HcJ7is90a.jpg", + "extension": "jpg", + "size": 104076, + "prettySize": "104 kB", + "modifiedTime": "2019-02-08T08:55:07.925Z", + "accessTime": "2019-02-08T08:55:07.925Z", + "changeTime": "2019-02-08T08:55:07.925Z", + "birthTime": "2019-02-08T08:55:07.925Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "8HcJ7is90a.jpg", + "ext": ".jpg", + "name": "8HcJ7is90a", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453845, + "blocks": 208, + "atimeMs": 1549616107924.5935, + "mtimeMs": 1549616107924.5935, + "ctimeMs": 1549616107924.5935, + "birthtimeMs": 1549616107924.5935, + "atime": "2019-02-08T08:55:07.925Z", + "mtime": "2019-02-08T08:55:07.925Z", + "ctime": "2019-02-08T08:55:07.925Z", + "birthtime": "2019-02-08T08:55:07.925Z" + }, + { + "id": "83ac87f2-cea9-575a-82bd-51543c082415", + "children": [ + "b6f4d1f7-ddf6-5994-92b4-7a0116275f71" + ], + "parent": null, + "internal": { + "contentDigest": "830697857fd3bc129303d3068cad20dd", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BCMVNmFM9yJ.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BCMVNmFM9yJ.jpg", + "relativePath": "images/BCMVNmFM9yJ.jpg", + "extension": "jpg", + "size": 117148, + "prettySize": "117 kB", + "modifiedTime": "2019-02-08T08:55:07.928Z", + "accessTime": "2019-02-08T08:55:07.928Z", + "changeTime": "2019-02-08T08:55:07.928Z", + "birthTime": "2019-02-08T08:55:07.928Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BCMVNmFM9yJ.jpg", + "ext": ".jpg", + "name": "BCMVNmFM9yJ", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453848, + "blocks": 232, + "atimeMs": 1549616107927.9268, + "mtimeMs": 1549616107927.9268, + "ctimeMs": 1549616107927.9268, + "birthtimeMs": 1549616107927.9268, + "atime": "2019-02-08T08:55:07.928Z", + "mtime": "2019-02-08T08:55:07.928Z", + "ctime": "2019-02-08T08:55:07.928Z", + "birthtime": "2019-02-08T08:55:07.928Z" + }, + { + "id": "999e1cb6-9c25-564b-8fe4-e139a71b988c", + "children": [ + "a47b1fe4-1b94-5cf8-9a0f-1a72f48d3c98" + ], + "parent": null, + "internal": { + "contentDigest": "f783590e0d9d9478f6ce8d6d126a2104", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BEZprQ3s95w.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BEZprQ3s95w.jpg", + "relativePath": "images/BEZprQ3s95w.jpg", + "extension": "jpg", + "size": 122754, + "prettySize": "123 kB", + "modifiedTime": "2019-02-08T08:55:07.928Z", + "accessTime": "2019-02-08T08:55:07.928Z", + "changeTime": "2019-02-08T08:55:07.928Z", + "birthTime": "2019-02-08T08:55:07.928Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BEZprQ3s95w.jpg", + "ext": ".jpg", + "name": "BEZprQ3s95w", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453849, + "blocks": 240, + "atimeMs": 1549616107927.9268, + "mtimeMs": 1549616107927.9268, + "ctimeMs": 1549616107927.9268, + "birthtimeMs": 1549616107927.9268, + "atime": "2019-02-08T08:55:07.928Z", + "mtime": "2019-02-08T08:55:07.928Z", + "ctime": "2019-02-08T08:55:07.928Z", + "birthtime": "2019-02-08T08:55:07.928Z" + }, + { + "id": "dbee0e06-cc3e-5d80-8099-182acbf084d2", + "children": [ + "af0788ba-9b32-5ca7-9080-bad0a49b22c6" + ], + "parent": null, + "internal": { + "contentDigest": "6661c542bb747a61d808f6745f64716e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BKwuIApgkKJ.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BKwuIApgkKJ.jpg", + "relativePath": "images/BKwuIApgkKJ.jpg", + "extension": "jpg", + "size": 83747, + "prettySize": "83.7 kB", + "modifiedTime": "2019-02-08T08:55:07.931Z", + "accessTime": "2019-02-08T08:55:07.931Z", + "changeTime": "2019-02-08T08:55:07.931Z", + "birthTime": "2019-02-08T08:55:07.931Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BKwuIApgkKJ.jpg", + "ext": ".jpg", + "name": "BKwuIApgkKJ", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453852, + "blocks": 168, + "atimeMs": 1549616107931.2603, + "mtimeMs": 1549616107931.2603, + "ctimeMs": 1549616107931.2603, + "birthtimeMs": 1549616107931.2603, + "atime": "2019-02-08T08:55:07.931Z", + "mtime": "2019-02-08T08:55:07.931Z", + "ctime": "2019-02-08T08:55:07.931Z", + "birthtime": "2019-02-08T08:55:07.931Z" + }, + { + "id": "7c1a6eea-05e7-5024-9926-36b68de7aa11", + "children": [ + "f5f0e564-899f-5bbc-92de-a2325b69cb75" + ], + "parent": null, + "internal": { + "contentDigest": "787ec91c0900453445c1777845387089", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BShF_8qhtEv.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BShF_8qhtEv.jpg", + "relativePath": "images/BShF_8qhtEv.jpg", + "extension": "jpg", + "size": 122085, + "prettySize": "122 kB", + "modifiedTime": "2019-02-08T08:55:07.935Z", + "accessTime": "2019-02-08T08:55:07.931Z", + "changeTime": "2019-02-08T08:55:07.935Z", + "birthTime": "2019-02-08T08:55:07.935Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BShF_8qhtEv.jpg", + "ext": ".jpg", + "name": "BShF_8qhtEv", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453856, + "blocks": 240, + "atimeMs": 1549616107931.2603, + "mtimeMs": 1549616107934.5935, + "ctimeMs": 1549616107934.5935, + "birthtimeMs": 1549616107934.5935, + "atime": "2019-02-08T08:55:07.931Z", + "mtime": "2019-02-08T08:55:07.935Z", + "ctime": "2019-02-08T08:55:07.935Z", + "birthtime": "2019-02-08T08:55:07.935Z" + }, + { + "id": "67493e72-7ae8-572d-8cf1-5b6fb600dd8b", + "children": [ + "630d597e-cb8d-5eb2-9858-ff9cd89de40f" + ], + "parent": null, + "internal": { + "contentDigest": "53d1a945465e41017425f1b19ae140f3", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BUHUK6ElhF1.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BUHUK6ElhF1.jpg", + "relativePath": "images/BUHUK6ElhF1.jpg", + "extension": "jpg", + "size": 100374, + "prettySize": "100 kB", + "modifiedTime": "2019-02-08T08:55:07.935Z", + "accessTime": "2019-02-08T08:55:07.935Z", + "changeTime": "2019-02-08T08:55:07.935Z", + "birthTime": "2019-02-08T08:55:07.935Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BUHUK6ElhF1.jpg", + "ext": ".jpg", + "name": "BUHUK6ElhF1", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453857, + "blocks": 200, + "atimeMs": 1549616107934.5935, + "mtimeMs": 1549616107934.5935, + "ctimeMs": 1549616107934.5935, + "birthtimeMs": 1549616107934.5935, + "atime": "2019-02-08T08:55:07.935Z", + "mtime": "2019-02-08T08:55:07.935Z", + "ctime": "2019-02-08T08:55:07.935Z", + "birthtime": "2019-02-08T08:55:07.935Z" + }, + { + "id": "090efc09-4260-50c7-a541-ecebe1d1aa6e", + "children": [ + "6ba97198-5331-53d6-a0e0-c9c063c5094e" + ], + "parent": null, + "internal": { + "contentDigest": "77d150d429e4a17804959337a1b7aa79", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BY6B8z5lR1F.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BY6B8z5lR1F.jpg", + "relativePath": "images/BY6B8z5lR1F.jpg", + "extension": "jpg", + "size": 80980, + "prettySize": "81 kB", + "modifiedTime": "2019-02-08T08:55:07.935Z", + "accessTime": "2019-02-08T08:55:07.935Z", + "changeTime": "2019-02-08T08:55:07.935Z", + "birthTime": "2019-02-08T08:55:07.935Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BY6B8z5lR1F.jpg", + "ext": ".jpg", + "name": "BY6B8z5lR1F", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453860, + "blocks": 160, + "atimeMs": 1549616107934.5935, + "mtimeMs": 1549616107934.5935, + "ctimeMs": 1549616107934.5935, + "birthtimeMs": 1549616107934.5935, + "atime": "2019-02-08T08:55:07.935Z", + "mtime": "2019-02-08T08:55:07.935Z", + "ctime": "2019-02-08T08:55:07.935Z", + "birthtime": "2019-02-08T08:55:07.935Z" + }, + { + "id": "3cba6722-5053-5298-b2fb-32a4a9cc44aa", + "children": [ + "cdd5a1b7-b7d8-507e-8d66-6ebf484592fc" + ], + "parent": null, + "internal": { + "contentDigest": "93f646b8ddec29b5f8d8e071f6381be7", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/T4ygWXs98-.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/T4ygWXs98-.jpg", + "relativePath": "images/T4ygWXs98-.jpg", + "extension": "jpg", + "size": 102293, + "prettySize": "102 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "T4ygWXs98-.jpg", + "ext": ".jpg", + "name": "T4ygWXs98-", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453864, + "blocks": 200, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "d49a67c2-a204-598d-908f-7a00b225745e", + "children": [ + "b0d46bbe-d4b8-568e-9323-215b2bf6f4fd" + ], + "parent": null, + "internal": { + "contentDigest": "245770f51f9bad853b90b8edaeab3c1e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/T4zsrIs9-b.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/T4zsrIs9-b.jpg", + "relativePath": "images/T4zsrIs9-b.jpg", + "extension": "jpg", + "size": 95894, + "prettySize": "95.9 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "T4zsrIs9-b.jpg", + "ext": ".jpg", + "name": "T4zsrIs9-b", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453865, + "blocks": 192, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "07472021-5400-5e27-b461-4cdc44276afd", + "children": [ + "da85ad45-2a90-5615-9cfa-007e5439f117" + ], + "parent": null, + "internal": { + "contentDigest": "eda1d3a40ea2a822f776f57ccf5314a4", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/Tq2ITZs9x6.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/Tq2ITZs9x6.jpg", + "relativePath": "images/Tq2ITZs9x6.jpg", + "extension": "jpg", + "size": 126202, + "prettySize": "126 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "Tq2ITZs9x6.jpg", + "ext": ".jpg", + "name": "Tq2ITZs9x6", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453866, + "blocks": 248, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "456af405-df25-5607-bdaf-8f502011b101", + "children": [ + "dafc0c89-ea55-502d-8a01-62798c6d6b54" + ], + "parent": null, + "internal": { + "contentDigest": "57f55da8c14230ad75372ec4a6effcb7", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/VlFCais9_U.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/VlFCais9_U.jpg", + "relativePath": "images/VlFCais9_U.jpg", + "extension": "jpg", + "size": 79650, + "prettySize": "79.7 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "VlFCais9_U.jpg", + "ext": ".jpg", + "name": "VlFCais9_U", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453868, + "blocks": 160, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "9b7fd7a3-7a98-53e9-9ab6-1889b03203e6", + "children": [ + "4e7c08cd-45c8-5648-a56e-3367f115082e" + ], + "parent": null, + "internal": { + "contentDigest": "6577ed66bb1cd75d133b10dadeb07a06", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/WBNdvKs9-x.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/WBNdvKs9-x.jpg", + "relativePath": "images/WBNdvKs9-x.jpg", + "extension": "jpg", + "size": 104812, + "prettySize": "105 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "WBNdvKs9-x.jpg", + "ext": ".jpg", + "name": "WBNdvKs9-x", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453870, + "blocks": 208, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "7a5888c5-e8b7-5aae-86fa-8efab6abb379", + "children": [ + "2ff71dde-ecb7-59ec-b168-dd9c55f7559f" + ], + "parent": null, + "internal": { + "contentDigest": "893254689a3fbcff68226bfd83570a5a", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/WVE_9as9-Z.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/WVE_9as9-Z.jpg", + "relativePath": "images/WVE_9as9-Z.jpg", + "extension": "jpg", + "size": 123346, + "prettySize": "123 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "WVE_9as9-Z.jpg", + "ext": ".jpg", + "name": "WVE_9as9-Z", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453871, + "blocks": 248, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "905eb070-4deb-5d58-8481-35d2e15b5a79", + "children": [ + "897bfc21-4f6a-5468-85ec-32290c1d0cd8" + ], + "parent": null, + "internal": { + "contentDigest": "6d5b3dcd65cec1eddb1d1b8b692d6046", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/YDPr3BM9yC.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/YDPr3BM9yC.jpg", + "relativePath": "images/YDPr3BM9yC.jpg", + "extension": "jpg", + "size": 129018, + "prettySize": "129 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "YDPr3BM9yC.jpg", + "ext": ".jpg", + "name": "YDPr3BM9yC", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453875, + "blocks": 256, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "cfddc65a-4b9b-5019-ab64-0e2132cf3ec3", + "children": [ + "2fd9b628-48a9-55fd-ad58-9d96fe093a77" + ], + "parent": null, + "internal": { + "contentDigest": "4952f588e9d3a6bbc23aa89be0360a6e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/Zt6drmM96I.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/Zt6drmM96I.jpg", + "relativePath": "images/Zt6drmM96I.jpg", + "extension": "jpg", + "size": 71363, + "prettySize": "71.4 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "Zt6drmM96I.jpg", + "ext": ".jpg", + "name": "Zt6drmM96I", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453878, + "blocks": 144, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "a95d071f-2ba7-5e05-8371-07afd027e5a8", + "children": [ + "1d700556-4c15-52b4-96a1-80881c888aa6" + ], + "parent": null, + "internal": { + "contentDigest": "9fd68751ddb126a1850940108cb6521a", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/Zt65eQs96z.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/Zt65eQs96z.jpg", + "relativePath": "images/Zt65eQs96z.jpg", + "extension": "jpg", + "size": 81626, + "prettySize": "81.6 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "Zt65eQs96z.jpg", + "ext": ".jpg", + "name": "Zt65eQs96z", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453877, + "blocks": 160, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "2e21897a-06bb-5271-81e1-62850e7937ac", + "children": [ + "93ad2692-82e1-5c38-99f3-d388530ec676" + ], + "parent": null, + "internal": { + "contentDigest": "c31dc82f9d0047241bbeb1d94f57754e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/baIXGhs99Z.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/baIXGhs99Z.jpg", + "relativePath": "images/baIXGhs99Z.jpg", + "extension": "jpg", + "size": 130596, + "prettySize": "131 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "baIXGhs99Z.jpg", + "ext": ".jpg", + "name": "baIXGhs99Z", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453881, + "blocks": 256, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "b5aea16f-3162-5ea1-ab5a-e493b38043e8", + "children": [ + "d7aa2b29-5e4a-5ae5-ab52-9defa7b95918" + ], + "parent": null, + "internal": { + "contentDigest": "fd4bcbf421b4b2bd8087a6e01e042e45", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/cpKHxyM97Q.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/cpKHxyM97Q.jpg", + "relativePath": "images/cpKHxyM97Q.jpg", + "extension": "jpg", + "size": 122883, + "prettySize": "123 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "cpKHxyM97Q.jpg", + "ext": ".jpg", + "name": "cpKHxyM97Q", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453883, + "blocks": 248, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "c95ff874-a15f-5f6b-98b7-1566ac1e9bc6", + "children": [ + "0e4486ff-f98f-5c92-a706-f69d1edcbe7c" + ], + "parent": null, + "internal": { + "contentDigest": "25d4c3e99e97d8320700e1c29aab95d6", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/dUiIWFM99E.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/dUiIWFM99E.jpg", + "relativePath": "images/dUiIWFM99E.jpg", + "extension": "jpg", + "size": 97838, + "prettySize": "97.8 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "dUiIWFM99E.jpg", + "ext": ".jpg", + "name": "dUiIWFM99E", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453885, + "blocks": 192, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "6dab4fa2-e99b-5f01-954e-d8521cb12b6f", + "children": [ + "33370589-de2f-55a7-8e5c-ea4f5ffd0cf0" + ], + "parent": null, + "internal": { + "contentDigest": "779287fe3b4bc4db813afd7adb213e4f", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/dUiblpM990.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/dUiblpM990.jpg", + "relativePath": "images/dUiblpM990.jpg", + "extension": "jpg", + "size": 116202, + "prettySize": "116 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "dUiblpM990.jpg", + "ext": ".jpg", + "name": "dUiblpM990", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453886, + "blocks": 232, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "6f5ab75b-4ba7-50e4-ad4f-cc8357f6155e", + "children": [ + "74b20d30-e241-58cf-8d3e-1d25e263f3ba" + ], + "parent": null, + "internal": { + "contentDigest": "beabcb86762d72aaa391ca3d3bacf50f", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/dac9QCs96Z.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/dac9QCs96Z.jpg", + "relativePath": "images/dac9QCs96Z.jpg", + "extension": "jpg", + "size": 97984, + "prettySize": "98 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "dac9QCs96Z.jpg", + "ext": ".jpg", + "name": "dac9QCs96Z", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453888, + "blocks": 192, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "8d8852d5-d464-5153-b1fe-afc94b70d0a1", + "children": [], + "parent": "632c83c7-e76d-5478-8863-fc5a593f7119", + "internal": { + "contentDigest": "e6879945b14d6234875718df657b8beb", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "39d3bdcd-5adf-5f04-83b5-40c4e7dc60d5", + "children": [], + "parent": "cfedef16-1f17-5489-aea7-61529e33d160", + "internal": { + "contentDigest": "5c7a76710cb2f7e4d3f2f2ebe64f628d", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "9fdf7ff2-9e51-5c2c-90cf-4c3a4af4e6b4", + "children": [], + "parent": "a03bf39a-da09-5c14-9cf6-103c439f3472", + "internal": { + "contentDigest": "30c7fb1607938caece1719e539c54154", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "0b06bdfe-f253-5859-8321-b42b5d737195", + "children": [], + "parent": "5fb18353-ad2b-55d6-8f8b-365ab131d348", + "internal": { + "contentDigest": "d41e8de7afad8820915adf302f4bce27", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4abaade8-8f68-5bbb-9e81-798fa66a160d", + "children": [], + "parent": "eadfe4c4-6636-55b1-95ee-b24faa4d46f3", + "internal": { + "contentDigest": "b648f5c6b4dd19a1e20f59eab97dcccb", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "e6681fae-b509-5472-a7e4-077f9038072f", + "children": [], + "parent": "e882dc2b-8f14-576e-8f17-a491cd037251", + "internal": { + "contentDigest": "9af0ebae8944fcbeb03e57571babe823", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "e3621331-a649-549c-bee4-a9d9bd112e47", + "children": [], + "parent": "5bc47ad3-c074-5e02-be9b-0150d6322b2c", + "internal": { + "contentDigest": "c99a72470ab736db7b1546334122f456", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "09df17a3-2377-5cb1-ae72-a42c552bc588", + "children": [], + "parent": "28c84528-48f8-59b0-ba66-3da2c17fd0a7", + "internal": { + "contentDigest": "b6bb6cf1090c42d50f02d7c66669c898", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "98324bbd-3257-5c70-a3be-e713965f5fa6", + "children": [], + "parent": "7d697ee3-2e66-51f6-a386-b1e5d8cf5dba", + "internal": { + "contentDigest": "ad40145e18355345c530559aa46945ad", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "b6f4d1f7-ddf6-5994-92b4-7a0116275f71", + "children": [], + "parent": "83ac87f2-cea9-575a-82bd-51543c082415", + "internal": { + "contentDigest": "830697857fd3bc129303d3068cad20dd", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "a47b1fe4-1b94-5cf8-9a0f-1a72f48d3c98", + "children": [], + "parent": "999e1cb6-9c25-564b-8fe4-e139a71b988c", + "internal": { + "contentDigest": "f783590e0d9d9478f6ce8d6d126a2104", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "af0788ba-9b32-5ca7-9080-bad0a49b22c6", + "children": [], + "parent": "dbee0e06-cc3e-5d80-8099-182acbf084d2", + "internal": { + "contentDigest": "6661c542bb747a61d808f6745f64716e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "f5f0e564-899f-5bbc-92de-a2325b69cb75", + "children": [], + "parent": "7c1a6eea-05e7-5024-9926-36b68de7aa11", + "internal": { + "contentDigest": "787ec91c0900453445c1777845387089", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "630d597e-cb8d-5eb2-9858-ff9cd89de40f", + "children": [], + "parent": "67493e72-7ae8-572d-8cf1-5b6fb600dd8b", + "internal": { + "contentDigest": "53d1a945465e41017425f1b19ae140f3", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "6ba97198-5331-53d6-a0e0-c9c063c5094e", + "children": [], + "parent": "090efc09-4260-50c7-a541-ecebe1d1aa6e", + "internal": { + "contentDigest": "77d150d429e4a17804959337a1b7aa79", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "cdd5a1b7-b7d8-507e-8d66-6ebf484592fc", + "children": [], + "parent": "3cba6722-5053-5298-b2fb-32a4a9cc44aa", + "internal": { + "contentDigest": "93f646b8ddec29b5f8d8e071f6381be7", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "b0d46bbe-d4b8-568e-9323-215b2bf6f4fd", + "children": [], + "parent": "d49a67c2-a204-598d-908f-7a00b225745e", + "internal": { + "contentDigest": "245770f51f9bad853b90b8edaeab3c1e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "da85ad45-2a90-5615-9cfa-007e5439f117", + "children": [], + "parent": "07472021-5400-5e27-b461-4cdc44276afd", + "internal": { + "contentDigest": "eda1d3a40ea2a822f776f57ccf5314a4", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "dafc0c89-ea55-502d-8a01-62798c6d6b54", + "children": [], + "parent": "456af405-df25-5607-bdaf-8f502011b101", + "internal": { + "contentDigest": "57f55da8c14230ad75372ec4a6effcb7", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4e7c08cd-45c8-5648-a56e-3367f115082e", + "children": [], + "parent": "9b7fd7a3-7a98-53e9-9ab6-1889b03203e6", + "internal": { + "contentDigest": "6577ed66bb1cd75d133b10dadeb07a06", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "2ff71dde-ecb7-59ec-b168-dd9c55f7559f", + "children": [], + "parent": "7a5888c5-e8b7-5aae-86fa-8efab6abb379", + "internal": { + "contentDigest": "893254689a3fbcff68226bfd83570a5a", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "897bfc21-4f6a-5468-85ec-32290c1d0cd8", + "children": [], + "parent": "905eb070-4deb-5d58-8481-35d2e15b5a79", + "internal": { + "contentDigest": "6d5b3dcd65cec1eddb1d1b8b692d6046", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "2fd9b628-48a9-55fd-ad58-9d96fe093a77", + "children": [], + "parent": "cfddc65a-4b9b-5019-ab64-0e2132cf3ec3", + "internal": { + "contentDigest": "4952f588e9d3a6bbc23aa89be0360a6e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "1d700556-4c15-52b4-96a1-80881c888aa6", + "children": [], + "parent": "a95d071f-2ba7-5e05-8371-07afd027e5a8", + "internal": { + "contentDigest": "9fd68751ddb126a1850940108cb6521a", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "93ad2692-82e1-5c38-99f3-d388530ec676", + "children": [], + "parent": "2e21897a-06bb-5271-81e1-62850e7937ac", + "internal": { + "contentDigest": "c31dc82f9d0047241bbeb1d94f57754e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "d7aa2b29-5e4a-5ae5-ab52-9defa7b95918", + "children": [], + "parent": "b5aea16f-3162-5ea1-ab5a-e493b38043e8", + "internal": { + "contentDigest": "fd4bcbf421b4b2bd8087a6e01e042e45", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "0e4486ff-f98f-5c92-a706-f69d1edcbe7c", + "children": [], + "parent": "c95ff874-a15f-5f6b-98b7-1566ac1e9bc6", + "internal": { + "contentDigest": "25d4c3e99e97d8320700e1c29aab95d6", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "33370589-de2f-55a7-8e5c-ea4f5ffd0cf0", + "children": [], + "parent": "6dab4fa2-e99b-5f01-954e-d8521cb12b6f", + "internal": { + "contentDigest": "779287fe3b4bc4db813afd7adb213e4f", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "74b20d30-e241-58cf-8d3e-1d25e263f3ba", + "children": [], + "parent": "6f5ab75b-4ba7-50e4-ad4f-cc8357f6155e", + "internal": { + "contentDigest": "beabcb86762d72aaa391ca3d3bacf50f", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "25bfb17b-4867-52b0-b6b2-31141ffd66ea", + "children": [ + "da2bca11-40c5-5629-8ac5-d4e80b3002e7" + ], + "parent": null, + "internal": { + "contentDigest": "12d6834787247fa1fd603472dca4779b", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/daf92Rs9wJ.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/daf92Rs9wJ.jpg", + "relativePath": "images/daf92Rs9wJ.jpg", + "extension": "jpg", + "size": 91071, + "prettySize": "91.1 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "daf92Rs9wJ.jpg", + "ext": ".jpg", + "name": "daf92Rs9wJ", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453889, + "blocks": 184, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "b35cc487-b060-5849-a332-ae2b6214b30b", + "children": [ + "c364338a-eb65-5925-a014-effd93849b40" + ], + "parent": null, + "internal": { + "contentDigest": "113c46804bc8908ced0a7bd6c7d24f7b", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/goTReQM95o.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/goTReQM95o.jpg", + "relativePath": "images/goTReQM95o.jpg", + "extension": "jpg", + "size": 118621, + "prettySize": "119 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "goTReQM95o.jpg", + "ext": ".jpg", + "name": "goTReQM95o", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453891, + "blocks": 232, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "63209335-2764-5ec8-b050-ab0acf938a05", + "children": [ + "4d9816a7-3885-5dd4-bbe6-85c655a48316" + ], + "parent": null, + "internal": { + "contentDigest": "fce6b57d4f233faed53317605e60455e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/h9ZrIms9y_.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/h9ZrIms9y_.jpg", + "relativePath": "images/h9ZrIms9y_.jpg", + "extension": "jpg", + "size": 79925, + "prettySize": "79.9 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "h9ZrIms9y_.jpg", + "ext": ".jpg", + "name": "h9ZrIms9y_", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453892, + "blocks": 160, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "91d496c3-3368-5810-811f-7523e45582dd", + "children": [ + "442f41c4-bbf2-5124-8602-f242880c593f" + ], + "parent": null, + "internal": { + "contentDigest": "a9f1eea7376c2d4c9f366f8750fc9623", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/hKxaEXs96v.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/hKxaEXs96v.jpg", + "relativePath": "images/hKxaEXs96v.jpg", + "extension": "jpg", + "size": 117417, + "prettySize": "117 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "hKxaEXs96v.jpg", + "ext": ".jpg", + "name": "hKxaEXs96v", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453894, + "blocks": 232, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "605ea709-2f6b-5c32-84dd-c01d1d764a55", + "children": [ + "adb8e4b2-34ed-5f31-b6d7-60b144c100d3" + ], + "parent": null, + "internal": { + "contentDigest": "a7680535f18d909cdf3f60908dedc9bb", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/hhkRxns97X.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/hhkRxns97X.jpg", + "relativePath": "images/hhkRxns97X.jpg", + "extension": "jpg", + "size": 81083, + "prettySize": "81.1 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "hhkRxns97X.jpg", + "ext": ".jpg", + "name": "hhkRxns97X", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453897, + "blocks": 160, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "c61e32c1-b74a-577d-bcc5-71e591546782", + "children": [ + "fa1545ee-c421-566f-a062-5b3cc5ed86df" + ], + "parent": null, + "internal": { + "contentDigest": "70db28f9118ddc122d2aad303021137c", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/cipIL0M9zb.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/cipIL0M9zb.jpg", + "relativePath": "images/cipIL0M9zb.jpg", + "extension": "jpg", + "size": 100735, + "prettySize": "101 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "cipIL0M9zb.jpg", + "ext": ".jpg", + "name": "cipIL0M9zb", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453882, + "blocks": 200, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "538f5859-d9a3-589e-8dde-3e731732b0ca", + "children": [ + "3f06569d-ebc6-5848-a69d-5ff64a9d9b67" + ], + "parent": null, + "internal": { + "contentDigest": "96cc7e05e1dd76339a0332b39dfc4640", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/htQkA2M9_x.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/htQkA2M9_x.jpg", + "relativePath": "images/htQkA2M9_x.jpg", + "extension": "jpg", + "size": 121047, + "prettySize": "121 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "htQkA2M9_x.jpg", + "ext": ".jpg", + "name": "htQkA2M9_x", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453898, + "blocks": 240, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "632d64a1-e24c-55fe-a3b3-a4a31997af39", + "children": [ + "42244d78-fac3-5e3b-9f14-02a15c31b548" + ], + "parent": null, + "internal": { + "contentDigest": "3a533f4c318f142c43c6aea513fde2ee", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/iRfNB_M99y.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/iRfNB_M99y.jpg", + "relativePath": "images/iRfNB_M99y.jpg", + "extension": "jpg", + "size": 116819, + "prettySize": "117 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "iRfNB_M99y.jpg", + "ext": ".jpg", + "name": "iRfNB_M99y", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453900, + "blocks": 232, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "922f795a-bf71-5370-bf64-e04720bd110e", + "children": [ + "8a7742e1-6b5a-59f8-9d48-f0abf0ea86a9" + ], + "parent": null, + "internal": { + "contentDigest": "9c8ce28260d2ae31eb2ed1b06bbd473e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/iDVBRjM99x.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/iDVBRjM99x.jpg", + "relativePath": "images/iDVBRjM99x.jpg", + "extension": "jpg", + "size": 107987, + "prettySize": "108 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "iDVBRjM99x.jpg", + "ext": ".jpg", + "name": "iDVBRjM99x", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453899, + "blocks": 216, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "14d49c41-5571-57c5-b7f8-07e5d19e24fc", + "children": [ + "2f9bc223-d0e2-57c4-9de2-0de4c32d6ec3" + ], + "parent": null, + "internal": { + "contentDigest": "c687cf5f4977f346c919e3f0b10a5fd3", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/icK7QlM96C.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/icK7QlM96C.jpg", + "relativePath": "images/icK7QlM96C.jpg", + "extension": "jpg", + "size": 108678, + "prettySize": "109 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "icK7QlM96C.jpg", + "ext": ".jpg", + "name": "icK7QlM96C", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453901, + "blocks": 216, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "b8d1824e-97a7-58ad-8f6a-9eca8ffe31c5", + "children": [ + "cdaeb064-5204-570a-b236-f8410c35fcff" + ], + "parent": null, + "internal": { + "contentDigest": "96fad019fa39ab34f2ad3b09cc17a1e2", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/dCsmF8s951.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/dCsmF8s951.jpg", + "relativePath": "images/dCsmF8s951.jpg", + "extension": "jpg", + "size": 124650, + "prettySize": "125 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "dCsmF8s951.jpg", + "ext": ".jpg", + "name": "dCsmF8s951", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453884, + "blocks": 248, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "c52dd4e6-274f-556f-84af-21c118aa6cca", + "children": [ + "eeac8d14-bf7c-5762-ab78-4d172dd5afe3" + ], + "parent": null, + "internal": { + "contentDigest": "31ba31edc1bf4fdf281939ae690236de", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/jKpZA4M90B.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/jKpZA4M90B.jpg", + "relativePath": "images/jKpZA4M90B.jpg", + "extension": "jpg", + "size": 123145, + "prettySize": "123 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "jKpZA4M90B.jpg", + "ext": ".jpg", + "name": "jKpZA4M90B", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453904, + "blocks": 248, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "f64841a4-4d95-5112-9348-bc562961db4d", + "children": [ + "a5c97fc5-c9f1-54c0-9233-210fe1f160b0" + ], + "parent": null, + "internal": { + "contentDigest": "3f7ccb765115bdcdb775a7cecd5bce2d", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/jID6jzM95N.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/jID6jzM95N.jpg", + "relativePath": "images/jID6jzM95N.jpg", + "extension": "jpg", + "size": 85157, + "prettySize": "85.2 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "jID6jzM95N.jpg", + "ext": ".jpg", + "name": "jID6jzM95N", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453903, + "blocks": 168, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "b633e034-a20b-5d41-a9b0-11e9d621d983", + "children": [ + "b0cedf3b-cd9b-5421-9d27-48a8f2da610f" + ], + "parent": null, + "internal": { + "contentDigest": "1fd8c62f69302a0232f236888d945b75", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/jSZfqEM9-l.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/jSZfqEM9-l.jpg", + "relativePath": "images/jSZfqEM9-l.jpg", + "extension": "jpg", + "size": 128798, + "prettySize": "129 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "jSZfqEM9-l.jpg", + "ext": ".jpg", + "name": "jSZfqEM9-l", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453902, + "blocks": 256, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "dc8d98cd-9a4b-5c95-978c-72e5e003d3a9", + "children": [ + "9034de88-ace8-585c-b0fe-acea09a60b4f" + ], + "parent": null, + "internal": { + "contentDigest": "af544090b8d1f2150b5ebfab252dbf3e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/jh0QmFM9_4.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/jh0QmFM9_4.jpg", + "relativePath": "images/jh0QmFM9_4.jpg", + "extension": "jpg", + "size": 107268, + "prettySize": "107 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "jh0QmFM9_4.jpg", + "ext": ".jpg", + "name": "jh0QmFM9_4", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453907, + "blocks": 216, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "c9a40590-98f2-560d-b091-34e10179dc1c", + "children": [ + "f59e19cb-3173-5247-a277-76b3b8250b4b" + ], + "parent": null, + "internal": { + "contentDigest": "ce267a020dec9362be41e06d8d586975", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/k7zLTbs9z0.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/k7zLTbs9z0.jpg", + "relativePath": "images/k7zLTbs9z0.jpg", + "extension": "jpg", + "size": 87182, + "prettySize": "87.2 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "k7zLTbs9z0.jpg", + "ext": ".jpg", + "name": "k7zLTbs9z0", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453908, + "blocks": 176, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "19f096ac-7d47-53e3-81df-5f6b6fd942b7", + "children": [ + "da1377ca-7e8f-5196-a4fd-d0a4f3589a41" + ], + "parent": null, + "internal": { + "contentDigest": "46bfd9fcfe5f42f54aafc1e4dd7b40d2", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/kFThHyM95O.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/kFThHyM95O.jpg", + "relativePath": "images/kFThHyM95O.jpg", + "extension": "jpg", + "size": 127219, + "prettySize": "127 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "kFThHyM95O.jpg", + "ext": ".jpg", + "name": "kFThHyM95O", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453909, + "blocks": 256, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "6bb783c1-92c8-5a66-8b1c-97aeb2f18647", + "children": [ + "ad5bf0e8-78e6-5c06-8f36-18de7bfe675a" + ], + "parent": null, + "internal": { + "contentDigest": "8e4fa5e7e3dae7c02bd280bb24e95c66", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/l3kMPSM92e.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/l3kMPSM92e.jpg", + "relativePath": "images/l3kMPSM92e.jpg", + "extension": "jpg", + "size": 94180, + "prettySize": "94.2 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "l3kMPSM92e.jpg", + "ext": ".jpg", + "name": "l3kMPSM92e", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453910, + "blocks": 184, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "ac3d890f-c2bd-5ccc-a584-ab773e2bb356", + "children": [ + "4be4599e-5f28-5597-9b97-5d689b785dc3" + ], + "parent": null, + "internal": { + "contentDigest": "0f3cf0fd60b391d081376a9912172984", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/lYmjeQs9_j.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/lYmjeQs9_j.jpg", + "relativePath": "images/lYmjeQs9_j.jpg", + "extension": "jpg", + "size": 118234, + "prettySize": "118 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "lYmjeQs9_j.jpg", + "ext": ".jpg", + "name": "lYmjeQs9_j", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453911, + "blocks": 232, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "19737ea3-cf41-5044-9262-cc8a00ba37a2", + "children": [ + "cc003810-50ca-5300-921f-f45dc27bb000" + ], + "parent": null, + "internal": { + "contentDigest": "4e0218a426f7ca098de8f79f19a9812a", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/lYnUVSs9wf.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/lYnUVSs9wf.jpg", + "relativePath": "images/lYnUVSs9wf.jpg", + "extension": "jpg", + "size": 119134, + "prettySize": "119 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "lYnUVSs9wf.jpg", + "ext": ".jpg", + "name": "lYnUVSs9wf", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453912, + "blocks": 240, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "eddf5a86-e422-5513-aace-a59d556fab11", + "children": [ + "07adb971-0e2b-52a2-9851-73a0c0c2b841" + ], + "parent": null, + "internal": { + "contentDigest": "288bf0943ae797b95a21705b79a45c26", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/lYoYWVs9x_.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/lYoYWVs9x_.jpg", + "relativePath": "images/lYoYWVs9x_.jpg", + "extension": "jpg", + "size": 76512, + "prettySize": "76.5 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "lYoYWVs9x_.jpg", + "ext": ".jpg", + "name": "lYoYWVs9x_", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453913, + "blocks": 152, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "b1b28a49-b910-5669-ad19-d2917aa1bfdf", + "children": [ + "d53df682-65cb-509b-b179-88d7b95a97e2" + ], + "parent": null, + "internal": { + "contentDigest": "82de37baa6823ff4a3ac419158d02ab3", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/lutoOTs902.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/lutoOTs902.jpg", + "relativePath": "images/lutoOTs902.jpg", + "extension": "jpg", + "size": 123968, + "prettySize": "124 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "lutoOTs902.jpg", + "ext": ".jpg", + "name": "lutoOTs902", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453914, + "blocks": 248, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "4f84a220-540e-5fdb-91c0-5f680c657eea", + "children": [ + "4a42eab4-43b3-5d69-8a5b-37d744d78ead" + ], + "parent": null, + "internal": { + "contentDigest": "4f455e646bcb5a9b3b2160f5997611e7", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/lxaO_8s993.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/lxaO_8s993.jpg", + "relativePath": "images/lxaO_8s993.jpg", + "extension": "jpg", + "size": 109951, + "prettySize": "110 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "lxaO_8s993.jpg", + "ext": ".jpg", + "name": "lxaO_8s993", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453915, + "blocks": 216, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "c3e4eeee-a771-5915-a1ea-5f8aa5496e2b", + "children": [ + "8bb85c36-4986-5dca-a1ef-935fc216b78a" + ], + "parent": null, + "internal": { + "contentDigest": "695a76d7cd1ff8a8fbe78ea9482bc4e7", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/mlxMw3M94j.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/mlxMw3M94j.jpg", + "relativePath": "images/mlxMw3M94j.jpg", + "extension": "jpg", + "size": 117540, + "prettySize": "118 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "mlxMw3M94j.jpg", + "ext": ".jpg", + "name": "mlxMw3M94j", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453916, + "blocks": 232, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "d4f6feaa-9001-5ca8-8f11-d5d01cd9d254", + "children": [ + "9a6c566e-9b00-5135-a512-a7375437d91b" + ], + "parent": null, + "internal": { + "contentDigest": "654eaeabf3232517b925392ff64244dd", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/moglcxM97P.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/moglcxM97P.jpg", + "relativePath": "images/moglcxM97P.jpg", + "extension": "jpg", + "size": 84281, + "prettySize": "84.3 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "moglcxM97P.jpg", + "ext": ".jpg", + "name": "moglcxM97P", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453917, + "blocks": 168, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "9b6b9a69-0c6e-5abe-986b-7b11cd1764e6", + "children": [ + "5868eb13-70c3-5331-984c-7ceaa5c309ca" + ], + "parent": null, + "internal": { + "contentDigest": "d110db904291dc24c26b5e2696e59338", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/nZaKQfM99Z.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/nZaKQfM99Z.jpg", + "relativePath": "images/nZaKQfM99Z.jpg", + "extension": "jpg", + "size": 101114, + "prettySize": "101 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "nZaKQfM99Z.jpg", + "ext": ".jpg", + "name": "nZaKQfM99Z", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453919, + "blocks": 200, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "fe6abbeb-14b1-52c4-916c-6498b0694452", + "children": [ + "02673219-a18f-5c15-a63c-550dd5bf110d" + ], + "parent": null, + "internal": { + "contentDigest": "fd95ba3ac4e3bbc7331025248432a239", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/oFM91Fs9z6.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/oFM91Fs9z6.jpg", + "relativePath": "images/oFM91Fs9z6.jpg", + "extension": "jpg", + "size": 78127, + "prettySize": "78.1 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "oFM91Fs9z6.jpg", + "ext": ".jpg", + "name": "oFM91Fs9z6", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453920, + "blocks": 160, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "7051dfff-7b4a-5d7f-947f-c85e2034b05e", + "children": [ + "11b30767-49c7-594f-8d4d-760356e21321" + ], + "parent": null, + "internal": { + "contentDigest": "a513d53f3a11403596639be3a1d3bedd", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/oJebJyM9z8.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/oJebJyM9z8.jpg", + "relativePath": "images/oJebJyM9z8.jpg", + "extension": "jpg", + "size": 78329, + "prettySize": "78.3 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "oJebJyM9z8.jpg", + "ext": ".jpg", + "name": "oJebJyM9z8", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453921, + "blocks": 160, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "de0199a4-a8f3-5fee-a01e-3637d7424778", + "children": [ + "1da41841-fb71-52b0-9bac-b9abefcfe47a" + ], + "parent": null, + "internal": { + "contentDigest": "32fcef3d89b53f53148ffb0a61feb53a", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/oqbez7s9_x.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/oqbez7s9_x.jpg", + "relativePath": "images/oqbez7s9_x.jpg", + "extension": "jpg", + "size": 78913, + "prettySize": "78.9 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "oqbez7s9_x.jpg", + "ext": ".jpg", + "name": "oqbez7s9_x", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453922, + "blocks": 160, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "4957ed17-f7ed-5ef1-8ea1-0ce081bb357c", + "children": [ + "b7587480-754e-5318-bfd4-5b73acc41548" + ], + "parent": null, + "internal": { + "contentDigest": "d3a2dca69116b045287f258388a60718", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/oqvZV5s9z2.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/oqvZV5s9z2.jpg", + "relativePath": "images/oqvZV5s9z2.jpg", + "extension": "jpg", + "size": 116141, + "prettySize": "116 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "oqvZV5s9z2.jpg", + "ext": ".jpg", + "name": "oqvZV5s9z2", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453925, + "blocks": 232, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "5dfa0a18-5fd7-5bc8-b763-61e8a0aa110d", + "children": [ + "2d3de8d8-437a-5ca5-9ba2-181af73e42d7" + ], + "parent": null, + "internal": { + "contentDigest": "c229673b43857230fa2c7b3969eaab42", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/oqeqN7s912.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/oqeqN7s912.jpg", + "relativePath": "images/oqeqN7s912.jpg", + "extension": "jpg", + "size": 98068, + "prettySize": "98.1 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "oqeqN7s912.jpg", + "ext": ".jpg", + "name": "oqeqN7s912", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453924, + "blocks": 192, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "41f4e7be-c697-5c50-be60-9ca3828603c7", + "children": [ + "dea320e4-3a3c-520c-ba44-6336e369315f" + ], + "parent": null, + "internal": { + "contentDigest": "92b29ea9b9b5d01a2e00ae8a5e8f73aa", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/orMhzhs97P.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/orMhzhs97P.jpg", + "relativePath": "images/orMhzhs97P.jpg", + "extension": "jpg", + "size": 113368, + "prettySize": "113 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "orMhzhs97P.jpg", + "ext": ".jpg", + "name": "orMhzhs97P", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453926, + "blocks": 224, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "0229ab2d-e417-59b4-b2a5-22a7714092df", + "children": [ + "2d54e667-4d48-5698-8510-2a5e463e939a" + ], + "parent": null, + "internal": { + "contentDigest": "ee0bb483ba82477ad08c43d9a463dd48", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/oqbxsdM9wR.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/oqbxsdM9wR.jpg", + "relativePath": "images/oqbxsdM9wR.jpg", + "extension": "jpg", + "size": 86259, + "prettySize": "86.3 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "oqbxsdM9wR.jpg", + "ext": ".jpg", + "name": "oqbxsdM9wR", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453923, + "blocks": 176, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "f87566b3-c14c-5cac-b9db-190fdf797a8b", + "children": [ + "326f8570-2d93-5ce1-9896-111bc85486af" + ], + "parent": null, + "internal": { + "contentDigest": "951de4497ed7365c199cf73d9a18b0c4", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/orPfaus9xF.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/orPfaus9xF.jpg", + "relativePath": "images/orPfaus9xF.jpg", + "extension": "jpg", + "size": 93560, + "prettySize": "93.6 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "orPfaus9xF.jpg", + "ext": ".jpg", + "name": "orPfaus9xF", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453927, + "blocks": 184, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "7908fb4d-98d9-5e13-b9f0-84b52012a546", + "children": [ + "9815f23e-7bf8-5aba-b9c2-ee9ee31d0a6a" + ], + "parent": null, + "internal": { + "contentDigest": "f7b42abd98737507194603523c20a00b", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/orRtxus906.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/orRtxus906.jpg", + "relativePath": "images/orRtxus906.jpg", + "extension": "jpg", + "size": 130938, + "prettySize": "131 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "orRtxus906.jpg", + "ext": ".jpg", + "name": "orRtxus906", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453928, + "blocks": 256, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "14fff379-a53f-5902-9d91-d3973b5fa952", + "children": [ + "e0111747-3565-5d71-9c95-4339fb01006e" + ], + "parent": null, + "internal": { + "contentDigest": "a005f461571fcc05eb8a9972e6b9c3fb", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/ov6BJ8M93g.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/ov6BJ8M93g.jpg", + "relativePath": "images/ov6BJ8M93g.jpg", + "extension": "jpg", + "size": 109921, + "prettySize": "110 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "ov6BJ8M93g.jpg", + "ext": ".jpg", + "name": "ov6BJ8M93g", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453930, + "blocks": 216, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "fb621d85-5a2c-59c1-afd2-243507d447b5", + "children": [ + "bc663945-deb3-5070-9a5b-367df4a50400" + ], + "parent": null, + "internal": { + "contentDigest": "36a057b15efdf7e657949dcaf2b5a5ca", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/tB0dMts9x9.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/tB0dMts9x9.jpg", + "relativePath": "images/tB0dMts9x9.jpg", + "extension": "jpg", + "size": 85281, + "prettySize": "85.3 kB", + "modifiedTime": "2019-02-08T08:55:07.965Z", + "accessTime": "2019-02-08T08:55:07.965Z", + "changeTime": "2019-02-08T08:55:07.965Z", + "birthTime": "2019-02-08T08:55:07.965Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "tB0dMts9x9.jpg", + "ext": ".jpg", + "name": "tB0dMts9x9", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453934, + "blocks": 168, + "atimeMs": 1549616107964.5935, + "mtimeMs": 1549616107964.5935, + "ctimeMs": 1549616107964.5935, + "birthtimeMs": 1549616107964.5935, + "atime": "2019-02-08T08:55:07.965Z", + "mtime": "2019-02-08T08:55:07.965Z", + "ctime": "2019-02-08T08:55:07.965Z", + "birthtime": "2019-02-08T08:55:07.965Z" + }, + { + "id": "fd3c1dc8-5ed1-5194-891a-d6af0c3952c9", + "children": [ + "4d53a1c1-4ade-5627-9297-1c8cb7642f0a" + ], + "parent": null, + "internal": { + "contentDigest": "565cb37da59eeddeb6ddf0667e1f6aa7", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/tB0kS4M9yO.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/tB0kS4M9yO.jpg", + "relativePath": "images/tB0kS4M9yO.jpg", + "extension": "jpg", + "size": 119496, + "prettySize": "119 kB", + "modifiedTime": "2019-02-08T08:55:07.965Z", + "accessTime": "2019-02-08T08:55:07.965Z", + "changeTime": "2019-02-08T08:55:07.965Z", + "birthTime": "2019-02-08T08:55:07.965Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "tB0kS4M9yO.jpg", + "ext": ".jpg", + "name": "tB0kS4M9yO", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453935, + "blocks": 240, + "atimeMs": 1549616107964.5935, + "mtimeMs": 1549616107964.5935, + "ctimeMs": 1549616107964.5935, + "birthtimeMs": 1549616107964.5935, + "atime": "2019-02-08T08:55:07.965Z", + "mtime": "2019-02-08T08:55:07.965Z", + "ctime": "2019-02-08T08:55:07.965Z", + "birthtime": "2019-02-08T08:55:07.965Z" + }, + { + "id": "03b29c0e-71da-5ebf-8a51-caa50706b0de", + "children": [ + "02606998-d4ff-5676-a381-d9a587c42ffb" + ], + "parent": null, + "internal": { + "contentDigest": "e473c8292e19bb448af74410a8f45edc", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/3UlOVgM9yz.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/3UlOVgM9yz.jpg", + "relativePath": "images/3UlOVgM9yz.jpg", + "extension": "jpg", + "size": 145800, + "prettySize": "146 kB", + "modifiedTime": "2019-02-08T08:55:07.921Z", + "accessTime": "2019-02-08T08:55:07.921Z", + "changeTime": "2019-02-08T08:55:07.921Z", + "birthTime": "2019-02-08T08:55:07.921Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "3UlOVgM9yz.jpg", + "ext": ".jpg", + "name": "3UlOVgM9yz", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453838, + "blocks": 288, + "atimeMs": 1549616107921.2603, + "mtimeMs": 1549616107921.2603, + "ctimeMs": 1549616107921.2603, + "birthtimeMs": 1549616107921.2603, + "atime": "2019-02-08T08:55:07.921Z", + "mtime": "2019-02-08T08:55:07.921Z", + "ctime": "2019-02-08T08:55:07.921Z", + "birthtime": "2019-02-08T08:55:07.921Z" + }, + { + "id": "764b3942-c154-52a1-9a0a-cc422572a352", + "children": [ + "6503cf4b-80bb-54f7-b7af-a759055c558d" + ], + "parent": null, + "internal": { + "contentDigest": "a7b8c880534ac5c210f0da4c8b852700", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/8rNAoWs9wR.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/8rNAoWs9wR.jpg", + "relativePath": "images/8rNAoWs9wR.jpg", + "extension": "jpg", + "size": 162215, + "prettySize": "162 kB", + "modifiedTime": "2019-02-08T08:55:07.925Z", + "accessTime": "2019-02-08T08:55:07.925Z", + "changeTime": "2019-02-08T08:55:07.925Z", + "birthTime": "2019-02-08T08:55:07.925Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "8rNAoWs9wR.jpg", + "ext": ".jpg", + "name": "8rNAoWs9wR", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453846, + "blocks": 320, + "atimeMs": 1549616107924.5935, + "mtimeMs": 1549616107924.5935, + "ctimeMs": 1549616107924.5935, + "birthtimeMs": 1549616107924.5935, + "atime": "2019-02-08T08:55:07.925Z", + "mtime": "2019-02-08T08:55:07.925Z", + "ctime": "2019-02-08T08:55:07.925Z", + "birthtime": "2019-02-08T08:55:07.925Z" + }, + { + "id": "f3f69364-b797-5e77-a7b7-a7cca6124124", + "children": [ + "8347bef3-7615-5041-889e-9d1d0e21df7b" + ], + "parent": null, + "internal": { + "contentDigest": "1949cbb78a54ccd7b7f6be80ce5bf22e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BLhhsTZlGwd.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BLhhsTZlGwd.jpg", + "relativePath": "images/BLhhsTZlGwd.jpg", + "extension": "jpg", + "size": 150655, + "prettySize": "151 kB", + "modifiedTime": "2019-02-08T08:55:07.931Z", + "accessTime": "2019-02-08T08:55:07.931Z", + "changeTime": "2019-02-08T08:55:07.931Z", + "birthTime": "2019-02-08T08:55:07.931Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BLhhsTZlGwd.jpg", + "ext": ".jpg", + "name": "BLhhsTZlGwd", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453853, + "blocks": 296, + "atimeMs": 1549616107931.2603, + "mtimeMs": 1549616107931.2603, + "ctimeMs": 1549616107931.2603, + "birthtimeMs": 1549616107931.2603, + "atime": "2019-02-08T08:55:07.931Z", + "mtime": "2019-02-08T08:55:07.931Z", + "ctime": "2019-02-08T08:55:07.931Z", + "birthtime": "2019-02-08T08:55:07.931Z" + }, + { + "id": "d72ea313-fe13-56fd-b3e0-3b30f986abe3", + "children": [ + "d8355763-6b57-5141-8af4-4fef9518f87f" + ], + "parent": null, + "internal": { + "contentDigest": "6b4a90bb8a9df452816b73a921a077c5", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BSEdRj_B8HP.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BSEdRj_B8HP.jpg", + "relativePath": "images/BSEdRj_B8HP.jpg", + "extension": "jpg", + "size": 165688, + "prettySize": "166 kB", + "modifiedTime": "2019-02-08T08:55:07.931Z", + "accessTime": "2019-02-08T08:55:07.931Z", + "changeTime": "2019-02-08T08:55:07.931Z", + "birthTime": "2019-02-08T08:55:07.931Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BSEdRj_B8HP.jpg", + "ext": ".jpg", + "name": "BSEdRj_B8HP", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453854, + "blocks": 328, + "atimeMs": 1549616107931.2603, + "mtimeMs": 1549616107931.2603, + "ctimeMs": 1549616107931.2603, + "birthtimeMs": 1549616107931.2603, + "atime": "2019-02-08T08:55:07.931Z", + "mtime": "2019-02-08T08:55:07.931Z", + "ctime": "2019-02-08T08:55:07.931Z", + "birthtime": "2019-02-08T08:55:07.931Z" + }, + { + "id": "14085584-d2d6-505c-b15e-18366c538350", + "children": [ + "4ea50907-055a-5080-97eb-430182a400f6" + ], + "parent": null, + "internal": { + "contentDigest": "753e3daa82ea260cfec5a30b16cd27ef", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BdIpEzalAJx.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BdIpEzalAJx.jpg", + "relativePath": "images/BdIpEzalAJx.jpg", + "extension": "jpg", + "size": 142370, + "prettySize": "142 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BdIpEzalAJx.jpg", + "ext": ".jpg", + "name": "BdIpEzalAJx", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453862, + "blocks": 280, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "933a84a9-75b4-5d1b-ab13-7fa6dc512635", + "children": [ + "5e40ac10-3140-596a-a2f1-6f24cae9a73b" + ], + "parent": null, + "internal": { + "contentDigest": "b0e8b99b4f33ff57a12ff7d3c99dd534", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BdiU-TTFP4h.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BdiU-TTFP4h.jpg", + "relativePath": "images/BdiU-TTFP4h.jpg", + "extension": "jpg", + "size": 163326, + "prettySize": "163 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BdiU-TTFP4h.jpg", + "ext": ".jpg", + "name": "BdiU-TTFP4h", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453863, + "blocks": 320, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "4902ea03-096b-5af7-a274-7814546687ef", + "children": [ + "349d04c8-368f-5b97-b838-2d4d988072e4" + ], + "parent": null, + "internal": { + "contentDigest": "d00220e3e4b792741841b85af042983d", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/V7AMWds949.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/V7AMWds949.jpg", + "relativePath": "images/V7AMWds949.jpg", + "extension": "jpg", + "size": 142755, + "prettySize": "143 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "V7AMWds949.jpg", + "ext": ".jpg", + "name": "V7AMWds949", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453867, + "blocks": 280, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "76885354-e4ab-5649-b98f-8e5a75c0b7c6", + "children": [ + "34152597-9a17-5250-8fab-074a17f83f99" + ], + "parent": null, + "internal": { + "contentDigest": "17fbab6f315a13755c50133b2120d84e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/Vmws0_s9yL.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/Vmws0_s9yL.jpg", + "relativePath": "images/Vmws0_s9yL.jpg", + "extension": "jpg", + "size": 153102, + "prettySize": "153 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.938Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "Vmws0_s9yL.jpg", + "ext": ".jpg", + "name": "Vmws0_s9yL", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453869, + "blocks": 304, + "atimeMs": 1549616107937.9268, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.938Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "1221d4f2-c8f5-5268-b0e7-fcd0aa12d598", + "children": [ + "6582f45a-6f10-5656-9bcd-205b18f3578a" + ], + "parent": null, + "internal": { + "contentDigest": "312d4c34b4bba4e8143c6f8bf9bfbea6", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/YBJ_8xM91G.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/YBJ_8xM91G.jpg", + "relativePath": "images/YBJ_8xM91G.jpg", + "extension": "jpg", + "size": 133831, + "prettySize": "134 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "YBJ_8xM91G.jpg", + "ext": ".jpg", + "name": "YBJ_8xM91G", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453873, + "blocks": 264, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "fe7f4316-fb22-5cc0-a414-48f12f2a41da", + "children": [ + "e960cdfc-bc59-5b7d-aeb3-fbeb79d0cd8c" + ], + "parent": null, + "internal": { + "contentDigest": "b5a6a1676f667a0444c7e9d4ba6472f3", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/YA47taM9xR.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/YA47taM9xR.jpg", + "relativePath": "images/YA47taM9xR.jpg", + "extension": "jpg", + "size": 160993, + "prettySize": "161 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "YA47taM9xR.jpg", + "ext": ".jpg", + "name": "YA47taM9xR", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453872, + "blocks": 320, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "4b976bd1-00ad-5bea-81d5-aa845f0081dc", + "children": [ + "68b4838a-e6c7-5d36-a661-301b45843aeb" + ], + "parent": null, + "internal": { + "contentDigest": "5918a7fcb8e8c9d1cfb7ed39e9391b32", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/YBKLxfs91e.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/YBKLxfs91e.jpg", + "relativePath": "images/YBKLxfs91e.jpg", + "extension": "jpg", + "size": 148404, + "prettySize": "148 kB", + "modifiedTime": "2019-02-08T08:55:07.941Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.941Z", + "birthTime": "2019-02-08T08:55:07.941Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "YBKLxfs91e.jpg", + "ext": ".jpg", + "name": "YBKLxfs91e", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453874, + "blocks": 296, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107941.2603, + "ctimeMs": 1549616107941.2603, + "birthtimeMs": 1549616107941.2603, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.941Z", + "ctime": "2019-02-08T08:55:07.941Z", + "birthtime": "2019-02-08T08:55:07.941Z" + }, + { + "id": "2a8de103-3662-541b-a0b9-a384e7ec141c", + "children": [ + "c92a09ee-5025-556c-a536-7cd1182a1f75" + ], + "parent": null, + "internal": { + "contentDigest": "ac148a522d9d29989de0380c2b416b09", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/aWqdbpM99F.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/aWqdbpM99F.jpg", + "relativePath": "images/aWqdbpM99F.jpg", + "extension": "jpg", + "size": 132315, + "prettySize": "132 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "aWqdbpM99F.jpg", + "ext": ".jpg", + "name": "aWqdbpM99F", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453879, + "blocks": 264, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "792f605d-6d45-50cc-b1fe-3d3852795915", + "children": [ + "36877a4e-6f98-5bc5-acf4-71c6c70c1f10" + ], + "parent": null, + "internal": { + "contentDigest": "9131efb20760a4549bc102032737eeb8", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/bSOo_Gs98O.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/bSOo_Gs98O.jpg", + "relativePath": "images/bSOo_Gs98O.jpg", + "extension": "jpg", + "size": 133888, + "prettySize": "134 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.945Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "bSOo_Gs98O.jpg", + "ext": ".jpg", + "name": "bSOo_Gs98O", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453880, + "blocks": 264, + "atimeMs": 1549616107944.5935, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.945Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "cd24a64f-32cb-5167-a6fe-783a46d7ca4b", + "children": [ + "c6154f11-7111-5af9-bc65-e339d6e68db9" + ], + "parent": null, + "internal": { + "contentDigest": "2bce315ca5a1d4f5236850a7b953e99b", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/dUimPbM9-K.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/dUimPbM9-K.jpg", + "relativePath": "images/dUimPbM9-K.jpg", + "extension": "jpg", + "size": 134095, + "prettySize": "134 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "dUimPbM9-K.jpg", + "ext": ".jpg", + "name": "dUimPbM9-K", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453887, + "blocks": 264, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "da2bca11-40c5-5629-8ac5-d4e80b3002e7", + "children": [], + "parent": "25bfb17b-4867-52b0-b6b2-31141ffd66ea", + "internal": { + "contentDigest": "12d6834787247fa1fd603472dca4779b", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "c364338a-eb65-5925-a014-effd93849b40", + "children": [], + "parent": "b35cc487-b060-5849-a332-ae2b6214b30b", + "internal": { + "contentDigest": "113c46804bc8908ced0a7bd6c7d24f7b", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4d9816a7-3885-5dd4-bbe6-85c655a48316", + "children": [], + "parent": "63209335-2764-5ec8-b050-ab0acf938a05", + "internal": { + "contentDigest": "fce6b57d4f233faed53317605e60455e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "442f41c4-bbf2-5124-8602-f242880c593f", + "children": [], + "parent": "91d496c3-3368-5810-811f-7523e45582dd", + "internal": { + "contentDigest": "a9f1eea7376c2d4c9f366f8750fc9623", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "adb8e4b2-34ed-5f31-b6d7-60b144c100d3", + "children": [], + "parent": "605ea709-2f6b-5c32-84dd-c01d1d764a55", + "internal": { + "contentDigest": "a7680535f18d909cdf3f60908dedc9bb", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "fa1545ee-c421-566f-a062-5b3cc5ed86df", + "children": [], + "parent": "c61e32c1-b74a-577d-bcc5-71e591546782", + "internal": { + "contentDigest": "70db28f9118ddc122d2aad303021137c", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "3f06569d-ebc6-5848-a69d-5ff64a9d9b67", + "children": [], + "parent": "538f5859-d9a3-589e-8dde-3e731732b0ca", + "internal": { + "contentDigest": "96cc7e05e1dd76339a0332b39dfc4640", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "42244d78-fac3-5e3b-9f14-02a15c31b548", + "children": [], + "parent": "632d64a1-e24c-55fe-a3b3-a4a31997af39", + "internal": { + "contentDigest": "3a533f4c318f142c43c6aea513fde2ee", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "8a7742e1-6b5a-59f8-9d48-f0abf0ea86a9", + "children": [], + "parent": "922f795a-bf71-5370-bf64-e04720bd110e", + "internal": { + "contentDigest": "9c8ce28260d2ae31eb2ed1b06bbd473e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "2f9bc223-d0e2-57c4-9de2-0de4c32d6ec3", + "children": [], + "parent": "14d49c41-5571-57c5-b7f8-07e5d19e24fc", + "internal": { + "contentDigest": "c687cf5f4977f346c919e3f0b10a5fd3", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "cdaeb064-5204-570a-b236-f8410c35fcff", + "children": [], + "parent": "b8d1824e-97a7-58ad-8f6a-9eca8ffe31c5", + "internal": { + "contentDigest": "96fad019fa39ab34f2ad3b09cc17a1e2", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "eeac8d14-bf7c-5762-ab78-4d172dd5afe3", + "children": [], + "parent": "c52dd4e6-274f-556f-84af-21c118aa6cca", + "internal": { + "contentDigest": "31ba31edc1bf4fdf281939ae690236de", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "a5c97fc5-c9f1-54c0-9233-210fe1f160b0", + "children": [], + "parent": "f64841a4-4d95-5112-9348-bc562961db4d", + "internal": { + "contentDigest": "3f7ccb765115bdcdb775a7cecd5bce2d", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "b0cedf3b-cd9b-5421-9d27-48a8f2da610f", + "children": [], + "parent": "b633e034-a20b-5d41-a9b0-11e9d621d983", + "internal": { + "contentDigest": "1fd8c62f69302a0232f236888d945b75", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "9034de88-ace8-585c-b0fe-acea09a60b4f", + "children": [], + "parent": "dc8d98cd-9a4b-5c95-978c-72e5e003d3a9", + "internal": { + "contentDigest": "af544090b8d1f2150b5ebfab252dbf3e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "f59e19cb-3173-5247-a277-76b3b8250b4b", + "children": [], + "parent": "c9a40590-98f2-560d-b091-34e10179dc1c", + "internal": { + "contentDigest": "ce267a020dec9362be41e06d8d586975", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "da1377ca-7e8f-5196-a4fd-d0a4f3589a41", + "children": [], + "parent": "19f096ac-7d47-53e3-81df-5f6b6fd942b7", + "internal": { + "contentDigest": "46bfd9fcfe5f42f54aafc1e4dd7b40d2", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "ad5bf0e8-78e6-5c06-8f36-18de7bfe675a", + "children": [], + "parent": "6bb783c1-92c8-5a66-8b1c-97aeb2f18647", + "internal": { + "contentDigest": "8e4fa5e7e3dae7c02bd280bb24e95c66", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4be4599e-5f28-5597-9b97-5d689b785dc3", + "children": [], + "parent": "ac3d890f-c2bd-5ccc-a584-ab773e2bb356", + "internal": { + "contentDigest": "0f3cf0fd60b391d081376a9912172984", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "cc003810-50ca-5300-921f-f45dc27bb000", + "children": [], + "parent": "19737ea3-cf41-5044-9262-cc8a00ba37a2", + "internal": { + "contentDigest": "4e0218a426f7ca098de8f79f19a9812a", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "07adb971-0e2b-52a2-9851-73a0c0c2b841", + "children": [], + "parent": "eddf5a86-e422-5513-aace-a59d556fab11", + "internal": { + "contentDigest": "288bf0943ae797b95a21705b79a45c26", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "d53df682-65cb-509b-b179-88d7b95a97e2", + "children": [], + "parent": "b1b28a49-b910-5669-ad19-d2917aa1bfdf", + "internal": { + "contentDigest": "82de37baa6823ff4a3ac419158d02ab3", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4a42eab4-43b3-5d69-8a5b-37d744d78ead", + "children": [], + "parent": "4f84a220-540e-5fdb-91c0-5f680c657eea", + "internal": { + "contentDigest": "4f455e646bcb5a9b3b2160f5997611e7", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "8bb85c36-4986-5dca-a1ef-935fc216b78a", + "children": [], + "parent": "c3e4eeee-a771-5915-a1ea-5f8aa5496e2b", + "internal": { + "contentDigest": "695a76d7cd1ff8a8fbe78ea9482bc4e7", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "9a6c566e-9b00-5135-a512-a7375437d91b", + "children": [], + "parent": "d4f6feaa-9001-5ca8-8f11-d5d01cd9d254", + "internal": { + "contentDigest": "654eaeabf3232517b925392ff64244dd", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "5868eb13-70c3-5331-984c-7ceaa5c309ca", + "children": [], + "parent": "9b6b9a69-0c6e-5abe-986b-7b11cd1764e6", + "internal": { + "contentDigest": "d110db904291dc24c26b5e2696e59338", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "02673219-a18f-5c15-a63c-550dd5bf110d", + "children": [], + "parent": "fe6abbeb-14b1-52c4-916c-6498b0694452", + "internal": { + "contentDigest": "fd95ba3ac4e3bbc7331025248432a239", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "11b30767-49c7-594f-8d4d-760356e21321", + "children": [], + "parent": "7051dfff-7b4a-5d7f-947f-c85e2034b05e", + "internal": { + "contentDigest": "a513d53f3a11403596639be3a1d3bedd", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "1da41841-fb71-52b0-9bac-b9abefcfe47a", + "children": [], + "parent": "de0199a4-a8f3-5fee-a01e-3637d7424778", + "internal": { + "contentDigest": "32fcef3d89b53f53148ffb0a61feb53a", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "b7587480-754e-5318-bfd4-5b73acc41548", + "children": [], + "parent": "4957ed17-f7ed-5ef1-8ea1-0ce081bb357c", + "internal": { + "contentDigest": "d3a2dca69116b045287f258388a60718", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "2d3de8d8-437a-5ca5-9ba2-181af73e42d7", + "children": [], + "parent": "5dfa0a18-5fd7-5bc8-b763-61e8a0aa110d", + "internal": { + "contentDigest": "c229673b43857230fa2c7b3969eaab42", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "dea320e4-3a3c-520c-ba44-6336e369315f", + "children": [], + "parent": "41f4e7be-c697-5c50-be60-9ca3828603c7", + "internal": { + "contentDigest": "92b29ea9b9b5d01a2e00ae8a5e8f73aa", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "2d54e667-4d48-5698-8510-2a5e463e939a", + "children": [], + "parent": "0229ab2d-e417-59b4-b2a5-22a7714092df", + "internal": { + "contentDigest": "ee0bb483ba82477ad08c43d9a463dd48", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "326f8570-2d93-5ce1-9896-111bc85486af", + "children": [], + "parent": "f87566b3-c14c-5cac-b9db-190fdf797a8b", + "internal": { + "contentDigest": "951de4497ed7365c199cf73d9a18b0c4", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "9815f23e-7bf8-5aba-b9c2-ee9ee31d0a6a", + "children": [], + "parent": "7908fb4d-98d9-5e13-b9f0-84b52012a546", + "internal": { + "contentDigest": "f7b42abd98737507194603523c20a00b", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "e0111747-3565-5d71-9c95-4339fb01006e", + "children": [], + "parent": "14fff379-a53f-5902-9d91-d3973b5fa952", + "internal": { + "contentDigest": "a005f461571fcc05eb8a9972e6b9c3fb", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "bc663945-deb3-5070-9a5b-367df4a50400", + "children": [], + "parent": "fb621d85-5a2c-59c1-afd2-243507d447b5", + "internal": { + "contentDigest": "36a057b15efdf7e657949dcaf2b5a5ca", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4d53a1c1-4ade-5627-9297-1c8cb7642f0a", + "children": [], + "parent": "fd3c1dc8-5ed1-5194-891a-d6af0c3952c9", + "internal": { + "contentDigest": "565cb37da59eeddeb6ddf0667e1f6aa7", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "02606998-d4ff-5676-a381-d9a587c42ffb", + "children": [], + "parent": "03b29c0e-71da-5ebf-8a51-caa50706b0de", + "internal": { + "contentDigest": "e473c8292e19bb448af74410a8f45edc", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "6503cf4b-80bb-54f7-b7af-a759055c558d", + "children": [], + "parent": "764b3942-c154-52a1-9a0a-cc422572a352", + "internal": { + "contentDigest": "a7b8c880534ac5c210f0da4c8b852700", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "8347bef3-7615-5041-889e-9d1d0e21df7b", + "children": [], + "parent": "f3f69364-b797-5e77-a7b7-a7cca6124124", + "internal": { + "contentDigest": "1949cbb78a54ccd7b7f6be80ce5bf22e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "d8355763-6b57-5141-8af4-4fef9518f87f", + "children": [], + "parent": "d72ea313-fe13-56fd-b3e0-3b30f986abe3", + "internal": { + "contentDigest": "6b4a90bb8a9df452816b73a921a077c5", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "4ea50907-055a-5080-97eb-430182a400f6", + "children": [], + "parent": "14085584-d2d6-505c-b15e-18366c538350", + "internal": { + "contentDigest": "753e3daa82ea260cfec5a30b16cd27ef", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "5e40ac10-3140-596a-a2f1-6f24cae9a73b", + "children": [], + "parent": "933a84a9-75b4-5d1b-ab13-7fa6dc512635", + "internal": { + "contentDigest": "b0e8b99b4f33ff57a12ff7d3c99dd534", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "349d04c8-368f-5b97-b838-2d4d988072e4", + "children": [], + "parent": "4902ea03-096b-5af7-a274-7814546687ef", + "internal": { + "contentDigest": "d00220e3e4b792741841b85af042983d", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "34152597-9a17-5250-8fab-074a17f83f99", + "children": [], + "parent": "76885354-e4ab-5649-b98f-8e5a75c0b7c6", + "internal": { + "contentDigest": "17fbab6f315a13755c50133b2120d84e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "6582f45a-6f10-5656-9bcd-205b18f3578a", + "children": [], + "parent": "1221d4f2-c8f5-5268-b0e7-fcd0aa12d598", + "internal": { + "contentDigest": "312d4c34b4bba4e8143c6f8bf9bfbea6", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "e960cdfc-bc59-5b7d-aeb3-fbeb79d0cd8c", + "children": [], + "parent": "fe7f4316-fb22-5cc0-a414-48f12f2a41da", + "internal": { + "contentDigest": "b5a6a1676f667a0444c7e9d4ba6472f3", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "68b4838a-e6c7-5d36-a661-301b45843aeb", + "children": [], + "parent": "4b976bd1-00ad-5bea-81d5-aa845f0081dc", + "internal": { + "contentDigest": "5918a7fcb8e8c9d1cfb7ed39e9391b32", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "c92a09ee-5025-556c-a536-7cd1182a1f75", + "children": [], + "parent": "2a8de103-3662-541b-a0b9-a384e7ec141c", + "internal": { + "contentDigest": "ac148a522d9d29989de0380c2b416b09", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "36877a4e-6f98-5bc5-acf4-71c6c70c1f10", + "children": [], + "parent": "792f605d-6d45-50cc-b1fe-3d3852795915", + "internal": { + "contentDigest": "9131efb20760a4549bc102032737eeb8", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "c6154f11-7111-5af9-bc65-e339d6e68db9", + "children": [], + "parent": "cd24a64f-32cb-5167-a6fe-783a46d7ca4b", + "internal": { + "contentDigest": "2bce315ca5a1d4f5236850a7b953e99b", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "29f5369d-8108-5d6a-8328-d266944a63ce", + "children": [ + "f6cf4e6b-590e-5515-a0f9-e164c5d36d5f" + ], + "parent": null, + "internal": { + "contentDigest": "b92813a0608bc12340061e5882d93abb", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/gb7GOoM92V.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/gb7GOoM92V.jpg", + "relativePath": "images/gb7GOoM92V.jpg", + "extension": "jpg", + "size": 145057, + "prettySize": "145 kB", + "modifiedTime": "2019-02-08T08:55:07.948Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.948Z", + "birthTime": "2019-02-08T08:55:07.948Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "gb7GOoM92V.jpg", + "ext": ".jpg", + "name": "gb7GOoM92V", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453890, + "blocks": 288, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107947.9268, + "ctimeMs": 1549616107947.9268, + "birthtimeMs": 1549616107947.9268, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.948Z", + "ctime": "2019-02-08T08:55:07.948Z", + "birthtime": "2019-02-08T08:55:07.948Z" + }, + { + "id": "3ec85680-8562-56fe-9dd2-05278a92b5cc", + "children": [ + "f4fb0237-4f43-5acc-8a65-c49d5f809b1f" + ], + "parent": null, + "internal": { + "contentDigest": "47ef7dc01d0534f0719af9379714e732", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/hG-1k4s9yJ.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/hG-1k4s9yJ.jpg", + "relativePath": "images/hG-1k4s9yJ.jpg", + "extension": "jpg", + "size": 152267, + "prettySize": "152 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.948Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "hG-1k4s9yJ.jpg", + "ext": ".jpg", + "name": "hG-1k4s9yJ", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453893, + "blocks": 304, + "atimeMs": 1549616107947.9268, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.948Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "73ff79eb-7c36-52f8-8d0c-5ba294e09a27", + "children": [ + "9980f111-9638-5121-b5de-51c4869685a0" + ], + "parent": null, + "internal": { + "contentDigest": "8682e77e0894df0d6ee3e65d4781b418", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/hSNJLVs9_0.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/hSNJLVs9_0.jpg", + "relativePath": "images/hSNJLVs9_0.jpg", + "extension": "jpg", + "size": 163625, + "prettySize": "164 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "hSNJLVs9_0.jpg", + "ext": ".jpg", + "name": "hSNJLVs9_0", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453896, + "blocks": 320, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "e6c580e0-1f87-523f-bcd7-170a47ac88a3", + "children": [ + "b36193d8-4a0b-5cef-b150-b121d2a1d559" + ], + "parent": null, + "internal": { + "contentDigest": "3d2f982848b850a5a313efcaa3c46d76", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/hd7P_nM98p.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/hd7P_nM98p.jpg", + "relativePath": "images/hd7P_nM98p.jpg", + "extension": "jpg", + "size": 136739, + "prettySize": "137 kB", + "modifiedTime": "2019-02-08T08:55:07.951Z", + "accessTime": "2019-02-08T08:55:07.951Z", + "changeTime": "2019-02-08T08:55:07.951Z", + "birthTime": "2019-02-08T08:55:07.951Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "hd7P_nM98p.jpg", + "ext": ".jpg", + "name": "hd7P_nM98p", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453895, + "blocks": 272, + "atimeMs": 1549616107951.2603, + "mtimeMs": 1549616107951.2603, + "ctimeMs": 1549616107951.2603, + "birthtimeMs": 1549616107951.2603, + "atime": "2019-02-08T08:55:07.951Z", + "mtime": "2019-02-08T08:55:07.951Z", + "ctime": "2019-02-08T08:55:07.951Z", + "birthtime": "2019-02-08T08:55:07.951Z" + }, + { + "id": "47fd50e1-52a2-5faf-896d-e493f98f9034", + "children": [ + "8d3ac1fd-20ff-5914-b364-47d98d106d27" + ], + "parent": null, + "internal": { + "contentDigest": "f78f68624655ffd1cbf779ee7803057a", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/jKzbvCs9_9.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/jKzbvCs9_9.jpg", + "relativePath": "images/jKzbvCs9_9.jpg", + "extension": "jpg", + "size": 143584, + "prettySize": "144 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "jKzbvCs9_9.jpg", + "ext": ".jpg", + "name": "jKzbvCs9_9", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453905, + "blocks": 288, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "e78659b1-96a0-591b-9eba-a9f4296191ed", + "children": [ + "5f4f8277-f1a5-574c-80ae-a9cad81b24f0" + ], + "parent": null, + "internal": { + "contentDigest": "2be93a5bd589a6e10b5ec9ff8d52e3cb", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/jU-tlcM9-_.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/jU-tlcM9-_.jpg", + "relativePath": "images/jU-tlcM9-_.jpg", + "extension": "jpg", + "size": 132657, + "prettySize": "133 kB", + "modifiedTime": "2019-02-08T08:55:07.955Z", + "accessTime": "2019-02-08T08:55:07.955Z", + "changeTime": "2019-02-08T08:55:07.955Z", + "birthTime": "2019-02-08T08:55:07.955Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "jU-tlcM9-_.jpg", + "ext": ".jpg", + "name": "jU-tlcM9-_", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453906, + "blocks": 264, + "atimeMs": 1549616107954.5935, + "mtimeMs": 1549616107954.5935, + "ctimeMs": 1549616107954.5935, + "birthtimeMs": 1549616107954.5935, + "atime": "2019-02-08T08:55:07.955Z", + "mtime": "2019-02-08T08:55:07.955Z", + "ctime": "2019-02-08T08:55:07.955Z", + "birthtime": "2019-02-08T08:55:07.955Z" + }, + { + "id": "2dc47b1b-bb47-5353-857a-34632bb43351", + "children": [ + "71a5e7e2-80e6-5b5e-b823-3d0e5940f58b" + ], + "parent": null, + "internal": { + "contentDigest": "570a71489dec85b03f29a4e68654c4e9", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/nQtXUns97Y.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/nQtXUns97Y.jpg", + "relativePath": "images/nQtXUns97Y.jpg", + "extension": "jpg", + "size": 180316, + "prettySize": "180 kB", + "modifiedTime": "2019-02-08T08:55:07.958Z", + "accessTime": "2019-02-08T08:55:07.958Z", + "changeTime": "2019-02-08T08:55:07.958Z", + "birthTime": "2019-02-08T08:55:07.958Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "nQtXUns97Y.jpg", + "ext": ".jpg", + "name": "nQtXUns97Y", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453918, + "blocks": 360, + "atimeMs": 1549616107957.9268, + "mtimeMs": 1549616107957.9268, + "ctimeMs": 1549616107957.9268, + "birthtimeMs": 1549616107957.9268, + "atime": "2019-02-08T08:55:07.958Z", + "mtime": "2019-02-08T08:55:07.958Z", + "ctime": "2019-02-08T08:55:07.958Z", + "birthtime": "2019-02-08T08:55:07.958Z" + }, + { + "id": "64fd4aea-27e4-5a24-87b2-4b025d4ab76a", + "children": [ + "f5376bd2-b65a-5dc4-8150-fdc8a89eb1a8" + ], + "parent": null, + "internal": { + "contentDigest": "0520f8a8807c390404a4d7f8d2cd512e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/ov6A6Xs93f.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/ov6A6Xs93f.jpg", + "relativePath": "images/ov6A6Xs93f.jpg", + "extension": "jpg", + "size": 161456, + "prettySize": "161 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "ov6A6Xs93f.jpg", + "ext": ".jpg", + "name": "ov6A6Xs93f", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453929, + "blocks": 320, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "85ca8b03-3685-5a26-92c7-8076d158f8dd", + "children": [ + "152364d9-6590-5dd1-88dd-042e251b33ef" + ], + "parent": null, + "internal": { + "contentDigest": "9a121a607116f40f35013e58b1455229", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/saS0ZtM9x5.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/saS0ZtM9x5.jpg", + "relativePath": "images/saS0ZtM9x5.jpg", + "extension": "jpg", + "size": 175347, + "prettySize": "175 kB", + "modifiedTime": "2019-02-08T08:55:07.965Z", + "accessTime": "2019-02-08T08:55:07.965Z", + "changeTime": "2019-02-08T08:55:07.965Z", + "birthTime": "2019-02-08T08:55:07.965Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "saS0ZtM9x5.jpg", + "ext": ".jpg", + "name": "saS0ZtM9x5", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453933, + "blocks": 344, + "atimeMs": 1549616107964.5935, + "mtimeMs": 1549616107964.5935, + "ctimeMs": 1549616107964.5935, + "birthtimeMs": 1549616107964.5935, + "atime": "2019-02-08T08:55:07.965Z", + "mtime": "2019-02-08T08:55:07.965Z", + "ctime": "2019-02-08T08:55:07.965Z", + "birthtime": "2019-02-08T08:55:07.965Z" + }, + { + "id": "1e621a1e-31fa-5bc6-87a0-c9f69386cf9e", + "children": [ + "33bf67bd-d1b3-5915-a801-de7b2629c4a3" + ], + "parent": null, + "internal": { + "contentDigest": "bfc29e26125f8afe0e281e612a6c28a0", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/rf52zpM98X.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/rf52zpM98X.jpg", + "relativePath": "images/rf52zpM98X.jpg", + "extension": "jpg", + "size": 141454, + "prettySize": "141 kB", + "modifiedTime": "2019-02-08T08:55:07.965Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.965Z", + "birthTime": "2019-02-08T08:55:07.965Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "rf52zpM98X.jpg", + "ext": ".jpg", + "name": "rf52zpM98X", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453932, + "blocks": 280, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107964.5935, + "ctimeMs": 1549616107964.5935, + "birthtimeMs": 1549616107964.5935, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.965Z", + "ctime": "2019-02-08T08:55:07.965Z", + "birthtime": "2019-02-08T08:55:07.965Z" + }, + { + "id": "9cf24c02-5c23-584e-b42b-a2d315946f26", + "children": [ + "ceb49dc8-381d-55e3-b9b0-05ea7ec1cba6" + ], + "parent": null, + "internal": { + "contentDigest": "0184cf7d576a3626ce482e1156894f92", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/ov6Bgps93h.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/ov6Bgps93h.jpg", + "relativePath": "images/ov6Bgps93h.jpg", + "extension": "jpg", + "size": 138679, + "prettySize": "139 kB", + "modifiedTime": "2019-02-08T08:55:07.961Z", + "accessTime": "2019-02-08T08:55:07.961Z", + "changeTime": "2019-02-08T08:55:07.961Z", + "birthTime": "2019-02-08T08:55:07.961Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "ov6Bgps93h.jpg", + "ext": ".jpg", + "name": "ov6Bgps93h", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453931, + "blocks": 272, + "atimeMs": 1549616107961.26, + "mtimeMs": 1549616107961.26, + "ctimeMs": 1549616107961.26, + "birthtimeMs": 1549616107961.26, + "atime": "2019-02-08T08:55:07.961Z", + "mtime": "2019-02-08T08:55:07.961Z", + "ctime": "2019-02-08T08:55:07.961Z", + "birthtime": "2019-02-08T08:55:07.961Z" + }, + { + "id": "61622fcc-aa74-5f23-9298-05621ac64f7d", + "children": [ + "e16b83bd-4ff6-5a8b-b277-16291a0eefe3" + ], + "parent": null, + "internal": { + "contentDigest": "3dcb61ad3e8b7a5ec8cc3f13bf31338e", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BW6uDlYlQCB.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BW6uDlYlQCB.jpg", + "relativePath": "images/BW6uDlYlQCB.jpg", + "extension": "jpg", + "size": 249737, + "prettySize": "250 kB", + "modifiedTime": "2019-02-08T08:55:07.935Z", + "accessTime": "2019-02-08T08:55:07.935Z", + "changeTime": "2019-02-08T08:55:07.935Z", + "birthTime": "2019-02-08T08:55:07.935Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BW6uDlYlQCB.jpg", + "ext": ".jpg", + "name": "BW6uDlYlQCB", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453858, + "blocks": 488, + "atimeMs": 1549616107934.5935, + "mtimeMs": 1549616107934.5935, + "ctimeMs": 1549616107934.5935, + "birthtimeMs": 1549616107934.5935, + "atime": "2019-02-08T08:55:07.935Z", + "mtime": "2019-02-08T08:55:07.935Z", + "ctime": "2019-02-08T08:55:07.935Z", + "birthtime": "2019-02-08T08:55:07.935Z" + }, + { + "id": "e21dc7e6-f2d5-50cc-a6bb-ad22f67c766b", + "children": [ + "6b4df782-305f-575a-be3d-743723555f0b" + ], + "parent": null, + "internal": { + "contentDigest": "0ac90a4f683192f4218f1fa8f15c75f0", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/Z0mVePs9yb.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/Z0mVePs9yb.jpg", + "relativePath": "images/Z0mVePs9yb.jpg", + "extension": "jpg", + "size": 216628, + "prettySize": "217 kB", + "modifiedTime": "2019-02-08T08:55:07.945Z", + "accessTime": "2019-02-08T08:55:07.941Z", + "changeTime": "2019-02-08T08:55:07.945Z", + "birthTime": "2019-02-08T08:55:07.945Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "Z0mVePs9yb.jpg", + "ext": ".jpg", + "name": "Z0mVePs9yb", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453876, + "blocks": 424, + "atimeMs": 1549616107941.2603, + "mtimeMs": 1549616107944.5935, + "ctimeMs": 1549616107944.5935, + "birthtimeMs": 1549616107944.5935, + "atime": "2019-02-08T08:55:07.941Z", + "mtime": "2019-02-08T08:55:07.945Z", + "ctime": "2019-02-08T08:55:07.945Z", + "birthtime": "2019-02-08T08:55:07.945Z" + }, + { + "id": "f6cf4e6b-590e-5515-a0f9-e164c5d36d5f", + "children": [], + "parent": "29f5369d-8108-5d6a-8328-d266944a63ce", + "internal": { + "contentDigest": "b92813a0608bc12340061e5882d93abb", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "f4fb0237-4f43-5acc-8a65-c49d5f809b1f", + "children": [], + "parent": "3ec85680-8562-56fe-9dd2-05278a92b5cc", + "internal": { + "contentDigest": "47ef7dc01d0534f0719af9379714e732", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "9980f111-9638-5121-b5de-51c4869685a0", + "children": [], + "parent": "73ff79eb-7c36-52f8-8d0c-5ba294e09a27", + "internal": { + "contentDigest": "8682e77e0894df0d6ee3e65d4781b418", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "b36193d8-4a0b-5cef-b150-b121d2a1d559", + "children": [], + "parent": "e6c580e0-1f87-523f-bcd7-170a47ac88a3", + "internal": { + "contentDigest": "3d2f982848b850a5a313efcaa3c46d76", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "8d3ac1fd-20ff-5914-b364-47d98d106d27", + "children": [], + "parent": "47fd50e1-52a2-5faf-896d-e493f98f9034", + "internal": { + "contentDigest": "f78f68624655ffd1cbf779ee7803057a", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "5f4f8277-f1a5-574c-80ae-a9cad81b24f0", + "children": [], + "parent": "e78659b1-96a0-591b-9eba-a9f4296191ed", + "internal": { + "contentDigest": "2be93a5bd589a6e10b5ec9ff8d52e3cb", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "71a5e7e2-80e6-5b5e-b823-3d0e5940f58b", + "children": [], + "parent": "2dc47b1b-bb47-5353-857a-34632bb43351", + "internal": { + "contentDigest": "570a71489dec85b03f29a4e68654c4e9", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "f5376bd2-b65a-5dc4-8150-fdc8a89eb1a8", + "children": [], + "parent": "64fd4aea-27e4-5a24-87b2-4b025d4ab76a", + "internal": { + "contentDigest": "0520f8a8807c390404a4d7f8d2cd512e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "152364d9-6590-5dd1-88dd-042e251b33ef", + "children": [], + "parent": "85ca8b03-3685-5a26-92c7-8076d158f8dd", + "internal": { + "contentDigest": "9a121a607116f40f35013e58b1455229", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "33bf67bd-d1b3-5915-a801-de7b2629c4a3", + "children": [], + "parent": "1e621a1e-31fa-5bc6-87a0-c9f69386cf9e", + "internal": { + "contentDigest": "bfc29e26125f8afe0e281e612a6c28a0", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "ceb49dc8-381d-55e3-b9b0-05ea7ec1cba6", + "children": [], + "parent": "9cf24c02-5c23-584e-b42b-a2d315946f26", + "internal": { + "contentDigest": "0184cf7d576a3626ce482e1156894f92", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "e16b83bd-4ff6-5a8b-b277-16291a0eefe3", + "children": [], + "parent": "61622fcc-aa74-5f23-9298-05621ac64f7d", + "internal": { + "contentDigest": "3dcb61ad3e8b7a5ec8cc3f13bf31338e", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "6b4df782-305f-575a-be3d-743723555f0b", + "children": [], + "parent": "e21dc7e6-f2d5-50cc-a6bb-ad22f67c766b", + "internal": { + "contentDigest": "0ac90a4f683192f4218f1fa8f15c75f0", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "26d7b901-1c70-5451-b268-d94be4b3f543", + "children": [ + "5184f235-e650-5888-ba04-a30b2049d610" + ], + "parent": null, + "internal": { + "contentDigest": "809fc4621686a9b2fa8f4da3f9ae0605", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BBd11a1s9x3.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BBd11a1s9x3.jpg", + "relativePath": "images/BBd11a1s9x3.jpg", + "extension": "jpg", + "size": 320662, + "prettySize": "321 kB", + "modifiedTime": "2019-02-08T08:55:07.928Z", + "accessTime": "2019-02-08T08:55:07.925Z", + "changeTime": "2019-02-08T08:55:07.928Z", + "birthTime": "2019-02-08T08:55:07.928Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BBd11a1s9x3.jpg", + "ext": ".jpg", + "name": "BBd11a1s9x3", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453847, + "blocks": 632, + "atimeMs": 1549616107924.5935, + "mtimeMs": 1549616107927.9268, + "ctimeMs": 1549616107927.9268, + "birthtimeMs": 1549616107927.9268, + "atime": "2019-02-08T08:55:07.925Z", + "mtime": "2019-02-08T08:55:07.928Z", + "ctime": "2019-02-08T08:55:07.928Z", + "birthtime": "2019-02-08T08:55:07.928Z" + }, + { + "id": "a224a97f-742a-5789-8652-67217dbc012d", + "children": [ + "a0a75092-ed13-5117-a44b-7360940f99b5" + ], + "parent": null, + "internal": { + "contentDigest": "74434c5f584ae7636a2a45ca4b84e218", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BFur3Jfs94V.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BFur3Jfs94V.jpg", + "relativePath": "images/BFur3Jfs94V.jpg", + "extension": "jpg", + "size": 264259, + "prettySize": "264 kB", + "modifiedTime": "2019-02-08T08:55:07.928Z", + "accessTime": "2019-02-08T08:55:07.928Z", + "changeTime": "2019-02-08T08:55:07.928Z", + "birthTime": "2019-02-08T08:55:07.928Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BFur3Jfs94V.jpg", + "ext": ".jpg", + "name": "BFur3Jfs94V", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453850, + "blocks": 520, + "atimeMs": 1549616107927.9268, + "mtimeMs": 1549616107927.9268, + "ctimeMs": 1549616107927.9268, + "birthtimeMs": 1549616107927.9268, + "atime": "2019-02-08T08:55:07.928Z", + "mtime": "2019-02-08T08:55:07.928Z", + "ctime": "2019-02-08T08:55:07.928Z", + "birthtime": "2019-02-08T08:55:07.928Z" + }, + { + "id": "1c0d84c8-44e6-56ba-9392-e99e475fb022", + "children": [ + "081cbcc5-44ec-5f4e-ae7a-fc25e68ff615" + ], + "parent": null, + "internal": { + "contentDigest": "9684a7ccd014d6cd467185c0f559780c", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BGiWipNM96D.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BGiWipNM96D.jpg", + "relativePath": "images/BGiWipNM96D.jpg", + "extension": "jpg", + "size": 302822, + "prettySize": "303 kB", + "modifiedTime": "2019-02-08T08:55:07.931Z", + "accessTime": "2019-02-08T08:55:07.928Z", + "changeTime": "2019-02-08T08:55:07.931Z", + "birthTime": "2019-02-08T08:55:07.931Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BGiWipNM96D.jpg", + "ext": ".jpg", + "name": "BGiWipNM96D", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453851, + "blocks": 592, + "atimeMs": 1549616107927.9268, + "mtimeMs": 1549616107931.2603, + "ctimeMs": 1549616107931.2603, + "birthtimeMs": 1549616107931.2603, + "atime": "2019-02-08T08:55:07.928Z", + "mtime": "2019-02-08T08:55:07.931Z", + "ctime": "2019-02-08T08:55:07.931Z", + "birthtime": "2019-02-08T08:55:07.931Z" + }, + { + "id": "45047932-b596-501d-9fe0-941e1fa73915", + "children": [ + "0f645fa4-95ec-5b04-b5ad-1cf18a4632a3" + ], + "parent": null, + "internal": { + "contentDigest": "9846d3913efc0249578435de07036d4d", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BY5x5x2F6cO.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BY5x5x2F6cO.jpg", + "relativePath": "images/BY5x5x2F6cO.jpg", + "extension": "jpg", + "size": 302401, + "prettySize": "302 kB", + "modifiedTime": "2019-02-08T08:55:07.935Z", + "accessTime": "2019-02-08T08:55:07.935Z", + "changeTime": "2019-02-08T08:55:07.935Z", + "birthTime": "2019-02-08T08:55:07.935Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BY5x5x2F6cO.jpg", + "ext": ".jpg", + "name": "BY5x5x2F6cO", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453859, + "blocks": 592, + "atimeMs": 1549616107934.5935, + "mtimeMs": 1549616107934.5935, + "ctimeMs": 1549616107934.5935, + "birthtimeMs": 1549616107934.5935, + "atime": "2019-02-08T08:55:07.935Z", + "mtime": "2019-02-08T08:55:07.935Z", + "ctime": "2019-02-08T08:55:07.935Z", + "birthtime": "2019-02-08T08:55:07.935Z" + }, + { + "id": "7a254b9d-ce89-52aa-b911-228e57fd57c0", + "children": [ + "679982e7-5975-530f-a05d-e33a831b7036" + ], + "parent": null, + "internal": { + "contentDigest": "b05972921c9f454ee18b2c871973dc11", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/Bam3G5XFOTK.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/Bam3G5XFOTK.jpg", + "relativePath": "images/Bam3G5XFOTK.jpg", + "extension": "jpg", + "size": 285623, + "prettySize": "286 kB", + "modifiedTime": "2019-02-08T08:55:07.938Z", + "accessTime": "2019-02-08T08:55:07.935Z", + "changeTime": "2019-02-08T08:55:07.938Z", + "birthTime": "2019-02-08T08:55:07.938Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "Bam3G5XFOTK.jpg", + "ext": ".jpg", + "name": "Bam3G5XFOTK", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453861, + "blocks": 560, + "atimeMs": 1549616107934.5935, + "mtimeMs": 1549616107937.9268, + "ctimeMs": 1549616107937.9268, + "birthtimeMs": 1549616107937.9268, + "atime": "2019-02-08T08:55:07.935Z", + "mtime": "2019-02-08T08:55:07.938Z", + "ctime": "2019-02-08T08:55:07.938Z", + "birthtime": "2019-02-08T08:55:07.938Z" + }, + { + "id": "5184f235-e650-5888-ba04-a30b2049d610", + "children": [], + "parent": "26d7b901-1c70-5451-b268-d94be4b3f543", + "internal": { + "contentDigest": "809fc4621686a9b2fa8f4da3f9ae0605", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "a0a75092-ed13-5117-a44b-7360940f99b5", + "children": [], + "parent": "a224a97f-742a-5789-8652-67217dbc012d", + "internal": { + "contentDigest": "74434c5f584ae7636a2a45ca4b84e218", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "081cbcc5-44ec-5f4e-ae7a-fc25e68ff615", + "children": [], + "parent": "1c0d84c8-44e6-56ba-9392-e99e475fb022", + "internal": { + "contentDigest": "9684a7ccd014d6cd467185c0f559780c", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "0f645fa4-95ec-5b04-b5ad-1cf18a4632a3", + "children": [], + "parent": "45047932-b596-501d-9fe0-941e1fa73915", + "internal": { + "contentDigest": "9846d3913efc0249578435de07036d4d", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "679982e7-5975-530f-a05d-e33a831b7036", + "children": [], + "parent": "7a254b9d-ce89-52aa-b911-228e57fd57c0", + "internal": { + "contentDigest": "b05972921c9f454ee18b2c871973dc11", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "9265cfdf-9d3b-506a-96b8-f678bc1b67e4", + "children": [ + "189352f2-8b11-5d26-8c4b-b6383e1bb8b6" + ], + "parent": null, + "internal": { + "contentDigest": "443f1ef1f921a5acb13ee6b1db7ab6cf", + "type": "File", + "mediaType": "image/jpeg", + "description": "File \"data/images/BSWUdcThRa-.jpg\"", + "owner": "gatsby-source-filesystem" + }, + "sourceInstanceName": "data", + "absolutePath": "/examples/gatsbygram/data/images/BSWUdcThRa-.jpg", + "relativePath": "images/BSWUdcThRa-.jpg", + "extension": "jpg", + "size": 349871, + "prettySize": "350 kB", + "modifiedTime": "2019-02-08T08:55:07.931Z", + "accessTime": "2019-02-08T08:55:07.931Z", + "changeTime": "2019-02-08T08:55:07.931Z", + "birthTime": "2019-02-08T08:55:07.931Z", + "root": "/", + "dir": "/examples/gatsbygram/data/images", + "base": "BSWUdcThRa-.jpg", + "ext": ".jpg", + "name": "BSWUdcThRa-", + "relativeDirectory": "images", + "dev": 65024, + "mode": 33188, + "nlink": 1, + "uid": 1000, + "gid": 100, + "rdev": 0, + "blksize": 4096, + "ino": 17453855, + "blocks": 688, + "atimeMs": 1549616107931.2603, + "mtimeMs": 1549616107931.2603, + "ctimeMs": 1549616107931.2603, + "birthtimeMs": 1549616107931.2603, + "atime": "2019-02-08T08:55:07.931Z", + "mtime": "2019-02-08T08:55:07.931Z", + "ctime": "2019-02-08T08:55:07.931Z", + "birthtime": "2019-02-08T08:55:07.931Z" + }, + { + "id": "189352f2-8b11-5d26-8c4b-b6383e1bb8b6", + "children": [], + "parent": "9265cfdf-9d3b-506a-96b8-f678bc1b67e4", + "internal": { + "contentDigest": "443f1ef1f921a5acb13ee6b1db7ab6cf", + "type": "ImageSharp", + "owner": "gatsby-transformer-sharp" + } + }, + { + "id": "1685001452849004065", + "code": "BdiU-TTFP4h", + "time": "2018-01-04T17:44:07.000Z", + "type": "GraphImage", + "likes": 33, + "comment": 3, + "text": "Venice is πŸ‘Œ", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/83b838f14c7d14dfe6d135169269c5b4/5B5DA593/t51.2885-15/e35/25022535_184817402253496_8516666732012634112_n.jpg", + "image": "images/BdiU-TTFP4h.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "3invalidKey": "invalidValue", + "internal": { + "contentDigest": "9cfa64653e932f581387919c1fe0d52c", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1677771511187112561", + "code": "BdIpEzalAJx", + "time": "2017-12-25T18:19:31.000Z", + "type": "GraphImage", + "likes": 29, + "comment": 3, + "text": "Ethiopian food in London for Christmas with my little sister! Doing a little Christmas traveling.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/2d017da97183c1b44af94f89a5c339a5/5B715B0A/t51.2885-15/e35/25023686_225296388010245_7735181992098004992_n.jpg", + "image": "images/BdIpEzalAJx.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "da8dd583c8d4407907dc0363ba571345", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1632234281433883850", + "code": "Bam3G5XFOTK", + "time": "2017-10-23T22:25:10.000Z", + "type": "GraphImage", + "likes": 30, + "comment": 4, + "text": "#chromedevelopersummit", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9fe5e566f6a2f052e00d93f5946573f2/5B6CF364/t51.2885-15/s1080x1080/e15/fr/22639107_756415651233391_8439041434429947904_n.jpg", + "image": "images/Bam3G5XFOTK.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "191827b71a99554aa6ccbfe83600fa86", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1601601194425654597", + "code": "BY6B8z5lR1F", + "time": "2017-09-11T16:02:42.000Z", + "type": "GraphImage", + "likes": 9, + "comment": 0, + "text": "Jaffa, Israel", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/f8a655a6b9e098ef746f214e428519de/5B634421/t51.2885-15/e35/21576632_732996816885233_1499694509796098048_n.jpg", + "image": "images/BY6B8z5lR1F.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "ad9af8f232a5bc845b9392d37d76fcd5", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1601530617317009166", + "code": "BY5x5x2F6cO", + "time": "2017-09-11T13:42:28.000Z", + "type": "GraphImage", + "likes": 28, + "comment": 5, + "text": "A real life Willy Wonka", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3bc6679049dad0943ec35fddeceded1c/5B5A3CC6/t51.2885-15/e35/21436024_558002044536606_410562662628327424_n.jpg", + "image": "images/BY5x5x2F6cO.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "8076e2f5ba3d60eee116f9f63305e30a", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1565766376903475329", + "code": "BW6uDlYlQCB", + "time": "2017-07-24T05:25:19.000Z", + "type": "GraphImage", + "likes": 27, + "comment": 4, + "text": "Be that one sandstone rock on the seashore amongst the 1000s of steel gray basalt rocks", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/f6a2224e3d487077d05236e18fc3f828/5B534A95/t51.2885-15/e35/20213921_501593333518668_2100867941279989760_n.jpg", + "image": "images/BW6uDlYlQCB.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "09bb5897974cc7440fd72a9806d30004", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1515268510112420213", + "code": "BUHUK6ElhF1", + "time": "2017-05-15T13:15:04.000Z", + "type": "GraphImage", + "likes": 25, + "comment": 3, + "text": "Stockholm might be my new favorite city", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d18ce4068dfa63b549ac14094bb97fdb/5B5E1699/t51.2885-15/e35/18513840_1901390483461632_2937117302379773952_n.jpg", + "image": "images/BUHUK6ElhF1.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "025aa9404eae8db92204f913ee2bfd77", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1486495736706552111", + "code": "BShF_8qhtEv", + "time": "2017-04-05T20:28:42.000Z", + "type": "GraphImage", + "likes": 8, + "comment": 0, + "text": "\"EXTRODINARY fresh mustards\". This is where they're at folks", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9ad5a7f1ebead61388662f1e6824067f/5B592AA0/t51.2885-15/e35/17663748_1153852971404500_7070241507587915776_n.jpg", + "image": "images/BShF_8qhtEv.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "20a6cc1f628e4c5c2003a0931e314754", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1483463111452464830", + "code": "BSWUdcThRa-", + "time": "2017-04-01T16:03:25.000Z", + "type": "GraphImage", + "likes": 23, + "comment": 2, + "text": "Third city on my east coast swing. First New Orleans, then DC, and now Philly.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/407a3c9b5efdb77c0f77135cccb08612/5B69631A/t51.2885-15/e35/17662854_1280815928623035_937926441180332032_n.jpg", + "image": "images/BSWUdcThRa-.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "e5f2b018f4cdadd71b22be7e705640c3", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1478435327902728655", + "code": "BSEdRj_B8HP", + "time": "2017-03-25T17:34:06.000Z", + "type": "GraphImage", + "likes": 20, + "comment": 1, + "text": "Raining and almost 80 degrees in New Orleans French Quarter", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/4ed741dd0c523a7bebce11a760271b77/5B4EF4B9/t51.2885-15/e35/17494792_1133907666737199_1768011540662845440_n.jpg", + "image": "images/BSEdRj_B8HP.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "5fdfa8f146d5fe7a11f0a3429746d9e2", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1360516742464695325", + "code": "BLhhsTZlGwd", + "time": "2016-10-14T00:50:56.000Z", + "type": "GraphImage", + "likes": 15, + "comment": 0, + "text": "Hey San Francisco ❀️", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/987105bfff21fd4e32ae59cbbfc32ad7/5B69748B/t51.2885-15/e35/14693758_1766411793613440_7185291805863182336_n.jpg", + "image": "images/BLhhsTZlGwd.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "272676b395e04493f3ec8ad0a5e8d5b4", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1346779149175505545", + "code": "BKwuIApgkKJ", + "time": "2016-09-25T01:56:47.000Z", + "type": "GraphImage", + "likes": 19, + "comment": 1, + "text": "Timed my run nicely", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/7aac4ca6f8724c7f17d3750f2f91f76e/5B6D1AB8/t51.2885-15/e35/14360137_1696760950649699_2816603071264587776_n.jpg", + "image": "images/BKwuIApgkKJ.jpg", + "username": "kyle__mathews", + "avatar": "https://instagram.fslc1-1.fna.fbcdn.net/vp/246e4edea83e0f4a9d3684039f23c76b/5B6BE9DA/t51.2885-19/11373674_1480574918906897_270256414_a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "74740253e344b25e58fd25ef0aa9842d", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1270677182602272387", + "code": "BGiWipNM96D", + "time": "2016-06-12T01:55:45.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Sitting in setting sun on bernal hill equals heaven", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/ea01ec98e75c750c70ef5c96000c7e3e/5B57DE7B/t51.2885-15/e35/13398891_954318571333512_2037518487_n.jpg", + "image": "images/BGiWipNM96D.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "2561937366e98c0b4c7bf37e3f14128f", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1256134251849702933", + "code": "BFur3Jfs94V", + "time": "2016-05-23T00:21:33.000Z", + "type": "GraphImage", + "comment": 0, + "text": "I built this!", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d9bf60c8145d9b2c5a3b3b6afc9c35a2/5B5B00DE/t51.2885-15/e35/13116581_508808719302533_932557327_n.jpg", + "image": "images/BFur3Jfs94V.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "a0e0dceda381c62d3375d71682307524", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1232199266021400176", + "code": "BEZprQ3s95w", + "time": "2016-04-19T23:47:00.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Hi Chicago", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/e17f2981cedb3deb2a9cc3b8949d007a/5B72F4CE/t51.2885-15/e35/12918518_1607204502935928_1750163314_n.jpg", + "image": "images/BEZprQ3s95w.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "fbb62afd2858a94ad08e9ab79caf348e", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1192421294565743753", + "code": "BCMVNmFM9yJ", + "time": "2016-02-25T02:35:17.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Fading embers", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/6dfc8f4a00e43e51031c0b4dbb176c48/5B500790/t51.2885-15/e35/12729578_238604273139219_1437358774_n.jpg", + "image": "images/BCMVNmFM9yJ.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "6aee8a0fbeedbbccc348225f7d9acf02", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1179335444856560759", + "code": "BBd11a1s9x3", + "time": "2016-02-07T01:16:02.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Mt. Sutro", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/06d71a2984f051924a0bfb2e17835929/5B6134AA/t51.2885-15/e35/12677693_186899455005435_855017645_n.jpg", + "image": "images/BBd11a1s9x3.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "0d33c243437095f6c64e03adb904cea6", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1093024552502680593", + "code": "8rNAoWs9wR", + "time": "2015-10-10T23:11:42.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Marina SF", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3194fb38fa43f512a8944ebfb8fac2d0/5B6E4AE5/t51.2885-15/e35/12139643_879198768830916_1627002305_n.jpg", + "image": "images/8rNAoWs9wR.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "e2b25559150a12cd4a56f08e75a12ff1", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1082958063116475674", + "code": "8HcJ7is90a", + "time": "2015-09-27T01:51:22.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Twin Peaks SF", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/b1ef729363fde6aa1e080a8d185280bd/5B5455B3/t51.2885-15/e35/10576216_693388384130914_1470225115_n.jpg", + "image": "images/8HcJ7is90a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "ce41a2dfa189ec7784009b62e08bfd64", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1072104297123274725", + "code": "7g4S2QM9_l", + "time": "2015-09-12T02:26:53.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Sunset SF Sunset", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/854e0392d412d89cea7d5c3d65dc673a/5B5EE46B/t51.2885-15/e35/11909961_477080385804619_1729162928_n.jpg", + "image": "images/7g4S2QM9_l.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "38dc51b6e95c67060f2cca56275e31de", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1050382401524719413", + "code": "6TtTqhM981", + "time": "2015-08-13T03:09:21.000Z", + "type": "GraphImage", + "comment": 1, + "text": "San Francisco sure is lovely", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9ccdd7eb4131f67cf38fd2a8e59edc52/5B4FD300/t51.2885-15/e35/11850254_1706767189554247_167276454_n.jpg", + "image": "images/6TtTqhM981.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "ca37dca38e8ca369591c409cf3a78340", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1047380412691897508", + "code": "6JCu-jM9yk", + "time": "2015-08-08T23:44:56.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Foggy hike", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9ee75f370357be6e8ca622e5d2e745b8/5B6DF60D/t51.2885-15/e35/11356873_1471238179865005_292092201_n.jpg", + "image": "images/6JCu-jM9yk.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "6f35f32dfe404242a815c7777c88cb9f", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1019954573251698010", + "code": "4nm0fJs91a", + "time": "2015-07-02T03:34:41.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Foggy evening run", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/a05ebe1be1d5293f3d22f2dd46884b17/5B55F621/t51.2885-15/e35/11380117_1465341190444968_380349894_n.jpg", + "image": "images/4nm0fJs91a.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "c721f3644bbc90481ac360d831ab4045", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1011212316101041196", + "code": "4IjD5ts9ws", + "time": "2015-06-20T02:05:23.000Z", + "type": "GraphImage", + "comment": 0, + "text": "A container food truck!", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/947b809c85196d898f1796f62791bda3/5B6E9A46/t51.2885-15/e15/11335072_1868600436697712_1490794057_n.jpg", + "image": "images/4IjD5ts9ws.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "6aae7d5976f825534e1a9f31ef27729a", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "1001206739996237060", + "code": "3lADm0M90E", + "time": "2015-06-06T06:46:05.000Z", + "type": "GraphImage", + "comment": 2, + "text": "National donut day @colonial donuts in Oakland", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9b9e68af7bc4b6d33731369a5bc7505e/5B57666A/t51.2885-15/e15/11430188_100848140257178_1391253248_n.jpg", + "image": "images/3lADm0M90E.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "f560c3b9267aeecfb9d85ecbad6fe626", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "996585130438155443", + "code": "3UlOVgM9yz", + "time": "2015-05-30T21:43:47.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Chilling on the bow", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d45818c8846b97aded73117c4fb6f48a/5B60A518/t51.2885-15/e15/11381438_1617144825194647_1827846331_n.jpg", + "image": "images/3UlOVgM9yz.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "c9e8989a8b1483abf221f77c1d79c95b", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "976313048697659257", + "code": "2Mj4uJM995", + "time": "2015-05-02T22:26:46.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Stumbled into a first row seat at the Giants game", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/08dcad15c511f057cb96ab98a715022c/5B6A8FDF/t51.2885-15/e15/11201673_643314849146572_717884664_n.jpg", + "image": "images/2Mj4uJM995.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "98e7f86d4d4305fd0f57f644833b0dbb", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "973323047219223582", + "code": "2B8CeRM9we", + "time": "2015-04-28T19:26:10.000Z", + "type": "GraphImage", + "comment": 3, + "text": "Home sweet home", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/0acf9f5c234f8da3ae634eda01a755cf/5B4F60C2/t51.2885-15/e15/11191126_1611820855722488_427066186_n.jpg", + "image": "images/2B8CeRM9we.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "e52c659446296f7021775debc56b7866", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "811160600493415566", + "code": "tB0kS4M9yO", + "time": "2014-09-17T01:38:20.000Z", + "type": "GraphImage", + "comment": 1, + "text": "@lindawatkins has a nice view it turns out", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/5e3321355aa71e6e7734a929e123bc5a/5B4EBF16/t51.2885-15/e15/923785_298030550384778_1748260542_n.jpg", + "image": "images/tB0kS4M9yO.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "a8e9a343cc87225a5c5ab58af3de5232", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "811160112838466685", + "code": "tB0dMts9x9", + "time": "2014-09-17T01:37:22.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Post-nap grumpy face", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/1a4161bc53d36ce89f56a6f83287805a/5B5EA75E/t51.2885-15/e15/10706977_294380270767284_1824123800_n.jpg", + "image": "images/tB0dMts9x9.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "997d7778b565fd3d4fe71aea79050324", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "800034649663593593", + "code": "saS0ZtM9x5", + "time": "2014-09-01T17:13:03.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Mesa Falls, Idaho", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/54d9ece83be631877aa7a85c3bb5d55d/5B59A1F7/t51.2885-15/e15/10666270_686048818144270_157152842_n.jpg", + "image": "images/saS0ZtM9x5.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "7669002b4311ddbbb70455cbceff36ff", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "783599315140730647", + "code": "rf52zpM98X", + "time": "2014-08-10T00:58:59.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Marin headlands", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/55012667fb9bfe1f81f52dec7292369f/5B756974/t51.2885-15/e15/10607937_618465764934873_1365604485_n.jpg", + "image": "images/rf52zpM98X.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "5ba62bb3665376f3a13b014631274cd3", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "734060454761192929", + "code": "ov6Bgps93h", + "time": "2014-06-02T16:34:07.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Packard plant", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/633f600222c3feefeeeaee56f29569d5/5B549AA2/t51.2885-15/e15/10369443_706391792754842_1488217259_n.jpg", + "image": "images/ov6Bgps93h.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "2558652b6f718313bacd8a2beadfa26d", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "734060430375509472", + "code": "ov6BJ8M93g", + "time": "2014-06-02T16:34:04.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Hanging out in Detroit", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/ae72c5071ebb299c1b1f2b83b513b383/5B58069D/t51.2885-15/e15/926200_533478630112183_770870098_n.jpg", + "image": "images/ov6BJ8M93g.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "acfddcb9b456c0968074baab00a11918", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "734060413657013727", + "code": "ov6A6Xs93f", + "time": "2014-06-02T16:34:02.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Heidelberg project", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/abff6cb7fb30029a20549619bf176d45/5B688B9F/t51.2885-15/e15/10431984_255514737968206_819303614_n.jpg", + "image": "images/ov6A6Xs93f.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "28adf6897bcd7f87291e6821b4a6047c", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732757276941868346", + "code": "orRtxus906", + "time": "2014-05-31T21:24:56.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d7d81bc5ca23e7d46c3748b13a84da84/5B6EAE49/t51.2885-15/e15/10349344_1494462330766381_2076888008_n.jpg", + "image": "images/orRtxus906.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "b888754aa2581e2801c65ee00780ef84", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732747494080109637", + "code": "orPfaus9xF", + "time": "2014-05-31T21:05:29.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3f2574e1f6879288ee4d0ba5f5bcbe38/5B62F747/t51.2885-15/e15/10401555_685955498137974_1036632050_n.jpg", + "image": "images/orPfaus9xF.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "74f4125fae29836fb1ed976f8dda3a1a", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732734464004972239", + "code": "orMhzhs97P", + "time": "2014-05-31T20:39:36.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/6105c9a2f262e58b47639be213cc0a51/5B6058C1/t51.2885-15/e15/10362260_1492310504316697_181712081_n.jpg", + "image": "images/orMhzhs97P.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "337e1f8128f5ed02b8dc97f62d34da22", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732606339090734326", + "code": "oqvZV5s9z2", + "time": "2014-05-31T16:25:02.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/46071011e9682d40e750bad67a04af21/5B739248/t51.2885-15/e15/10358344_658003337606852_1782453008_n.jpg", + "image": "images/oqvZV5s9z2.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "ae09ed151da184457ad4aea3de91b787", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732532731974770038", + "code": "oqeqN7s912", + "time": "2014-05-31T13:58:48.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d61f1d95fc48f17fd5d6dd873e6b8aba/5B681A06/t51.2885-15/e15/926760_1436717873249933_2076253966_n.jpg", + "image": "images/oqeqN7s912.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "400269b74c80c08bc7bf8aa2e6e56445", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732520051645864977", + "code": "oqbxsdM9wR", + "time": "2014-05-31T13:33:36.000Z", + "type": "GraphImage", + "comment": 1, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/e2d65068105688c985cc3659a64f8f20/5B5F182C/t51.2885-15/e15/10358298_398846293587168_846099988_n.jpg", + "image": "images/oqbxsdM9wR.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "dd5f37bb243b623e1464f7ed341c741c", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "732518754003705841", + "code": "oqbez7s9_x", + "time": "2014-05-31T13:31:01.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sammarrieslaura", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/57285e1a20bd61c1222c399f94b9444f/5B69B218/t51.2885-15/e15/923987_240684122793934_1971044527_n.jpg", + "image": "images/oqbez7s9_x.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "7eee294a8bba3adbd6c360244bde5f44", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "723243022496816380", + "code": "oJebJyM9z8", + "time": "2014-05-18T18:21:48.000Z", + "type": "GraphImage", + "comment": 2, + "text": "Church selfie", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9d6b26b49cbd79a2043a2f29aa98d001/5B59736F/t51.2885-15/e15/10311024_1400448496908952_1429408879_n.jpg", + "image": "images/oJebJyM9z8.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "43db3fd7c3666d8abce3d86dad9fc19d", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "722040340713037050", + "code": "oFM91Fs9z6", + "time": "2014-05-17T02:32:17.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Sun's goin' down", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/a8e5abccdf55b0d742d290579bef4193/5B60A2CE/t51.2885-15/e15/10349758_698597846853765_308306429_n.jpg", + "image": "images/oFM91Fs9z6.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "4e7f0dec517248d643f2ace2ba8160b8", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "709713470394982233", + "code": "nZaKQfM99Z", + "time": "2014-04-30T02:21:00.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Walking home", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/ddb3ad773640fd1daafc97188bec700d/5B5235BF/t51.2885-15/e15/10311263_1500571720162241_488304399_n.jpg", + "image": "images/nZaKQfM99Z.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "227e618ffb655aa0a392d7ee4b000da8", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "707264656279068376", + "code": "nQtXUns97Y", + "time": "2014-04-26T17:15:38.000Z", + "type": "GraphImage", + "comment": 0, + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/54571cb935dc3ad768aa60bf3b04530a/5B65827F/t51.2885-15/e15/10311311_269172509930751_401381103_n.jpg", + "image": "images/nQtXUns97Y.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "d20e6be81dcf0f09274d4e8ada78e178", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "695949453427990223", + "code": "moglcxM97P", + "time": "2014-04-11T02:34:21.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Sunset living up to its foggy reputation", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/35fe72f0a4b9c7f609577108a09e256f/5B5F2C05/t51.2885-15/e15/914285_232024907001450_989329933_n.jpg", + "image": "images/moglcxM97P.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "26a05ceafec3db7cc53010fb413cec12", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "695178098877128227", + "code": "mlxMw3M94j", + "time": "2014-04-10T01:01:48.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Foggy day #sf #oceanbeach #sutroheights", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/8247a6445d997ba91a00ecd8001ac1ca/5B75A623/t51.2885-15/e15/10246211_524667710977688_1539466318_n.jpg", + "image": "images/mlxMw3M94j.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "0c50495b8b39e3849db211bb60058749", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "682173039289556382", + "code": "l3kMPSM92e", + "time": "2014-03-23T02:23:05.000Z", + "type": "GraphImage", + "comment": 0, + "text": "#sf #sunset", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/c1bd5a5fdf503ab32c50448420127bdd/5B607D73/t51.2885-15/e15/11356983_996659560368958_1802776196_n.jpg", + "image": "images/l3kMPSM92e.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "b55655ffb8e7d6791137eb210e0f3f5d", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "680440398655774583", + "code": "lxaO_8s993", + "time": "2014-03-20T17:00:38.000Z", + "type": "GraphImage", + "comment": 2, + "text": "Working @ Harvard Square", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3b896841cf57425c5f93db5b070b4c4d/5B68259E/t51.2885-15/e15/11428164_1624154427831330_53333732_n.jpg", + "image": "images/lxaO_8s993.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "d279180ed8b01c0eb4dd0a35cdcfd256", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "679681270014532918", + "code": "lutoOTs902", + "time": "2014-03-19T15:52:23.000Z", + "type": "GraphImage", + "comment": 0, + "text": "At the zoo... or Antarctica", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d1b89fdbd53df37cf8de44dddb5dd680/5B65CC41/t51.2885-15/e15/11326269_936340726413259_1952229238_n.jpg", + "image": "images/lutoOTs902.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "96598af110cd320a145f6a70aa9512b4", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "673465739406204031", + "code": "lYoYWVs9x_", + "time": "2014-03-11T02:03:14.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Biking home part 3 #sunset #sf", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/079528f8619b9843e6c4a3ca67b91f31/5B6FCDE0/t51.2885-15/e15/11325187_848471188533323_2115425970_n.jpg", + "image": "images/lYoYWVs9x_.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "d6e242f3564cbcd39d15444333269897", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "673461065357712415", + "code": "lYnUVSs9wf", + "time": "2014-03-11T01:53:56.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Biking home part 2 #sf", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/303ca7292440bdacc8b84142a878b586/5B5153C1/t51.2885-15/e15/11355064_705393262905534_598512475_n.jpg", + "image": "images/lYnUVSs9wf.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "67cea016551b2bee3587e4275cee2fd2", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "673457707733475299", + "code": "lYmjeQs9_j", + "time": "2014-03-11T01:47:16.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Biking home #sf", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/f27efc0f6ccd091e8838d3a5345ca484/5B514318/t51.2885-15/e15/11334479_1440365799601549_1338616584_n.jpg", + "image": "images/lYmjeQs9_j.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "f3221e661229748d58f685188cf3f257", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "665350447119457524", + "code": "k7zLTbs9z0", + "time": "2014-02-27T21:19:35.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Dental office #justacleaning #ihope", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/9816e1c6b263b0f7fb9e973bc03ad25d/5B5E59F5/t51.2885-15/e15/1740870_1440791909490171_933390768_n.jpg", + "image": "images/k7zLTbs9z0.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "6528d0561579af9828f10aaca6eb5078", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "650011560209800782", + "code": "kFThHyM95O", + "time": "2014-02-06T17:23:58.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Rainy San Francisco", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/cf0b44c2e80195f089187f94cb629a12/5B6D4DAA/t51.2885-15/e15/1169989_1439666386267479_1805701176_n.jpg", + "image": "images/kFThHyM95O.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "249bc7df565c78c8910becb44ab2b9e5", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "640022460883001336", + "code": "jh0QmFM9_4", + "time": "2014-01-23T22:37:24.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Pastrami sandwich", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/4eab26c9c3d87afa707e13bf16056941/5B5514C4/t51.2885-15/e15/1516553_267682393389152_1988116567_n.jpg", + "image": "images/jh0QmFM9_4.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "f3d302df76fb15ec23985a4bcd4b61bd", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "636409258827833279", + "code": "jU-tlcM9-_", + "time": "2014-01-18T22:58:37.000Z", + "type": "GraphImage", + "comment": 2, + "text": "Spring!", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/18dc590d1c612944d7c8f1bcb81883ff/5B75ECE7/t51.2885-15/e15/927542_1382940688632822_791314040_n.jpg", + "image": "images/jU-tlcM9-_.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "e8fe9001a2e9bc4a43c2ebb9d9018c81", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "635682624046882725", + "code": "jSZfqEM9-l", + "time": "2014-01-17T22:54:55.000Z", + "type": "GraphImage", + "comment": 0, + "text": "San Francisco Market Street", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/02934ed9118c8bd71c57d09fc974d2a0/5B6BA088/t51.2885-15/e15/1599918_671503232900660_321825947_n.jpg", + "image": "images/jSZfqEM9-l.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "b3228e7ac396a07c88a3adf2f1789e43", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "633544903908122621", + "code": "jKzbvCs9_9", + "time": "2014-01-15T00:07:39.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Looking back at snowshoe prints. #latergram #lehi", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/0ffc689b7b7bba13a1df5f3ed881e6b7/5B5CDB2A/t51.2885-15/e15/1516230_1415533748685929_1687508360_n.jpg", + "image": "images/jKzbvCs9_9.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "657b4b0110875e90448c914bfcd6995b", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "633500736435772673", + "code": "jKpZA4M90B", + "time": "2014-01-14T22:39:54.000Z", + "type": "GraphImage", + "comment": 8, + "text": "Purple cauliflower for lunch", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/09cf42c92f01d27be93085d1f182744a/5B6A01F0/t51.2885-15/e15/1517107_1396777213909061_1781415780_n.jpg", + "image": "images/jKpZA4M90B.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "fee282f4d2c4f70d98f323b739a56ac5", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "632772965954739789", + "code": "jID6jzM95N", + "time": "2014-01-13T22:33:57.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Startup in SF means lots of bikes. #pantheon", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/032fc0b5f49b8b60341f1db2d01b1136/5B5DB15A/t51.2885-15/e15/11352438_848263221895300_847311871_n.jpg", + "image": "images/jID6jzM95N.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "35e43c6b176dd89c086f40a99f77585a", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "620418901388549762", + "code": "icK7QlM96C", + "time": "2013-12-27T21:28:38.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Big Cottonwood. Returning from sledding with the fam", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/b5302b1d3865748ea21785566d5ecaae/5B720094/t51.2885-15/e15/924517_609921485721994_568440563_n.jpg", + "image": "images/icK7QlM96C.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "0ae9805d17b8fe5b04dc8638697b19c1", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "617411858855616370", + "code": "iRfNB_M99y", + "time": "2013-12-23T17:54:10.000Z", + "type": "GraphImage", + "comment": 2, + "text": "Riding Amtrak to Utah for Xmas.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/0670af47e2120b2175fad647f3ced146/5B5834D3/t51.2885-15/e15/1517156_429536667173077_325353637_n.jpg", + "image": "images/iRfNB_M99y.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "4887af8efd2f55c4813460c20073d0e1", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "613426420792942449", + "code": "iDVBRjM99x", + "time": "2013-12-18T05:55:49.000Z", + "type": "GraphImage", + "comment": 10, + "text": "Late night Caltrain", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/2d2c9cbf77e99f90fee61e203e4efa0b/5B6BCDDF/t51.2885-15/e15/1515130_468120576642411_769132317_n.jpg", + "image": "images/iDVBRjM99x.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "1ffaa19025a256220599c2470a8f2d28", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "611758039731788991", + "code": "h9ZrIms9y_", + "time": "2013-12-15T22:41:03.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Had to do it once this season", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/989e9a5961dcbd0bc06fb6d15c9e32d5/5B75DE27/t51.2885-15/e15/1516240_571823206220538_1940906009_n.jpg", + "image": "images/h9ZrIms9y_.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "50b96df61e0acd989a102b83ee1bc02a", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "607214368319594481", + "code": "htQkA2M9_x", + "time": "2013-12-09T16:13:35.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Chilly morning at the train station (29)", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/c0b08dccb507dd052b04bf67fa798b9e/5B521782/t51.2885-15/e15/1169200_564665890270989_1774286305_n.jpg", + "image": "images/htQkA2M9_x.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "f17c4535f057c37012ecce5bb5a08d4a", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "603923376229310167", + "code": "hhkRxns97X", + "time": "2013-12-05T03:14:58.000Z", + "type": "GraphImage", + "comment": 2, + "text": "The Sound of Music Sing-A-Long @ Castro Theater SF", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/e84f87c0d581c0eb95534175d401ba16/5B5BD42A/t51.2885-15/e15/1169082_237261336450291_650902315_n.jpg", + "image": "images/hhkRxns97X.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "17deaa1a920ab4f31600fbd5f86b7ddc", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "602898508977266473", + "code": "hd7P_nM98p", + "time": "2013-12-03T17:18:44.000Z", + "type": "GraphImage", + "comment": 4, + "text": "California \"winter\"", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/4fda47034918104d08269cbee1cf35b5/5B5EDC6C/t51.2885-15/e15/1169297_1429416893941620_574489476_n.jpg", + "image": "images/hd7P_nM98p.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "ed1290eac4e8c572abdbfc00376c7a1c", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "599599505648902132", + "code": "hSNJLVs9_0", + "time": "2013-11-29T04:04:12.000Z", + "type": "GraphImage", + "comment": 2, + "text": "South Provo Utah", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/0259fc516e0ed19f7c8d32b6438c462e/5B6AB9C1/t51.2885-15/e15/1171720_179135252280992_675162948_n.jpg", + "image": "images/hSNJLVs9_0.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "dbc43a19c8544b2a39965e63276f9127", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "597507196258082479", + "code": "hKxaEXs96v", + "time": "2013-11-26T06:47:10.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Making cranapplesauce", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/5d0c1445c2cf0980f7b5726f43364af4/5B6574C4/t51.2885-15/e15/1389996_372744932872165_779748358_n.jpg", + "image": "images/hKxaEXs96v.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "9e090168b339dbbc587dd4dd35c0c0e4", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "596440361295142025", + "code": "hG-1k4s9yJ", + "time": "2013-11-24T19:27:33.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Hiking above Orem Utah yesterday", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3a6879c088d40987a250cc84c8d073ab/5B5C0B1F/t51.2885-15/e15/1169694_662818783763068_581767053_n.jpg", + "image": "images/hG-1k4s9yJ.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "d8a88d492b681d8f8903ab9ba5369375", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "587804514970754664", + "code": "goTReQM95o", + "time": "2013-11-12T21:29:40.000Z", + "type": "GraphImage", + "comment": 2, + "text": "1 Market St San Francisco", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/69fff87578918e05ed0f32717abab08f/5B53ADD6/t51.2885-15/e15/924793_180271615509067_1687415809_n.jpg", + "image": "images/goTReQM95o.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "69a4e15154bef984330afad1e38b59e4", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "584320489442499989", + "code": "gb7GOoM92V", + "time": "2013-11-08T02:07:32.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Crazy crowded as normal on Caltrain", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/07c0f37106934883385d410b592a39f4/5B751BE4/t51.2885-15/e15/915632_1435901739962475_486322309_n.jpg", + "image": "images/gb7GOoM92V.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "1166bd7a5a08d5440da114f57611dec1", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "529876495778438153", + "code": "daf92Rs9wJ", + "time": "2013-08-24T23:17:02.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Friend bought a durian shake. We had to \"quarantine\" it in the plastic bag as the smell was making us all feel nauseous.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/4d30e0b9f6074aad98092823eaf2c23f/5B7605DE/t51.2885-15/e15/11378426_466336863534615_1547307167_n.jpg", + "image": "images/daf92Rs9wJ.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "154dc54f525faf7181ec3e1bafbb2180", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "529863260585057945", + "code": "dac9QCs96Z", + "time": "2013-08-24T22:50:44.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Alien abduction. Or sunlit patch in a cave.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/038572c2d4b53447658c681ce73debf7/5B54793D/t51.2885-15/e15/11313247_900827439960757_1617982516_n.jpg", + "image": "images/dac9QCs96Z.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "712394226d107aabc27946792348d7ca", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "528199217793195914", + "code": "dUimPbM9-K", + "time": "2013-08-22T15:44:35.000Z", + "type": "GraphImage", + "comment": 0, + "text": "The Swiss say happy cows are key to their delicious cheese and chocolate", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/46fdca6495bf36fb778ed0de95e7b073/5B6D4923/t51.2885-15/e15/11274412_962531207101572_1996053268_n.jpg", + "image": "images/dUimPbM9-K.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "71dcd4e24b4cead7bfb580201c8cf4ca", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "528198485736152948", + "code": "dUiblpM990", + "time": "2013-08-22T15:43:07.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Lausanne Switzerland #latergram", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3dd47ec65762b2f360e56a88f13a83b9/5B6CAA1E/t51.2885-15/e15/11380991_1604775013138554_1975699581_n.jpg", + "image": "images/dUiblpM990.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "da6eb1876ec725c65c49774a0b1cfeb4", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "528197163355987780", + "code": "dUiIWFM99E", + "time": "2013-08-22T15:40:30.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Zurich #latergram", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/df69631309e8bf866ec2f3460154bc02/5B75F790/t51.2885-15/e15/11287787_659815724150301_2060472739_n.jpg", + "image": "images/dUiIWFM99E.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "bbc52f0f23f1405040168e466ff18764", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "523176638502133365", + "code": "dCsmF8s951", + "time": "2013-08-15T17:25:37.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Salzburg the beautiful", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/577140fb44ffbec33cda743aecac9ef1/5B52D016/t51.2885-15/e15/11386498_833081943412682_1392111115_n.jpg", + "image": "images/dCsmF8s951.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "5faddd1d6677061bfa2462643cd3b08f", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "515988147267690192", + "code": "cpKHxyM97Q", + "time": "2013-08-05T19:23:22.000Z", + "type": "GraphImage", + "comment": 1, + "text": "That's THREE iconic London sites in one picture. I try to be efficient.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/f0fd747eba27dc230579790e140ad26a/5B733898/t51.2885-15/e15/11353113_1607832536141844_2018928172_n.jpg", + "image": "images/cpKHxyM97Q.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "8949e52cbe51c71ce17bedc6314f6fe5", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "514154189823401179", + "code": "cipIL0M9zb", + "time": "2013-08-03T06:39:37.000Z", + "type": "GraphImage", + "comment": 0, + "text": "I guess I didn't look too sketchy", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/24f55f20e94da06a11a9df1de14481a9/5B627E24/t51.2885-15/e15/11311410_752535601559991_1024538760_n.jpg", + "image": "images/cipIL0M9zb.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "fc5b7b3d6fbb12041482a8b3432b3479", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "493743881078431577", + "code": "baIXGhs99Z", + "time": "2013-07-06T02:47:59.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Baseballing", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/c1c60b0530a57543170893c3df50a3e5/5B52E33C/t51.2885-15/e15/11355159_1450771905223070_219338865_n.jpg", + "image": "images/baIXGhs99Z.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "314b1ca1294cfab8983331aca910f54c", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "491519698525216526", + "code": "bSOo_Gs98O", + "time": "2013-07-03T01:08:55.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Trying on some Google Glasses", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/56d3da2d10e469e6d95d01345cea8923/5B6423E0/t51.2885-15/e15/11376229_382586481941409_228274495_n.jpg", + "image": "images/bSOo_Gs98O.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "7c02248b1aa7a3e6fb5fc1a31b5c3d2e", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "474753551234752325", + "code": "aWqdbpM99F", + "time": "2013-06-09T21:57:35.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Listening to @lindawatkins and the Symphony Parnassus", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/58033eafe8b9a94bdfd2124c394cd8d2/5B62536D/t51.2885-15/e15/11381478_752996551464700_2020946164_n.jpg", + "image": "images/aWqdbpM99F.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "4833d20f75b3b0f8722db5c97a5be3f6", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "465165262878137499", + "code": "Z0mVePs9yb", + "time": "2013-05-27T16:27:22.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Reminds me of a certain poem", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/de49eb83176e3fd8742a107ba91b48a7/5B5F6ED5/t51.2885-15/e15/11282186_1641815769384247_553838929_n.jpg", + "image": "images/Z0mVePs9yb.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "e0f7bfda405577f0ff2cfe45150657f2", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "463285372889325235", + "code": "Zt65eQs96z", + "time": "2013-05-25T02:12:21.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Me and the sky", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/e20145472e816b01dc541c7ec9ff61fe/5B5B4482/t51.2885-15/e15/11312119_471864216296568_947475813_n.jpg", + "image": "images/Zt65eQs96z.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "76032d0d5fe7f4828eb23659f36663f6", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "463283463063330440", + "code": "Zt6drmM96I", + "time": "2013-05-25T02:08:34.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Portland the beautiful", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/77a83817c64f81f55063db8e372290ee/5B55A9D0/t51.2885-15/e15/11328545_1612204442382836_321806408_n.jpg", + "image": "images/Zt6drmM96I.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "1c28af736b0bfa949ea8f1da8fdd7d65", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "433258973868842114", + "code": "YDPr3BM9yC", + "time": "2013-04-13T15:55:16.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Iconic pizza time", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/21cf980ef3eb83dd1e183da789ec02ab/5B60B7D0/t51.2885-15/e15/11274300_839105672792470_1770132230_n.jpg", + "image": "images/YDPr3BM9yC.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "d810d1008f01948d5bf1b714c98f4760", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "432671828728864094", + "code": "YBKLxfs91e", + "time": "2013-04-12T20:28:43.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Beautiful old stone dam", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/f3ffa3a9500f9386c00b7b081494e2f5/5B5BBCC8/t51.2885-15/e15/11282234_634169686719958_1078651290_n.jpg", + "image": "images/YBKLxfs91e.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "9d173a575d585f5e5cc336a1cbafc696", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "432671016199904582", + "code": "YBJ_8xM91G", + "time": "2013-04-12T20:27:06.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Crofton dam", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/6bd206d4ba44c1f241dc253b1c07d030/5B4EF669/t51.2885-15/e15/11280076_687001724737222_1069333862_n.jpg", + "image": "images/YBJ_8xM91G.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "b973bfddc630684e3c015b62211bebe1", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "432595958039305297", + "code": "YA47taM9xR", + "time": "2013-04-12T17:57:58.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Sleepy hollow", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/6733962f3dbd6e658a8e9015ac7d1509/5B62A01F/t51.2885-15/e15/11287874_421990181338785_380715_n.jpg", + "image": "images/YA47taM9xR.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "a00235a307d34be8c4d0b564906928c4", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "402249729178853273", + "code": "WVE_9as9-Z", + "time": "2013-03-01T21:05:26.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Crazy warm in SF today. Mid-60s", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/34124d45889971bab771fa52db9cfaae/5B5610DA/t51.2885-15/e15/11251145_1599823240288665_1297228813_n.jpg", + "image": "images/WVE_9as9-Z.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "165c20a0aad17ecc91620e4e82c3a831", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "396657460300210097", + "code": "WBNdvKs9-x", + "time": "2013-02-22T03:54:35.000Z", + "type": "GraphImage", + "comment": 0, + "text": "BYU. vs St. Mary's", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/710f54d049b30d16daa5f2765eb688d4/5B72A525/t51.2885-15/e15/11257886_365367033659818_1947115382_n.jpg", + "image": "images/WBNdvKs9-x.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "1ecb3b7181fb68cd2367f4aada2a7089", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "394910241079418429", + "code": "V7AMWds949", + "time": "2013-02-19T18:03:10.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Rainy morning on the train", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/13b322b8cadf28ab3de090daa94406c7/5B627C61/t51.2885-15/e15/11256373_1399701320356390_1861180233_n.jpg", + "image": "images/V7AMWds949.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "68cecec61ff8ae2b02f6cdcc9aeda1c2", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "389212604606962827", + "code": "Vmws0_s9yL", + "time": "2013-02-11T21:22:59.000Z", + "type": "GraphImage", + "comment": 0, + "text": "Lovely spring day in San Francisco", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/e470e02bc83f544514274165c203b813/5B5F0E67/t51.2885-15/e15/11252668_1583985011865990_1037189552_n.jpg", + "image": "images/Vmws0_s9yL.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "53995dac5b7aee636c919ddbee00c025", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "388739099008425940", + "code": "VlFCais9_U", + "time": "2013-02-11T05:42:13.000Z", + "type": "GraphImage", + "comment": 2, + "text": "My new wall photo grid", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/60865533a1c7a6f293b8be553ceb9485/5B57EF42/t51.2885-15/e15/11230390_712086292250337_1353127328_n.jpg", + "image": "images/VlFCais9_U.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "a6866cccce6524ada34a68bc5e4be006", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "358263540721901467", + "code": "T4zsrIs9-b", + "time": "2012-12-31T04:32:43.000Z", + "type": "GraphImage", + "comment": 0, + "text": "A profile in concentration.", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/d7740894c68acca079c7d1fde04b4c1f/5B5B32EB/t51.2885-15/e15/11252415_826604620756892_429311033_n.jpg", + "image": "images/T4zsrIs9-b.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "a4f83b3468d8f235234fd3f45222473d", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "358258295744749374", + "code": "T4ygWXs98-", + "time": "2012-12-31T04:22:18.000Z", + "type": "GraphImage", + "comment": 1, + "text": "Game night with ma and sis", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/3629d7d650eb35541fca2ca56927ae7b/5B5B45FA/t51.2885-15/e15/11266018_403557056498323_762755229_n.jpg", + "image": "images/T4ygWXs98-.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "257cef497e4f2305546155246267f776", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "id": "354333585801731194", + "code": "Tq2ITZs9x6", + "time": "2012-12-25T18:24:36.000Z", + "type": "GraphImage", + "comment": 0, + "text": "A white Christmas!", + "media": "https://instagram.fslc1-1.fna.fbcdn.net/vp/c3874e97281cb23a1486082bc8bc7ba8/5B68D332/t51.2885-15/e15/11246548_894528543936635_827529874_n.jpg", + "image": "images/Tq2ITZs9x6.jpg", + "children": [], + "parent": "aa67975d-e8e0-5c1b-8f31-52eeb71a1bb2", + "internal": { + "contentDigest": "e6c9c9b959740e62e6d62a31eaf852aa", + "type": "PostsJson", + "owner": "gatsby-transformer-json" + } + }, + { + "jsonName": "1685001452849004065-1a9", + "internalComponentName": "Component1685001452849004065", + "path": "/1685001452849004065/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1685001452849004065" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1685001452849004065/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "3aea9ae8378d2977062ccc0a6aa6c9e5", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1677771511187112561-be6", + "internalComponentName": "Component1677771511187112561", + "path": "/1677771511187112561/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1677771511187112561" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1677771511187112561/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "bfe50df8270d24aab350e8460b4917a1", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1632234281433883850-14d", + "internalComponentName": "Component1632234281433883850", + "path": "/1632234281433883850/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1632234281433883850" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1632234281433883850/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "d6bc4524b0a87b4e433e6937e3a24d8b", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1601601194425654597-d25", + "internalComponentName": "Component1601601194425654597", + "path": "/1601601194425654597/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1601601194425654597" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1601601194425654597/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "7ee8a0b39217d4be953210ca47f4946d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1601530617317009166-7be", + "internalComponentName": "Component1601530617317009166", + "path": "/1601530617317009166/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1601530617317009166" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1601530617317009166/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "d1b672705b65da323038327f1c197d55", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1565766376903475329-9b6", + "internalComponentName": "Component1565766376903475329", + "path": "/1565766376903475329/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1565766376903475329" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1565766376903475329/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "c1ebf542385fabe21bd82c5e5aa8a774", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1515268510112420213-d6b", + "internalComponentName": "Component1515268510112420213", + "path": "/1515268510112420213/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1515268510112420213" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1515268510112420213/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "db176100d27628829ddc90f79ab495bf", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1486495736706552111-afb", + "internalComponentName": "Component1486495736706552111", + "path": "/1486495736706552111/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1486495736706552111" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1486495736706552111/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "febb4ea3a498b1c6cc45affcfb41a0b3", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1483463111452464830-7d1", + "internalComponentName": "Component1483463111452464830", + "path": "/1483463111452464830/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1483463111452464830" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1483463111452464830/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "19a9a6620304eb97aefae564e4b2e5dc", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1478435327902728655-ac2", + "internalComponentName": "Component1478435327902728655", + "path": "/1478435327902728655/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1478435327902728655" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1478435327902728655/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "adda4b926a318b0507374d6f7cd6a730", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1360516742464695325-5bb", + "internalComponentName": "Component1360516742464695325", + "path": "/1360516742464695325/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1360516742464695325" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1360516742464695325/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "42bdf0e4081bd8bde3b2b13de4188ae9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1346779149175505545-f9c", + "internalComponentName": "Component1346779149175505545", + "path": "/1346779149175505545/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1346779149175505545" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1346779149175505545/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "76027aa0f0385c9db352ae22837a33cc", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1270677182602272387-8a5", + "internalComponentName": "Component1270677182602272387", + "path": "/1270677182602272387/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1270677182602272387" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1270677182602272387/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "e000d7e78a29ff7498bb4f009a4e77fe", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1256134251849702933-7e1", + "internalComponentName": "Component1256134251849702933", + "path": "/1256134251849702933/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1256134251849702933" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1256134251849702933/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "77c6d5f6b951194698605461358c7db4", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1232199266021400176-774", + "internalComponentName": "Component1232199266021400176", + "path": "/1232199266021400176/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1232199266021400176" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1232199266021400176/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "aec90cd258a0ff8ce67f19ed658c40c1", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1192421294565743753-f12", + "internalComponentName": "Component1192421294565743753", + "path": "/1192421294565743753/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1192421294565743753" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1192421294565743753/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "ff34aaea3ae24cffc90caa315f505a9d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1179335444856560759-322", + "internalComponentName": "Component1179335444856560759", + "path": "/1179335444856560759/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1179335444856560759" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1179335444856560759/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "76a9e6ddd64ecae7976b29f2500d3388", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1093024552502680593-a58", + "internalComponentName": "Component1093024552502680593", + "path": "/1093024552502680593/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1093024552502680593" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1093024552502680593/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "79e39addc8d37b67defee02ed12b0228", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1082958063116475674-1f4", + "internalComponentName": "Component1082958063116475674", + "path": "/1082958063116475674/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1082958063116475674" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1082958063116475674/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "f3dc1f91439df0732cb8a8d99aabdb7d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1072104297123274725-826", + "internalComponentName": "Component1072104297123274725", + "path": "/1072104297123274725/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1072104297123274725" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1072104297123274725/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "1b57541df532831adb0e8c83db4b4166", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1050382401524719413-7e7", + "internalComponentName": "Component1050382401524719413", + "path": "/1050382401524719413/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1050382401524719413" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1050382401524719413/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "4d772cca7165208318eb486ff8273bf5", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1047380412691897508-da0", + "internalComponentName": "Component1047380412691897508", + "path": "/1047380412691897508/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1047380412691897508" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1047380412691897508/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "33f47b63b9d66ca2ab9419f9e4b9bbb7", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1019954573251698010-e88", + "internalComponentName": "Component1019954573251698010", + "path": "/1019954573251698010/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1019954573251698010" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1019954573251698010/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "ab918935c7677658e868dda6415694b2", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1011212316101041196-b98", + "internalComponentName": "Component1011212316101041196", + "path": "/1011212316101041196/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1011212316101041196" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1011212316101041196/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "500d041a1e28600cb3bf2a4a51209fbf", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "1001206739996237060-d96", + "internalComponentName": "Component1001206739996237060", + "path": "/1001206739996237060/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "1001206739996237060" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /1001206739996237060/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "e17a12c539ea18316213930f0effec5f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "996585130438155443-5ba", + "internalComponentName": "Component996585130438155443", + "path": "/996585130438155443/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "996585130438155443" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /996585130438155443/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "725a57773de39074c7cb372f28b792b1", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "976313048697659257-7b5", + "internalComponentName": "Component976313048697659257", + "path": "/976313048697659257/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "976313048697659257" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /976313048697659257/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "b3b5bdeae2cc5bd3d58018ae22c0d140", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "973323047219223582-508", + "internalComponentName": "Component973323047219223582", + "path": "/973323047219223582/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "973323047219223582" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /973323047219223582/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "c76d21402efa3878043359fc8c8624ee", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "811160600493415566-77f", + "internalComponentName": "Component811160600493415566", + "path": "/811160600493415566/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "811160600493415566" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /811160600493415566/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "47addb99a2459407644fc000fcc871c9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "811160112838466685-9f9", + "internalComponentName": "Component811160112838466685", + "path": "/811160112838466685/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "811160112838466685" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /811160112838466685/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "1f04491fccba1167eff949b2e1ee37f9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "800034649663593593-9e2", + "internalComponentName": "Component800034649663593593", + "path": "/800034649663593593/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "800034649663593593" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /800034649663593593/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "b801b109587ffc4b3d1d3487de8c6c6f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "783599315140730647-8b0", + "internalComponentName": "Component783599315140730647", + "path": "/783599315140730647/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "783599315140730647" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /783599315140730647/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "859d033b41a93db3de9ef56873b4e5ae", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "734060454761192929-35e", + "internalComponentName": "Component734060454761192929", + "path": "/734060454761192929/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "734060454761192929" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /734060454761192929/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "720b6c68caeae996a6818e197a1a989d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "734060430375509472-2f0", + "internalComponentName": "Component734060430375509472", + "path": "/734060430375509472/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "734060430375509472" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /734060430375509472/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "4fe52e65ede48d8c51aa4cf30ef2adb5", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "734060413657013727-07b", + "internalComponentName": "Component734060413657013727", + "path": "/734060413657013727/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "734060413657013727" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /734060413657013727/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "546e835eb13785e8718c4aed524ee116", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732757276941868346-385", + "internalComponentName": "Component732757276941868346", + "path": "/732757276941868346/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732757276941868346" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732757276941868346/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "0c12b3d8bb460256b7b70acef77abf89", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732747494080109637-b57", + "internalComponentName": "Component732747494080109637", + "path": "/732747494080109637/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732747494080109637" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732747494080109637/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "b696b93c27f82fad0ea7d46dcc579c4e", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732734464004972239-009", + "internalComponentName": "Component732734464004972239", + "path": "/732734464004972239/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732734464004972239" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732734464004972239/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "f9509ca512424e8aafbf36f5f3b6d05a", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732606339090734326-ab9", + "internalComponentName": "Component732606339090734326", + "path": "/732606339090734326/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732606339090734326" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732606339090734326/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "cc299cc94e59814745187bd13133b77e", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732532731974770038-4a5", + "internalComponentName": "Component732532731974770038", + "path": "/732532731974770038/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732532731974770038" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732532731974770038/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "0e07c1a7b76cad826e0dedb8b84cf155", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732520051645864977-d14", + "internalComponentName": "Component732520051645864977", + "path": "/732520051645864977/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732520051645864977" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732520051645864977/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "05e174f0ae97457495717cc9db956e8c", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "732518754003705841-3de", + "internalComponentName": "Component732518754003705841", + "path": "/732518754003705841/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "732518754003705841" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /732518754003705841/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "481e092b54021f9f8f08405ab9b89706", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "723243022496816380-643", + "internalComponentName": "Component723243022496816380", + "path": "/723243022496816380/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "723243022496816380" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /723243022496816380/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "ebbb9704b1692caf7e45ca643bf19eae", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "722040340713037050-15b", + "internalComponentName": "Component722040340713037050", + "path": "/722040340713037050/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "722040340713037050" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /722040340713037050/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "69e201ef63534348bb9692a9bad97363", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "709713470394982233-ed8", + "internalComponentName": "Component709713470394982233", + "path": "/709713470394982233/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "709713470394982233" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /709713470394982233/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "f5445368ea87aaa078f49713f44f553f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "707264656279068376-7f7", + "internalComponentName": "Component707264656279068376", + "path": "/707264656279068376/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "707264656279068376" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /707264656279068376/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "4991eed36d25d60b0bae9627012e60bf", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "695949453427990223-2d3", + "internalComponentName": "Component695949453427990223", + "path": "/695949453427990223/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "695949453427990223" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /695949453427990223/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "a9cf99be7dfd09e2ea0bb05abac0c3d9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "695178098877128227-d20", + "internalComponentName": "Component695178098877128227", + "path": "/695178098877128227/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "695178098877128227" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /695178098877128227/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "842685d0aa8066eeee15b67f61dd3d4f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "682173039289556382-aa2", + "internalComponentName": "Component682173039289556382", + "path": "/682173039289556382/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "682173039289556382" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /682173039289556382/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "e5003f18c0af9699b0b31ff612f61f36", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "680440398655774583-a35", + "internalComponentName": "Component680440398655774583", + "path": "/680440398655774583/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "680440398655774583" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /680440398655774583/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "007487fb96b0e3c68fdad55d1c01966b", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "679681270014532918-2d2", + "internalComponentName": "Component679681270014532918", + "path": "/679681270014532918/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "679681270014532918" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /679681270014532918/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "53e2f8f2ba2e68689504e12c0b2ee18f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "673465739406204031-38f", + "internalComponentName": "Component673465739406204031", + "path": "/673465739406204031/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "673465739406204031" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /673465739406204031/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "a207c80eb3b559cbaf0de304170a8ea8", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "673461065357712415-b76", + "internalComponentName": "Component673461065357712415", + "path": "/673461065357712415/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "673461065357712415" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /673461065357712415/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "49153af2012b0e50754f5187c6a69262", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "673457707733475299-a30", + "internalComponentName": "Component673457707733475299", + "path": "/673457707733475299/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "673457707733475299" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /673457707733475299/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "d1a01af7291d5eaa260b5f85e8439df9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "665350447119457524-ea2", + "internalComponentName": "Component665350447119457524", + "path": "/665350447119457524/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "665350447119457524" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /665350447119457524/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "bc278a812f73a0d3eedd6d6811da7b19", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "650011560209800782-384", + "internalComponentName": "Component650011560209800782", + "path": "/650011560209800782/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "650011560209800782" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /650011560209800782/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "9b762c130fde3cb08e9d31cd48c49290", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "640022460883001336-3fc", + "internalComponentName": "Component640022460883001336", + "path": "/640022460883001336/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "640022460883001336" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /640022460883001336/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "9770b0481999011a3deb8f50b28c5dad", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "636409258827833279-0b9", + "internalComponentName": "Component636409258827833279", + "path": "/636409258827833279/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "636409258827833279" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /636409258827833279/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "1cdc30c4f9cdef9220d83025c404f133", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "635682624046882725-ee7", + "internalComponentName": "Component635682624046882725", + "path": "/635682624046882725/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "635682624046882725" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /635682624046882725/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "3803b9ca547b32e340b8bf69d9b86186", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "633544903908122621-417", + "internalComponentName": "Component633544903908122621", + "path": "/633544903908122621/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "633544903908122621" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /633544903908122621/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "7529cc5aa5571e802b83058406eeebd6", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "633500736435772673-ad8", + "internalComponentName": "Component633500736435772673", + "path": "/633500736435772673/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "633500736435772673" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /633500736435772673/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "4c98f9966ffcf6d7078e2641a2c69aaa", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "632772965954739789-0b9", + "internalComponentName": "Component632772965954739789", + "path": "/632772965954739789/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "632772965954739789" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /632772965954739789/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "1ab96c1beef0b6c874039bd1028ea0de", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "620418901388549762-711", + "internalComponentName": "Component620418901388549762", + "path": "/620418901388549762/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "620418901388549762" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /620418901388549762/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "f5814f6f56d62cf17032b5836eaeebe5", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "617411858855616370-9dc", + "internalComponentName": "Component617411858855616370", + "path": "/617411858855616370/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "617411858855616370" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /617411858855616370/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "d82e4edbf5d9e55f6d797421bc86edc6", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "613426420792942449-e43", + "internalComponentName": "Component613426420792942449", + "path": "/613426420792942449/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "613426420792942449" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /613426420792942449/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "a7980314130030df278df380ebd78e68", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "611758039731788991-30c", + "internalComponentName": "Component611758039731788991", + "path": "/611758039731788991/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "611758039731788991" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /611758039731788991/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "a7d8ef3b68a2f41d20de8acf68446227", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "607214368319594481-bd6", + "internalComponentName": "Component607214368319594481", + "path": "/607214368319594481/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "607214368319594481" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /607214368319594481/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "33d4d02e97bb855e611692691859b04f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "603923376229310167-7fa", + "internalComponentName": "Component603923376229310167", + "path": "/603923376229310167/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "603923376229310167" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /603923376229310167/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "4c0f0e1125f1f875fdb110b4423084d8", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "602898508977266473-712", + "internalComponentName": "Component602898508977266473", + "path": "/602898508977266473/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "602898508977266473" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /602898508977266473/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "b48f2225f4c2e7c46dc776a542c68b01", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "599599505648902132-dd8", + "internalComponentName": "Component599599505648902132", + "path": "/599599505648902132/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "599599505648902132" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /599599505648902132/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "77b91b9c20b5a270acbc96e8d457000a", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "597507196258082479-010", + "internalComponentName": "Component597507196258082479", + "path": "/597507196258082479/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "597507196258082479" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /597507196258082479/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "698bf3bbe0cf3c161203aa19fd6537db", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "596440361295142025-41b", + "internalComponentName": "Component596440361295142025", + "path": "/596440361295142025/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "596440361295142025" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /596440361295142025/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "3c9152cfb3fbed1c1a582cbe7b36a4b2", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "587804514970754664-c47", + "internalComponentName": "Component587804514970754664", + "path": "/587804514970754664/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "587804514970754664" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /587804514970754664/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "30f91d09858b8dec20aea7515d9b0f4e", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "584320489442499989-123", + "internalComponentName": "Component584320489442499989", + "path": "/584320489442499989/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "584320489442499989" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /584320489442499989/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "a07c735a542f4262e1856b7aeeae6bcd", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "529876495778438153-427", + "internalComponentName": "Component529876495778438153", + "path": "/529876495778438153/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "529876495778438153" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /529876495778438153/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "df3241ccff5a03433ca0c2a3de349d76", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "529863260585057945-583", + "internalComponentName": "Component529863260585057945", + "path": "/529863260585057945/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "529863260585057945" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /529863260585057945/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "00b5b42a008d6eccf30c9e6f29ebb469", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "528199217793195914-d44", + "internalComponentName": "Component528199217793195914", + "path": "/528199217793195914/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "528199217793195914" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /528199217793195914/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "87cfb253b4344f91681f6bd6a93172e9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "528198485736152948-57b", + "internalComponentName": "Component528198485736152948", + "path": "/528198485736152948/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "528198485736152948" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /528198485736152948/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "080cdcae04e4d1c6315f470b631bed65", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "528197163355987780-f65", + "internalComponentName": "Component528197163355987780", + "path": "/528197163355987780/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "528197163355987780" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /528197163355987780/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "05af1e0ccb8d6235cd7857a1a66f595d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "523176638502133365-095", + "internalComponentName": "Component523176638502133365", + "path": "/523176638502133365/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "523176638502133365" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /523176638502133365/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "3ad81ca02b45e38dee4acc10148afa2b", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "515988147267690192-08a", + "internalComponentName": "Component515988147267690192", + "path": "/515988147267690192/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "515988147267690192" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /515988147267690192/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "6d1e650641c2b3fdb7e5af42f6a2efd1", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "514154189823401179-fb5", + "internalComponentName": "Component514154189823401179", + "path": "/514154189823401179/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "514154189823401179" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /514154189823401179/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "0cd1b83c48f15d23061d08da9ba65733", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "493743881078431577-6a9", + "internalComponentName": "Component493743881078431577", + "path": "/493743881078431577/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "493743881078431577" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /493743881078431577/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "05118ffd17ab313ce1c325a7c3a8cd43", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "491519698525216526-869", + "internalComponentName": "Component491519698525216526", + "path": "/491519698525216526/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "491519698525216526" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /491519698525216526/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "6f6a15528f1f7aa27def23b9529a6ec4", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "474753551234752325-87a", + "internalComponentName": "Component474753551234752325", + "path": "/474753551234752325/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "474753551234752325" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /474753551234752325/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "16a23fd119f8c7cad342153ecb04cb80", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "465165262878137499-5bf", + "internalComponentName": "Component465165262878137499", + "path": "/465165262878137499/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "465165262878137499" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /465165262878137499/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "2b157255ca7e37e27738304e8bffeb7f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "463285372889325235-dbf", + "internalComponentName": "Component463285372889325235", + "path": "/463285372889325235/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "463285372889325235" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /463285372889325235/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "42da488be00ef6091193728ebf653a09", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "463283463063330440-ff6", + "internalComponentName": "Component463283463063330440", + "path": "/463283463063330440/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "463283463063330440" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /463283463063330440/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "afe0e98f868ae3259723b1e0e4ceaca8", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "433258973868842114-6db", + "internalComponentName": "Component433258973868842114", + "path": "/433258973868842114/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "433258973868842114" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /433258973868842114/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "51569081b93c04385e110dd700aca919", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "432671828728864094-402", + "internalComponentName": "Component432671828728864094", + "path": "/432671828728864094/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "432671828728864094" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /432671828728864094/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "da2850cac7be4369f191e2f0f30c036d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "432671016199904582-b94", + "internalComponentName": "Component432671016199904582", + "path": "/432671016199904582/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "432671016199904582" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /432671016199904582/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "07bcb367055b09edd325179f6adb4d9d", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "432595958039305297-344", + "internalComponentName": "Component432595958039305297", + "path": "/432595958039305297/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "432595958039305297" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /432595958039305297/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "85e588e1bd547d720644a259088ce096", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "402249729178853273-66c", + "internalComponentName": "Component402249729178853273", + "path": "/402249729178853273/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "402249729178853273" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /402249729178853273/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "6a5b9e051c727498f1e9b1f97d95f5b0", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "396657460300210097-b08", + "internalComponentName": "Component396657460300210097", + "path": "/396657460300210097/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "396657460300210097" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /396657460300210097/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "07100c1b5071a36ba95eee69c7f589fb", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "394910241079418429-d80", + "internalComponentName": "Component394910241079418429", + "path": "/394910241079418429/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "394910241079418429" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /394910241079418429/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "8cf5814ba95a78e2b80217104329756f", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "389212604606962827-c94", + "internalComponentName": "Component389212604606962827", + "path": "/389212604606962827/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "389212604606962827" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /389212604606962827/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "d153912432a24edcc0fc1815133a5ead", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "388739099008425940-c75", + "internalComponentName": "Component388739099008425940", + "path": "/388739099008425940/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "388739099008425940" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /388739099008425940/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "eebf1b19624434c525b7cade1a3cefa9", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "358263540721901467-684", + "internalComponentName": "Component358263540721901467", + "path": "/358263540721901467/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "358263540721901467" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /358263540721901467/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "c44a8f12a4ff82e5e6f06562d1280c91", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "358258295744749374-dd0", + "internalComponentName": "Component358258295744749374", + "path": "/358258295744749374/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "358258295744749374" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /358258295744749374/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "637b7ed637aae321f95fb6b99953cea8", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "354333585801731194-c9d", + "internalComponentName": "Component354333585801731194", + "path": "/354333585801731194/", + "component": "/examples/gatsbygram/src/templates/post-page.js", + "componentChunkName": "component---src-templates-post-page-js", + "context": { + "id": "354333585801731194" + }, + "pluginCreator___NODE": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "pluginCreatorId": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "componentPath": "/examples/gatsbygram/src/templates/post-page.js", + "id": "SitePage /354333585801731194/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "cf264989fedc09b6984b21ae54303cd1", + "description": "7374ebf2-d961-52ee-92a2-c25e7cb387a9", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "about-f34", + "internalComponentName": "ComponentAbout", + "path": "/about/", + "component": "/examples/gatsbygram/src/pages/about.js", + "componentChunkName": "component---src-pages-about-js", + "context": {}, + "pluginCreator___NODE": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "pluginCreatorId": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "componentPath": "/examples/gatsbygram/src/pages/about.js", + "id": "SitePage /about/", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "4aa969ab6bde2ae1811d00deb3d1a177", + "description": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "owner": "internal-data-bridge" + } + }, + { + "jsonName": "index", + "internalComponentName": "ComponentIndex", + "path": "/", + "component": "/examples/gatsbygram/src/pages/index.js", + "componentChunkName": "component---src-pages-index-js", + "context": {}, + "pluginCreator___NODE": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "pluginCreatorId": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "componentPath": "/examples/gatsbygram/src/pages/index.js", + "id": "SitePage /", + "parent": null, + "children": [], + "internal": { + "type": "SitePage", + "contentDigest": "9c1c2a5d1b9af719da65f705f010474f", + "description": "52fe8a30-9176-50f6-aaf9-4ba1a44e0ffa", + "owner": "internal-data-bridge" + } + } +] diff --git a/packages/gatsby/src/schema/__tests__/fixtures/node-model.js b/packages/gatsby/src/schema/__tests__/fixtures/node-model.js new file mode 100644 index 0000000000000..c7ba46637db33 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/fixtures/node-model.js @@ -0,0 +1,85 @@ +const nodes = [ + { + id: `person1`, + parent: null, + children: [], + internal: { type: `Author` }, + name: `Person1`, + email: `person1@example.com`, + }, + { + id: `person2`, + parent: null, + children: [], + internal: { type: `Contributor` }, + name: `Person2`, + email: `person2@example.com`, + }, + { + id: `person3`, + parent: null, + children: [], + internal: { type: `Author` }, + name: `Person3`, + email: null, + }, + { + id: `post1`, + parent: `file1`, + children: [], + internal: { type: `Post` }, + frontmatter: { + authors: [`person1`], + reviewers: [`person1`, `person2`], + published: false, + date: new Date(Date.UTC(2019, 0, 1)), + }, + }, + { + id: `post2`, + parent: `file2`, + children: [], + internal: { type: `Post` }, + frontmatter: { + authors: [`person1`, `person2`], + reviewers: [], + published: true, + date: new Date(Date.UTC(2018, 0, 1)), + }, + }, + { + id: `post3`, + parent: `file3`, + children: [], + internal: { type: `Post` }, + frontmatter: { + authors: [], + reviewers: [`person3`], + published: false, + date: new Date(Date.UTC(2017, 0, 1)), + }, + }, + { + id: `file1`, + parent: null, + children: [`post1`], + internal: { type: `File` }, + name: `File1`, + }, + { + id: `file2`, + parent: null, + children: [`post2`], + internal: { type: `RemoteFile` }, + url: `RemoteFile2`, + }, + { + id: `file3`, + parent: null, + children: [`post3`], + internal: { type: `File` }, + name: `File3`, + }, +] + +module.exports = nodes diff --git a/packages/gatsby/src/schema/__tests__/fixtures/queries.js b/packages/gatsby/src/schema/__tests__/fixtures/queries.js new file mode 100644 index 0000000000000..38db0b3f8a64f --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/fixtures/queries.js @@ -0,0 +1,88 @@ +const nodes = [ + { + id: `file1`, + parent: null, + children: [`md1`], + internal: { + type: `File`, + contentDigest: `file1`, + }, + name: `1.md`, + }, + { + id: `file2`, + parent: null, + children: [`md2`], + internal: { + type: `File`, + contentDigest: `file2`, + }, + name: `2.md`, + }, + { + id: `file3`, + parent: null, + children: [`author2`, `author1`], + internal: { + type: `File`, + contentDigest: `file3`, + }, + name: `authors.yaml`, + }, + { + id: `md1`, + parent: `file1`, + children: [], + internal: { + type: `Markdown`, + contentDigest: `md1`, + }, + frontmatter: { + title: `Markdown File 1`, + date: new Date(Date.UTC(2019, 0, 1)), + authors: [`author2@example.com`, `author1@example.com`], + reviewer___NODE: `author2`, + reviewerByEmail: `author2@example.com`, + }, + }, + { + id: `md2`, + parent: `file2`, + children: [], + internal: { + type: `Markdown`, + contentDigest: `md2`, + }, + frontmatter: { + title: `Markdown File 2`, + published: false, + authors: [`author1@example.com`], + reviewer___NODE: null, + reviewerByEmail: null, + }, + }, + { + id: `author1`, + parent: `file3`, + children: [], + internal: { + type: `Author`, + contentDigest: `author1`, + }, + name: `Author 1`, + email: `author1@example.com`, + }, + { + id: `author2`, + parent: `file3`, + children: [], + internal: { + type: `Author`, + contentDigest: `author1`, + }, + name: `Author 2`, + email: `author2@example.com`, + }, +] + +module.exports = nodes 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 deleted file mode 100644 index 609791827a62d..0000000000000 --- a/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-from-fields-test.js +++ /dev/null @@ -1,379 +0,0 @@ -const { - GraphQLBoolean, - GraphQLFloat, - GraphQLInt, - GraphQLID, - GraphQLNonNull, - GraphQLString, - GraphQLObjectType, - GraphQLScalarType, - GraphQLList, - GraphQLInputObjectType, - Kind, -} = require(`graphql`) - -const { - inferInputObjectStructureFromFields, -} = require(`../infer-graphql-input-fields-from-fields.js`) - -function isIntInput(type) { - expect(type instanceof GraphQLInputObjectType).toBeTruthy() - expect(type.getFields()).toEqual({ - eq: { name: `eq`, type: GraphQLInt }, - ne: { name: `ne`, type: GraphQLInt }, - lt: { name: `lt`, type: GraphQLInt }, - lte: { name: `lte`, type: GraphQLInt }, - gt: { name: `gt`, type: GraphQLInt }, - gte: { name: `gte`, type: GraphQLInt }, - in: { name: `in`, type: new GraphQLList(GraphQLInt) }, - nin: { name: `nin`, type: new GraphQLList(GraphQLInt) }, - }) -} - -function isIdInput(type) { - expect(type instanceof GraphQLInputObjectType).toBeTruthy() - expect(type.getFields()).toEqual({ - eq: { name: `eq`, type: GraphQLID }, - ne: { name: `ne`, type: GraphQLID }, - in: { name: `in`, type: new GraphQLList(GraphQLID) }, - nin: { name: `nin`, type: new GraphQLList(GraphQLID) }, - }) -} - -function isStringInput(type) { - expect(type instanceof GraphQLInputObjectType).toBeTruthy() - expect(type.getFields()).toEqual({ - eq: { name: `eq`, type: GraphQLString }, - ne: { name: `ne`, type: GraphQLString }, - regex: { name: `regex`, type: GraphQLString }, - glob: { name: `glob`, type: GraphQLString }, - in: { name: `in`, type: new GraphQLList(GraphQLString) }, - nin: { name: `nin`, type: new GraphQLList(GraphQLString) }, - }) -} - -function typeField(type) { - return { - type, - } -} - -describe(`GraphQL Input args from fields, test-only`, () => { - function oddValue(value) { - return value % 2 === 1 ? value : null - } - - const OddType = new GraphQLScalarType({ - name: `Odd`, - serialize: oddValue, - parseValue: oddValue, - parseLiteral(ast) { - if (ast.kind === Kind.INT) { - return oddValue(parseInt(ast.value, 10)) - } - return null - }, - }) - - it(`handles all known scalars`, async () => { - const fields = { - scal_int: typeField(GraphQLInt), - scal_float: typeField(GraphQLFloat), - scal_string: typeField(GraphQLString), - scal_bool: typeField(GraphQLBoolean), - scal_odd_unknown: typeField(OddType), - } - - const { inferredFields } = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }) - - const int = inferredFields.scal_int.type - expect(int.name).toBe(`scalIntQueryInt`) - isIntInput(int) - - const float = inferredFields.scal_float.type - expect(float.name).toBe(`scalFloatQueryFloat`) - expect(float instanceof GraphQLInputObjectType).toBeTruthy() - expect(float.getFields()).toEqual({ - eq: { name: `eq`, type: GraphQLFloat }, - ne: { name: `ne`, type: GraphQLFloat }, - lt: { name: `lt`, type: GraphQLFloat }, - lte: { name: `lte`, type: GraphQLFloat }, - gt: { name: `gt`, type: GraphQLFloat }, - gte: { name: `gte`, type: GraphQLFloat }, - in: { name: `in`, type: new GraphQLList(GraphQLFloat) }, - nin: { name: `nin`, type: new GraphQLList(GraphQLFloat) }, - }) - - const string = inferredFields.scal_string.type - expect(string.name).toBe(`scalStringQueryString`) - isStringInput(string) - - const bool = inferredFields.scal_bool.type - expect(bool.name).toBe(`scalBoolQueryBoolean`) - expect(bool instanceof GraphQLInputObjectType).toBeTruthy() - expect(bool.getFields()).toEqual({ - eq: { name: `eq`, type: GraphQLBoolean }, - ne: { name: `ne`, type: GraphQLBoolean }, - in: { name: `in`, type: new GraphQLList(GraphQLBoolean) }, - nin: { name: `nin`, type: new GraphQLList(GraphQLBoolean) }, - }) - - expect(inferredFields).not.toHaveProperty(`scal_odd_unknown`) - }) - - it(`recursively converts object types`, async () => { - const fields = { - obj: typeField( - new GraphQLObjectType({ - name: `Obj`, - fields: { - foo: typeField(GraphQLInt), - bar: typeField( - new GraphQLObjectType({ - name: `Jbo`, - fields: { - foo: typeField(GraphQLString), - }, - }) - ), - }, - }) - ), - } - - const { inferredFields } = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }) - - const obj = inferredFields.obj.type - const objFields = obj.getFields() - - expect(obj instanceof GraphQLInputObjectType).toBeTruthy() - isIntInput(objFields.foo.type) - - const innerObj = objFields.bar.type - const innerObjFields = innerObj.getFields() - isStringInput(innerObjFields.foo.type) - }) - - it(`handles lists within lists`, async () => { - const Row = new GraphQLObjectType({ - name: `Row`, - fields: () => { - return { - cells: typeField(new GraphQLList(Cell)), - } - }, - }) - - const Cell = new GraphQLObjectType({ - name: `Cell`, - fields: () => { - return { - value: typeField(GraphQLInt), - } - }, - }) - - const fields = { - rows: typeField(new GraphQLList(Row)), - } - - expect(() => { - inferInputObjectStructureFromFields({ - fields, - typeName: `ListTypes`, - }) - }).not.toThrow() - }) - - it(`protects against infinite recursion on circular definitions`, async () => { - const TypeA = new GraphQLObjectType({ - name: `TypeA`, - fields: () => { - return { - typeb: typeField(TypeB), - } - }, - }) - - const TypeB = new GraphQLObjectType({ - name: `TypeB`, - fields: () => { - return { - bar: typeField(GraphQLID), - typea: typeField(TypeA), - } - }, - }) - - const fields = { - entryPointA: typeField(TypeA), - entryPointB: typeField(TypeB), - } - - let inferredFields - - expect(() => { - inferredFields = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }).inferredFields - }).not.toThrow() - - const entryPointA = inferredFields.entryPointA.type - const entryPointAFields = entryPointA.getFields() - const entryPointB = inferredFields.entryPointB.type - const entryPointBFields = entryPointB.getFields() - - expect(entryPointA instanceof GraphQLInputObjectType).toBeTruthy() - expect(entryPointB instanceof GraphQLInputObjectType).toBeTruthy() - isIdInput(entryPointBFields.bar.type) - - // next level should also work, ie. typeA -> type B - const childAB = entryPointAFields.typeb.type - const childABFields = childAB.getFields() - expect(childAB instanceof GraphQLInputObjectType).toBeTruthy() - isIdInput(childABFields.bar.type) - - // circular level should not be here, ie. typeA -> typeB -> typeA - expect(childABFields.typea).toBeUndefined() - - // in the other direction, from entryPointB -> typeA, the latter shouldn't exist, - // due to having no further non-circular fields to filter - expect(entryPointBFields.typea).toBeUndefined() - }) - - it(`recovers from unknown output types`, async () => { - const fields = { - obj: { - type: new GraphQLObjectType({ - name: `Obj`, - fields: { - aa: typeField(OddType), - foo: typeField(GraphQLInt), - bar: typeField( - new GraphQLObjectType({ - name: `Jbo`, - fields: { - aa: typeField(OddType), - foo: typeField(GraphQLString), - ba: typeField(OddType), - bar: typeField(GraphQLInt), - }, - }) - ), - baz: typeField( - new GraphQLObjectType({ - name: `Jbo2`, - fields: { - aa: typeField(OddType), - }, - }) - ), - }, - }), - }, - odd: typeField(OddType), - } - - const { inferredFields } = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }) - - expect(inferredFields.odd).toBeUndefined() - - const obj = inferredFields.obj.type - const objFields = obj.getFields() - - expect(obj instanceof GraphQLInputObjectType).toBeTruthy() - isIntInput(objFields.foo.type) - expect(objFields.aa).toBeUndefined() - - const innerObj = objFields.bar.type - const innerObjFields = innerObj.getFields() - expect(innerObjFields.aa).toBeUndefined() - 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 () => { - const fields = { - list: typeField(new GraphQLList(GraphQLFloat)), - } - - const { inferredFields } = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }) - - const list = inferredFields.list.type - - expect(list instanceof GraphQLInputObjectType).toBeTruthy() - expect(list.getFields()).toEqual({ - eq: { name: `eq`, type: GraphQLFloat }, - ne: { name: `ne`, type: GraphQLFloat }, - gt: { name: `gt`, type: GraphQLFloat }, - gte: { name: `gte`, type: GraphQLFloat }, - lt: { name: `lt`, type: GraphQLFloat }, - lte: { name: `lte`, type: GraphQLFloat }, - in: { name: `in`, type: new GraphQLList(GraphQLFloat) }, - nin: { name: `nin`, type: new GraphQLList(GraphQLFloat) }, - }) - }) - - it(`strips away NonNull`, async () => { - const fields = { - nonNull: typeField(new GraphQLNonNull(GraphQLInt)), - } - - const { inferredFields } = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }) - - isIntInput(inferredFields.nonNull.type) - }) - - it(`extracts the fields you can sort on`, async () => { - const fields = { - foo: typeField(GraphQLString), - bar: typeField(GraphQLFloat), - baz: typeField( - new GraphQLObjectType({ - name: `Baz`, - fields: { - ka: typeField(GraphQLFloat), - ma: typeField( - new GraphQLList( - new GraphQLObjectType({ - name: `Hol`, - fields: { - go: typeField(GraphQLFloat), - }, - }) - ) - ), - }, - }) - ), - } - - const { sort } = inferInputObjectStructureFromFields({ - fields, - typeName: `AType`, - }) - - expect(sort.sort()).toEqual([`bar`, `baz___ka`, `baz___ma`, `foo`]) - }) -}) 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 deleted file mode 100644 index 9c94f669ea60e..0000000000000 --- a/packages/gatsby/src/schema/__tests__/infer-graphql-input-type-test.js +++ /dev/null @@ -1,203 +0,0 @@ -const { graphql, GraphQLString, GraphQLObjectType } = require(`graphql`) - -const { inferObjectStructureFromNodes } = require(`../infer-graphql-type`) -const nodeConnections = require(`../build-node-connections`) -const { buildNodesSchema } = require(`../index`) -const { - inferInputObjectStructureFromNodes, -} = require(`../infer-graphql-input-fields`) -const { clearTypeExampleValues } = require(`../data-tree-utils`) -const { store } = require(`../../redux`) -require(`../../db/__tests__/fixtures/ensure-loki`)() - -function queryResult(nodes, query, { types = [] } = {}) { - for (const node of nodes) { - store.dispatch({ type: `CREATE_NODE`, payload: node }) - } - const nodeObjectType = new GraphQLObjectType({ - name: `Node`, - fields: inferObjectStructureFromNodes({ - nodes, - types: [{ name: `Node` }, ...types], - }), - }) - const processedType = { - nodes, - name: `Node`, - nodeObjectType, - fieldsFromPlugins: [], - } - const fields = nodeConnections.buildFieldConfigMap(processedType) - const schema = buildNodesSchema(fields) - return graphql(schema, query) -} - -beforeEach(() => { - clearTypeExampleValues() -}) - -describe(`GraphQL Input args`, () => { - beforeEach(() => { - store.dispatch({ type: `DELETE_CACHE` }) - }) - - it(`filters out null example values`, async () => { - let result = await queryResult( - [{ id: `1`, internal: { type: `Bar` }, foo: null, bar: `baz` }], - ` - { - allNode(filter: { foo: { eq: "bar" } }) { - edges { node { bar } } - } - } - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Field "foo" is not defined by type filterNode.` - ) - }) - - it(`filters out empty objects`, async () => { - let result = await queryResult( - [{ id: `1`, internal: { type: `Bar` }, foo: {}, bar: `baz` }], - ` - { - allNode(filter: { foo: { eq: "bar" } }) { - edges { node { bar } } - } - } - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Field "foo" is not defined by type filterNode.` - ) - }) - - it(`filters out empty arrays`, async () => { - let result = await queryResult( - [{ id: `1`, internal: { type: `Bar` }, foo: [], bar: `baz` }], - ` - { - allNode(filter: { foo: { eq: "bar" } }) { - edges { node { bar } } - } - } - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Field "foo" is not defined by type filterNode.` - ) - }) - - it(`filters out sparse arrays`, async () => { - let result = await queryResult( - [ - { - id: `1`, - internal: { type: `Bar` }, - foo: [undefined, null, null], - bar: `baz`, - }, - ], - ` - { - allNode(filter: { foo: { eq: "bar" } }) { - edges { node { bar } } - } - } - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Field "foo" is not defined by type filterNode.` - ) - }) - - it(`uses correct keys for linked fields`, async () => { - const { store } = require(`../../redux`) - let types = [{ name: `Bar`, nodeObjectType: GraphQLString }] - - store.dispatch({ - type: `CREATE_NODE`, - payload: { id: `baz`, internal: { type: `Bar` } }, - }) - - let result = await queryResult( - [ - { - id: `1`, - internal: { type: `Bar` }, - linked___NODE: `baz`, - foo: `bar`, - }, - ], - ` - { - allNode(filter: { linked___NODE: { eq: "baz" } }) { - edges { node { linked } } - } - } - `, - { types } - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Field "linked___NODE" is not defined by type filterNode.` - ) - }) - - it(`Replaces unsupported values in keys`, () => { - // Add a key with unsupported values to test - // if they're replaced. - let fields = inferInputObjectStructureFromNodes({ - nodes: [ - { - parent: `parent`, - children: [`bar`], - foo: { - parent: `parent`, - children: [`bar`], - "foo-moo": `tasty`, - }, - }, - ], - }).inferredFields - - expect(Object.keys(fields.foo.type.getFields())[2]).toEqual(`foo_moo`) - }) - it(`Removes specific root fields`, () => { - let fields = inferInputObjectStructureFromNodes({ - nodes: [ - { - parent: `parent`, - children: [`bar`], - foo: { - parent: `parent`, - children: [`bar`], - }, - }, - ], - }).inferredFields - - expect(Object.keys(fields)).toHaveLength(1) - expect(Object.keys(fields.foo.type.getFields())).toHaveLength(2) - }) - - it(`infers number types`, () => { - const fields = inferInputObjectStructureFromNodes({ - nodes: [ - { - int32: 42, - float: 2.5, - longint: 3000000000, - }, - ], - }).inferredFields - expect(fields.int32.type.name.endsWith(`Integer`)).toBe(true) - expect(fields.float.type.name.endsWith(`Float`)).toBe(true) - expect(fields.longint.type.name.endsWith(`Float`)).toBe(true) - }) -}) diff --git a/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js b/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js deleted file mode 100644 index 33368180846b6..0000000000000 --- a/packages/gatsby/src/schema/__tests__/infer-graphql-type-test.js +++ /dev/null @@ -1,912 +0,0 @@ -const { - graphql, - GraphQLObjectType, - GraphQLList, - GraphQLSchema, -} = require(`graphql`) -const path = require(`path`) -const normalizePath = require(`normalize-path`) -const { clearTypeExampleValues } = require(`../data-tree-utils`) -const { typeConflictReporter } = require(`../type-conflict-reporter`) -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({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields: () => { - return { - listNode: { - name: `LISTNODE`, - type: new GraphQLList( - new GraphQLObjectType({ - name: `Test`, - fields: inferObjectStructureFromNodes({ - nodes, - ignoreFields, - types: [{ name: `Test` }, ...types], - }), - }) - ), - resolve() { - return nodes - }, - }, - } - }, - }), - }) - - return graphql( - schema, - `query { - listNode { - ${fragment} - } - } - `, - null, - { path: `/` } - ) -} - -beforeEach(() => { - clearTypeExampleValues() -}) - -describe(`GraphQL type inferance`, () => { - const nodes = [ - { - id: `foo`, - name: `The Mad Max`, - type: `Test`, - "key-with..unsupported-values": true, - hair: 1, - date: `1012-11-01`, - anArray: [1, 2, 3, 4], - aNestedArray: [[1, 2, 3, 4], [5, 6, 7, 8]], - anObjectArray: [ - { aString: `some string`, aNumber: 2, aBoolean: true }, - { aString: `some string`, aNumber: 2, anArray: [1, 2] }, - { anotherObjectArray: [{ bar: 10 }] }, - ], - deepObject: { - level: 1, - deepObject: { - level: 2, - deepObject: { - level: 3, - }, - }, - }, - "with space": 1, - "with-hyphen": 2, - "with resolver": `1012-11-01`, - 123: 42, - 456: { - testingTypeNameCreation: true, - }, - aBoolean: true, - externalUrl: `https://example.com/awesome.jpg`, - domain: `pizza.com`, - frontmatter: { - date: `1012-11-01`, - title: `The world of dash and adventure`, - blue: 100, - }, - }, - { - id: `boo`, - name: `The Mad Wax`, - type: `Test`, - hair: 2, - date: `1984-10-12`, - anArray: [1, 2, 5, 4], - aNestedArray: [[1, 2, 3, 4]], - anObjectArray: [{ anotherObjectArray: [{ baz: `quz` }] }], - "with space": 3, - "with-hyphen": 4, - 123: 24, - frontmatter: { - date: `1984-10-12`, - title: `The world of slash and adventure`, - blue: 10010, - }, - }, - ] - - it(`filters out null example values`, async () => { - let result = await queryResult( - [{ foo: null, bar: `baz` }], - ` - foo - bar - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Cannot query field "foo" on type "Test".` - ) - }) - - it(`doesn't throw errors at ints longer than 32-bit`, async () => { - const result = await queryResult( - [ - { - longint: 3000000000, - }, - ], - ` - longint - ` - ) - expect(result.errors).toBeUndefined() - }) - - it(`prefers float when multiple number types`, async () => { - let result = await queryResult( - [{ number: 1.1 }, { number: 1 }], - ` - number - ` - ) - expect(result.data.listNode[0].number).toEqual(1.1) - }) - - it(`filters out empty objects`, async () => { - let result = await queryResult( - [{ foo: {}, bar: `baz` }], - ` - foo - bar - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Cannot query field "foo" on type "Test".` - ) - }) - - it(`filters out empty arrays`, async () => { - let result = await queryResult( - [{ foo: [], bar: `baz` }], - ` - foo - bar - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Cannot query field "foo" on type "Test".` - ) - }) - - it(`filters out sparse arrays`, async () => { - let result = await queryResult( - [{ foo: [undefined, null, null], bar: `baz` }], - ` - foo - bar - ` - ) - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Cannot query field "foo" on type "Test".` - ) - }) - - it(`Removes specific root fields`, () => { - let fields = inferObjectStructureFromNodes({ - nodes: [ - { - type: `Test`, - id: `foo`, - parent: `parent`, - children: [`bar`], - foo: { - type: `Test`, - id: `foo`, - parent: `parent`, - children: [`bar`], - }, - }, - ], - types: [{ name: `Test` }], - }) - - expect(Object.keys(fields)).toHaveLength(2) - expect(Object.keys(fields.foo.type.getFields())).toHaveLength(4) - }) - - it(`infers number types`, () => { - const fields = inferObjectStructureFromNodes({ - nodes: [ - { - int32: 42, - float: 2.5, - longint: 3000000000, - }, - ], - }) - expect(fields.int32.type.name).toEqual(`Int`) - expect(fields.float.type.name).toEqual(`Float`) - expect(fields.longint.type.name).toEqual(`Float`) - }) - - it(`Handle invalid graphql field names`, async () => { - let result = await queryResult( - nodes, - ` - with_space - with_hyphen - with_resolver(formatString:"DD.MM.YYYY") - _123 - _456 { - testingTypeNameCreation - } - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode.length).toEqual(2) - expect(result.data.listNode[0].with_space).toEqual(1) - expect(result.data.listNode[0].with_hyphen).toEqual(2) - expect(result.data.listNode[1].with_space).toEqual(3) - expect(result.data.listNode[1].with_hyphen).toEqual(4) - 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`, () => { - it(`Handles integer with valid date format`, async () => { - let result = await queryResult( - [{ number: 2018 }, { number: 1987 }], - ` - number - ` - ) - expect(result.data.listNode[0].number).toEqual(2018) - }) - - it(`Infers from Date objects`, async () => { - let result = await queryResult( - [ - { dateObject: new Date(Date.UTC(2012, 10, 5)) }, - { dateObject: new Date(Date.UTC(2012, 10, 5)) }, - ], - ` - dateObject - ` - ) - expect(result).toMatchSnapshot() - }) - - it(`Infers from array of Date objects`, async () => { - let result = await queryResult( - [ - { - dateObject: [ - new Date(Date.UTC(2012, 10, 5)), - new Date(Date.UTC(2012, 10, 6)), - ], - }, - { dateObject: [new Date(Date.UTC(2012, 10, 5))] }, - ], - ` - dateObject - ` - ) - expect(result).toMatchSnapshot() - }) - - it(`Infers from date strings`, async () => { - let result = await queryResult( - [{ date: `1012-11-01` }], - ` - date(formatString:"DD.MM.YYYY") - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].date).toEqual(`01.11.1012`) - }) - - it(`Infers from arrays of date strings`, async () => { - let result = await queryResult( - [{ date: [`1012-11-01`, `10390203`] }], - ` - date(formatString:"DD.MM.YYYY") - ` - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].date.length).toEqual(2) - expect(result.data.listNode[0].date[0]).toEqual(`01.11.1012`) - expect(result.data.listNode[0].date[1]).toEqual(`03.02.1039`) - }) - }) - - describe(`Linked inference from config mappings`, () => { - let store, types - - beforeAll(() => { - ;({ store } = require(`../../redux`)) - - store.dispatch({ type: `DELETE_CACHE` }) - - store.dispatch({ - type: `CREATE_NODE`, - payload: { - id: `node1`, - label: `First node`, - internal: { type: `MappingTest` }, - nestedField: { - mapTarget: `test1`, - }, - }, - }) - - store.dispatch({ - type: `CREATE_NODE`, - payload: { - id: `node2`, - label: `Second node`, - internal: { type: `MappingTest` }, - nestedField: { - mapTarget: `test2`, - }, - }, - }) - - store.dispatch({ - type: `CREATE_NODE`, - payload: { - id: `node3`, - label: `Third node`, - internal: { type: `MappingTest` }, - nestedField: { - mapTarget: `test3`, - }, - }, - }) - - const mappingTestType = { - name: `MappingTest`, - nodeObjectType: new GraphQLObjectType({ - name: `MappingTest`, - fields: inferObjectStructureFromNodes({ - nodes: [ - { - label: `string`, - nestedField: { mapTarget: `string` }, - linkedOnID: `string`, - linkedOnCustomField: `string`, - }, - ], - types: [{ name: `MappingTest` }], - }), - }), - } - - types = [mappingTestType] - - store.dispatch({ - type: `SET_SITE_CONFIG`, - payload: { - mapping: { - "Test.linkedOnID": `MappingTest`, - "Test.linkedOnCustomField": `MappingTest.nestedField.mapTarget`, - }, - }, - }) - }) - - it(`Links to single node by id`, async () => { - let result = await queryResult( - [ - { - linkedOnID: `node1`, - internal: { type: `Test` }, - }, - { - linkedOnID: `not_existing`, - internal: { type: `Test` }, - }, - ], - ` - linkedOnID { - label - } - `, - { types } - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode.length).toEqual(2) - expect(result.data.listNode[0].linkedOnID).toBeDefined() - expect(result.data.listNode[1].linkedOnID).toEqual(null) - expect(result.data.listNode[0].linkedOnID.label).toEqual(`First node`) - }) - - it(`Links to array of nodes by id`, async () => { - let result = await queryResult( - [ - { - linkedOnID: [`node1`, `node2`], - internal: { type: `Test` }, - }, - ], - ` - linkedOnID { - label - } - `, - { types } - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode.length).toEqual(1) - expect(result.data.listNode[0].linkedOnID).toBeDefined() - expect(result.data.listNode[0].linkedOnID.length).toEqual(2) - expect(result.data.listNode[0].linkedOnID[0].label).toEqual(`First node`) - expect(result.data.listNode[0].linkedOnID[1].label).toEqual(`Second node`) - }) - - it(`Links to single node by custom field`, async () => { - let result = await queryResult( - [ - { - linkedOnCustomField: `test2`, - internal: { type: `Test` }, - }, - { - linkedOnCustomField: `not_existing`, - internal: { type: `Test` }, - }, - ], - ` - linkedOnCustomField { - label - } - `, - { types } - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode.length).toEqual(2) - expect(result.data.listNode[0].linkedOnCustomField).toBeDefined() - expect(result.data.listNode[1].linkedOnCustomField).toEqual(null) - expect(result.data.listNode[0].linkedOnCustomField.label).toEqual( - `Second node` - ) - }) - - it(`Links to array of nodes by custom field`, async () => { - let result = await queryResult( - [ - { - linkedOnCustomField: [`test1`, `test3`], - internal: { type: `Test` }, - }, - ], - ` - linkedOnCustomField { - label - } - `, - { types } - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode.length).toEqual(1) - expect(result.data.listNode[0].linkedOnCustomField).toBeDefined() - expect(result.data.listNode[0].linkedOnCustomField.length).toEqual(2) - expect(result.data.listNode[0].linkedOnCustomField[0].label).toEqual( - `First node` - ) - expect(result.data.listNode[0].linkedOnCustomField[1].label).toEqual( - `Third node` - ) - }) - }) - - describe(`Linked inference from file URIs`, () => { - let store, types, dir - - beforeEach(() => { - ;({ store } = require(`../../redux`)) - - store.dispatch({ type: `DELETE_CACHE` }) - - const { setFileNodeRootType } = require(`../types/type-file`) - const fileType = { - name: `File`, - nodeObjectType: new GraphQLObjectType({ - name: `File`, - fields: inferObjectStructureFromNodes({ - nodes: [{ id: `file_1`, absolutePath: `path`, dir: `path` }], - types: [{ name: `File` }], - }), - }), - } - - types = [fileType] - setFileNodeRootType(fileType.nodeObjectType) - - dir = normalizePath(path.resolve(`/path/`)) - - store.dispatch({ - type: `CREATE_NODE`, - payload: { - id: `parent`, - internal: { type: `File` }, - absolutePath: normalizePath(path.resolve(dir, `index.md`)), - dir: dir, - }, - }) - store.dispatch({ - type: `CREATE_NODE`, - payload: { - id: `file_1`, - internal: { type: `File` }, - absolutePath: normalizePath(path.resolve(dir, `file_1.jpg`)), - dir, - }, - }) - store.dispatch({ - type: `CREATE_NODE`, - payload: { - id: `file_2`, - internal: { type: `File` }, - absolutePath: normalizePath(path.resolve(dir, `file_2.txt`)), - dir, - }, - }) - }) - - it(`Links to file node`, async () => { - let result = await queryResult( - [{ file: `./file_1.jpg`, parent: `parent` }], - ` - file { - absolutePath - } - `, - { types } - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].file.absolutePath).toEqual( - normalizePath(path.resolve(dir, `file_1.jpg`)) - ) - }) - - it(`Links to array of file nodes`, async () => { - let result = await queryResult( - [{ files: [`./file_1.jpg`, `./file_2.txt`], parent: `parent` }], - ` - files { - absolutePath - } - `, - { types } - ) - - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].files.length).toEqual(2) - expect(result.data.listNode[0].files[0].absolutePath).toEqual( - normalizePath(path.resolve(dir, `file_1.jpg`)) - ) - expect(result.data.listNode[0].files[1].absolutePath).toEqual( - normalizePath(path.resolve(dir, `file_2.txt`)) - ) - }) - }) - - describe(`Linked inference by __NODE convention`, () => { - let store, types - - beforeEach(() => { - ;({ store } = require(`../../redux`)) - store.dispatch({ type: `DELETE_CACHE` }) - types = [ - { - name: `Child`, - nodeObjectType: new GraphQLObjectType({ - name: `Child`, - fields: inferObjectStructureFromNodes({ - nodes: [{ id: `child_1`, hair: `brown` }], - types: [{ name: `Child` }], - }), - }), - }, - { - name: `Pet`, - nodeObjectType: new GraphQLObjectType({ - name: `Pet`, - fields: inferObjectStructureFromNodes({ - nodes: [{ id: `pet_1`, species: `dog` }], - types: [{ name: `Pet` }], - }), - }), - }, - ] - - store.dispatch({ - type: `CREATE_NODE`, - payload: { id: `child_1`, internal: { type: `Child` }, hair: `brown` }, - }) - store.dispatch({ - type: `CREATE_NODE`, - payload: { id: `child_2`, internal: { type: `Child` }, hair: `blonde` }, - }) - store.dispatch({ - type: `CREATE_NODE`, - payload: { id: `pet_1`, internal: { type: `Pet` }, species: `dog` }, - }) - }) - - it(`Links nodes`, async () => { - let result = await queryResult( - [{ linked___NODE: `child_1` }], - ` - linked { - hair - } - `, - { types } - ) - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].linked.hair).toEqual(`brown`) - }) - - it(`Links an array of nodes`, async () => { - let result = await queryResult( - [{ linked___NODE: [`child_1`, `child_2`] }], - ` - linked { - hair - } - `, - { types } - ) - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].linked[0].hair).toEqual(`brown`) - expect(result.data.listNode[0].linked[1].hair).toEqual(`blonde`) - }) - - it(`Links nodes by field`, async () => { - let result = await queryResult( - [{ linked___NODE___hair: `brown` }], - ` - linked { - hair - } - `, - { types } - ) - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].linked.hair).toEqual(`brown`) - }) - - it(`Links an array of nodes by field`, async () => { - let result = await queryResult( - [{ linked___NODE___hair: [`brown`, `blonde`] }], - ` - linked { - hair - } - `, - { types } - ) - expect(result.errors).not.toBeDefined() - expect(result.data.listNode[0].linked[0].hair).toEqual(`brown`) - expect(result.data.listNode[0].linked[1].hair).toEqual(`blonde`) - }) - - it(`Errors clearly when missing nodes`, async () => { - expect(() => { - inferObjectStructureFromNodes({ - nodes: [{ linked___NODE: `baz` }], - types: [{ name: `Test` }], - }) - }).toThrow( - `Encountered an error trying to infer a GraphQL type ` + - `for: "linked___NODE". There is no corresponding node with the id ` + - `field matching: "baz"` - ) - }) - - it(`Errors clearly when missing types`, async () => { - store.dispatch({ - type: `CREATE_NODE`, - payload: { id: `baz`, internal: { type: `Bar` } }, - }) - - expect(() => { - inferObjectStructureFromNodes({ - nodes: [{ linked___NODE: `baz` }], - types: [{ name: `Test` }], - }) - }).toThrow( - `Encountered an error trying to infer a GraphQL type ` + - `for: "linked___NODE". There is no corresponding GraphQL type ` + - `"Bar" available to link to this node.` - ) - }) - - 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` } }, - }) - }) - - 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`) - }) - }) - }) - - it(`Infers graphql type from array of nodes`, () => - queryResult( - nodes, - ` - hair, - anArray, - aNestedArray, - anObjectArray { - aNumber, - aBoolean, - anArray - anotherObjectArray { - bar - baz - } - }, - deepObject { - level - deepObject { - level - deepObject { - level - } - } - } - aBoolean, - externalUrl, - domain, - date(formatString: "YYYY"), - frontmatter { - title, - date(formatString: "YYYY") - } - ` - ).then(result => expect(result).toMatchSnapshot())) - - describe(`type conflicts`, () => { - let addConflictSpy = jest.spyOn(typeConflictReporter, `addConflict`) - - beforeEach(() => { - addConflictSpy.mockReset() - }) - - it(`catches conflicts and removes field`, async () => { - let result = await queryResult( - [{ foo: `foo`, number: 1.1 }, { foo: `bar`, number: `1` }], - ` - foo - number - ` - ) - expect(addConflictSpy).toHaveBeenCalledTimes(1) - - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Cannot query field "number" on type "Test".` - ) - }) - - it(`does not warn about provided types`, async () => { - let result = await queryResult( - [{ foo: `foo`, number: 1.1 }, { foo: `bar`, number: `1` }], - ` - foo - number - `, - { ignoreFields: [`number`] } - ) - expect(addConflictSpy).not.toHaveBeenCalled() - - expect(result.errors.length).toEqual(1) - expect(result.errors[0].message).toMatch( - `Cannot query field "number" on type "Test".` - ) - }) - }) -}) diff --git a/packages/gatsby/src/schema/__tests__/kitchen-sink.js b/packages/gatsby/src/schema/__tests__/kitchen-sink.js new file mode 100644 index 0000000000000..da57081846a98 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/kitchen-sink.js @@ -0,0 +1,166 @@ +// @flow + +const { SchemaComposer } = require(`graphql-compose`) +const { graphql } = require(`graphql`) +const { store } = require(`../../redux`) +const { build } = require(`../index`) +const fs = require(`fs-extra`) +const path = require(`path`) +const slash = require(`slash`) +const withResolverContext = require(`../context`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +jest.mock(`../../utils/api-runner-node`) +const apiRunnerNode = require(`../../utils/api-runner-node`) + +// XXX(freiksenet): Expand +describe(`Kichen sink schema test`, () => { + let schema + + const runQuery = query => + graphql(schema, query, undefined, withResolverContext({}, schema)) + + beforeAll(async () => { + apiRunnerNode.mockImplementation((api, ...args) => { + if (api === `setFieldsOnGraphQLNodeType`) { + return mockSetFieldsOnGraphQLNodeType(...args) + } else if (api === `createResolvers`) { + return mockCreateResolvers(...args) + } else { + return [] + } + }) + + const nodes = JSON.parse( + fs + .readFileSync( + path.join(__dirname, `./fixtures/kitchen-sink.json`), + `utf-8` + ) + .replace(//g, slash(process.cwd())) + ) + + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) + store.dispatch({ + type: `CREATE_TYPES`, + payload: ` + type PostsJson implements Node { + id: String! + time: Date + code: String + } + `, + }) + store.dispatch({ + type: `ADD_THIRD_PARTY_SCHEMA`, + payload: buildThirdPartySchema(), + }) + await build({}) + schema = store.getState().schema + }) + + it(`passes kitchen sink query`, async () => { + expect( + await runQuery(` + { + sort: allPostsJson(sort: { fields: likes, order: ASC }, limit: 2) { + edges { + node { + id + idWithDecoration + time(formatString: "DD.MM.YYYY") + code + likes + comment + image { + childImageSharp { + id + } + } + _3invalidKey + } + } + } + filter: allPostsJson(filter: { likes: { eq: null } }, limit: 2) { + edges { + node { + id + comment + } + } + } + resolveFilter: postsJson(idWithDecoration: { eq: "decoration-1601601194425654597"}) { + id + idWithDecoration + likes + } + addResolvers: likedEnough { + id + likes + code + } + thirdPartyStuff { + text + } + } + `) + ).toMatchSnapshot() + }) +}) + +const buildThirdPartySchema = () => { + const schemaComposer = new SchemaComposer() + schemaComposer.addTypeDefs(` + type ThirdPartyStuff { + text: String + } + + type Query { + thirdPartyStuff: ThirdPartyStuff + } + `) + schemaComposer.Query.extendField(`thirdPartyStuff`, { + resolve() { + return { + text: `Hello third-party schema!`, + } + }, + }) + return schemaComposer.buildSchema() +} + +const mockSetFieldsOnGraphQLNodeType = async ({ type: { name } }) => { + if (name === `PostsJson`) { + return [ + { + idWithDecoration: { + type: `String`, + resolve(parent) { + return `decoration-${parent.id}` + }, + }, + }, + ] + } else { + return [] + } +} + +const mockCreateResolvers = ({ createResolvers }) => { + createResolvers({ + Query: { + likedEnough: { + type: `[PostsJson]`, + resolve(parent, args, context) { + return context.nodeModel + .getAllNodes({ type: `PostsJson` }) + .filter(post => post.likes != null && post.likes > 5) + .slice(0, 2) + }, + }, + }, + }) +} diff --git a/packages/gatsby/src/schema/__tests__/node-model.js b/packages/gatsby/src/schema/__tests__/node-model.js new file mode 100644 index 0000000000000..47d7a3e75479b --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/node-model.js @@ -0,0 +1,366 @@ +const { store } = require(`../../redux`) +const nodeStore = require(`../../db/nodes`) +require(`../../db/__tests__/fixtures/ensure-loki`)() +const { LocalNodeModel } = require(`../node-model`) +const { build } = require(`..`) + +const nodes = require(`./fixtures/node-model`) + +describe(`NodeModel`, () => { + let nodeModel + let schema + const createPageDependency = jest.fn() + + beforeAll(async () => { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) + + const types = ` + union AllFiles = File | RemoteFile + + interface TeamMember { + name: String! + } + + type Author implements TeamMember & Node { + name: String! + } + + type Contributor implements TeamMember & Node { + name: String! + } + ` + store.dispatch({ + type: `CREATE_TYPES`, + payload: types, + }) + + await build({}) + schema = store.getState().schema + + nodeModel = new LocalNodeModel({ + schema, + nodeStore, + createPageDependency, + }) + }) + + beforeEach(() => { + createPageDependency.mockClear() + }) + + describe(`getNodeById`, () => { + it(`returns node by id`, () => { + const result = nodeModel.getNodeById({ id: `person3` }) + expect(result.name).toBe(`Person3`) + expect(result.email).toBeNull() + }) + + it(`returns node by id and type`, () => { + const result = nodeModel.getNodeById({ id: `person1`, type: `Author` }) + expect(result.name).toBe(`Person1`) + expect(result.email).toBe(`person1@example.com`) + }) + + it(`returns node by id and union type`, () => { + const result = nodeModel.getNodeById({ id: `file3`, type: `AllFiles` }) + expect(result.name).toBe(`File3`) + }) + + it(`returns node by id and interface type`, () => { + const result = nodeModel.getNodeById({ + id: `person1`, + type: `TeamMember`, + }) + expect(result.name).toBe(`Person1`) + }) + + it(`creates page dependency`, () => { + nodeModel.getNodeById({ id: `person3` }, { path: `/` }) + expect(createPageDependency).toHaveBeenCalledTimes(1) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `/`, + nodeId: `person3`, + }) + }) + + it(`returns null when no id provided`, () => { + expect(nodeModel.getNodeById()).toBeNull() + expect(nodeModel.getNodeById({})).toBeNull() + expect(nodeModel.getNodeById({ id: null })).toBeNull() + }) + + it(`returns null when matching id does not match type`, () => { + const result = nodeModel.getNodeById({ id: `person1`, type: `Post` }) + expect(result).toBeNull() + }) + + it(`returns null when no matching node found`, () => { + const result = nodeModel.getNodeById({ id: `person4` }) + expect(result).toBeNull() + }) + + it(`does not create page dependency when no matching node found`, () => { + nodeModel.getNodeById({ id: `person4` }, { path: `/` }) + expect(createPageDependency).not.toHaveBeenCalled() + }) + + it(`handles already resolved id`, () => { + const result = nodeModel.getNodeById({ + id: { id: `person1`, name: `Person1` }, + }) + expect(result.id).toBe(`person1`) + expect(result.name).toBe(`Person1`) + }) + }) + + describe(`getNodesByIds`, () => { + it(`returns nodes by ids`, () => { + const result = nodeModel.getNodesByIds({ ids: [`person1`, `post2`] }) + expect(result.length).toBe(2) + expect(result[0].name).toBe(`Person1`) + expect(result[1].frontmatter.authors[0]).toBe(`person1`) + }) + + it(`returns nodes by ids and type`, () => { + const result = nodeModel.getNodesByIds({ + ids: [`person1`, `post2`], + type: `Author`, + }) + expect(result.length).toBe(1) + expect(result[0].name).toBe(`Person1`) + }) + + it(`returns nodes by ids and union type`, () => { + const result = nodeModel.getNodesByIds({ + ids: [`file1`, `file2`, `file3`, `post1`], + type: `AllFiles`, + }) + expect(result.length).toBe(3) + expect( + result.every(r => [`File`, `RemoteFile`].includes(r.internal.type)) + ).toBeTruthy() + }) + + it(`returns nodes by ids and interface type`, () => { + const result = nodeModel.getNodesByIds({ + ids: [`person1`, `person2`, `person3`, `post1`], + type: `TeamMember`, + }) + expect(result.length).toBe(3) + expect( + result.every(r => [`Author`, `Contributor`].includes(r.internal.type)) + ).toBeTruthy() + }) + + it(`creates page dependencies`, () => { + nodeModel.getNodesByIds({ ids: [`person1`, `post2`] }, { path: `/` }) + expect(createPageDependency).toHaveBeenCalledTimes(2) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `/`, + nodeId: `person1`, + }) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `/`, + nodeId: `post2`, + }) + }) + + it(`returns empty array when no ids provided`, () => { + expect(nodeModel.getNodesByIds()).toEqual([]) + expect(nodeModel.getNodesByIds({})).toEqual([]) + expect(nodeModel.getNodesByIds({ ids: null })).toEqual([]) + expect(nodeModel.getNodesByIds({ ids: [] })).toEqual([]) + }) + + it(`returns empty array when matching ids don't match type`, () => { + const result = nodeModel.getNodesByIds({ + ids: [`person1`, `post2`], + type: `File`, + }) + expect(result).toEqual([]) + }) + + it(`returns empty array when no matching nodes found`, () => { + const result = nodeModel.getNodesByIds({ ids: [`person4`, `post4`] }) + expect(result).toEqual([]) + }) + + it(`does not create page dependencies when no matching nodes found`, () => { + nodeModel.getNodesByIds({ ids: [`person4`, `post4`] }, { path: `/` }) + expect(createPageDependency).not.toHaveBeenCalled() + }) + + it(`handles already resolved ids`, () => { + const result = nodeModel.getNodesByIds({ + ids: [ + { id: `person1`, name: `Person1` }, + `person2`, + { id: `post1`, frontmatter: { published: false } }, + ], + }) + expect(result.length).toBe(3) + expect(result[0].id).toBe(`person1`) + expect(result[0].name).toBe(`Person1`) + expect(result[1].id).toBe(`person2`) + expect(result[1].name).toBe(`Person2`) + expect(result[2].id).toBe(`post1`) + expect(result[2].frontmatter.published).toBe(false) + }) + }) + + describe(`getAllNodes`, () => { + it(`returns all nodes`, () => { + const result = nodeModel.getAllNodes() + expect(result.length).toBe(9) + }) + + it(`returns all nodes of type`, () => { + const result = nodeModel.getAllNodes({ type: `Author` }) + expect(result.length).toBe(2) + }) + + it(`returns all nodes of union type`, () => { + const result = nodeModel.getAllNodes({ type: `AllFiles` }) + expect(result.length).toBe(3) + }) + + it(`returns all nodes of interface type`, () => { + const result = nodeModel.getAllNodes({ type: `TeamMember` }) + expect(result.length).toBe(3) + }) + + it(`creates page dependencies`, () => { + nodeModel.getAllNodes({}, { path: `/` }) + expect(createPageDependency).toHaveBeenCalledTimes(9) + }) + + it(`returns empty array when no nodes of type found`, () => { + const result = nodeModel.getAllNodes({ type: `Astronauts` }) + expect(result).toEqual([]) + }) + + it(`does not create page dependencies when no matching nodes found`, () => { + nodeModel.getAllNodes({ type: `Astronauts` }, { path: `/` }) + expect(createPageDependency).not.toHaveBeenCalled() + }) + }) + + describe(`getTypes`, () => { + it(`returns all node types in the store`, () => { + const result = nodeModel.getTypes() + expect(result.length).toBe(5) + expect(result).toEqual( + expect.arrayContaining([ + `Author`, + `Contributor`, + `Post`, + `File`, + `RemoteFile`, + ]) + ) + }) + }) + + describe(`runQuery`, () => { + it(`returns first result only`, async () => { + const type = `Post` + const query = { filter: { frontmatter: { published: { eq: false } } } } + const firstOnly = true + const result = await nodeModel.runQuery({ query, firstOnly, type }) + expect(result.id).toBe(`post1`) + }) + + it(`returns all results`, async () => { + const type = `Post` + const query = { filter: { frontmatter: { published: { eq: false } } } } + const firstOnly = false + const result = await nodeModel.runQuery({ query, firstOnly, type }) + expect(result.length).toBe(2) + expect(result[0].id).toBe(`post1`) + expect(result[1].id).toBe(`post3`) + }) + + it(`creates page dependencies`, async () => { + const type = `Post` + const query = { filter: { frontmatter: { published: { eq: false } } } } + const firstOnly = false + await nodeModel.runQuery({ query, firstOnly, type }, { path: `/` }) + expect(createPageDependency).toHaveBeenCalledTimes(2) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `/`, + nodeId: `post1`, + }) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `/`, + nodeId: `post3`, + }) + }) + + it(`creates page dependencies with connection type`, async () => { + const type = `Post` + const query = { filter: { frontmatter: { published: { eq: false } } } } + const firstOnly = false + await nodeModel.runQuery( + { query, firstOnly, type }, + { path: `/`, connectionType: `Post` } + ) + expect(createPageDependency).toHaveBeenCalledTimes(1) + expect(createPageDependency).toHaveBeenCalledWith({ + path: `/`, + connection: `Post`, + }) + }) + + it(`doesn't allow querying union types`, () => { + const type = `AllFiles` + const query = {} + const firstOnly = true + const result = nodeModel.runQuery({ query, firstOnly, type }) + return expect(result).rejects.toThrowError( + `Querying GraphQLUnion types is not supported.` + ) + }) + + it(`handles interface types`, async () => { + const type = `TeamMember` + const query = { name: { ne: null } } + const firstOnly = true + const result = await nodeModel.runQuery({ query, firstOnly, type }) + expect(result.name).toBe(`Person1`) + }) + + it(`allows passing GraphQLType instead of type name`, async () => { + const type = schema.getType(`File`) + const query = { + filter: { + children: { elemMatch: { internal: { type: { eq: `Post` } } } }, + }, + } + const firstOnly = false + const result = await nodeModel.runQuery({ query, firstOnly, type }) + expect(result.length).toBe(2) + expect(result[0].id).toBe(`file1`) + expect(result[1].id).toBe(`file3`) + }) + }) + + describe(`findRootNodeAncestor`, () => { + it(`returns an object's top most ancestor node`, () => { + const node = nodes.find(node => node.id === `post1`) + const obj = node.frontmatter.authors + const result = nodeModel.findRootNodeAncestor(obj) + expect(result.id).toBe(`file1`) + }) + + it(`returns an object's ancestor node that matches the provided predicate`, () => { + const node = nodes.find(node => node.id === `post1`) + const obj = node.frontmatter.authors + const predicate = obj => obj.internal && obj.internal.type === `File` + const result = nodeModel.findRootNodeAncestor(obj, predicate) + expect(result.id).toBe(`file1`) + }) + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/page-dependency-resolver.js b/packages/gatsby/src/schema/__tests__/page-dependency-resolver.js deleted file mode 100644 index 49f33a770cd94..0000000000000 --- a/packages/gatsby/src/schema/__tests__/page-dependency-resolver.js +++ /dev/null @@ -1,10 +0,0 @@ -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__/queries.js b/packages/gatsby/src/schema/__tests__/queries.js new file mode 100644 index 0000000000000..8ac99f452d215 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/queries.js @@ -0,0 +1,1074 @@ +const { graphql } = require(`graphql`) +const { store } = require(`../../redux`) +const { build } = require(`..`) +const withResolverContext = require(`../context`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +jest.mock(`../../utils/api-runner-node`) +const apiRunnerNode = require(`../../utils/api-runner-node`) + +const nodes = require(`./fixtures/queries`) + +describe(`Query schema`, () => { + let schema + + const runQuery = query => + graphql(schema, query, undefined, withResolverContext({}, schema)) + + beforeAll(async () => { + apiRunnerNode.mockImplementation(async (api, ...args) => { + if (api === `setFieldsOnGraphQLNodeType`) { + if (args[0].type.name === `Markdown`) { + return [ + { + [`frontmatter.authorNames`]: { + type: `[String!]!`, + async resolve(source, args, context, info) { + const authors = await context.nodeModel.runQuery({ + type: `Author`, + query: { filter: { email: { in: source.authors } } }, + firstOnly: false, + }) + return authors.map(author => author.name) + }, + }, + [`frontmatter.anotherField`]: { + type: `Boolean`, + resolve() { + return true + }, + }, + }, + ] + } + return [] + } else if (api === `createResolvers`) { + return [ + args[0].createResolvers({ + Frontmatter: { + authors: { + resolve(source, args, context, info) { + // NOTE: When using the first field resolver argument (here called + // `source`, also called `parent` or `root`), it is important to + // take care of the fact that the resolver can be called more than once + // in one query, e.g. when the field is referenced both in the input filter + // and in the selection set. In this test example, the `authors` field will + // already have been expanded to an array of full `Author` nodes when the + // resolver is called the second time. + if ( + source.authors.some( + author => author && typeof author === `object` + ) + ) { + return source.authors + } + return context.nodeModel + .getAllNodes({ type: `Author` }) + .filter(author => source.authors.includes(author.email)) + }, + }, + }, + Author: { + posts: { + resolve(source, args, context, info) { + // NOTE: One of the differences between using `runQuery` and + // `getAllNodes` is that the latter will always get the nodes + // which will be queried directly from the store, while `runQuery` + // will first try to call field resolvers, e.g. to expand + // foreign-key fields to full nodes. Here for example we can + // query `authors.email`. + // Another thing to note is that we don't have to use the + // `$elemMatch` operator when querying arrays of objects + // (although we could). + return context.nodeModel.runQuery({ + type: `Markdown`, + query: { + filter: { + frontmatter: { + authors: { email: { eq: source.email } }, + // authors: { + // elemMatch: { email: { eq: source.email } }, + // }, + }, + }, + }, + firstOnly: false, + }) + }, + }, + }, + }), + args[0].createResolvers({ + Query: { + allAuthorNames: { + type: `[String!]!`, + resolve(source, args, context, info) { + return context.nodeModel + .getAllNodes({ type: `Author` }) + .map(author => author.name) + }, + }, + }, + }), + ] + } else { + return [] + } + }) + + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) + + const typeDefs = [ + `type Markdown implements Node { frontmatter: Frontmatter! }`, + `type Frontmatter { authors: [Author] }`, + `type Author implements Node { posts: [Markdown] }`, + ] + typeDefs.forEach(def => + store.dispatch({ type: `CREATE_TYPES`, payload: def }) + ) + + store.dispatch({ + type: `SET_SITE_CONFIG`, + payload: { + mapping: { + "Markdown.frontmatter.reviewerByEmail": `Author.email`, + }, + }, + }) + + await build({}) + schema = store.getState().schema + }) + + describe(`on children fields`, () => { + it(`handles Node interface children field`, async () => { + const query = ` + { + allFile { + edges { + node { + children { + ... on Markdown { frontmatter { title } } + ... on Author { name } + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allFile: { + edges: [ + { + node: { + children: [{ frontmatter: { title: `Markdown File 1` } }], + }, + }, + { + node: { + children: [{ frontmatter: { title: `Markdown File 2` } }], + }, + }, + { + node: { + children: [{ name: `Author 2` }, { name: `Author 1` }], + }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`handles convenience child fields`, async () => { + const query = ` + { + allFile { + edges { + node { + childMarkdown { frontmatter { title } } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allFile: { + edges: [ + { + node: { + childMarkdown: { frontmatter: { title: `Markdown File 1` } }, + }, + }, + { + node: { + childMarkdown: { frontmatter: { title: `Markdown File 2` } }, + }, + }, + { + node: { + childMarkdown: null, + }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`handles convenience children fields`, async () => { + const query = ` + { + allFile { + edges { + node { + childrenAuthor { name } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allFile: { + edges: [ + { + node: { + childrenAuthor: [], + }, + }, + { + node: { + childrenAuthor: [], + }, + }, + { + node: { + childrenAuthor: [{ name: `Author 2` }, { name: `Author 1` }], + }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + // NOTE: Also tests handling children fields being in both + // input filter and selection set. + it(`handles query arguments on children fields`, async () => { + const query = ` + { + allFile( + filter: { + children: { + elemMatch: { internal: { type: { eq: "Markdown" } } } + } + } + sort: { fields: [id], order: [DESC] } + ) { + edges { + node { + name + children { + id + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allFile: { + edges: [ + { + node: { name: `2.md`, children: [{ id: `md2` }] }, + }, + { + node: { name: `1.md`, children: [{ id: `md1` }] }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + }) + + describe(`on fields added with createTypes`, () => { + it(`handles selection set`, async () => { + const query = ` + { + markdown { + frontmatter { + authors { + posts { + frontmatter { + title + } + } + } + } + } + allMarkdown { + edges { + node { + frontmatter { + title + date(formatString: "MM-DD-YYYY") + published + authors { + name + email + posts { + frontmatter { + title + } + } + } + authorNames + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + markdown: { + frontmatter: { + authors: [ + { + posts: [ + { frontmatter: { title: `Markdown File 1` } }, + { frontmatter: { title: `Markdown File 2` } }, + ], + }, + { posts: [{ frontmatter: { title: `Markdown File 1` } }] }, + ], + }, + }, + allMarkdown: { + edges: [ + { + node: { + frontmatter: { + authorNames: [`Author 1`, `Author 2`], + authors: [ + { + email: `author1@example.com`, + name: `Author 1`, + posts: [ + { frontmatter: { title: `Markdown File 1` } }, + { frontmatter: { title: `Markdown File 2` } }, + ], + }, + { + email: `author2@example.com`, + name: `Author 2`, + posts: [{ frontmatter: { title: `Markdown File 1` } }], + }, + ], + date: `01-01-2019`, + published: null, + title: `Markdown File 1`, + }, + }, + }, + { + node: { + frontmatter: { + authorNames: [`Author 1`], + authors: [ + { + email: `author1@example.com`, + name: `Author 1`, + posts: [ + { frontmatter: { title: `Markdown File 1` } }, + { frontmatter: { title: `Markdown File 2` } }, + ], + }, + ], + date: null, + published: false, + title: `Markdown File 2`, + }, + }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`handles query arguments`, async () => { + const query = ` + { + author( + posts: { + elemMatch: { + frontmatter: { + title: { eq: "Markdown File 2" } + } + } + } + ) { + name + posts { + frontmatter { + title + } + } + } + allMarkdown( + filter: { + frontmatter: { + authors: { + elemMatch: { + name: { regex: "/^Author/" } + posts: { + elemMatch: { + frontmatter: { + title: { + eq: "Markdown File 2" + } + } + } + } + } + } + } + } + sort: { fields: [frontmatter___title], order: [DESC] } + ) { + edges { + node { + id + frontmatter { + authors { + name + } + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + author: { + name: `Author 1`, + posts: [ + { frontmatter: { title: `Markdown File 1` } }, + { frontmatter: { title: `Markdown File 2` } }, + ], + }, + allMarkdown: { + edges: [ + { + node: { + id: `md2`, + frontmatter: { authors: [{ name: `Author 1` }] }, + }, + }, + { + node: { + id: `md1`, + frontmatter: { + authors: expect.arrayContaining([ + { name: `Author 1` }, + { name: `Author 2` }, + ]), + }, + }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + }) + + describe(`on pagination fields`, () => { + describe(`edges { node }`, () => { + it(`paginates results`, async () => { + const query = ` + { + pages: allMarkdown { + totalCount + edges { + node { + frontmatter { + title + authors { + name + } + } + } + } + } + skiplimit: allMarkdown( + skip: 1 + limit: 1 + ) { + totalCount + edges { node { id } } + } + findsort: allMarkdown( + filter: { + frontmatter: { + authors: { elemMatch: { name: { regex: "/^Author\\\\s\\\\d/" } } } + } + } + sort: { fields: [frontmatter___title], order: [DESC] } + ) { + totalCount + edges { + node { + frontmatter { + title + authors { + name + } + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + findsort: { + totalCount: 2, + edges: [ + { + node: { + frontmatter: { + authors: [{ name: `Author 1` }], + title: `Markdown File 2`, + }, + }, + }, + { + node: { + frontmatter: { + authors: expect.arrayContaining([ + { name: `Author 1` }, + { name: `Author 2` }, + ]), + title: `Markdown File 1`, + }, + }, + }, + ], + }, + pages: { + totalCount: 2, + edges: [ + { + node: { + frontmatter: { + authors: expect.arrayContaining([ + { name: `Author 1` }, + { name: `Author 2` }, + ]), + title: `Markdown File 1`, + }, + }, + }, + { + node: { + frontmatter: { + authors: [{ name: `Author 1` }], + title: `Markdown File 2`, + }, + }, + }, + ], + }, + skiplimit: { totalCount: 1, edges: [{ node: { id: `md2` } }] }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`paginates null result`, async () => { + const query = ` + { + allMarkdown( + skip: 1 + limit: 1, + filter: { + id: { eq: "non-existing"} + } + ) { + totalCount + edges { node { id } } + nodes { id } + } + } + ` + const results = await runQuery(query) + expect(results.errors).toBeUndefined() + expect(results.data).toMatchInlineSnapshot(` +Object { + "allMarkdown": Object { + "edges": Array [], + "nodes": Array [], + "totalCount": 0, + }, +} +`) + }) + + it(`adds nodes field as a convenience shortcut`, async () => { + const query = ` + { + allMarkdown( + skip: 1 + limit: 1 + ) { + totalCount + nodes { id } + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + totalCount: 1, + nodes: [{ id: `md2` }], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + }) + + describe(`group field`, () => { + it(`groups query results`, async () => { + const query = ` + { + allMarkdown { + group(field: frontmatter___title) { + fieldValue + edges { + node { + frontmatter { + title + date(formatString: "YYYY-MM-DD") + } + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + group: [ + { + fieldValue: `Markdown File 1`, + edges: [ + { + node: { + frontmatter: { + title: `Markdown File 1`, + date: `2019-01-01`, + }, + }, + }, + ], + }, + { + fieldValue: `Markdown File 2`, + edges: [ + { + node: { + frontmatter: { + title: `Markdown File 2`, + date: null, + }, + }, + }, + ], + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`groups query results by scalar field with resolver`, async () => { + const query = ` + { + allMarkdown { + group(field: frontmatter___date) { + fieldValue + edges { + node { + frontmatter { + title + date(formatString: "YYYY/MM/DD") + } + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + group: [ + { + fieldValue: `2019-01-01T00:00:00.000Z`, + edges: [ + { + node: { + frontmatter: { + title: `Markdown File 1`, + date: `2019/01/01`, + }, + }, + }, + ], + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + // FIXME: This is not yet possible + it.skip(`groups query results by foreign key field`, async () => { + const query = ` + { + allMarkdown { + group(field: frontmatter___authors___name) { + fieldValue + edges { + node { + frontmatter { + title + date + } + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + group: [ + { + fieldValue: `Author 1`, + edges: [ + { + node: { + frontmatter: { + title: `Markdown File 1`, + date: `2019-01-01`, + }, + }, + }, + { + node: { + frontmatter: { + title: `Markdown File 2`, + date: null, + }, + }, + }, + ], + }, + { + fieldValue: `Author 2`, + edges: [ + { + node: { + frontmatter: { + title: `Markdown File 1`, + date: `2019-01-01`, + }, + }, + }, + ], + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`groups null result`, async () => { + const query = ` + { + allMarkdown( + skip: 1 + limit: 1, + filter: { + id: { eq: "non-existing"} + } + ) { + group(field: frontmatter___title, skip: 1, limit: 1) { + field + fieldValue + } + } + } + ` + const results = await runQuery(query) + expect(results.errors).toBeUndefined() + expect(results.data).toMatchInlineSnapshot(` +Object { + "allMarkdown": Object { + "group": Array [], + }, +} +`) + }) + }) + + describe(`distinct field`, () => { + it(`returns distinct values`, async () => { + const query = ` + { + allMarkdown { + distinct(field: frontmatter___title) + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + distinct: [`Markdown File 1`, `Markdown File 2`], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + // FIXME: This is not yet possible + it.skip(`returns distinct values on foreign-key field`, async () => { + const query = ` + { + allMarkdown { + distinct(field: frontmatter___authors___name) + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + distinct: [`Author 1`, `Author 2`], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + + it(`returns distinct values on scalar field with resolver`, async () => { + const query = ` + { + allMarkdown { + distinct(field: frontmatter___date) + } + } + ` + const results = await runQuery(query) + expect(results.errors).toBeUndefined() + expect(results.data).toMatchInlineSnapshot(` +Object { + "allMarkdown": Object { + "distinct": Array [ + "2019-01-01T00:00:00.000Z", + ], + }, +} +`) + }) + + it(`handles null result`, async () => { + const query = ` + { + allMarkdown( + skip: 1 + limit: 1 + filter: { id: { eq: "non-existing" } } + ) { + distinct(field: frontmatter___title) + } + } + ` + const results = await runQuery(query) + expect(results.errors).toBeUndefined() + expect(results.data).toMatchInlineSnapshot(` +Object { + "allMarkdown": Object { + "distinct": Array [], + }, +} +`) + }) + }) + }) + + describe(`on fields added by setFieldsOnGraphQLNodeType API`, () => { + it(`returns correct results`, async () => { + const query = ` + { + allMarkdown { + edges { + node { + frontmatter { + authorNames + anotherField + } + } + } + } + } + ` + const results = await runQuery(query) + const expected = { + allMarkdown: { + edges: [ + { + node: { + frontmatter: { + anotherField: true, + authorNames: [`Author 1`, `Author 2`], + }, + }, + }, + { + node: { + frontmatter: { + anotherField: true, + authorNames: [`Author 1`], + }, + }, + }, + ], + }, + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + }) + + describe(`on fields added to the root Query type`, () => { + it(`returns correct results`, async () => { + const query = ` + { + allAuthorNames + } + ` + const results = await runQuery(query) + const expected = { + allAuthorNames: [`Author 1`, `Author 2`], + } + expect(results.errors).toBeUndefined() + expect(results.data).toEqual(expected) + }) + }) + + describe(`on fields added from third-party schema`, () => { + it.todo(`returns correct results`) + }) + + describe(`on foreign-key fields`, () => { + it(`with the ___NODE convention`, async () => { + const query = ` + { + allMarkdown { + nodes { + frontmatter { + reviewer { + name + } + } + } + } + } + ` + const results = await runQuery(query) + expect(results.errors).toBeUndefined() + expect(results.data).toMatchInlineSnapshot(` +Object { + "allMarkdown": Object { + "nodes": Array [ + Object { + "frontmatter": Object { + "reviewer": Object { + "name": "Author 2", + }, + }, + }, + Object { + "frontmatter": Object { + "reviewer": null, + }, + }, + ], + }, +} +`) + }) + + it(`with defined field mappings`, async () => { + const query = ` + { + allMarkdown { + nodes { + frontmatter { + reviewerByEmail { + name + } + } + } + } + } + ` + const results = await runQuery(query) + expect(results.errors).toBeUndefined() + expect(results.data).toMatchInlineSnapshot(` +Object { + "allMarkdown": Object { + "nodes": Array [ + Object { + "frontmatter": Object { + "reviewerByEmail": Object { + "name": "Author 2", + }, + }, + }, + Object { + "frontmatter": Object { + "reviewerByEmail": null, + }, + }, + ], + }, +} +`) + }) + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/rebuild-schema.js b/packages/gatsby/src/schema/__tests__/rebuild-schema.js new file mode 100644 index 0000000000000..2d6cf947804e1 --- /dev/null +++ b/packages/gatsby/src/schema/__tests__/rebuild-schema.js @@ -0,0 +1,129 @@ +const { store } = require(`../../redux`) +const { build, rebuildWithSitePage } = require(`..`) +require(`../../db/__tests__/fixtures/ensure-loki`)() + +const firstPage = { + id: `page1`, + parent: null, + children: [], + internal: { type: `SitePage` }, + keep: `Page`, + fields: { + oldKey: `value`, + }, +} + +const secondPage = { + id: `page2`, + parent: null, + children: [], + internal: { type: `SitePage` }, + fields: { + key: `value`, + }, + context: { + key: `value`, + }, +} + +const nodes = [firstPage] + +describe(`build and update schema`, () => { + let schema + + beforeAll(async () => { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) + + await build({}) + schema = store.getState().schema + }) + + it(`updates SitePage on rebuild`, async () => { + let fields + let inputFields + + const initialFields = [ + `id`, + `parent`, + `children`, + `internal`, + `keep`, + `fields`, + ] + + fields = Object.keys(schema.getType(`SitePage`).getFields()) + expect(fields.length).toBe(6) + expect(fields).toEqual(initialFields) + + inputFields = Object.keys(schema.getType(`SitePageFilterInput`).getFields()) + expect(fields.length).toBe(6) + expect(inputFields).toEqual(initialFields) + + // Rebuild Schema + store.dispatch({ type: `CREATE_NODE`, payload: secondPage }) + await rebuildWithSitePage({}) + schema = store.getState().schema + + fields = Object.keys(schema.getType(`SitePage`).getFields()) + expect(fields.length).toBe(7) + expect(fields).toEqual(initialFields.concat(`context`)) + + inputFields = Object.keys(schema.getType(`SitePageFilterInput`).getFields()) + expect(fields.length).toBe(7) + expect(inputFields).toEqual(initialFields.concat(`context`)) + + const fieldsEnum = schema + .getType(`SitePageFieldsEnum`) + .getValue(`context___key`) + expect(fieldsEnum).toBeDefined() + + const sortFieldsEnum = schema.getType(`SitePageSortInput`).getFields() + .fields.type.ofType + expect(sortFieldsEnum.getValue(`context___key`)).toBeDefined() + }) + + // FIXME: This is not a problem as long as the only use of rebuilding the + // schema to add a `context` field to `SitePage`. But it needs to work + // if we want to enable on-demand schema regeneration. + // This currently does not work because we need to invalidate all FilterInput + // composers on nested types as well. Alternatively, use a local cache + // in `filter.js` instead of checking `schemaComposer.has()`. + it.skip(`updates nested types on rebuild`, async () => { + let fields + let inputFields + + fields = Object.keys(schema.getType(`SitePageFields`).getFields()) + expect(fields.length).toBe(1) + expect(fields).toEqual([`oldKey`]) + inputFields = Object.keys( + schema.getType(`SitePageSitePageFieldsFilterInput`).getFields() + ) + expect(inputFields.length).toBe(1) + expect(inputFields).toEqual([`oldKey`]) + + // Rebuild Schema + store.dispatch({ type: `CREATE_NODE`, payload: secondPage }) + await rebuildWithSitePage({}) + schema = store.getState().schema + + fields = Object.keys(schema.getType(`SitePageFields`).getFields()) + expect(fields.length).toBe(2) + expect(fields).toEqual([`oldKey`, `key`]) + + inputFields = Object.keys( + schema.getType(`SitePageSitePageFieldsFilterInput`).getFields() + ) + expect(inputFields.length).toBe(2) + expect(inputFields).toEqual([`oldKey`, `key`]) + + const fieldsEnum = schema + .getType(`SitePageFieldsEnum`) + .getValues() + .map(value => value.name) + expect(fieldsEnum.includes(`fields___oldKey`)).toBeTruthy() + expect(fieldsEnum.includes(`fields___key`)).toBeTruthy() + }) +}) diff --git a/packages/gatsby/src/schema/__tests__/run-query.js b/packages/gatsby/src/schema/__tests__/run-query.js index 3f1f005a7fcac..446d77fe6f8c2 100644 --- a/packages/gatsby/src/schema/__tests__/run-query.js +++ b/packages/gatsby/src/schema/__tests__/run-query.js @@ -1,6 +1,4 @@ -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`)() @@ -137,13 +135,19 @@ const makeNodes = () => [ ] function makeGqlType(nodes) { - return new GraphQLObjectType({ - name: `Test`, - fields: inferObjectStructureFromNodes({ - nodes, - types: [{ name: `Test` }], - }), - }) + const { createSchemaComposer } = require(`../../schema/schema-composer`) + const { addInferredFields } = require(`../infer/add-inferred-fields`) + const { getExampleValue } = require(`../infer/example-value`) + + const sc = createSchemaComposer() + const typeName = `Test` + const tc = sc.createTC(typeName) + addInferredFields({ + schemaComposer: sc, + typeComposer: tc, + exampleValue: getExampleValue({ nodes, typeName }), + }) + return tc.getType() } function resetDb(nodes) { @@ -157,10 +161,8 @@ async function runQuery(queryArgs) { const nodes = makeNodes() resetDb(nodes) const gqlType = makeGqlType(nodes) - const context = {} const args = { gqlType, - context, firstOnly: false, queryArgs, } @@ -453,7 +455,7 @@ describe(`collection fields`, () => { let result = await runQuery({ limit: 10, sort: { - fields: [`frontmatter___blue`], + fields: [`frontmatter.blue`], order: [`desc`], }, }) @@ -496,7 +498,7 @@ describe(`collection fields`, () => { let result = await runQuery({ limit: 10, sort: { - fields: [`frontmatter___blue`, `id`], + fields: [`frontmatter.blue`, `id`], order: [`desc`], // `id` field will be sorted asc }, }) @@ -511,7 +513,7 @@ describe(`collection fields`, () => { let result = await runQuery({ limit: 10, sort: { - fields: [`frontmatter___blue`, `id`], + fields: [`frontmatter.blue`, `id`], order: [`desc`, `desc`], // `id` field will be sorted desc }, }) diff --git a/packages/gatsby/src/schema/build-connection-fields.js b/packages/gatsby/src/schema/build-connection-fields.js deleted file mode 100644 index da193e0f5d57c..0000000000000 --- a/packages/gatsby/src/schema/build-connection-fields.js +++ /dev/null @@ -1,114 +0,0 @@ -// @flow -const _ = require(`lodash`) -const { - GraphQLInt, - GraphQLList, - GraphQLString, - GraphQLEnumType, -} = require(`graphql`) -const { - connectionArgs, - connectionDefinitions, - connectionFromArray, -} = require(`graphql-skip-limit`) - -const { buildFieldEnumValues } = require(`./data-tree-utils`) - -module.exports = type => { - const enumValues = buildFieldEnumValues({ - nodes: type.nodes, - typeName: type.name, - }) - const { connectionType: groupConnection } = connectionDefinitions({ - name: _.camelCase(`${type.name} groupConnection`), - nodeType: type.nodeObjectType, - connectionFields: () => { - return { - field: { type: GraphQLString }, - fieldValue: { type: GraphQLString }, - totalCount: { type: GraphQLInt }, - } - }, - }) - - return { - totalCount: { - type: GraphQLInt, - }, - distinct: { - type: new GraphQLList(GraphQLString), - args: { - field: { - type: new GraphQLEnumType({ - name: _.camelCase(`${type.name} distinct enum`), - values: enumValues, - }), - }, - }, - resolve(connection, args) { - let fieldName = args.field - if (_.includes(args.field, `___`)) { - fieldName = args.field.replace(/___/g, `.`) - } - const fields = connection.edges.map(edge => _.get(edge.node, fieldName)) - return _.sortBy(_.filter(_.uniq(_.flatten(fields)), _.identity)) - }, - }, - group: { - type: new GraphQLList(groupConnection), - args: { - ...connectionArgs, - field: { - type: new GraphQLEnumType({ - name: _.camelCase(`${type.name} group enum`), - values: enumValues, - }), - }, - }, - resolve(connection, args) { - const fieldName = args.field.replace(/___/g, `.`) - const connectionNodes = connection.edges.map(edge => edge.node) - - let groups = {} - // Do a custom grouping for arrays (w/ a group per array value) - // Find the first node with this field and check if it's an array. - if (_.isArray(_.get(_.find(connectionNodes, fieldName), fieldName))) { - const values = _.uniq( - _.reduce( - connectionNodes, - (vals, n) => { - if (_.has(n, fieldName)) { - return vals.concat(_.get(n, fieldName)) - } else { - return vals - } - }, - [] - ) - ) - values.forEach(val => { - groups[val] = _.filter(connectionNodes, n => - _.includes(_.get(n, fieldName), val) - ) - }) - } else { - groups = _.groupBy(connectionNodes, fieldName) - } - const groupConnections = [] - - // Do default sort by fieldValue - const sortedFieldValues = _.sortBy(_.keys(groups)) - _.each(sortedFieldValues, fieldValue => { - const groupNodes = groups[fieldValue] - const groupConn = connectionFromArray(groupNodes, args) - groupConn.totalCount = groupNodes.length - groupConn.field = fieldName - groupConn.fieldValue = fieldValue - groupConnections.push(groupConn) - }) - - return groupConnections - }, - }, - } -} diff --git a/packages/gatsby/src/schema/build-node-connections.js b/packages/gatsby/src/schema/build-node-connections.js deleted file mode 100644 index 6ea3524d86970..0000000000000 --- a/packages/gatsby/src/schema/build-node-connections.js +++ /dev/null @@ -1,121 +0,0 @@ -// @flow -const _ = require(`lodash`) -const { connectionArgs, connectionDefinitions } = require(`graphql-skip-limit`) -const { GraphQLInputObjectType } = require(`graphql`) -const { - inferInputObjectStructureFromNodes, -} = require(`./infer-graphql-input-fields`) -const { - inferInputObjectStructureFromFields, -} = require(`./infer-graphql-input-fields-from-fields`) -const buildSortArg = require(`./create-sort-field`) -const buildConnectionFields = require(`./build-connection-fields`) -const createPageDependency = require(`../redux/actions/add-page-dependency`) -const { connectionFromArray } = require(`graphql-skip-limit`) -const { run: runQuery } = require(`../db/nodes-query`) - -function handleQueryResult({ results, queryArgs, path }) { - if (results && results.length) { - const connection = connectionFromArray(results, queryArgs) - connection.totalCount = results.length - - if (results[0].internal) { - const connectionType = connection.edges[0].node.internal.type - createPageDependency({ - path, - connection: connectionType, - }) - } - return connection - } else { - return null - } -} - -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 }) - } -} - -function buildFilterArg(typeName, filterFields) { - return { - type: new GraphQLInputObjectType({ - name: _.camelCase(`filter ${typeName}`), - description: `Filter connection on its fields`, - fields: () => filterFields, - }), - } -} - -function buildFieldConfig(processedType) { - const { nodes, nodeObjectType } = processedType - const typeName = `${processedType.name}Connection` - const { connectionType: outputType } = connectionDefinitions({ - nodeType: nodeObjectType, - connectionFields: () => buildConnectionFields(processedType), - }) - - const inferredInputFieldsFromNodes = inferInputObjectStructureFromNodes({ - nodes, - typeName, - }) - - const inferredInputFieldsFromPlugins = inferInputObjectStructureFromFields({ - fields: processedType.fieldsFromPlugins, - typeName, - }) - - 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 deleted file mode 100644 index daa407a2d0604..0000000000000 --- a/packages/gatsby/src/schema/build-node-types.js +++ /dev/null @@ -1,282 +0,0 @@ -// @flow -const _ = require(`lodash`) -const { - GraphQLObjectType, - GraphQLNonNull, - GraphQLID, - GraphQLList, -} = require(`graphql`) -const tracer = require(`opentracing`).globalTracer() - -const apiRunner = require(`../utils/api-runner-node`) -const { inferObjectStructureFromNodes } = require(`./infer-graphql-type`) -const { - inferInputObjectStructureFromFields, -} = require(`./infer-graphql-input-fields-from-fields`) -const { - inferInputObjectStructureFromNodes, -} = require(`./infer-graphql-input-fields`) -const { nodeInterface } = require(`./node-interface`) -const { getNodesByType, getTypes, getNode } = require(`../db/nodes`) -const pageDependencyResolver = require(`./page-dependency-resolver`) -const { setFileNodeRootType } = require(`./types/type-file`) -const { - getExampleValues, - clearTypeExampleValues, -} = require(`./data-tree-utils`) -const { run: runQuery } = require(`../db/nodes-query`) -const lazyFields = require(`./lazy-fields`) - -import type { ProcessedNodeType } from "./infer-graphql-type" - -type TypeMap = { - [typeName: string]: ProcessedNodeType, -} - -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)), - }, -} - -function groupChildNodesByType(nodes) { - return _(nodes) - .flatMap(node => node.children.map(getNode)) - .groupBy(node => - node.internal ? _.camelCase(node.internal.type) : undefined - ) - .value() -} - -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) - ) - return _.assign.apply(null, [{}, ...configMaps]) -} - -function inferFields({ nodes, pluginFields, processedTypes }) { - // Create children fields for each type of children e.g. - // "childrenMarkdownRemark". - const childFields = inferChildFields(nodes, processedTypes) - - const inferredFields = inferObjectStructureFromNodes({ - nodes, - types: _.values(processedTypes), - ignoreFields: Object.keys(pluginFields), - }) - - return { - ...defaultNodeFields, - ...childFields, - ...inferredFields, - ...pluginFields, - } -} - -function buildResolver(gqlType) { - return async (a, queryArgs) => { - if (!_.isObject(queryArgs)) { - queryArgs = {} - } - - const results = await runQuery({ - queryArgs: { - filter: { - ...queryArgs, - }, - }, - firstOnly: true, - gqlType, - }) - - if (results.length > 0) { - return results[0] - } else { - return null - } - } -} - -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, - }) -} - -async function buildProcessedType({ nodes, typeName, processedTypes, span }) { - const intermediateType = {} - - intermediateType.name = typeName - intermediateType.nodes = nodes - - const pluginFields = await apiRunner(`setFieldsOnGraphQLNodeType`, { - type: intermediateType, - traceId: `initial-setFieldsOnGraphQLNodeType`, - parentSpan: span, - }) - - 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 exampleValue = getExampleValues({ - nodes, - typeName, - ignoreFields: Object.keys(mergedFieldsFromPlugins), - }) - - const nodeInputFields = inferInputObjectStructureFromNodes({ - nodes, - typeName, - exampleValue, - }) - - const filterFields = _.merge( - {}, - nodeInputFields.inferredFields, - pluginInputFields.inferredFields - ) - - return { - ...intermediateType, - fieldsFromPlugins: mergedFieldsFromPlugins, - nodeObjectType: gqlType, - node: { - name: typeName, - type: gqlType, - args: filterFields, - resolve: pageDependencyResolver(buildResolver(gqlType)), - }, - } -} - -async function buildAll({ parentSpan }) { - const spanArgs = parentSpan ? { childOf: parentSpan } : {} - const span = tracer.startSpan(`build schema`, spanArgs) - - const types = getTypes() - const processedTypes: TypeMap = {} - - clearTypeExampleValues() - - // 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, async typeName => { - const nodes = getNodesByType(typeName).filter( - node => node.internal && !node.internal.ignoreType - ) - if (!nodes.length) return - - 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/context.js b/packages/gatsby/src/schema/context.js new file mode 100644 index 0000000000000..9e037af253dd9 --- /dev/null +++ b/packages/gatsby/src/schema/context.js @@ -0,0 +1,18 @@ +const { LocalNodeModel } = require(`./node-model`) + +const withResolverContext = (context, schema) => { + const nodeStore = require(`../db/nodes`) + const createPageDependency = require(`../redux/actions/add-page-dependency`) + + return { + ...context, + nodeModel: new LocalNodeModel({ + nodeStore, + schema, + createPageDependency, + path: context.path, + }), + } +} + +module.exports = withResolverContext diff --git a/packages/gatsby/src/schema/create-key.js b/packages/gatsby/src/schema/create-key.js deleted file mode 100644 index 6a6a72360eb61..0000000000000 --- a/packages/gatsby/src/schema/create-key.js +++ /dev/null @@ -1,30 +0,0 @@ -// @flow -const invariant = require(`invariant`) -const nonAlphaNumericExpr = new RegExp(`[^a-zA-Z0-9_]`, `g`) - -/** - * GraphQL field names must be a string and cannot contain anything other than - * alphanumeric characters and `_`. They also can't start with `__` which is - * reserved for internal fields (`___foo` doesn't work either). - */ -module.exports = (key: string): string => { - // Check if the key is really a string otherwise GraphQL will throw. - invariant( - typeof key === `string`, - `Graphql field name (key) is not a string -> ${key}` - ) - - const replaced = key.replace(nonAlphaNumericExpr, `_`) - - // key is invalid; normalize with leading underscore and rest with x - if (replaced.match(/^__/)) { - return replaced.replace(/_/g, (char, index) => (index === 0 ? `_` : `x`)) - } - - // key is invalid (starts with numeric); normalize with leading underscore - if (replaced.match(/^[0-9]/)) { - return `_` + replaced - } - - return replaced -} diff --git a/packages/gatsby/src/schema/create-sort-field.js b/packages/gatsby/src/schema/create-sort-field.js deleted file mode 100644 index 5353f4942ff05..0000000000000 --- a/packages/gatsby/src/schema/create-sort-field.js +++ /dev/null @@ -1,50 +0,0 @@ -// @flow -const { - GraphQLInputObjectType, - GraphQLList, - GraphQLEnumType, - GraphQLNonNull, -} = require(`graphql`) -const _ = require(`lodash`) -const createKey = require(`./create-key`) - -// builds an input field for sorting, given an array of names to sort on -module.exports = function createSortField( - typeName: string, - fieldNames: string[] -) { - const enumValues = {} - fieldNames.forEach(field => { - enumValues[createKey(field)] = { value: field } - }) - - const SortByType = new GraphQLEnumType({ - name: `${typeName}SortByFieldsEnum`, - values: enumValues, - }) - - return { - type: new GraphQLInputObjectType({ - name: _.camelCase(`${typeName} sort`), - fields: { - fields: { - name: _.camelCase(`${typeName} sortFields`), - type: new GraphQLNonNull(new GraphQLList(SortByType)), - }, - order: { - name: _.camelCase(`${typeName} sortOrder`), - defaultValue: [`ASC`], - type: new GraphQLList( - new GraphQLEnumType({ - name: _.camelCase(`${typeName} sortOrderValues`), - values: { - ASC: { value: `asc` }, - DESC: { value: `desc` }, - }, - }) - ), - }, - }, - }), - } -} diff --git a/packages/gatsby/src/schema/create-type-name.js b/packages/gatsby/src/schema/create-type-name.js deleted file mode 100644 index 2e01af34658e6..0000000000000 --- a/packages/gatsby/src/schema/create-type-name.js +++ /dev/null @@ -1,28 +0,0 @@ -const _ = require(`lodash`) - -const seenNames = new Map() - -const typeNameRestriction = /^[_a-zA-Z][_a-zA-Z0-9]*$/ - -module.exports = function createTypeName(name) { - 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.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 deleted file mode 100644 index 92870ad914d23..0000000000000 --- a/packages/gatsby/src/schema/data-tree-utils.js +++ /dev/null @@ -1,361 +0,0 @@ -// @flow -const _ = require(`lodash`) -const flatten = require(`flat`) -const typeOf = require(`type-of`) -const invariant = require(`invariant`) - -const createKey = require(`./create-key`) -const { typeConflictReporter } = require(`./type-conflict-reporter`) -const DateType = require(`./types/type-date`) -const is32BitInteger = require(`../utils/is-32-bit-integer`) - -import type { TypeEntry } from "./type-conflict-reporter" - -type ExampleValue = Object - -const INVALID_VALUE = Symbol(`INVALID_VALUE`) -const isDefined = v => v != null - -const isEmptyObjectOrArray = (obj: any): boolean => { - if (obj === INVALID_VALUE) { - 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 - } else if (_.isObject(obj)) { - return _.every(obj, (value, key) => { - if (!isDefined(value)) { - return true - } else if (_.isObject(value)) { - return isEmptyObjectOrArray(value) - } else { - return false - } - }) - } - return false -} - -const isScalar = val => !_.isObject(val) || val instanceof Date - -const extractTypes = value => { - if (Array.isArray(value)) { - const uniqueTypes = _.uniq( - value.filter(isDefined).map(item => extractTypes(item).type) - ).sort() - return { - type: `array<${uniqueTypes.join(`|`)}>`, - arrayTypes: uniqueTypes, - } - } else { - const type = typeOf(value) - return { - type, - arrayTypes: [], - } - } -} - -const isMixOfDateObjectsAndDateStrings = ( - values: any[], - uniqueTypes: string[] -): boolean => { - if ( - uniqueTypes.length === 2 && - uniqueTypes.includes(`string`) && - uniqueTypes.includes(`date`) - ) { - const allValuesAreDates = values.every(value => { - if (typeOf(value) === `date`) return true - - // use infer checker to determine if string is a date - return DateType.shouldInfer(value) - }) - - return allValuesAreDates - } - - return false -} - -const conflictIsValidSpecialCase = ( - entries: TypeEntry[], - entriesOfUniqueType: TypeEntry[] -): boolean => { - const isConsistentlyScalarOrArray = entriesOfUniqueType.every( - entry => - entry.arrayTypes.length > 0 === - entriesOfUniqueType[0].arrayTypes.length > 0 - ) - if (isConsistentlyScalarOrArray) { - // Get values and run them through special cases, to see if there actually - // is a conflict. This is done so late in process, because those checks - // would be expensive to do earlier during extraction, so we do them - // only when we have potential conflict. - - let uniqueTypes: string[] - let values: any[] - const isArray = entriesOfUniqueType[0].arrayTypes.length > 0 - - if (isArray) { - values = _.flatten(entries.map(entry => entry.value)) - uniqueTypes = _.uniq( - _.flatten(entriesOfUniqueType.map(entry => entry.arrayTypes)) - ) - } else { - values = entries.map(entry => entry.value) - uniqueTypes = entriesOfUniqueType.map(entry => entry.type) - } - - return isMixOfDateObjectsAndDateStrings(values, uniqueTypes) - } - return false -} - -const getExampleScalarFromArray = values => - _.reduce( - values, - (value, nextValue) => { - // Prefer floats over ints as they're more specific. - if (nextValue && _.isNumber(nextValue) && !is32BitInteger(nextValue)) { - return nextValue - } else if (value === null) { - return nextValue - } else { - return value - } - }, - null - ) - -const extractFromEntries = ( - entries: TypeEntry[], - selector: string, - key: string -): ?mixed => { - const entriesOfUniqueType = _.uniqBy(entries, entry => entry.type) - - if (entriesOfUniqueType.length == 0) { - // skip if no defined types - return null - } else if ( - entriesOfUniqueType.length > 1 || - entriesOfUniqueType[0].arrayTypes.length > 1 - ) { - // there is multiple types or array of multiple types - // that aren't handled by any special case - if (!conflictIsValidSpecialCase(entries, entriesOfUniqueType)) { - if (selector) { - typeConflictReporter.addConflict(selector, entriesOfUniqueType) - } - return INVALID_VALUE - } - } - - // Now we have entries of single type, we can merge them - const values = entries.map(entry => entry.value) - - const exampleValue = entriesOfUniqueType[0].value - - if (isScalar(exampleValue)) { - return getExampleScalarFromArray(values) - } else if (_.isObject(exampleValue)) { - if (Array.isArray(exampleValue)) { - const concatanedItems = _.flatten(values) - // Linked node arrays don't get reduced further as we - // want to preserve all the linked node types. - if (key.includes(`___NODE`)) { - return concatanedItems - } - - return extractFromArrays(concatanedItems, entries, selector) - } else if (_.isPlainObject(exampleValue)) { - return extractFieldExamples(values, selector) - } - } - // unsuported object - return INVALID_VALUE -} - -const extractFromArrays = (values, entries: TypeEntry[], selector: string) => { - const filteredItems = values.filter(isDefined) - if (filteredItems.length === 0) { - return null - } - if (isScalar(filteredItems[0])) { - return [getExampleScalarFromArray(filteredItems)] - } - - const flattenEntries: TypeEntry[] = _.flatten( - entries.map(entry => { - invariant( - Array.isArray(entry.value), - `this is validated in the previous call` - ) - - return entry.value.map(value => { - return { - value, - parent: entry.parent, - ...extractTypes(value), - } - }) - }) - ) - - const arrayItemExample = extractFromEntries( - flattenEntries, - `${selector}[]`, - `` - ) - if (!isDefined(arrayItemExample) || arrayItemExample === INVALID_VALUE) { - return INVALID_VALUE - } - - return [arrayItemExample] -} - -/** - * Takes an array of source nodes and returns a pristine - * example that can be used to infer types. - * - * Arrays are flattened to either: `null` for empty or sparse arrays or a - * an array of a sigle merged example. e.g: - * - * - ['red'], ['blue', 'yellow'] -> ['red'] - * - [{ color: 'red'}, { color: 'blue', ht: 5 }] -> [{ color: 'red', ht: 5 }] - * - * @param {*Nodes} args - */ -const extractFieldExamples = ( - nodes: any[], - selector: string, - ignoreFields?: string[] = [] -): ExampleValue => { - // get list of keys in all nodes - const allKeys = _(nodes) - .flatMap(_.keys) - .uniq() - - const example = {} - for (let key of allKeys) { - if (ignoreFields.includes(key)) continue - // Unfortunately an empty string as an Object key is perfectly valid JavaScript - // We ignore these because GraphQL requires keys to have names - if (key === ``) continue - const nextSelector = selector ? `${selector}.${key}` : key - - const nodeWithValues = nodes.filter(node => { - if (!node) return false - - const value = node[key] - if (_.isObject(value)) { - return !isEmptyObjectOrArray(value) - } else { - return isDefined(value) - } - }) - - // we want to keep track of nodes as we need it to get origin of data - const entries = nodeWithValues.map(node => { - const value = node[key] - return { - value, - parent: node, - ...extractTypes(value), - } - }) - - const value = extractFromEntries(entries, nextSelector, key) - if (!isDefined(value)) continue - - example[key] = value - } - - return example -} - -const buildFieldEnumValues = (options: ExampleValueOptions) => { - const enumValues = {} - const values = flatten(getExampleValues(options), { - maxDepth: 3, - safe: true, // don't flatten arrays. - delimiter: `___`, - }) - Object.keys(values).forEach(field => { - if (values[field] == null) return - enumValues[createKey(field)] = { field } - }) - - return enumValues -} - -let typeExampleValues: Map = new Map() - -const clearTypeExampleValues = () => { - typeExampleValues.clear() - typeConflictReporter.clearConflicts() -} - -type ExampleValueOptions = { - nodes: Object[], - typeName?: string, - ignoreFields?: string[], -} - -const getExampleValues = ({ - nodes, - typeName, - ignoreFields, -}: ExampleValueOptions): ExampleValue => { - const cachedValue = typeName && typeExampleValues.get(typeName) - - // if type is defined and is in example value cache return it - if (cachedValue) return cachedValue - - // if nodes were passed extract field example from it - if (nodes && nodes.length > 0) { - const exampleValue = extractFieldExamples( - nodes, - typeName || ``, - ignoreFields - ) - // if type is set - cache results - if (typeName) typeExampleValues.set(typeName, exampleValue) - return exampleValue - } - - return {} -} - -// extract a list of field names -// nested objects get flattened to "outer___inner" which will be converted back to -// "outer.inner" by run-sift -const extractFieldNames = (nodes: Object[]) => { - const values = flatten( - getExampleValues({ - nodes, - typeName: _.get(nodes[0], `internal.type`), - }), - { - maxDepth: 3, - safe: true, // don't flatten arrays. - delimiter: `___`, - } - ) - - return Object.keys(values) -} - -module.exports = { - INVALID_VALUE, - buildFieldEnumValues, - extractFieldNames, - isEmptyObjectOrArray, - clearTypeExampleValues, - getExampleValues, -} diff --git a/packages/gatsby/src/schema/index.js b/packages/gatsby/src/schema/index.js index 802ed401b7714..3601c9367618e 100644 --- a/packages/gatsby/src/schema/index.js +++ b/packages/gatsby/src/schema/index.js @@ -1,45 +1,79 @@ /* @flow */ -const _ = require(`lodash`) -const { GraphQLSchema, GraphQLObjectType } = require(`graphql`) -const { mergeSchemas } = require(`graphql-tools`) -const nodeTypes = require(`./build-node-types`) -const nodeConnections = require(`./build-node-connections`) +const tracer = require(`opentracing`).globalTracer() const { store } = require(`../redux`) -const invariant = require(`invariant`) -const { clearUnionTypes } = require(`./infer-graphql-type`) - -function buildNodesSchema(fields) { - return new GraphQLSchema({ - query: new GraphQLObjectType({ - name: `RootQueryType`, - fields, - }), - }) -} -module.exports.buildNodesSchema = buildNodesSchema +const nodeStore = require(`../db/nodes`) +const { createSchemaComposer } = require(`./schema-composer`) +const { buildSchema, rebuildSchemaWithSitePage } = require(`./schema`) +const { TypeConflictReporter } = require(`./infer/type-conflict-reporter`) module.exports.build = async ({ parentSpan }) => { - clearUnionTypes() - const typesGQL = await nodeTypes.buildAll({ parentSpan }) - const connections = nodeConnections.buildAll(_.values(typesGQL)) + const spanArgs = parentSpan ? { childOf: parentSpan } : {} + const span = tracer.startSpan(`build schema`, spanArgs) + + let { + schemaCustomization: { thirdPartySchemas, types }, + config: { mapping: typeMapping }, + } = store.getState() - // Pull off just the graphql node from each type object. - const nodes = _.mapValues(typesGQL, `node`) + const typeConflictReporter = new TypeConflictReporter() + + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types, + thirdPartySchemas, + typeMapping, + typeConflictReporter, + parentSpan, + }) + + typeConflictReporter.printConflicts() + + store.dispatch({ + type: `SET_SCHEMA_COMPOSER`, + payload: schemaComposer, + }) + store.dispatch({ + type: `SET_SCHEMA`, + payload: schema, + }) - invariant(!_.isEmpty(nodes), `There are no available GQL nodes`) - invariant(!_.isEmpty(connections), `There are no available GQL connections`) + span.finish() +} - const thirdPartySchemas = store.getState().thirdPartySchemas || [] +module.exports.rebuildWithSitePage = async ({ parentSpan }) => { + const spanArgs = parentSpan ? { childOf: parentSpan } : {} + const span = tracer.startSpan( + `rebuild schema with SitePage context`, + spanArgs + ) + let { + schemaCustomization: { composer: schemaComposer }, + config: { mapping: typeMapping }, + } = store.getState() - const gatsbySchema = buildNodesSchema({ ...connections, ...nodes }) + const typeConflictReporter = new TypeConflictReporter() - const schema = mergeSchemas({ - schemas: [gatsbySchema, ...thirdPartySchemas], + const schema = await rebuildSchemaWithSitePage({ + schemaComposer, + nodeStore, + typeMapping, + typeConflictReporter, + parentSpan, }) + typeConflictReporter.printConflicts() + + store.dispatch({ + type: `SET_SCHEMA_COMPOSER`, + payload: schemaComposer, + }) store.dispatch({ type: `SET_SCHEMA`, payload: schema, }) + + span.finish() } 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 deleted file mode 100644 index bbe0d66945e6b..0000000000000 --- a/packages/gatsby/src/schema/infer-graphql-input-fields-from-fields.js +++ /dev/null @@ -1,227 +0,0 @@ -// @flow - -const { - GraphQLInputObjectType, - GraphQLBoolean, - GraphQLString, - GraphQLFloat, - GraphQLInt, - GraphQLID, - GraphQLList, - GraphQLEnumType, - GraphQLNonNull, - GraphQLScalarType, - GraphQLObjectType, - GraphQLInterfaceType, - GraphQLUnionType, -} = require(`graphql`) - -import type { GraphQLInputType, GraphQLType } from "graphql" - -const _ = require(`lodash`) -const report = require(`gatsby-cli/lib/reporter`) -const createTypeName = require(`./create-type-name`) -const createKey = require(`./create-key`) - -type GraphQLNullableInputType = - | GraphQLScalarType - | GraphQLEnumType - | GraphQLInputObjectType - | GraphQLList - -function makeNullable(type: GraphQLInputType): GraphQLNullableInputType { - if (type instanceof GraphQLNonNull) { - return type.ofType - } - return type -} - -function convertToInputType( - type: GraphQLType, - typeMap: Set -): ?GraphQLInputType { - // track types already processed in current tree, to avoid infinite recursion - if (typeMap.has(type)) { - return null - } - const nextTypeMap = new Set(Array.from(typeMap).concat([type])) - - if (type instanceof GraphQLScalarType || type instanceof GraphQLEnumType) { - return type - } else if (type instanceof GraphQLObjectType) { - const fields = _.transform(type.getFields(), (out, fieldConfig, key) => { - const type = convertToInputType(fieldConfig.type, nextTypeMap) - if (type) out[key] = { type } - }) - if (Object.keys(fields).length === 0) { - return null - } - return new GraphQLInputObjectType({ - name: createTypeName(`${type.name}InputObject`), - fields, - }) - } else if (type instanceof GraphQLList) { - let innerType = convertToInputType(type.ofType, nextTypeMap) - return innerType ? new GraphQLList(makeNullable(innerType)) : null - } else if (type instanceof GraphQLNonNull) { - let innerType = convertToInputType(type.ofType, nextTypeMap) - return innerType ? new GraphQLNonNull(makeNullable(innerType)) : null - } else { - let message = type ? `for type: ${type.name}` : `` - if (type instanceof GraphQLInterfaceType) { - message = `GraphQLInterfaceType not yet implemented ${message}` - } else if (type instanceof GraphQLUnionType) { - message = `GraphQLUnionType not yet implemented ${message}` - } else { - message = `Invalid input type ${message}` - } - report.verbose(message) - } - - return null -} - -const scalarFilterMap = { - Int: { - eq: { type: GraphQLInt }, - ne: { type: GraphQLInt }, - gt: { type: GraphQLInt }, - gte: { type: GraphQLInt }, - lt: { type: GraphQLInt }, - lte: { type: GraphQLInt }, - in: { type: new GraphQLList(GraphQLInt) }, - nin: { type: new GraphQLList(GraphQLInt) }, - }, - Float: { - eq: { type: GraphQLFloat }, - ne: { type: GraphQLFloat }, - gt: { type: GraphQLFloat }, - gte: { type: GraphQLFloat }, - lt: { type: GraphQLFloat }, - lte: { type: GraphQLFloat }, - in: { type: new GraphQLList(GraphQLFloat) }, - nin: { type: new GraphQLList(GraphQLFloat) }, - }, - ID: { - eq: { type: GraphQLID }, - ne: { type: GraphQLID }, - in: { type: new GraphQLList(GraphQLID) }, - nin: { type: new GraphQLList(GraphQLID) }, - }, - String: { - eq: { type: GraphQLString }, - ne: { type: GraphQLString }, - regex: { type: GraphQLString }, - glob: { type: GraphQLString }, - in: { type: new GraphQLList(GraphQLString) }, - nin: { type: new GraphQLList(GraphQLString) }, - }, - Boolean: { - eq: { type: GraphQLBoolean }, - ne: { type: GraphQLBoolean }, - in: { type: new GraphQLList(GraphQLBoolean) }, - nin: { type: new GraphQLList(GraphQLBoolean) }, - }, -} - -function convertToInputFilter( - prefix: string, - type: GraphQLInputType -): ?GraphQLInputObjectType { - if (type instanceof GraphQLScalarType) { - const name = type.name - const fields = scalarFilterMap[name] - - if (fields == null) return null - return new GraphQLInputObjectType({ - name: createTypeName(`${prefix}Query${name}`), - 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: fields, - }) - } else if (type instanceof GraphQLList) { - const innerType = type.ofType - const innerFilter = convertToInputFilter(`${prefix}ListElem`, innerType) - const innerFields = innerFilter ? innerFilter.getFields() : {} - - let fields - if (innerType instanceof GraphQLInputObjectType) { - fields = { - elemMatch: { type: innerFilter }, - } - } else { - fields = { - ...innerFields, - in: { type: new GraphQLList(innerType) }, - } - } - - return new GraphQLInputObjectType({ - name: createTypeName(`${prefix}QueryList`), - fields, - }) - } else if (type instanceof GraphQLNonNull) { - return convertToInputFilter(prefix, type.ofType) - } - - return null -} - -function extractFieldNamesFromInputField( - prefix: string, - type: GraphQLInputType, - accu: string[] -) { - if (type instanceof GraphQLScalarType || type instanceof GraphQLList) { - accu.push(prefix) - } else if (type instanceof GraphQLInputObjectType) { - _.each(type.getFields(), (fieldConfig, key) => { - extractFieldNamesFromInputField( - `${prefix}___${key}`, - fieldConfig.type, - accu - ) - }) - } else if (type instanceof GraphQLNonNull) { - extractFieldNamesFromInputField(prefix, type.ofType, accu) - } -} - -// convert output fields to output fields and a list of fields to sort on -export function inferInputObjectStructureFromFields({ - fields, - typeName = ``, -}: any) { - const inferredFields = {} - const sort = [] - - _.each(fields, (fieldConfig, key) => { - const inputType = convertToInputType(fieldConfig.type, new Set()) - const inputFilter = - inputType && convertToInputFilter(_.upperFirst(key), inputType) - - if (!inputFilter) return - - inferredFields[createKey(key)] = { type: inputFilter } - - // Add sorting (but only to the top level). - if (typeName) { - extractFieldNamesFromInputField(key, inputType, sort) - } - }) - - return { inferredFields, sort } -} diff --git a/packages/gatsby/src/schema/infer-graphql-input-fields.js b/packages/gatsby/src/schema/infer-graphql-input-fields.js deleted file mode 100644 index efcb3d425cdbf..0000000000000 --- a/packages/gatsby/src/schema/infer-graphql-input-fields.js +++ /dev/null @@ -1,321 +0,0 @@ -// @flow -const { - GraphQLInputObjectType, - GraphQLBoolean, - GraphQLString, - GraphQLFloat, - GraphQLInt, - GraphQLList, -} = require(`graphql`) -const { oneLine } = require(`common-tags`) -const _ = require(`lodash`) -const invariant = require(`invariant`) -const typeOf = require(`type-of`) -const createTypeName = require(`./create-type-name`) -const createKey = require(`./create-key`) -const { - getExampleValues, - extractFieldNames, - isEmptyObjectOrArray, - INVALID_VALUE, -} = require(`./data-tree-utils`) - -const { findLinkedNode } = require(`./infer-graphql-type`) -const { getNodesByType } = require(`../db/nodes`) -const is32BitInteger = require(`../utils/is-32-bit-integer`) - -import type { - GraphQLInputFieldConfig, - GraphQLInputFieldConfigMap, -} from "graphql/type/definition" - -function typeFields(type): GraphQLInputFieldConfigMap { - switch (type) { - case `boolean`: - return { - eq: { type: GraphQLBoolean }, - ne: { type: GraphQLBoolean }, - in: { type: new GraphQLList(GraphQLBoolean) }, - nin: { type: new GraphQLList(GraphQLBoolean) }, - } - case `string`: - return { - eq: { type: GraphQLString }, - ne: { type: GraphQLString }, - regex: { type: GraphQLString }, - glob: { type: GraphQLString }, - in: { type: new GraphQLList(GraphQLString) }, - nin: { type: new GraphQLList(GraphQLString) }, - } - case `int`: - return { - eq: { type: GraphQLInt }, - ne: { type: GraphQLInt }, - gt: { type: GraphQLInt }, - gte: { type: GraphQLInt }, - lt: { type: GraphQLInt }, - lte: { type: GraphQLInt }, - in: { type: new GraphQLList(GraphQLInt) }, - nin: { type: new GraphQLList(GraphQLInt) }, - } - case `float`: - return { - eq: { type: GraphQLFloat }, - ne: { type: GraphQLFloat }, - gt: { type: GraphQLFloat }, - gte: { type: GraphQLFloat }, - lt: { type: GraphQLFloat }, - lte: { type: GraphQLFloat }, - in: { type: new GraphQLList(GraphQLFloat) }, - nin: { type: new GraphQLList(GraphQLFloat) }, - } - } - return {} -} - -function inferGraphQLInputFields({ - value, - nodes, - prefix, -}): ?GraphQLInputFieldConfig { - if (value == null || isEmptyObjectOrArray(value)) return null - - switch (typeOf(value)) { - case `array`: { - const headValue = value[0] - let headType = typeOf(headValue) - - if (headType === `number`) - headType = is32BitInteger(headValue) ? `int` : `float` - - // Determine type for in operator. - let inType - switch (headType) { - case `int`: - inType = GraphQLInt - break - case `float`: - inType = GraphQLFloat - break - case `date`: - case `string`: - inType = GraphQLString - break - case `boolean`: - inType = GraphQLBoolean - break - case `array`: - case `object`: { - let inferredField = inferGraphQLInputFields({ - value: headValue, - prefix, - nodes, - }) - invariant( - inferredField, - `Could not infer graphQL type for value: ${JSON.stringify( - Object.keys(headValue) - )}` - ) - inType = inferredField.type - break - } - default: - invariant( - false, - oneLine` - Could not infer an appropriate GraphQL input type - for value: ${headValue} of type ${headType} along path: ${prefix} - ` - ) - } - - let fields - if (headType === `object`) { - fields = { - elemMatch: { - type: inType, - }, - } - } else { - fields = { - ...typeFields(headType), - in: { type: new GraphQLList(inType) }, - } - } - - return { - type: new GraphQLInputObjectType({ - name: createTypeName(`${prefix}QueryList`), - fields, - }), - } - } - case `boolean`: { - return { - type: new GraphQLInputObjectType({ - name: createTypeName(`${prefix}QueryBoolean`), - fields: typeFields(`boolean`), - }), - } - } - case `date`: - case `string`: { - return { - type: new GraphQLInputObjectType({ - name: createTypeName(`${prefix}QueryString`), - fields: typeFields(`string`), - }), - } - } - case `object`: { - const fields = inferInputObjectStructureFromNodes({ - nodes, - prefix, - exampleValue: value, - }).inferredFields - if (!_.isEmpty(fields)) { - return { - type: new GraphQLInputObjectType({ - name: createTypeName(`${prefix}InputObject`), - fields, - }), - } - } else { - return null - } - } - case `number`: { - if (is32BitInteger(value)) { - return { - type: new GraphQLInputObjectType({ - name: createTypeName(`${prefix}QueryInteger`), - fields: typeFields(`int`), - }), - } - } else { - return { - type: new GraphQLInputObjectType({ - name: createTypeName(`${prefix}QueryFloat`), - fields: typeFields(`float`), - }), - } - } - } - default: - return null - } -} - -const EXCLUDE_KEYS = { - parent: 1, - children: 1, - $loki: 1, -} - -type InferInputOptions = { - nodes: Object[], - typeName?: string, - prefix?: string, - exampleValue?: Object, -} - -const recursiveOmitBy = (value, fn) => { - if (_.isObject(value)) { - if (_.isPlainObject(value)) { - value = _.omitBy(value, fn) - } else if (_.isArray(value)) { - // don't mutate original value - value = _.clone(value) - } - _.each(value, (v, k) => { - value[k] = recursiveOmitBy(v, fn) - }) - if (_.isEmpty(value)) { - // don't return empty objects - gatsby doesn't support these - return null - } - } - return value -} - -const linkedNodeCache = {} - -export function inferInputObjectStructureFromNodes({ - nodes, - typeName = ``, - prefix = ``, - exampleValue = null, -}: InferInputOptions): Object { - const inferredFields = {} - const isRoot = !prefix - - prefix = isRoot ? typeName : prefix - if (exampleValue === null) { - // typeName includes "Connection" string, which is not what we want, - // so extract type from first node - exampleValue = getExampleValues({ - nodes, - typeName: - nodes && nodes[0] && nodes[0].internal && nodes[0].internal.type, - }) - } - - _.each(exampleValue, (v, k) => { - let value = v - let key = k - // Remove fields for traversing through nodes as we want to control - // setting traversing up not try to automatically infer them. - if (value === INVALID_VALUE || (isRoot && EXCLUDE_KEYS[key])) return - - if (_.includes(key, `___NODE`)) { - // TODO: Union the objects in array - 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 = getNodesByType(linkedNode.internal.type) - value = getExampleValues({ - nodes: relatedNodes, - typeName: linkedNode.internal.type, - }) - value = recursiveOmitBy(value, (_v, _k) => _.includes(_k, `___NODE`)) - linkedNodeCache[linkedNode.internal.type] = value - } - - if (isArray) { - value = [value] - } - - ;[key] = key.split(`___`) - } - - let field = inferGraphQLInputFields({ - nodes, - value, - prefix: `${prefix}${_.upperFirst(key)}`, - }) - - if (field === null) return - inferredFields[createKey(key)] = field - }) - - // Add sorting (but only to the top level). - let sort = [] - if (typeName) { - sort = extractFieldNames(nodes) - } - - return { inferredFields, sort } -} diff --git a/packages/gatsby/src/schema/infer-graphql-type.js b/packages/gatsby/src/schema/infer-graphql-type.js deleted file mode 100644 index 87e29f8c14014..0000000000000 --- a/packages/gatsby/src/schema/infer-graphql-type.js +++ /dev/null @@ -1,419 +0,0 @@ -// @flow -const { - GraphQLObjectType, - GraphQLBoolean, - GraphQLString, - GraphQLFloat, - GraphQLInt, - GraphQLList, - GraphQLUnionType, -} = require(`graphql`) -const _ = require(`lodash`) -const invariant = require(`invariant`) -const { oneLine } = require(`common-tags`) - -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 { - getExampleValues, - isEmptyObjectOrArray, - INVALID_VALUE, -} = require(`./data-tree-utils`) -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 { - GraphQLFieldConfig, - GraphQLFieldConfigMap, -} from "graphql/type/definition" - -export type ProcessedNodeType = { - name: string, - nodes: any[], - node: GraphQLFieldConfig<*, *>, - fieldsFromPlugins: any, - nodeObjectType: GraphQLOutputType, -} - -function inferGraphQLType({ - exampleValue, - selector, - nodes, - types, - ...otherArgs -}): ?GraphQLFieldConfig<*, *> { - if (exampleValue == null || isEmptyObjectOrArray(exampleValue)) return null - let fieldName = selector.split(`.`).pop() - - // Check this before checking for array as FileType has - // builtin support for inferring array of files and inferred - // array type will have faster resolver than resolving array - // of files separately. - if (FileType.shouldInfer(nodes, selector, exampleValue)) { - return _.isArray(exampleValue) ? FileType.getListType() : FileType.getType() - } - - if (Array.isArray(exampleValue)) { - exampleValue = exampleValue[0] - - if (exampleValue == null) return null - - let inferredType = inferGraphQLType({ - ...otherArgs, - exampleValue, - selector, - nodes, - types, - }) - invariant( - inferredType, - `Could not infer graphQL type for value: ${exampleValue}` - ) - - const { type, args = null, resolve = null } = inferredType - - const listType = { type: new GraphQLList(type), args } - - if (resolve) { - // If inferredType has resolve function wrap it with Array.map - listType.resolve = (object, args, context, resolveInfo) => { - const fieldValue = object[fieldName] - if (!fieldValue) { - return null - } - - // Field resolver expects first parameter to be plain object - // containing key with name of field we want to resolve. - return fieldValue.map(value => - resolve({ [fieldName]: value }, args, context, resolveInfo) - ) - } - } - - return listType - } - - if ( - // momentjs crashes when it encounters a Symbol, - // so check against that - typeof exampleValue !== `symbol` && - DateType.shouldInfer(exampleValue) - ) { - return DateType.getType() - } - - switch (typeof exampleValue) { - case `boolean`: - return { type: GraphQLBoolean } - case `string`: - return { type: GraphQLString } - case `object`: { - const typeName = createTypeName(fieldName) - return { - type: new GraphQLObjectType({ - name: typeName, - fields: _inferObjectStructureFromNodes( - { - ...otherArgs, - selector, - nodes, - types, - typeName, - }, - exampleValue - ), - }), - } - } - case `number`: - return is32BitInteger(exampleValue) - ? { type: GraphQLInt } - : { type: GraphQLFloat } - default: - return null - } -} - -function inferFromMapping( - value, - mapping, - fieldSelector, - types -): ?GraphQLFieldConfig<*, *> { - const linkedType = mapping[fieldSelector].split(`.`)[0] - const linkedField = - mapping[fieldSelector].slice(linkedType.length + 1) || `id` - - const matchedTypes = types.filter(type => type.name === linkedType) - if (_.isEmpty(matchedTypes)) { - console.log(`Couldn't find a matching node type for "${fieldSelector}"`) - return null - } - - const findNode = fieldValue => - getNodesByType(linkedType).find(n => _.get(n, linkedField) === fieldValue) - - if (_.isArray(value)) { - return { - type: new GraphQLList(matchedTypes[0].nodeObjectType), - resolve: pageDependencyResolver((node, a, b, { fieldName }) => { - const fieldValue = node[fieldName] - if (fieldValue) { - return fieldValue.map(findNode) - } else { - return null - } - }), - } - } - - return { - type: matchedTypes[0].nodeObjectType, - resolve: (node, a, b, { fieldName }) => { - const fieldValue = node[fieldName] - - if (fieldValue) { - return findNode(fieldValue) - } else { - return null - } - }, - } -} - -function findLinkedNodeByField(linkedField, value) { - return getNodes().find(n => n[linkedField] === value) -} - -export function findLinkedNode(value, linkedField) { - let linkedNode - // If the field doesn't link to the id, use that for searching. - if (linkedField) { - linkedNode = findLinkedNodeByField(linkedField, value) - // Else the field is linking to the node's id, the default. - } else { - linkedNode = getNode(value) - } - return linkedNode -} - -function inferFromFieldName( - value, - key, - selector, - types -): GraphQLFieldConfig<*, *> { - const linkedField = key.split(`___NODE___`)[1] - - const validateLinkedNode = linkedNode => { - invariant( - linkedNode, - oneLine` - Encountered an error trying to infer a GraphQL type for: "${selector}". - There is no corresponding node with the ${linkedField || `id`} - field matching: "${value}" - ` - ) - } - const validateField = (linkedNode, field) => { - invariant( - field, - oneLine` - Encountered an error trying to infer a GraphQL type for: "${selector}". - There is no corresponding GraphQL type "${ - linkedNode.internal.type - }" available - to link to this node. - ` - ) - } - - const findType = typeName => types.find(type => type.name === typeName) - - if (Array.isArray(value)) { - const linkedNodes = value.map(v => findLinkedNode(v, linkedField)) - linkedNodes.forEach(node => validateLinkedNode(node)) - const linkedTypes = [...new Set(linkedNodes.map(n => n.internal.type))] - const fields = linkedTypes.map(findType) - fields.forEach((field, i) => validateField(linkedNodes[i], field)) - - let type - // If there's more than one type, we'll create a union type. - if (fields.length > 1) { - const typeName = `Union_${key}_${linkedTypes.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 [${linkedTypes - .sort() - .join(`, `)}]`, - types: fields.map(f => f.nodeObjectType), - resolveType: node => node.internal.type, - }) - unionTypes.set(typeName, type) - } - } else { - type = fields[0].nodeObjectType - } - - return { - type: new GraphQLList(type), - resolve: pageDependencyResolver(node => { - let fieldValue = node[key] - if (fieldValue) { - return fieldValue.map(value => findLinkedNode(value, linkedField)) - } else { - return null - } - }), - } - } - - const linkedNode = findLinkedNode(value, linkedField) - validateLinkedNode(linkedNode) - const field = findType(linkedNode.internal.type) - validateField(linkedNode, field) - return { - type: field.nodeObjectType, - resolve: pageDependencyResolver(node => - findLinkedNode(node[key], linkedField) - ), - } -} - -type inferTypeOptions = { - nodes: Object[], - 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, typeName }: inferTypeOptions, - exampleValue: ?Object -): GraphQLFieldConfigMap<*, *> { - const config = store.getState().config - const isRoot = !selector - const mapping = config && config.mapping - - // Ensure nodes have internal key with object. - nodes = nodes.map(n => (n.internal ? n : { ...n, internal: {} })) - - const rootTypeName: string = nodes[0].internal.type - if (!typeName) { - typeName = rootTypeName - } - - let resolvedExample: Object = - exampleValue != null - ? exampleValue - : getExampleValues({ nodes, typeName: rootTypeName, ignoreFields }) - - const inferredFields = {} - _.each(resolvedExample, (value, key) => { - // Remove fields common to the top-level of all nodes. We add these - // elsewhere so don't need to infer their type. - if (value === INVALID_VALUE || (isRoot && EXCLUDE_KEYS[key])) return - - // 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 = `${rootTypeName}.${nextSelector}` - - let fieldName = key - let inferredField - - // First check for manual field => type mappings in the site's - // gatsby-config.js - if (mapping && _.includes(Object.keys(mapping), fieldSelector)) { - inferredField = inferFromMapping(value, mapping, fieldSelector, types) - - // Second if the field has a suffix of `___NODE`, we use the field value - // to find the linked node. By default we use the `id` as foreign key, - // but a foreign key can be specified with `___NODE___fieldName`. - } else if (key.includes(`___NODE`)) { - inferredField = inferFromFieldName(value, key, nextSelector, types) - ;[fieldName] = key.split(`___`) - lazyFields.add(typeName, fieldName) - } - - // Replace unsupported values - const sanitizedFieldName = createKey(fieldName) - - // If a pluging has already provided a type for this, don't infer it. - if (ignoreFields && ignoreFields.includes(sanitizedFieldName)) { - return - } - - // Finally our automatic inference of field value type. - if (!inferredField) { - inferredField = inferGraphQLType({ - nodes, - types, - exampleValue: value, - selector: nextSelector, - }) - } - - if (!inferredField) return - - // If sanitized field name is different from original field name - // add resolve passthrough to reach value using original field name - if (sanitizedFieldName !== fieldName) { - const { - resolve: fieldResolve, - ...inferredFieldWithoutResolve - } = inferredField - - // Using copy if field as we sometimes have predefined frozen - // field definitions and we can't mutate them. - inferredField = inferredFieldWithoutResolve - - if (fieldResolve) { - // If field has resolver, call it with adjusted resolveInfo - // that points to original field name - inferredField.resolve = (source, args, context, resolveInfo) => - fieldResolve(source, args, context, { - ...resolveInfo, - fieldName: fieldName, - }) - } else { - inferredField.resolve = source => source[fieldName] - } - } - - inferredFields[sanitizedFieldName] = inferredField - }) - - return inferredFields -} - -export function inferObjectStructureFromNodes(options: inferTypeOptions) { - return _inferObjectStructureFromNodes(options, null) -} - -export function clearUnionTypes() { - unionTypes.clear() -} diff --git a/packages/gatsby/src/schema/infer/__tests__/__snapshots__/example-value.js.snap b/packages/gatsby/src/schema/infer/__tests__/__snapshots__/example-value.js.snap new file mode 100644 index 0000000000000..d127c514ba489 --- /dev/null +++ b/packages/gatsby/src/schema/infer/__tests__/__snapshots__/example-value.js.snap @@ -0,0 +1,167 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Get example value for type inference build enum values for fields from array on nodes 1`] = ` +Object { + "anArray": Object { + "field": "anArray", + }, + "context___nestedObject___name": Object { + "field": "context.nestedObject.name", + }, + "context___nestedObject___someOtherProperty": Object { + "field": "context.nestedObject.someOtherProperty", + }, + "date": Object { + "field": "date", + }, + "frontmatter___blue": Object { + "field": "frontmatter.blue", + }, + "frontmatter___circle": Object { + "field": "frontmatter.circle", + }, + "frontmatter___date": Object { + "field": "frontmatter.date", + }, + "frontmatter___draft": Object { + "field": "frontmatter.draft", + }, + "frontmatter___title": Object { + "field": "frontmatter.title", + }, + "hair": Object { + "field": "hair", + }, + "key_with__unsupported_values": Object { + "field": "key_with__unsupported_values", + }, + "name": Object { + "field": "name", + }, + "nestedArrays": Object { + "field": "nestedArrays", + }, + "objectsInArray": Object { + "field": "objectsInArray", + }, + "objectsInArray___field1": Object { + "field": "objectsInArray.field1", + }, + "objectsInArray___field2": Object { + "field": "objectsInArray.field2", + }, + "objectsInArray___field3": Object { + "field": "objectsInArray.field3", + }, +} +`; + +exports[`Get example value for type inference builds field examples from an array of nodes 1`] = ` +Object { + "anArray": Array [ + 1, + ], + "context": Object { + "nestedObject": Object { + "name": "Inner name", + "someOtherProperty": 1, + }, + }, + "date": "2006-07-22T22:39:53.000Z", + "frontmatter": Object { + "blue": 100, + "circle": "happy", + "date": "2006-07-22T22:39:53.000Z", + "draft": false, + "title": "The world of dash and adventure", + }, + "hair": 1, + "key-with..unsupported-values": true, + "name": "The Mad Max", + "nestedArrays": Array [ + Array [ + 1, + ], + ], + "objectsInArray": Array [ + Object { + "field1": true, + "field2": 1, + "field3": "foo", + }, + ], +} +`; + +exports[`Type conflicts doesn't report ignored fields 1`] = ` +Array [ + TypeConflictEntry { + "selector": "Conflict_3.other", + "types": Map { + "number" => Object { + "description": "", + "value": 1, + }, + "string" => Object { + "description": "", + "value": "foo", + }, + }, + }, +] +`; + +exports[`Type conflicts reports conflict when array has mixed types and its origin 1`] = ` +Array [ + TypeConflictEntry { + "selector": "Conflict_2.arrayOfMixedType", + "types": Map { + "[string,number,boolean]" => Object { + "description": "", + "value": Array [ + "string1", + 5, + "string2", + true, + ], + }, + }, + }, +] +`; + +exports[`Type conflicts reports date and string conflicts 1`] = ` +Array [ + TypeConflictEntry { + "selector": "Conflict_1.date", + "types": Map { + "date" => Object { + "description": "", + "value": "2019-01-01", + }, + "string" => Object { + "description": "", + "value": "Totally not a date", + }, + }, + }, +] +`; + +exports[`Type conflicts reports type conflicts and its origin 1`] = ` +Array [ + TypeConflictEntry { + "selector": "Conflict_1.stringOrNumber", + "types": Map { + "string" => Object { + "description": "", + "value": "string", + }, + "number" => Object { + "description": "", + "value": 5, + }, + }, + }, +] +`; diff --git a/packages/gatsby/src/schema/infer/__tests__/__snapshots__/infer.js.snap b/packages/gatsby/src/schema/infer/__tests__/__snapshots__/infer.js.snap new file mode 100644 index 0000000000000..27d7de3e0b99f --- /dev/null +++ b/packages/gatsby/src/schema/infer/__tests__/__snapshots__/infer.js.snap @@ -0,0 +1,252 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`GraphQL type inference Handles dates Infers from Date objects 1`] = ` +Object { + "data": Object { + "allTest": Object { + "edges": Array [ + Object { + "node": Object { + "dateObject": "2012-11-05T00:00:00.000Z", + }, + }, + Object { + "node": Object { + "dateObject": "2012-11-05T00:00:00.000Z", + }, + }, + ], + }, + }, +} +`; + +exports[`GraphQL type inference Handles dates Infers from array of Date objects 1`] = ` +Object { + "data": Object { + "allTest": Object { + "edges": Array [ + Object { + "node": Object { + "dateObject": Array [ + "2012-11-05T00:00:00.000Z", + "2012-11-06T00:00:00.000Z", + ], + }, + }, + Object { + "node": Object { + "dateObject": Array [ + "2012-11-05T00:00:00.000Z", + ], + }, + }, + ], + }, + }, +} +`; + +exports[`GraphQL type inference Handles priority for conflicting fields 1`] = ` +Object { + "data": Object { + "allTest": Object { + "edges": Array [ + Object { + "node": Object { + "_2invalid": 1, + "sibling": Object { + "id": "2", + }, + }, + }, + Object { + "node": Object { + "_2invalid": 1, + "sibling": Object { + "id": "3", + }, + }, + }, + Object { + "node": Object { + "_2invalid": 1, + "sibling": Object { + "id": "1", + }, + }, + }, + ], + }, + }, +} +`; + +exports[`GraphQL type inference Handles priority for conflicting nested fields 1`] = ` +Object { + "data": Object { + "allTest": Object { + "edges": Array [ + Object { + "node": Object { + "_2invalid": Object { + "nested": Object { + "check": true, + }, + }, + }, + }, + Object { + "node": Object { + "_2invalid": Object { + "nested": Object { + "check": false, + }, + }, + }, + }, + ], + }, + }, +} +`; + +exports[`GraphQL type inference Infers graphql type from array of nodes 1`] = ` +Object { + "data": Object { + "allTest": Object { + "edges": Array [ + Object { + "node": Object { + "aBoolean": true, + "aNestedArray": Array [ + Array [ + 1, + 2, + 3, + 4, + ], + Array [ + 5, + 6, + 7, + 8, + ], + ], + "anArray": Array [ + 1, + 2, + 3, + 4, + ], + "anObjectArray": Array [ + Object { + "aBoolean": true, + "aNumber": 2, + "anArray": null, + "anotherObjectArray": null, + }, + Object { + "aBoolean": null, + "aNumber": 2, + "anArray": Array [ + 1, + 2, + ], + "anotherObjectArray": null, + }, + Object { + "aBoolean": null, + "aNumber": null, + "anArray": null, + "anotherObjectArray": Array [ + Object { + "bar": 10, + "baz": null, + }, + ], + }, + ], + "date": "1012", + "deepObject": Object { + "deepObject": Object { + "deepObject": Object { + "level": 3, + }, + "level": 2, + }, + "level": 1, + }, + "domain": "pizza.com", + "externalUrl": "https://example.com/awesome.jpg", + "frontmatter": Object { + "date": "1012", + "title": "The world of dash and adventure", + }, + "hair": 1, + }, + }, + Object { + "node": Object { + "aBoolean": null, + "aNestedArray": Array [ + Array [ + 1, + 2, + 3, + 4, + ], + ], + "anArray": Array [ + 1, + 2, + 5, + 4, + ], + "anObjectArray": Array [ + Object { + "aBoolean": null, + "aNumber": null, + "anArray": null, + "anotherObjectArray": Array [ + Object { + "bar": null, + "baz": "quz", + }, + ], + }, + ], + "date": "1984", + "deepObject": null, + "domain": null, + "externalUrl": null, + "frontmatter": Object { + "date": "1984", + "title": "The world of slash and adventure", + }, + "hair": 2, + }, + }, + ], + }, + }, +} +`; + +exports[`GraphQL type inference type conflicts catches conflicts and removes field 1`] = ` +Array [ + TypeConflictEntry { + "selector": "Test.number", + "types": Map { + "number" => Object { + "description": "", + "value": 1.1, + }, + "string" => Object { + "description": "", + "value": "1", + }, + }, + }, +] +`; diff --git a/packages/gatsby/src/schema/infer/__tests__/example-value.js b/packages/gatsby/src/schema/infer/__tests__/example-value.js new file mode 100644 index 0000000000000..c75735b7c146e --- /dev/null +++ b/packages/gatsby/src/schema/infer/__tests__/example-value.js @@ -0,0 +1,737 @@ +// NOTE: Previously `data-tree-utils-test.js` + +const { getExampleValue } = require(`../example-value`) +const { TypeConflictReporter } = require(`../type-conflict-reporter`) + +const INVALID_VALUE = undefined + +describe(`Get example value for type inference`, () => { + const typeConflictReporter = new TypeConflictReporter() + + afterEach(() => { + typeConflictReporter.clearConflicts() + }) + + const nodes = [ + { + name: `The Mad Max`, + hair: 1, + date: `2006-07-22T22:39:53.000Z`, + "key-with..unsupported-values": true, + emptyArray: [], + anArray: [1, 2, 3, 4], + nestedArrays: [[1, 2, 3], [4, 5, 6]], + objectsInArray: [{ field1: true }, { field2: 1 }], + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of dash and adventure`, + blue: 100, + }, + context: { + nestedObject: null, + }, + }, + { + name: `The Mad Wax`, + hair: 2, + date: `2006-07-22T22:39:53.000Z`, + emptyArray: [undefined, null], + anArray: [1, 2, 5, 4], + iAmNull: null, + nestedArrays: [[1, 2, 3]], + objectsInArray: [{ field3: `foo` }], + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of slash and adventure`, + blue: 10010, + circle: `happy`, + draft: false, + }, + context: { + nestedObject: { + someOtherProperty: 1, + }, + }, + }, + { + name: `The Mad Wax`, + hair: 3, + date: `2006-07-22T22:39:53.000Z`, + anArray: [], + iAmNull: null, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of slash and adventure`, + blue: 10010, + circle: `happy`, + draft: false, + }, + context: { + nestedObject: { + someOtherProperty: 2, + }, + }, + }, + { + name: `The Mad Wax`, + hair: 4, + date: `2006-07-22T22:39:53.000Z`, + anArray: [4, 6, 2], + iAmNull: null, + frontmatter: { + date: `2006-07-22T22:39:53.000Z`, + title: `The world of slash and adventure`, + blue: 10010, + circle: `happy`, + draft: false, + }, + context: { + nestedObject: { + name: `Inner name`, + someOtherProperty: 3, + }, + }, + "": ``, + }, + ] + + it(`builds field examples from an array of nodes`, () => { + expect(getExampleValue({ nodes, typeConflictReporter })).toMatchSnapshot() + }) + + it(`skips null fields`, () => { + expect( + getExampleValue({ nodes, typeConflictReporter }).iAmNull + ).not.toBeDefined() + }) + + it(`skips fields with key set to empty string`, () => { + expect( + getExampleValue({ nodes, typeConflictReporter })[``] + ).not.toBeDefined() + }) + + it(`should not mutate the nodes`, () => { + getExampleValue({ nodes, typeConflictReporter }) + expect(nodes[0].context.nestedObject).toBeNull() + expect(nodes[1].context.nestedObject.someOtherProperty).toEqual(1) + expect(nodes[2].context.nestedObject.someOtherProperty).toEqual(2) + expect(nodes[3].context.nestedObject.someOtherProperty).toEqual(3) + }) + + it(`skips empty or sparse arrays`, () => { + expect( + getExampleValue({ nodes, typeConflictReporter }).emptyArray + ).not.toBeDefined() + expect(getExampleValue({ nodes, typeConflictReporter }).hair).toBeDefined() + }) + + it(`skips ignoredFields at the top level`, () => { + const example = getExampleValue({ + nodes, + typeConflictReporter, + ignoreFields: [`name`, `anArray`], + }) + + expect(example.name).not.toBeDefined() + expect(example.anArray).not.toBeDefined() + expect(example.hair).toBeDefined() + expect(example.context.nestedObject.name).toBeDefined() + }) + + it(`build enum values for fields from array on nodes`, () => { + // TODO: Should be moved to `types/__tests__/sort.js` + const { createSchemaComposer } = require(`../../schema-composer`) + const { addInferredFields } = require(`../add-inferred-fields`) + const { getFieldsEnum } = require(`../../types/sort`) + + const sc = createSchemaComposer() + const tc = sc.createTC(`Fields`) + addInferredFields({ + schemaComposer: sc, + typeComposer: tc, + exampleValue: getExampleValue({ nodes, typeConflictReporter }), + }) + + const fields = getFieldsEnum({ + schemaComposer: sc, + typeComposer: tc, + inputTypeComposer: tc.getITC(), + }) + .getType() + .getValues() + .reduce((acc, { name, value }) => { + acc[name] = { field: value } + return acc + }, {}) + + expect(fields).toMatchSnapshot() + }) + + it(`turns polymorphic fields null`, () => { + let example = getExampleValue({ + nodes: [{ foo: null }, { foo: [1] }, { foo: { field: 1 } }], + typeConflictReporter, + }) + expect(example.foo).toBe(INVALID_VALUE) + }) + + it(`handles polymorphic arrays`, () => { + let example = getExampleValue({ + nodes: [{ foo: [[`foo`, `bar`]] }, { foo: [{ field: 1 }] }], + typeConflictReporter, + }) + expect(example.foo).toBe(INVALID_VALUE) + }) + + it(`doesn't confuse empty fields for polymorhpic ones`, () => { + let example = getExampleValue({ + nodes: [{ foo: { bar: 1 } }, { foo: null }, { foo: { field: 1 } }], + typeConflictReporter, + }) + expect(example.foo).toEqual({ field: 1, bar: 1 }) + + example = getExampleValue({ + nodes: [ + { foo: [{ bar: 1 }] }, + { foo: null }, + { foo: [{ field: 1 }, { baz: 1 }] }, + ], + typeConflictReporter, + }) + expect(example.foo).toEqual([{ field: 1, bar: 1, baz: 1 }]) + }) + + it(`skips unsupported types`, () => { + // Skips functions + let example = getExampleValue({ + nodes: [{ foo: () => {} }], + typeConflictReporter, + }) + expect(example.foo).not.toBeDefined() + + // Skips array of functions + example = getExampleValue({ + nodes: [{ foo: [() => {}] }], + typeConflictReporter, + }) + expect(example.foo).not.toBeDefined() + }) + + it(`prefers float when multiple number types`, () => { + let example + + // nodes starting with 32-bit integer ("big" ints are float) + example = getExampleValue({ + nodes: [{ number: 5 }, { number: 2.5 }], + typeConflictReporter, + }) + expect(example.number).toBeDefined() + expect(example.number).toEqual(2.5) + example = getExampleValue({ + nodes: [{ number: 5 }, { number: 3000000000 }], + typeConflictReporter, + }) + expect(example.number).toBeDefined() + expect(example.number).toEqual(3000000000) + + // with node not containing number field + example = getExampleValue({ + nodes: [{ number: 5 }, {}, { number: 2.5 }], + typeConflictReporter, + }) + expect(example.number).toBeDefined() + expect(example.number).toEqual(2.5) + + // nodes starting with float ("big" ints are float) + example = getExampleValue({ + nodes: [{ number: 2.5 }, { number: 5 }], + typeConflictReporter, + }) + expect(example.number).toBeDefined() + expect(example.number).toEqual(2.5) + example = getExampleValue({ + nodes: [{ number: 3000000000 }, { number: 5 }], + typeConflictReporter, + }) + expect(example.number).toBeDefined() + expect(example.number).toEqual(3000000000) + + // array of numbers - starting with float + example = getExampleValue({ + nodes: [{ numbers: [2.5, 5] }], + typeConflictReporter, + }) + expect(example.numbers).toBeDefined() + expect(Array.isArray(example.numbers)).toBe(true) + expect(example.numbers.length).toBe(1) + expect(example.numbers[0]).toBe(2.5) + example = getExampleValue({ + nodes: [{ numbers: [3000000000, 5] }], + typeConflictReporter, + }) + expect(example.numbers).toBeDefined() + expect(Array.isArray(example.numbers)).toBe(true) + expect(example.numbers.length).toBe(1) + expect(example.numbers[0]).toBe(3000000000) + + // array of numbers - starting with 32-bit integer + example = getExampleValue({ + nodes: [{ numbers: [5, 2.5] }], + typeConflictReporter, + }) + expect(example.numbers).toBeDefined() + expect(Array.isArray(example.numbers)).toBe(true) + expect(example.numbers.length).toBe(1) + expect(example.numbers[0]).toBe(2.5) + example = getExampleValue({ + nodes: [{ numbers: [5, 3000000000] }], + typeConflictReporter, + }) + expect(example.numbers).toBeDefined() + expect(Array.isArray(example.numbers)).toBe(true) + expect(example.numbers.length).toBe(1) + expect(example.numbers[0]).toBe(3000000000) + }) + + it(`goes through nested object-like objects`, () => { + class ObjectLike { + constructor(key1, key2) { + this.key1 = key1 + this.key2 = key2 + } + } + + const example = getExampleValue({ + nodes: [ + { + foo: new ObjectLike(1, `string`), + bar: new ObjectLike(2, `string2`), + }, + ], + typeConflictReporter, + }) + expect(example).toMatchInlineSnapshot(` +Object { + "bar": Object { + "key1": 2, + "key2": "string2", + }, + "foo": Object { + "key1": 1, + "key2": "string", + }, +} +`) + }) + + describe(`handles mix of date strings and date objects`, () => { + it(`infers mixed string and object dates as Date`, () => { + let example = getExampleValue({ + nodes: [ + { date: new Date(`2017-12-01T14:59:45.600Z`) }, + { date: `2017-01-12T18:13:38.326Z` }, + { date: `` }, + ], + typeConflictReporter, + }) + expect(example.date).toMatchInlineSnapshot(`"1978-09-26"`) + + example = getExampleValue({ + nodes: [ + { date: `2017-01-12T18:13:38.326Z` }, + { date: new Date(`2017-12-01T14:59:45.600Z`) }, + { date: `` }, + ], + typeConflictReporter, + }) + expect(example.date).toMatchInlineSnapshot(`"1978-09-26"`) + + example = getExampleValue({ + nodes: [ + { date: `` }, + { date: `2017-01-12T18:13:38.326Z` }, + { date: new Date(`2017-12-01T14:59:45.600Z`) }, + ], + typeConflictReporter, + }) + expect(example.date).toMatchInlineSnapshot(`"1978-09-26"`) + }) + + it(`infers mixed date objects and non-date strings as string`, () => { + let example = getExampleValue({ + nodes: [ + { date: new Date(`2017-12-01T14:59:45.600Z`) }, + { date: `This is not a date!!!!!!` }, + { date: `` }, + ], + typeConflictReporter, + }) + expect(example.date).toEqual(`String`) + + example = getExampleValue({ + nodes: [ + { date: `This is not a date!!!!!!` }, + { date: new Date(`2017-12-01T14:59:45.600Z`) }, + { date: `` }, + ], + typeConflictReporter, + }) + expect(example.date).toEqual(`String`) + + example = getExampleValue({ + nodes: [ + { date: `` }, + { date: `This is not a date!!!!!!` }, + { date: new Date(`2017-12-01T14:59:45.600Z`) }, + ], + typeConflictReporter, + }) + expect(example.date).toEqual(`String`) + }) + + it(`infers arrays with mix of date strings and date objects as dates`, () => { + let example = getExampleValue({ + nodes: [ + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [`2017-01-12T18:13:38.326Z`] }, + { dates: [``] }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + + example = getExampleValue({ + nodes: [ + { dates: [`2017-01-12T18:13:38.326Z`] }, + { dates: [``] }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + + example = getExampleValue({ + nodes: [ + { dates: [``] }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [`2017-01-12T18:13:38.326Z`] }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + }) + + it(`infers arrays of mixed date objects and non-date strings as strings`, () => { + let example = getExampleValue({ + nodes: [ + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [`This is not a date!!!!!!`] }, + { dates: [``] }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + + example = getExampleValue({ + nodes: [ + { dates: [`This is not a date!!!!!!`] }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [``] }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + + example = getExampleValue({ + nodes: [ + { dates: [``] }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [`This is not a date!!!!!!`] }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + }) + + it(`infers single array of mixed date objects and date strings as date`, () => { + let example = getExampleValue({ + nodes: [ + { + dates: [ + new Date(`2017-12-01T14:59:45.600Z`), + `2017-01-12T18:13:38.326Z`, + ``, + ], + }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + + example = getExampleValue({ + nodes: [ + { + dates: [ + `2017-01-12T18:13:38.326Z`, + new Date(`2017-12-01T14:59:45.600Z`), + ``, + ], + }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + + example = getExampleValue({ + nodes: [ + { + dates: [ + ``, + `2017-01-12T18:13:38.326Z`, + new Date(`2017-12-01T14:59:45.600Z`), + ], + }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + }) + + it(`infers arrays of mixed date objects and non-date strings as strings`, () => { + let example = getExampleValue({ + nodes: [ + { + dates: [ + new Date(`2017-12-01T14:59:45.600Z`), + ``, + `This is not a date!!!!!!`, + ], + }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + + example = getExampleValue({ + nodes: [ + { + dates: [ + ``, + new Date(`2017-12-01T14:59:45.600Z`), + `This is not a date!!!!!!`, + ], + }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + }) + + it(`infers variadic arrays of mix of dates and date strings as date`, () => { + const example = getExampleValue({ + nodes: [ + { + dates: [ + new Date(`2017-12-01T14:59:45.600Z`), + `2017-01-12T18:13:38.326Z`, + ``, + ], + }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`), ``] }, + { dates: [``, `2017-01-12T18:13:38.326Z`] }, + ], + typeConflictReporter, + }) + expect(example.dates).toMatchInlineSnapshot(` +Array [ + "1978-09-26", +] +`) + }) + + it(`infers variadic arrays of mix of dates and non-date strings as string`, () => { + let example = getExampleValue({ + nodes: [ + { + dates: [ + ``, + new Date(`2017-12-01T14:59:45.600Z`), + `This is not a date!!!!!!`, + ], + }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [`2017-01-12T18:13:38.326Z`] }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + + example = getExampleValue({ + nodes: [ + { + dates: [ + new Date(`2017-12-01T14:59:45.600Z`), + `2017-01-12T18:13:38.326Z`, + ], + }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`), ``] }, + { dates: [`This is not a date!!!!!!`] }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + + // should be valid - separate arrays of both unique types and mixed types (string is not a date) #2 + example = getExampleValue({ + nodes: [ + { + dates: [ + ``, + new Date(`2017-12-01T14:59:45.600Z`), + `This is not a date!!!!!!`, + ], + }, + { dates: [new Date(`2017-12-01T14:59:45.600Z`)] }, + { dates: [`This is not a date!!!!!!`] }, + ], + typeConflictReporter, + }) + expect(example.dates).toEqual([`String`]) + }) + }) +}) + +describe(`Type conflicts`, () => { + it(`Doesn't report conflicts if there are none`, () => { + const typeConflictReporter = new TypeConflictReporter() + const nodes = [ + { + id: `id1`, + string: `string`, + number: 5, + boolean: true, + arrayOfStrings: [`string1`], + }, + { + id: `id2`, + string: `other string`, + number: 3.5, + boolean: false, + arrayOfStrings: null, + }, + ] + + getExampleValue({ nodes, typeName: `NoConflict`, typeConflictReporter }) + + expect(typeConflictReporter.getConflicts()).toEqual([]) + }) + + it(`reports type conflicts and its origin`, () => { + const typeConflictReporter = new TypeConflictReporter() + + const nodes = [ + { + id: `id1`, + stringOrNumber: `string`, + number: 5, + boolean: true, + arrayOfStrings: [`string1`], + }, + { + id: `id2`, + stringOrNumber: 5, + number: 3.5, + boolean: false, + arrayOfStrings: null, + }, + ] + + getExampleValue({ nodes, typeName: `Conflict_1`, typeConflictReporter }) + + expect(typeConflictReporter.getConflicts()).toMatchSnapshot() + }) + + it(`reports conflict when array has mixed types and its origin`, () => { + const nodes = [ + { + id: `id1`, + arrayOfMixedType: [`string1`, 5, `string2`, true], + }, + ] + const typeConflictReporter = new TypeConflictReporter() + + getExampleValue({ nodes, typeName: `Conflict_2`, typeConflictReporter }) + expect(typeConflictReporter.getConflicts()).toMatchSnapshot() + }) + + it(`doesn't report ignored fields`, () => { + const typeConflictReporter = new TypeConflictReporter() + + const nodes = [ + { + id: `id1`, + stringOrNumber: `string`, + other: 1, + }, + { + id: `id2`, + stringOrNumber: 5, + other: `foo`, + }, + ] + + getExampleValue({ + nodes, + typeName: `Conflict_3`, + typeConflictReporter, + ignoreFields: [`stringOrNumber`], + }) + + expect(typeConflictReporter.getConflicts()).toMatchSnapshot() + }) + + // We removed this warning to not confuse people + it.skip(`reports date and string conflicts`, () => { + const typeConflictReporter = new TypeConflictReporter() + + const nodes = [ + { + id: `id1`, + date: `2019-01-01`, + }, + { + id: `id2`, + date: `Totally not a date`, + }, + ] + + getExampleValue({ nodes, typeName: `Conflict_1`, typeConflictReporter }) + + expect(typeConflictReporter.getConflicts()).toMatchSnapshot() + }) +}) diff --git a/packages/gatsby/src/schema/infer/__tests__/infer-input.js b/packages/gatsby/src/schema/infer/__tests__/infer-input.js new file mode 100644 index 0000000000000..ed36fcee289e5 --- /dev/null +++ b/packages/gatsby/src/schema/infer/__tests__/infer-input.js @@ -0,0 +1,207 @@ +// NOTE: Previously `infer-graphql-input-type-test.js` + +const { graphql } = require(`graphql`) +const { createSchemaComposer } = require(`../../schema-composer`) +const { buildSchema } = require(`../../schema`) +const { LocalNodeModel } = require(`../../node-model`) +const nodeStore = require(`../../../db/nodes`) +const { store } = require(`../../../redux`) +const createPageDependency = require(`../../../redux/actions/add-page-dependency`) +require(`../../../db/__tests__/fixtures/ensure-loki`)() + +const buildTestSchema = async nodes => { + store.dispatch({ type: `DELETE_CACHE` }) + for (const node of nodes) { + store.dispatch({ type: `CREATE_NODE`, payload: node }) + } + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types: [], + thirdPartySchemas: [], + }) + return schema +} +const queryResult = async (nodes, query) => { + const schema = await buildTestSchema(nodes) + return graphql(schema, query, undefined, { + nodeModel: new LocalNodeModel({ schema, nodeStore, createPageDependency }), + }) +} + +describe(`GraphQL Input args`, () => { + it(`filters out null example values`, async () => { + const nodes = [ + { + id: `1`, + internal: { type: `Bar` }, + children: [], + foo: null, + bar: `baz`, + }, + ] + const result = await queryResult( + nodes, + ` + { + allBar(filter: { foo: { eq: "bar" } }) { + edges { node { bar } } + } + } + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Field "foo" is not defined by type BarFilterInput.` + ) + }) + + it(`filters out empty objects`, async () => { + const nodes = [ + { + id: `1`, + internal: { type: `Bar` }, + children: [], + foo: {}, + bar: `baz`, + }, + ] + const result = await queryResult( + nodes, + ` + { + allBar(filter: { foo: { eq: "bar" } }) { + edges { node { bar } } + } + } + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Field "foo" is not defined by type BarFilterInput.` + ) + }) + + it(`filters out empty arrays`, async () => { + const nodes = [ + { id: `1`, internal: { type: `Bar` }, children: [], foo: [], bar: `baz` }, + ] + const result = await queryResult( + nodes, + ` + { + allBar(filter: { foo: { eq: "bar" } }) { + edges { node { bar } } + } + } + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Field "foo" is not defined by type BarFilterInput.` + ) + }) + + it(`filters out sparse arrays`, async () => { + const nodes = [ + { + id: `1`, + internal: { type: `Bar` }, + children: [], + foo: [undefined, null, null], + bar: `baz`, + }, + ] + const result = await queryResult( + nodes, + ` + { + allBar(filter: { foo: { eq: "bar" } }) { + edges { node { bar } } + } + } + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Field "foo" is not defined by type BarFilterInput.` + ) + }) + + it(`uses correct keys for linked fields`, async () => { + const nodes = [ + { + id: `1`, + internal: { type: `Bar` }, + children: [], + linked___NODE: `baz`, + foo: `bar`, + }, + { id: `baz`, internal: { type: `Foo` }, children: [] }, + ] + const result = await queryResult( + nodes, + ` + { + allBar(filter: { linked___NODE: { eq: "baz" } }) { + edges { node { linked { id } } } + } + } + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Field "linked___NODE" is not defined by type BarFilterInput.` + ) + }) + + it(`Replaces unsupported values in keys`, async () => { + // NOTE: This does not make much sense anymore (we sanitize + // fieldnames for ObjectType, and derive InputType from there) + + // Add a key with unsupported values to test + // if they're replaced. + + const nodes = [ + { + id: `1`, + internal: { type: `Test` }, + parent: null, + children: [], + foo: { + parent: `parent`, + children: [`bar`], + "foo-moo": `tasty`, + }, + }, + ] + const schema = await buildTestSchema(nodes) + const fields = schema.getType(`TestFilterInput`).getFields() + + expect(Object.keys(fields.foo.type.getFields())[2]).toEqual(`foo_moo`) + }) + + it.skip(`Removes specific root fields`, async () => { + // We don't do that anymoe + }) + + it(`infers number types`, async () => { + const nodes = [ + { + id: `1`, + internal: { type: `Test` }, + children: [], + int32: 42, + float: 2.5, + longint: 3000000000, + }, + ] + const schema = await buildTestSchema(nodes) + const fields = schema.getType(`TestFilterInput`).getFields() + + expect(fields.int32.type.name).toBe(`IntQueryOperatorInput`) + expect(fields.float.type.name).toBe(`FloatQueryOperatorInput`) + expect(fields.longint.type.name).toBe(`FloatQueryOperatorInput`) + }) +}) diff --git a/packages/gatsby/src/schema/infer/__tests__/infer.js b/packages/gatsby/src/schema/infer/__tests__/infer.js new file mode 100644 index 0000000000000..254a694ef3127 --- /dev/null +++ b/packages/gatsby/src/schema/infer/__tests__/infer.js @@ -0,0 +1,1055 @@ +// NOTE: Previously `infer-graphql-type-test.js` + +const { graphql } = require(`graphql`) +const nodeStore = require(`../../../db/nodes`) +const { LocalNodeModel } = require(`../../node-model`) +const path = require(`path`) +const slash = require(`slash`) +const { store } = require(`../../../redux`) +const createPageDependency = require(`../../../redux/actions/add-page-dependency`) +const { buildSchema } = require(`../../schema`) +const { createSchemaComposer } = require(`../../schema-composer`) +const { TypeConflictReporter } = require(`../type-conflict-reporter`) +require(`../../../db/__tests__/fixtures/ensure-loki`)() + +const makeNodes = () => [ + { + id: `foo`, + internal: { type: `Test` }, + name: `The Mad Max`, + type: `Test`, + "key-with..unsupported-values": true, + hair: 1, + date: `1012-11-01`, + anArray: [1, 2, 3, 4], + aNestedArray: [[1, 2, 3, 4], [5, 6, 7, 8]], + anObjectArray: [ + { aString: `some string`, aNumber: 2, aBoolean: true }, + { aString: `some string`, aNumber: 2, anArray: [1, 2] }, + { anotherObjectArray: [{ bar: 10 }] }, + ], + deepObject: { + level: 1, + deepObject: { + level: 2, + deepObject: { + level: 3, + }, + }, + }, + "with space": 1, + "with-hyphen": 2, + "with resolver": `1012-11-01`, + 123: 42, + 456: { + testingTypeNameCreation: true, + }, + aBoolean: true, + externalUrl: `https://example.com/awesome.jpg`, + domain: `pizza.com`, + frontmatter: { + date: `1012-11-01`, + title: `The world of dash and adventure`, + blue: 100, + }, + }, + { + id: `boo`, + internal: { type: `Test` }, + name: `The Mad Wax`, + type: `Test`, + hair: 2, + date: `1984-10-12`, + anArray: [1, 2, 5, 4], + aNestedArray: [[1, 2, 3, 4]], + anObjectArray: [{ anotherObjectArray: [{ baz: `quz` }] }], + "with space": 3, + "with-hyphen": 4, + 123: 24, + frontmatter: { + date: `1984-10-12`, + title: `The world of slash and adventure`, + blue: 10010, + }, + }, +] + +describe(`GraphQL type inference`, () => { + const typeConflictReporter = new TypeConflictReporter() + + const buildTestSchema = async (nodes, buildSchemaArgs) => { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: node }) + ) + + const schemaComposer = createSchemaComposer() + const schema = await buildSchema({ + schemaComposer, + nodeStore, + types: [], + thirdPartySchemas: [], + typeMapping: [], + typeConflictReporter, + ...(buildSchemaArgs || {}), + }) + return schema + } + + const getQueryResult = async (nodes, fragment, buildSchemaArgs) => { + const schema = await buildTestSchema(nodes, buildSchemaArgs) + store.dispatch({ type: `SET_SCHEMA`, payload: schema }) + return graphql( + schema, + `query { + allTest { + edges { + node { + ${fragment} + } + } + } + } + `, + undefined, + { + path: `/`, + nodeModel: new LocalNodeModel({ + schema, + nodeStore, + createPageDependency, + }), + } + ) + } + + const getInferredFields = async (nodes, buildSchemaArgs) => { + const schema = await buildTestSchema(nodes, buildSchemaArgs) + return schema.getType(`Test`).getFields() + } + + afterEach(() => { + typeConflictReporter.clearConflicts() + }) + + it(`filters out null example values`, async () => { + const nodes = [ + { foo: null, bar: `baz`, internal: { type: `Test` }, id: `1` }, + ] + const result = await getQueryResult( + nodes, + ` + foo + bar + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Cannot query field "foo" on type "Test".` + ) + }) + + it(`doesn't throw errors at ints longer than 32-bit`, async () => { + const nodes = [{ longint: 3000000000, internal: { type: `Test` }, id: `1` }] + const result = await getQueryResult( + nodes, + ` + longint + ` + ) + expect(result.errors).toBeUndefined() + }) + + it(`prefers float when multiple number types`, async () => { + const nodes = [ + { number: 1.1, internal: { type: `Test` }, id: `1` }, + { number: 1, internal: { type: `Test` }, id: `2` }, + ] + const result = await getQueryResult( + nodes, + ` + number + ` + ) + expect(result.data.allTest.edges[0].node.number).toEqual(1.1) + }) + + it(`filters out empty objects`, async () => { + const nodes = [{ foo: {}, bar: `baz`, internal: { type: `Test` }, id: `1` }] + const result = await getQueryResult( + nodes, + ` + foo + bar + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Cannot query field "foo" on type "Test".` + ) + }) + + it(`filters out empty arrays`, async () => { + const nodes = [{ foo: [], bar: `baz`, internal: { type: `Test` }, id: `1` }] + const result = await getQueryResult( + nodes, + ` + foo + bar + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Cannot query field "foo" on type "Test".` + ) + }) + + it(`filters out sparse arrays`, async () => { + const nodes = [ + { + foo: [undefined, null, null], + bar: `baz`, + internal: { type: `Test` }, + id: `1`, + }, + ] + const result = await getQueryResult( + nodes, + ` + foo + bar + ` + ) + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Cannot query field "foo" on type "Test".` + ) + }) + + // NOTE: Honestly this test does not makes much sense now + it.skip(`Removes specific root fields`, () => { + const { addInferredFields } = require(`../infer`) + const { getExampleValue } = require(`../example-value`) + const { getNodeInterface } = require(`../../types/node-interface`) + const nodes = [ + { + type: `Test`, + id: `foo`, + parent: `parent`, + children: [`bar`], + internal: { type: `Test` }, + foo: { + type: `Test`, + id: `foo`, + parent: `parent`, + children: [`bar`], + }, + }, + ] + const schemaComposer = createSchemaComposer() + const typeComposer = schemaComposer.createTC(`Test`) + addInferredFields({ + schemaComposer, + typeComposer, + exampleValue: getExampleValue({ + nodes, + ignoreFields: getNodeInterface({ schemaComposer }).getFieldNames(), + }), + }) + const fields = typeComposer.getType().getFields() + + expect(Object.keys(fields)).toHaveLength(2) + expect(Object.keys(fields.foo.type.getFields())).toHaveLength(4) + }) + + it(`infers number types`, async () => { + const nodes = [ + { + int32: 42, + float: 2.5, + longint: 3000000000, + internal: { type: `Test` }, + id: `1`, + }, + ] + const fields = await getInferredFields(nodes) + + expect(fields.int32.type.name).toEqual(`Int`) + expect(fields.float.type.name).toEqual(`Float`) + expect(fields.longint.type.name).toEqual(`Float`) + }) + + it(`Handle invalid graphql field names`, async () => { + const nodes = makeNodes() + const result = await getQueryResult( + nodes, + ` + with_space + with_hyphen + with_resolver(formatString:"DD.MM.YYYY") + _123 + _456 { + testingTypeNameCreation + } + ` + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges.length).toEqual(2) + expect(result.data.allTest.edges[0].node.with_space).toEqual(1) + expect(result.data.allTest.edges[0].node.with_hyphen).toEqual(2) + expect(result.data.allTest.edges[1].node.with_space).toEqual(3) + expect(result.data.allTest.edges[1].node.with_hyphen).toEqual(4) + expect(result.data.allTest.edges[0].node.with_resolver).toEqual( + `01.11.1012` + ) + expect(result.data.allTest.edges[0].node._123).toEqual(42) + expect(result.data.allTest.edges[1].node._123).toEqual(24) + expect(result.data.allTest.edges[0].node._456).toEqual(nodes[0][`456`]) + }) + + it(`Handles priority for conflicting fields`, async () => { + const nodes = [ + { + _2invalid: 1, + "2invalid": 2, + sibling: { id: `Test` }, + sibling___NODE: `2`, + internal: { type: `Test` }, + id: `1`, + }, + { + _2invalid: 1, + "2invalid": 2, + sibling: { id: `Test` }, + sibling___NODE: `3`, + internal: { type: `Test` }, + id: `2`, + }, + { + _2invalid: 1, + "2invalid": 2, + sibling: { id: `Test` }, + sibling___NODE: `1`, + internal: { type: `Test` }, + id: `3`, + }, + ] + + const result = await getQueryResult( + nodes, + ` + sibling { id } + _2invalid + ` + ) + expect(result).toMatchSnapshot() + }) + + it(`Handles priority for conflicting nested fields`, async () => { + const nodes = [ + { + "2invalid": { nested: { check: 1 } }, + _2invalid: { nested: { check: true } }, + internal: { type: `Test` }, + id: `1`, + }, + { + "2invalid": { nested: { check: 0 } }, + _2invalid: { nested: { check: false } }, + internal: { type: `Test` }, + id: `2`, + }, + ] + + const result = await getQueryResult( + nodes, + ` + _2invalid { nested { check } } + ` + ) + const { edges } = result.data.allTest + expect(edges[0].node[`_2invalid`].nested.check).toBe(true) + expect(edges[1].node[`_2invalid`].nested.check).toBe(false) + expect(result).toMatchSnapshot() + }) + + describe(`Handles dates`, () => { + it(`Handles integer with valid date format`, async () => { + const nodes = [ + { number: 2018, internal: { type: `Test` }, id: `1` }, + { number: 1987, internal: { type: `Test` }, id: `2` }, + ] + const result = await getQueryResult( + nodes, + ` + number + ` + ) + expect(result.data.allTest.edges[0].node.number).toEqual(2018) + }) + + it(`Infers from Date objects`, async () => { + const nodes = [ + { + dateObject: new Date(Date.UTC(2012, 10, 5)), + internal: { type: `Test` }, + id: `1`, + }, + { + dateObject: new Date(Date.UTC(2012, 10, 5)), + internal: { type: `Test` }, + id: `2`, + }, + ] + const result = await getQueryResult( + nodes, + ` + dateObject + ` + ) + expect(result).toMatchSnapshot() + }) + + it(`Infers from array of Date objects`, async () => { + const nodes = [ + { + dateObject: [ + new Date(Date.UTC(2012, 10, 5)), + new Date(Date.UTC(2012, 10, 6)), + ], + internal: { type: `Test` }, + id: `1`, + }, + { + dateObject: [new Date(Date.UTC(2012, 10, 5))], + internal: { type: `Test` }, + id: `2`, + }, + ] + const result = await getQueryResult( + nodes, + ` + dateObject + ` + ) + expect(result).toMatchSnapshot() + }) + + it(`Infers from date strings`, async () => { + const nodes = [ + { date: `1012-11-01`, internal: { type: `Test` }, id: `1` }, + ] + const result = await getQueryResult( + nodes, + ` + date(formatString:"DD.MM.YYYY") + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.date).toEqual(`01.11.1012`) + }) + + it(`Infers from arrays of date strings`, async () => { + const nodes = [ + { + date: [`1012-11-01`, `10390203`], + internal: { type: `Test` }, + id: `1`, + }, + ] + const result = await getQueryResult( + nodes, + ` + date(formatString:"DD.MM.YYYY") + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.date.length).toEqual(2) + expect(result.data.allTest.edges[0].node.date[0]).toEqual(`01.11.1012`) + expect(result.data.allTest.edges[0].node.date[1]).toEqual(`03.02.1039`) + }) + + it(`infers mixes of non-dates and dates as string`, async () => { + const nodes = [ + { + date: `1012-11-01`, + internal: { type: `Test` }, + id: `1`, + }, + { + date: `totally-not-a-date`, + internal: { type: `Test` }, + id: `2`, + }, + ] + const result = await getQueryResult( + nodes, + ` + date + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges.length).toEqual(2) + expect(result.data.allTest.edges[0].node.date).toEqual(`1012-11-01`) + expect(result.data.allTest.edges[1].node.date).toEqual( + `totally-not-a-date` + ) + }) + }) + + describe(`Linked inference from config mappings`, () => { + const getMappingNodes = () => [ + { + id: `node1`, + label: `First node`, + internal: { type: `MappingTest` }, + nestedField: { + mapTarget: `test1`, + }, + }, + { + id: `node2`, + label: `Second node`, + internal: { type: `MappingTest` }, + nestedField: { + mapTarget: `test2`, + }, + }, + { + id: `node3`, + label: `Third node`, + internal: { type: `MappingTest` }, + nestedField: { + mapTarget: `test3`, + }, + }, + ] + + it(`Links to single node by id`, async () => { + const nodes = [ + { + id: `1`, + linkedOnID: `node1`, + internal: { type: `Test` }, + }, + { + id: `2`, + linkedOnID: `not_existing`, + internal: { type: `Test` }, + }, + ].concat(getMappingNodes()) + const result = await getQueryResult( + nodes, + ` + linkedOnID { + label + } + `, + { + typeMapping: { + "Test.linkedOnID": `MappingTest`, + "Test.linkedOnCustomField": `MappingTest.nestedField.mapTarget`, + }, + } + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges.length).toEqual(2) + expect(result.data.allTest.edges[0].node.linkedOnID).toBeDefined() + expect(result.data.allTest.edges[1].node.linkedOnID).toEqual(null) + expect(result.data.allTest.edges[0].node.linkedOnID.label).toEqual( + `First node` + ) + }) + + it(`Links to array of nodes by id`, async () => { + const nodes = [ + { + id: `3`, + linkedOnID: [`node1`, `node2`], + internal: { type: `Test` }, + }, + ].concat(getMappingNodes()) + const result = await getQueryResult( + nodes, + ` + linkedOnID { + label + } + `, + { + typeMapping: { + "Test.linkedOnID": `MappingTest`, + "Test.linkedOnCustomField": `MappingTest.nestedField.mapTarget`, + }, + } + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges.length).toEqual(1) + expect(result.data.allTest.edges[0].node.linkedOnID).toBeDefined() + expect(result.data.allTest.edges[0].node.linkedOnID.length).toEqual(2) + expect(result.data.allTest.edges[0].node.linkedOnID[0].label).toEqual( + `First node` + ) + expect(result.data.allTest.edges[0].node.linkedOnID[1].label).toEqual( + `Second node` + ) + }) + + it(`Links to single node by custom field`, async () => { + const nodes = [ + { + id: `1`, + linkedOnCustomField: `test2`, + internal: { type: `Test` }, + }, + { + id: `2`, + linkedOnCustomField: `not_existing`, + internal: { type: `Test` }, + }, + ].concat(getMappingNodes()) + const result = await getQueryResult( + nodes, + ` + linkedOnCustomField { + label + } + `, + { + typeMapping: { + "Test.linkedOnID": `MappingTest`, + "Test.linkedOnCustomField": `MappingTest.nestedField.mapTarget`, + }, + } + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges.length).toEqual(2) + expect( + result.data.allTest.edges[0].node.linkedOnCustomField + ).toBeDefined() + expect(result.data.allTest.edges[1].node.linkedOnCustomField).toEqual( + null + ) + expect( + result.data.allTest.edges[0].node.linkedOnCustomField.label + ).toEqual(`Second node`) + }) + + it(`Links to array of nodes by custom field`, async () => { + const nodes = [ + { + id: `1`, + linkedOnCustomField: [`test1`, `test3`], + internal: { type: `Test` }, + }, + ].concat(getMappingNodes()) + const result = await getQueryResult( + nodes, + ` + linkedOnCustomField { + label + } + `, + { + typeMapping: { + "Test.linkedOnID": `MappingTest`, + "Test.linkedOnCustomField": `MappingTest.nestedField.mapTarget`, + }, + } + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges.length).toEqual(1) + expect( + result.data.allTest.edges[0].node.linkedOnCustomField + ).toBeDefined() + expect( + result.data.allTest.edges[0].node.linkedOnCustomField.length + ).toEqual(2) + expect( + result.data.allTest.edges[0].node.linkedOnCustomField[0].label + ).toEqual(`First node`) + expect( + result.data.allTest.edges[0].node.linkedOnCustomField[1].label + ).toEqual(`Third node`) + }) + }) + + describe(`Linked inference from file URIs`, () => { + const dir = slash(path.resolve(`/path/`)) + const getFileNodes = () => [ + { + id: `parent`, + internal: { type: `File` }, + absolutePath: slash(path.resolve(dir, `index.md`)), + dir, + }, + { + id: `file_1`, + internal: { type: `File` }, + absolutePath: slash(path.resolve(dir, `file_1.jpg`)), + dir, + }, + { + id: `file_2`, + internal: { type: `File` }, + absolutePath: slash(path.resolve(dir, `file_2.txt`)), + dir, + }, + ] + + it(`Links to file node`, async () => { + const nodes = [ + { + id: `1`, + file: `./file_1.jpg`, + parent: `parent`, + internal: { type: `Test` }, + }, + ].concat(getFileNodes()) + + let result = await getQueryResult( + nodes, + ` + file { + absolutePath + } + ` + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.file.absolutePath).toEqual( + slash(path.resolve(dir, `file_1.jpg`)) + ) + }) + + it(`Links to array of file nodes`, async () => { + const nodes = [ + { + id: `1`, + files: [`./file_1.jpg`, `./file_2.txt`], + parent: `parent`, + internal: { type: `Test` }, + }, + ].concat(getFileNodes()) + + let result = await getQueryResult( + nodes, + ` + files { + absolutePath + } + ` + ) + + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.files.length).toEqual(2) + expect(result.data.allTest.edges[0].node.files[0].absolutePath).toEqual( + slash(path.resolve(dir, `file_1.jpg`)) + ) + expect(result.data.allTest.edges[0].node.files[1].absolutePath).toEqual( + slash(path.resolve(dir, `file_2.txt`)) + ) + }) + }) + + describe(`Linked inference by __NODE convention`, () => { + const getLinkedNodes = () => [ + { id: `child_1`, internal: { type: `Child` }, hair: `brown` }, + { id: `child_2`, internal: { type: `Child` }, hair: `blonde` }, + { id: `pet_1`, internal: { type: `Pet` }, species: `dog` }, + ] + + it(`Links nodes`, async () => { + const nodes = [ + { linked___NODE: `child_1`, internal: { type: `Test` }, id: `1` }, + ].concat(getLinkedNodes()) + const result = await getQueryResult( + nodes, + ` + linked { + hair + } + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.linked.hair).toEqual(`brown`) + }) + + it(`Links an array of nodes`, async () => { + const nodes = [ + { + linked___NODE: [`child_1`, `child_2`], + internal: { type: `Test` }, + id: `1`, + }, + ].concat(getLinkedNodes()) + const result = await getQueryResult( + nodes, + ` + linked { + hair + } + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.linked[0].hair).toEqual(`brown`) + expect(result.data.allTest.edges[0].node.linked[1].hair).toEqual(`blonde`) + }) + + it(`Links nodes by field`, async () => { + const nodes = [ + { linked___NODE___hair: `brown`, internal: { type: `Test` }, id: `1` }, + ].concat(getLinkedNodes()) + const result = await getQueryResult( + nodes, + ` + linked { + hair + } + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.linked.hair).toEqual(`brown`) + }) + + it(`Links an array of nodes by field`, async () => { + const nodes = [ + { + linked___NODE___hair: [`brown`, `blonde`], + internal: { type: `Test` }, + id: `1`, + }, + ].concat(getLinkedNodes()) + const result = await getQueryResult( + nodes, + ` + linked { + hair + } + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.linked[0].hair).toEqual(`brown`) + expect(result.data.allTest.edges[0].node.linked[1].hair).toEqual(`blonde`) + }) + + it(`Errors clearly when missing nodes`, async () => { + expect.assertions(1) + try { + await getInferredFields([ + { linked___NODE: `baz`, internal: { type: `Test` }, id: `1` }, + ]) + } catch (e) { + expect(e.message).toEqual( + `Encountered an error trying to infer a GraphQL type ` + + `for: \`linked___NODE\`. There is no corresponding node with the \`id\` ` + + `field matching: "baz".` + ) + } + }) + + // We can't miss types anymore + it.skip(`Errors clearly when missing types`, async () => { + expect(async () => { + await getInferredFields([ + { id: `baz`, internal: { type: `Bar` } }, + { linked___NODE: `baz`, internal: { type: `Test` }, id: `1` }, + ]) + }).toThrow( + `Encountered an error trying to infer a GraphQL type ` + + `for: \`linked___NODE\`. There is no corresponding GraphQL type ` + + `\`Bar\` available to link to this node.` + ) + }) + + describe(`Creation of union types when array field is linking to multiple types`, () => { + it(`Creates union types`, async () => { + const nodes = [ + { + linked___NODE: [`child_1`, `pet_1`], + internal: { type: `Test` }, + id: `1`, + }, + ].concat(getLinkedNodes()) + const result = await getQueryResult( + nodes, + ` + linked { + __typename + ... on Child { + hair + } + ... on Pet { + species + } + } + ` + ) + expect(result.errors).not.toBeDefined() + expect(result.data.allTest.edges[0].node.linked[0].hair).toEqual( + `brown` + ) + expect(result.data.allTest.edges[0].node.linked[0].__typename).toEqual( + `Child` + ) + expect(result.data.allTest.edges[0].node.linked[1].species).toEqual( + `dog` + ) + expect(result.data.allTest.edges[0].node.linked[1].__typename).toEqual( + `Pet` + ) + }) + + it(`Uses same union type for same child node types and key`, async () => { + const nodes = [ + { + test___NODE: [`pet_1`, `child_1`], + internal: { type: `Test` }, + id: `1`, + }, + { + test___NODE: [`pet_1`, `child_2`], + internal: { type: `OtherType` }, + id: `2`, + }, + ].concat(getLinkedNodes()) + const schema = await buildTestSchema(nodes) + const fields = schema.getType(`Test`).getFields() + const otherFields = schema.getType(`OtherType`).getFields() + + expect(fields.test.type.ofType.name).toBe( + otherFields.test.type.ofType.name + ) + expect(fields.test.type.ofType.getTypes()).toEqual( + otherFields.test.type.ofType.getTypes() + ) + expect(fields.test.type.ofType).toBe(otherFields.test.type.ofType) + }) + + it.skip(`Uses a different type for the same child node types with a different key`, () => { + // NOTE: We don't do that anymore + }) + + it(`Uses a different type for different child node types with the same key`, async () => { + const nodes = [ + { id: `toy_1`, internal: { type: `Toy` } }, + { + test___NODE: [`pet_1`, `child_1`], + internal: { type: `Test` }, + id: `1`, + }, + { + test___NODE: [`pet_1`, `child_2`, `toy_1`], + internal: { type: `OtherType` }, + id: `2`, + }, + ].concat(getLinkedNodes()) + const schema = await buildTestSchema(nodes) + const fields = schema.getType(`Test`).getFields() + const otherFields = schema.getType(`OtherType`).getFields() + + expect(fields.test.type.ofType.name).toBe(`ChildPetUnion`) + expect(otherFields.test.type.ofType.name).toBe(`ChildPetToyUnion`) + expect(fields.test.type.ofType).not.toEqual( + otherFields.test.type.ofType + ) + }) + + it.skip(`Creates a new type after schema updates clear union types`, () => { + // NOTE: We don't clear union types anymore + }) + + it.skip(`Uses a reliable naming convention`, () => { + // NOTE: We don't postfix union type names anymore + }) + }) + }) + + it(`Infers graphql type from array of nodes`, async () => { + const nodes = makeNodes() + const result = await getQueryResult( + nodes, + ` + hair, + anArray, + aNestedArray, + anObjectArray { + aNumber, + aBoolean, + anArray + anotherObjectArray { + bar + baz + } + }, + deepObject { + level + deepObject { + level + deepObject { + level + } + } + } + aBoolean, + externalUrl, + domain, + date(formatString: "YYYY"), + frontmatter { + title, + date(formatString: "YYYY") + } + ` + ) + expect(result).toMatchSnapshot() + }) + + describe(`type conflicts`, () => { + it(`catches conflicts and removes field`, async () => { + const nodes = [ + { foo: `foo`, number: 1.1, internal: { type: `Test` }, id: `1` }, + { foo: `bar`, number: `1`, internal: { type: `Test` }, id: `2` }, + ] + const result = await getQueryResult( + nodes, + ` + foo + number + ` + ) + expect(typeConflictReporter.getConflicts()).toMatchSnapshot() + + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Cannot query field "number" on type "Test".` + ) + }) + + // FIXME, ignoreFields isn't passable, Do we create type with typedefs and test it? + it.skip(`does not warn about provided types`, async () => { + const nodes = [ + { foo: `foo`, number: 1.1, internal: { type: `Test` }, id: `1` }, + { foo: `bar`, number: `1`, internal: { type: `Test` }, id: `2` }, + ] + const result = await getQueryResult( + nodes, + ` + foo + number + `, + { ignoreFields: [`number`] } + ) + expect(typeConflictReporter.getConflicts()).toEqual([]) + + expect(result.errors.length).toEqual(1) + expect(result.errors[0].message).toMatch( + `Cannot query field "number" on type "Test".` + ) + }) + }) +}) diff --git a/packages/gatsby/src/schema/infer/__tests__/merge-types.js b/packages/gatsby/src/schema/infer/__tests__/merge-types.js new file mode 100644 index 0000000000000..f6a9e6ec5695b --- /dev/null +++ b/packages/gatsby/src/schema/infer/__tests__/merge-types.js @@ -0,0 +1,279 @@ +const { store } = require(`../../../redux`) +const { build } = require(`../..`) +require(`../../../db/__tests__/fixtures/ensure-loki`)() + +const nodes = [ + { + id: `id1`, + internal: { type: `Test` }, + foo: true, + inferDate: new Date(), + explicitDate: new Date(), + conflictType: 1, + conflictArray: [1], + conflictArrayType: [1], + conflictArrayReverse: 1, + conflictScalar: { foo: true }, + conflictScalarReverse: 1, + conflictScalarArray: [{ foo: true }], + conflcitScalarArrayReverse: [1], + nested: { + foo: true, + conflict: 1, + nested: { + foo: true, + conflict: 1, + extraExtra: true, + }, + }, + nestedArray: [ + { + foo: true, + conflict: 1, + extra: true, + nested: { foo: true, conflict: 1, extraExtraExtra: true }, + }, + ], + }, +] + +describe(`merges explicit and inferred type definitions`, () => { + beforeEach(() => { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: { ...node } }) + ) + }) + + const buildTestSchema = async ({ + infer = true, + addDefaultResolvers = true, + }) => { + const inferDirective = infer ? `@infer` : `@dontInfer` + const noDefaultResolvers = addDefaultResolvers ? `false` : `true` + const typeDefs = [ + ` + type NestedNested { + bar: Boolean! + conflict: String! + notExtra: Boolean + } + + type Nested { + bar: Boolean! + conflict: String! + nested: NestedNested + } + + type Test implements Node ${inferDirective}(noDefaultResolvers: ${noDefaultResolvers}) { + explicitDate: Date + bar: Boolean! + nested: Nested! + nestedArray: [Nested!]! + conflictType: String! + conflictArray: Int! + conflictArrayReverse: [Int!]! + conflictArrayType: [String!]! + conflictScalar: Int! + conflictScalarReverse: Nested! + conflictScalarArray: [Int!]! + conflcitScalarArrayReverse: [Nested!]! + }`, + ] + + typeDefs.forEach(def => + store.dispatch({ type: `CREATE_TYPES`, payload: def }) + ) + + await build({}) + return store.getState().schema + } + + it(`with default strategy`, async () => { + const schema = await buildTestSchema({}) + const fields = schema.getType(`Test`).getFields() + const nestedFields = schema.getType(`Nested`).getFields() + const nestedNestedFields = schema.getType(`NestedNested`).getFields() + + // Non-conflicting top-level fields added + expect(fields.foo.type.toString()).toBe(`Boolean`) + expect(fields.bar.type.toString()).toBe(`Boolean!`) + + // Non-conflicting fields added on nested type + expect(fields.nested.type.toString()).toBe(`Nested!`) + expect(fields.nestedArray.type.toString()).toBe(`[Nested!]!`) + expect(nestedFields.foo.type.toString()).toBe(`Boolean`) + expect(nestedFields.bar.type.toString()).toBe(`Boolean!`) + expect(nestedNestedFields.foo.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.bar.type.toString()).toBe(`Boolean!`) + + // When type is referenced more than once on typeDefs, all non-conflicting + // fields are added + expect(nestedFields.extra.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.notExtra.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.extraExtra.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.extraExtraExtra.type.toString()).toBe(`Boolean`) + + // Explicit typeDefs have proprity in case of type conflict + expect(fields.conflictType.type.toString()).toBe(`String!`) + expect(fields.conflictArray.type.toString()).toBe(`Int!`) + expect(fields.conflictArrayReverse.type.toString()).toBe(`[Int!]!`) + expect(fields.conflictArrayType.type.toString()).toBe(`[String!]!`) + expect(fields.conflictScalar.type.toString()).toBe(`Int!`) + expect(fields.conflictScalarReverse.type.toString()).toBe(`Nested!`) + expect(fields.conflictScalarArray.type.toString()).toBe(`[Int!]!`) + expect(fields.conflcitScalarArrayReverse.type.toString()).toBe(`[Nested!]!`) + + // Explicit typeDefs have priority on nested types as well + expect(nestedFields.conflict.type.toString()).toBe(`String!`) + expect(nestedNestedFields.conflict.type.toString()).toBe(`String!`) + + // Date resolvers + expect(fields.explicitDate.resolve).toBeDefined() + expect(fields.inferDate.resolve).toBeDefined() + }) + + it(`with @dontInfer directive`, async () => { + const schema = await buildTestSchema({ + infer: false, + }) + const fields = schema.getType(`Test`).getFields() + const nestedFields = schema.getType(`Nested`).getFields() + const nestedNestedFields = schema.getType(`NestedNested`).getFields() + + // Non-conflicting top-level fields added + expect(fields.bar.type.toString()).toBe(`Boolean!`) + + // Not adding inferred fields + expect(fields.foo).toBeUndefined() + expect(nestedFields.foo).toBeUndefined() + expect(nestedNestedFields.foo).toBeUndefined() + expect(nestedFields.extra).toBeUndefined() + expect(nestedNestedFields.extraExtra).toBeUndefined() + expect(nestedNestedFields.extraExtraExtra).toBeUndefined() + expect(fields.inferDate).toBeUndefined() + + // Non-conflicting fields added on nested type + expect(fields.nested.type.toString()).toBe(`Nested!`) + expect(fields.nestedArray.type.toString()).toBe(`[Nested!]!`) + expect(nestedFields.bar.type.toString()).toBe(`Boolean!`) + expect(nestedNestedFields.bar.type.toString()).toBe(`Boolean!`) + + // When type is referenced more than once on typeDefs, all non-conflicting + // fields are added + expect(nestedNestedFields.notExtra.type.toString()).toBe(`Boolean`) + + // Explicit typeDefs have proprity in case of type conflict + expect(fields.conflictType.type.toString()).toBe(`String!`) + expect(fields.conflictArray.type.toString()).toBe(`Int!`) + expect(fields.conflictArrayReverse.type.toString()).toBe(`[Int!]!`) + expect(fields.conflictArrayType.type.toString()).toBe(`[String!]!`) + expect(fields.conflictScalar.type.toString()).toBe(`Int!`) + expect(fields.conflictScalarReverse.type.toString()).toBe(`Nested!`) + expect(fields.conflictScalarArray.type.toString()).toBe(`[Int!]!`) + expect(fields.conflcitScalarArrayReverse.type.toString()).toBe(`[Nested!]!`) + + // Explicit typeDefs have priority on nested types as well + expect(nestedFields.conflict.type.toString()).toBe(`String!`) + expect(nestedNestedFields.conflict.type.toString()).toBe(`String!`) + + // Date resolvers + expect(fields.explicitDate.resolve).toBeDefined() + }) + + it(`with noDefaultResolvers: true`, async () => { + const schema = await buildTestSchema({ + addDefaultResolvers: false, + }) + const fields = schema.getType(`Test`).getFields() + const nestedFields = schema.getType(`Nested`).getFields() + const nestedNestedFields = schema.getType(`NestedNested`).getFields() + + // Non-conflicting top-level fields added + expect(fields.foo.type.toString()).toBe(`Boolean`) + expect(fields.bar.type.toString()).toBe(`Boolean!`) + + // Non-conflicting fields added on nested type + expect(fields.nested.type.toString()).toBe(`Nested!`) + expect(fields.nestedArray.type.toString()).toBe(`[Nested!]!`) + expect(nestedFields.foo.type.toString()).toBe(`Boolean`) + expect(nestedFields.bar.type.toString()).toBe(`Boolean!`) + expect(nestedNestedFields.foo.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.bar.type.toString()).toBe(`Boolean!`) + + // When type is referenced more than once on typeDefs, all non-conflicting + // fields are added + expect(nestedFields.extra.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.notExtra.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.extraExtra.type.toString()).toBe(`Boolean`) + expect(nestedNestedFields.extraExtraExtra.type.toString()).toBe(`Boolean`) + + // Explicit typeDefs have proprity in case of type conflict + expect(fields.conflictType.type.toString()).toBe(`String!`) + expect(fields.conflictArray.type.toString()).toBe(`Int!`) + expect(fields.conflictArrayReverse.type.toString()).toBe(`[Int!]!`) + expect(fields.conflictArrayType.type.toString()).toBe(`[String!]!`) + expect(fields.conflictScalar.type.toString()).toBe(`Int!`) + expect(fields.conflictScalarReverse.type.toString()).toBe(`Nested!`) + expect(fields.conflictScalarArray.type.toString()).toBe(`[Int!]!`) + expect(fields.conflcitScalarArrayReverse.type.toString()).toBe(`[Nested!]!`) + + // Explicit typeDefs have priority on nested types as well + expect(nestedFields.conflict.type.toString()).toBe(`String!`) + expect(nestedNestedFields.conflict.type.toString()).toBe(`String!`) + + // Date resolvers + expect(fields.explicitDate.resolve).toBeUndefined() + expect(fields.inferDate.resolve).toBeDefined() + }) + + it(`with both @dontInfer and noDefaultResolvers: true`, async () => { + const schema = await buildTestSchema({ + addDefaultResolvers: false, + infer: false, + }) + + const fields = schema.getType(`Test`).getFields() + const nestedFields = schema.getType(`Nested`).getFields() + const nestedNestedFields = schema.getType(`NestedNested`).getFields() + + // Non-conflicting top-level fields added + expect(fields.bar.type.toString()).toBe(`Boolean!`) + + // Not adding inferred fields + expect(fields.foo).toBeUndefined() + expect(nestedFields.foo).toBeUndefined() + expect(nestedNestedFields.foo).toBeUndefined() + expect(nestedFields.extra).toBeUndefined() + expect(nestedNestedFields.extraExtra).toBeUndefined() + expect(nestedNestedFields.extraExtraExtra).toBeUndefined() + expect(fields.inferDate).toBeUndefined() + + // Non-conflicting fields added on nested type + expect(fields.nested.type.toString()).toBe(`Nested!`) + expect(fields.nestedArray.type.toString()).toBe(`[Nested!]!`) + expect(nestedFields.bar.type.toString()).toBe(`Boolean!`) + expect(nestedNestedFields.bar.type.toString()).toBe(`Boolean!`) + + // When type is referenced more than once on typeDefs, all non-conflicting + // fields are added + expect(nestedNestedFields.notExtra.type.toString()).toBe(`Boolean`) + + // Explicit typeDefs have proprity in case of type conflict + expect(fields.conflictType.type.toString()).toBe(`String!`) + expect(fields.conflictArray.type.toString()).toBe(`Int!`) + expect(fields.conflictArrayReverse.type.toString()).toBe(`[Int!]!`) + expect(fields.conflictArrayType.type.toString()).toBe(`[String!]!`) + expect(fields.conflictScalar.type.toString()).toBe(`Int!`) + expect(fields.conflictScalarReverse.type.toString()).toBe(`Nested!`) + expect(fields.conflictScalarArray.type.toString()).toBe(`[Int!]!`) + expect(fields.conflcitScalarArrayReverse.type.toString()).toBe(`[Nested!]!`) + + // Explicit typeDefs have priority on nested types as well + expect(nestedFields.conflict.type.toString()).toBe(`String!`) + expect(nestedNestedFields.conflict.type.toString()).toBe(`String!`) + + // Date resolvers + expect(fields.explicitDate.resolve).toBeUndefined() + }) +}) diff --git a/packages/gatsby/src/schema/infer/add-inferred-fields.js b/packages/gatsby/src/schema/infer/add-inferred-fields.js new file mode 100644 index 0000000000000..60f65227f4087 --- /dev/null +++ b/packages/gatsby/src/schema/infer/add-inferred-fields.js @@ -0,0 +1,419 @@ +const _ = require(`lodash`) +const { + defaultFieldResolver, + getNamedType, + GraphQLObjectType, + GraphQLList, +} = require(`graphql`) +const invariant = require(`invariant`) +const report = require(`gatsby-cli/lib/reporter`) + +const { isFile } = require(`./is-file`) +const { link, fileByPath } = require(`../resolvers`) +const { isDate, dateResolver } = require(`../types/date`) +const is32BitInteger = require(`./is-32-bit-integer`) + +const addInferredFields = ({ + schemaComposer, + typeComposer, + exampleValue, + nodeStore, + inferConfig, + typeMapping, + parentSpan, +}) => { + addInferredFieldsImpl({ + schemaComposer, + typeComposer, + nodeStore, + exampleObject: exampleValue, + prefix: typeComposer.getTypeName(), + typeMapping, + addNewFields: inferConfig ? inferConfig.infer : true, + addDefaultResolvers: inferConfig ? inferConfig.addDefaultResolvers : true, + }) +} + +module.exports = { + addInferredFields, +} + +const addInferredFieldsImpl = ({ + schemaComposer, + typeComposer, + nodeStore, + exampleObject, + typeMapping, + prefix, + addNewFields, + addDefaultResolvers, +}) => { + const fields = [] + Object.keys(exampleObject).forEach(unsanitizedKey => { + const exampleValue = exampleObject[unsanitizedKey] + fields.push( + getFieldConfig({ + schemaComposer, + typeComposer, + nodeStore, + prefix, + exampleValue, + unsanitizedKey, + typeMapping, + addNewFields, + addDefaultResolvers, + }) + ) + }) + + const fieldsByKey = _.groupBy(fields, field => field.key) + + Object.keys(fieldsByKey).forEach(key => { + const possibleFields = fieldsByKey[key] + let fieldConfig + if (possibleFields.length > 1) { + const field = resolveMultipleFields(possibleFields) + const possibleFieldsNames = possibleFields + .map(field => `\`${field.unsanitizedKey}\``) + .join(`, `) + report.warn( + `Multiple node fields resolve to the same GraphQL field \`${ + field.key + }\` - [${possibleFieldsNames}]. Gatsby will use \`${ + field.unsanitizedKey + }\`.` + ) + fieldConfig = field.fieldConfig + } else { + fieldConfig = possibleFields[0].fieldConfig + } + + let arrays = 0 + let namedInferredType = fieldConfig.type + while (Array.isArray(namedInferredType)) { + namedInferredType = namedInferredType[0] + arrays++ + } + + if (typeComposer.hasField(key)) { + const fieldType = typeComposer.getFieldType(key) + + let lists = 0 + let namedFieldType = fieldType + while (namedFieldType.ofType) { + namedFieldType = namedFieldType.ofType + if (namedFieldType instanceof GraphQLList) { + lists++ + } + } + + if (arrays === lists) { + if ( + namedFieldType instanceof GraphQLObjectType && + typeof namedInferredType !== `string` && + namedFieldType.name === namedInferredType.getTypeName() + ) { + const fieldTypeComposer = typeComposer.getFieldTC(key) + const inferredFields = namedInferredType.getFields() + fieldTypeComposer.addFields(inferredFields) + } else if ( + addDefaultResolvers && + namedFieldType.name === namedInferredType + ) { + let field = typeComposer.getField(key) + if (!field.type) { + field = { + type: field, + } + } + if (_.isEmpty(field.args) && fieldConfig.args) { + field.args = fieldConfig.args + } + if (!field.resolve && fieldConfig.resolve) { + field.resolve = fieldConfig.resolve + } + typeComposer.setField(key, field) + } + } + } else if (addNewFields) { + if (namedInferredType instanceof schemaComposer.TypeComposer) { + schemaComposer.add(namedInferredType) + } + typeComposer.setField(key, fieldConfig) + } + }) + + return typeComposer +} + +const getFieldConfig = ({ + schemaComposer, + typeComposer, + nodeStore, + prefix, + exampleValue, + unsanitizedKey, + typeMapping, + addNewFields, + addDefaultResolvers, +}) => { + let key = createFieldName(unsanitizedKey) + const selector = `${prefix}.${key}` + + let arrays = 0 + let value = exampleValue + while (Array.isArray(value)) { + value = value[0] + arrays++ + } + + let fieldConfig + if (hasMapping(typeMapping, selector)) { + // TODO: Use `prefix` instead of `selector` in hasMapping and getFromMapping? + // i.e. does the config contain sanitized field names? + fieldConfig = getFieldConfigFromMapping({ typeMapping, selector }) + } else if (key.includes(`___NODE`)) { + fieldConfig = getFieldConfigFromFieldNameConvention({ + schemaComposer, + nodeStore, + value: exampleValue, + key: unsanitizedKey, + }) + key = key.split(`___NODE`)[0] + } else { + fieldConfig = getSimpleFieldConfig({ + schemaComposer, + typeComposer, + nodeStore, + key, + value, + selector, + typeMapping, + addNewFields, + addDefaultResolvers, + }) + } + + // Proxy resolver to unsanitized fieldName in case it contained invalid characters + if (key !== unsanitizedKey) { + const resolver = fieldConfig.resolve || defaultFieldResolver + fieldConfig = { + ...fieldConfig, + resolve: (source, args, context, info) => + resolver(source, args, context, { + ...info, + fieldName: unsanitizedKey, + }), + } + } + + while (arrays > 0) { + fieldConfig = { ...fieldConfig, type: [fieldConfig.type] } + arrays-- + } + + return { + key, + unsanitizedKey, + fieldConfig, + } +} + +const resolveMultipleFields = possibleFields => { + const nodeField = possibleFields.find(field => + field.unsanitizedKey.includes(`___NODE`) + ) + if (nodeField) { + return nodeField + } + + const canonicalField = possibleFields.find( + field => field.unsanitizedKey === field.key + ) + if (canonicalField) { + return canonicalField + } + + return _.sortBy(possibleFields, field => field.unsanitizedKey)[0] +} + +// XXX(freiksenet): removing this as it's a breaking change +// Deeper nested levels should be inferred as JSON. +// const MAX_DEPTH = 5 + +const hasMapping = (mapping, selector) => + mapping && Object.keys(mapping).includes(selector) + +const getFieldConfigFromMapping = ({ typeMapping, selector }) => { + const [type, ...path] = typeMapping[selector].split(`.`) + return { type, resolve: link({ by: path.join(`.`) || `id` }) } +} + +// probably should be in example value +const getFieldConfigFromFieldNameConvention = ({ + schemaComposer, + nodeStore, + value, + key, +}) => { + const path = key.split(`___NODE___`)[1] + // Allow linking by nested fields, e.g. `author___NODE___contact___email` + const foreignKey = path && path.replace(/___/g, `.`) + + const getNodeBy = value => + foreignKey + ? nodeStore.getNodes().find(node => _.get(node, foreignKey) === value) + : nodeStore.getNode(value) + + const linkedNodes = Array.isArray(value) + ? value.map(getNodeBy) + : [getNodeBy(value)] + + const linkedTypes = _.uniq( + linkedNodes.filter(Boolean).map(node => node.internal.type) + ) + + invariant( + linkedTypes.length, + `Encountered an error trying to infer a GraphQL type for: \`${key}\`. ` + + `There is no corresponding node with the \`id\` field matching: "${value}".` + ) + + let type + // If the field value is an array that links to more than one type, + // create a GraphQLUnionType. Note that we don't support the case where + // scalar fields link to different types. Similarly, an array of objects + // with foreign-key fields will produce union types if those foreign-key + // fields are arrays, but not if they are scalars. See the tests for an example. + // FIXME: The naming of union types is a breaking change. In current master, + // the type name includes the key, which is (i) potentially not unique, and + // (ii) hinders reusing types. + if (linkedTypes.length > 1) { + const typeName = linkedTypes.sort().join(``) + `Union` + type = schemaComposer.getOrCreateUTC(typeName, utc => { + const types = linkedTypes.map(typeName => + schemaComposer.getOrCreateTC(typeName) + ) + utc.setTypes(types) + utc.setResolveType(node => node.internal.type) + }) + } else { + type = linkedTypes[0] + } + + return { type, resolve: link({ by: foreignKey || `id` }) } +} + +const getSimpleFieldConfig = ({ + schemaComposer, + typeComposer, + nodeStore, + key, + value, + selector, + typeMapping, + addNewFields, + addDefaultResolvers, +}) => { + switch (typeof value) { + case `boolean`: + return { type: `Boolean` } + case `number`: + return { type: is32BitInteger(value) ? `Int` : `Float` } + case `string`: + if (isDate(value)) { + return dateResolver + } + // FIXME: The weird thing is that we are trying to infer a File, + // but cannot assume that a source plugin for File nodes is actually present. + if (schemaComposer.has(`File`) && isFile(nodeStore, selector, value)) { + // NOTE: For arrays of files, where not every path references + // a File node in the db, it is semi-random if the field is + // inferred as File or String, since the exampleValue only has + // the first entry (which could point to an existing file or not). + return { type: `File`, resolve: fileByPath } + } + return { type: `String` } + case `object`: + if (value instanceof Date) { + return dateResolver + } + if (value instanceof String) { + return { type: `String` } + } + if (value /* && depth < MAX_DEPTH*/) { + // We only create a temporary TypeComposer on nested fields + // (either a clone of an existing field type, or a temporary new one), + // because we don't yet know if this type should end up in the schema. + // It might be for a possibleField that will be disregarded later, + // so we cannot mutate the original. + let fieldTypeComposer + if ( + typeComposer.hasField(key) && + getNamedType(typeComposer.getFieldType(key)) instanceof + GraphQLObjectType + ) { + const originalFieldTypeComposer = typeComposer.getFieldTC(key) + fieldTypeComposer = originalFieldTypeComposer.clone( + originalFieldTypeComposer.getTypeName() + ) + } else { + fieldTypeComposer = schemaComposer.TypeComposer.createTemp( + createTypeName(selector) + ) + } + + return { + type: addInferredFieldsImpl({ + schemaComposer, + typeComposer: fieldTypeComposer, + nodeStore, + exampleObject: value, + typeMapping, + prefix: selector, + addNewFields, + addDefaultResolvers, + }), + } + } + } + throw new Error(`Can't determine type for "${value}" in \`${selector}\`.`) +} + +const createTypeName = selector => { + const key = selector + .split(`.`) + .map(_.upperFirst) + .join(``) + + return key +} + +const NON_ALPHA_NUMERIC_EXPR = new RegExp(`[^a-zA-Z0-9_]`, `g`) + +/** + * GraphQL field names must be a string and cannot contain anything other than + * alphanumeric characters and `_`. They also can't start with `__` which is + * reserved for internal fields (`___foo` doesn't work either). + */ +const createFieldName = key => { + // Check if the key is really a string otherwise GraphQL will throw. + invariant( + typeof key === `string`, + `GraphQL field name (key) is not a string: \`${key}\`.` + ) + + const replaced = key.replace(NON_ALPHA_NUMERIC_EXPR, `_`) + + // key is invalid; normalize with leading underscore and rest with x + if (replaced.match(/^__/)) { + return replaced.replace(/_/g, (char, index) => (index === 0 ? `_` : `x`)) + } + + // key is invalid (starts with numeric); normalize with leading underscore + if (replaced.match(/^[0-9]/)) { + return `_` + replaced + } + + return replaced +} diff --git a/packages/gatsby/src/schema/infer/example-value.js b/packages/gatsby/src/schema/infer/example-value.js new file mode 100644 index 0000000000000..44acc75d6d9ba --- /dev/null +++ b/packages/gatsby/src/schema/infer/example-value.js @@ -0,0 +1,187 @@ +const _ = require(`lodash`) +const is32BitInteger = require(`./is-32-bit-integer`) +const { isDate } = require(`../types/date`) + +const getExampleValue = ({ + nodes, + typeName, + typeConflictReporter, + ignoreFields, +}) => { + const exampleValue = getExampleObject({ + nodes, + prefix: typeName, + typeConflictReporter, + ignoreFields, + }) + return exampleValue +} + +module.exports = { + getExampleValue, +} + +const getExampleObject = ({ + nodes, + prefix, + typeConflictReporter, + ignoreFields = [], +}) => { + const allKeys = nodes.reduce( + (acc, node) => + Object.keys(node).forEach( + key => key && !ignoreFields.includes(key) && acc.add(key) + ) || acc, + new Set() + ) + + const exampleValue = Array.from(allKeys).reduce((acc, key) => { + const entries = nodes + .map(node => { + const value = node[key] + const type = getType(value) + return type && { value, type, parent: node } + }) + .filter(Boolean) + + const selector = prefix ? `${prefix}.${key}` : key + + const entriesByType = _.uniqBy(entries, entry => entry.type) + if (!entriesByType.length) return acc + + // TODO: This whole thing could be prettier! + let { value, type } = entriesByType[0] + let arrayWrappers = 0 + while (Array.isArray(value)) { + value = value[0] + arrayWrappers++ + } + + if (entriesByType.length > 1 || type.includes(`,`)) { + if ( + isMixOfDatesAndStrings( + entriesByType.map(entry => entry.type), + arrayWrappers + ) + ) { + // TODO: Possibly revisit this in Gatsby v3. + const allNonEmptyStringsAreDates = entries.every(entry => { + const values = Array.isArray(entry.value) + ? _.flatMap(entry.value) + : [entry.value] + return values.every( + value => value === `` || getType(value) === `date` + ) + }) + if (allNonEmptyStringsAreDates) { + value = `1978-09-26` + } else { + value = `String` + } + } else { + typeConflictReporter.addConflict(selector, entriesByType) + return acc + } + } + + let exampleFieldValue + if ( + _.isObject(value) && + !_.isArray(value) && + !_.isDate(value) && + !_.isRegExp(value) + ) { + const objects = entries.reduce((acc, entry) => { + let { value } = entry + let arrays = arrayWrappers - 1 + while (arrays > 0) { + value = value[0] + arrays-- + } + return acc.concat(value) + }, []) + const exampleObject = getExampleObject({ + nodes: objects, + prefix: selector, + typeConflictReporter, + }) + if (!Object.keys(exampleObject).length) return acc + exampleFieldValue = exampleObject + } else if (key.includes(`___NODE`) && arrayWrappers) { + // For arrays on ___NODE foreign-key fields we return all values, + // because the array values are allowed to link to nodes of different types. + // For those we will create a GraphQLUnionType later. + arrayWrappers-- + exampleFieldValue = entries.reduce( + (acc, entry) => acc.concat(entry.value), + [] + ) + } else { + // FIXME: Why not simply treat every number as float (instead of looping through all values again)? + exampleFieldValue = + (typeof value === `number` && findFloat(entries)) || value + // exampleFieldValue = value === `number` ? 0.1 : value + } + while (arrayWrappers--) { + exampleFieldValue = [exampleFieldValue] + } + acc[key] = exampleFieldValue + + return acc + }, {}) + + return exampleValue +} + +const isMixOfDatesAndStrings = (types, arrayWrappers) => { + const acc = new Set() + types.every(type => { + let arrays = arrayWrappers + while (arrays--) { + if (type.startsWith(`[`)) { + type = type.slice(1, -1) + } else { + return false + } + } + type.split(`,`).forEach(t => acc.add(t.replace(/[[]]/g, ``))) + return true + }) + return acc.size === 2 && acc.has(`date`) && acc.has(`string`) +} + +const findFloat = entries => { + let result + const find = numbers => + numbers.some(value => { + const number = typeof value === `object` ? value.value : value + return Array.isArray(number) + ? find(number) + : !is32BitInteger(number) && (result = number) + }) + find(entries) + return result +} + +const getType = value => { + switch (typeof value) { + case `number`: + return `number` + case `string`: + return isDate(value) ? `date` : `string` + case `boolean`: + return `boolean` + case `object`: + if (value === null) return null + if (value instanceof Date) return `date` + if (value instanceof String) return `string` + if (Array.isArray(value)) { + const uniqueValues = _.uniq(value.map(getType).filter(v => v != null)) + return uniqueValues.length ? `[${uniqueValues.join(`,`)}]` : null + } + if (!Object.keys(value).length) return null + return `object` + default: + return null + } +} diff --git a/packages/gatsby/src/schema/infer/get-infer-config.js b/packages/gatsby/src/schema/infer/get-infer-config.js new file mode 100644 index 0000000000000..59dddcc57b4d1 --- /dev/null +++ b/packages/gatsby/src/schema/infer/get-infer-config.js @@ -0,0 +1,49 @@ +// @flow + +const { Kind } = require(`graphql`) + +export interface InferConfig { + infer: boolean; + addDefaultResolvers: boolean; +} + +const DEFAULT_INFER_CONFIG: InferConfig = { + infer: true, + addDefaultResolvers: true, +} + +// Get inferance config from type directives +const getInferConfig: ( + typeComposer: TypeComposer +) => InferConfig = typeComposer => { + const type = typeComposer.getType() + const inferConfig = { ...DEFAULT_INFER_CONFIG } + if (type.astNode && type.astNode.directives) { + type.astNode.directives.forEach(directive => { + if (directive.name.value === `infer`) { + inferConfig.infer = true + inferConfig.addDefaultResolvers = getNoDefaultResolvers(directive) + } else if (directive.name.value === `dontInfer`) { + inferConfig.infer = false + inferConfig.addDefaultResolvers = getNoDefaultResolvers(directive) + } + }) + } + + return inferConfig +} + +module.exports = getInferConfig + +const getNoDefaultResolvers = directive => { + const noDefaultResolvers = directive.arguments.find( + ({ name }) => name.value === `noDefaultResolvers` + ) + if (noDefaultResolvers) { + if (noDefaultResolvers.value.kind === Kind.BOOLEAN) { + return !noDefaultResolvers.value.value + } + } + + return DEFAULT_INFER_CONFIG.addDefaultResolvers +} diff --git a/packages/gatsby/src/schema/infer/index.js b/packages/gatsby/src/schema/infer/index.js new file mode 100644 index 0000000000000..7bfdfb0b72358 --- /dev/null +++ b/packages/gatsby/src/schema/infer/index.js @@ -0,0 +1,113 @@ +const report = require(`gatsby-cli/lib/reporter`) +const { getExampleValue } = require(`./example-value`) +const { + addNodeInterface, + getNodeInterface, +} = require(`../types/node-interface`) +const { addInferredFields } = require(`./add-inferred-fields`) +const getInferConfig = require(`./get-infer-config`) + +const addInferredType = ({ + schemaComposer, + typeComposer, + nodeStore, + typeConflictReporter, + typeMapping, + parentSpan, +}) => { + const typeName = typeComposer.getTypeName() + const exampleValue = getExampleValue({ + nodes: nodeStore.getNodesByType(typeName), + typeName, + typeConflictReporter, + ignoreFields: [ + ...getNodeInterface({ schemaComposer }).getFieldNames(), + `$loki`, + ], + }) + + addInferredFields({ + schemaComposer, + typeComposer, + nodeStore, + exampleValue, + inferConfig: getInferConfig(typeComposer), + typeMapping, + parentSpan, + }) + return typeComposer +} + +const addInferredTypes = ({ + schemaComposer, + nodeStore, + typeConflictReporter, + typeMapping, + parentSpan, +}) => { + // XXX(freiksenet): Won't be needed after plugins set typedefs + // Infer File first so all the links to it would work + const typeNames = putFileFirst(nodeStore.getTypes()) + const noNodeInterfaceTypes = [] + + typeNames.forEach(typeName => { + let typeComposer + let inferConfig + if (schemaComposer.has(typeName)) { + typeComposer = schemaComposer.getTC(typeName) + inferConfig = getInferConfig(typeComposer) + if (inferConfig.infer) { + if (!typeComposer.hasInterface(`Node`)) { + noNodeInterfaceTypes.push(typeComposer.getType()) + } + } + } else { + typeComposer = schemaComposer.createTC(typeName) + addNodeInterface({ schemaComposer, typeComposer }) + } + }) + + // XXX(freiksenet): We iterate twice to pre-create all types + const typeComposers = typeNames.map(typeName => { + addInferredType({ + schemaComposer, + nodeStore, + typeConflictReporter, + typeComposer: schemaComposer.getTC(typeName), + typeMapping, + parentSpan, + }) + }) + + if (noNodeInterfaceTypes.length > 0) { + noNodeInterfaceTypes.forEach(type => { + report.warn( + `Type \`${type}\` declared in \`createTypes\` looks like a node, ` + + `but doesn't implement a \`Node\` interface. It's likely that you should ` + + `add the \`Node\` interface to your type def:\n\n` + + `\`type ${type} implements Node { ... }\`\n\n` + + `If you know that you don't want it to be a node (which would mean no ` + + `root queries to retrieve it), you can explicitly disable inference ` + + `for it:\n\n` + + `\`type ${type} @dontInfer { ... }\`` + ) + }) + report.panic(`Building schema failed`) + } + + return typeComposers +} + +const putFileFirst = typeNames => { + const index = typeNames.indexOf(`File`) + if (index !== -1) { + return [`File`, ...typeNames.slice(0, index), ...typeNames.slice(index + 1)] + } else { + return typeNames + } +} + +module.exports = { + addInferredType, + addInferredTypes, +} diff --git a/packages/gatsby/src/schema/infer/is-32-bit-integer.js b/packages/gatsby/src/schema/infer/is-32-bit-integer.js new file mode 100644 index 0000000000000..af07ce30e3bfd --- /dev/null +++ b/packages/gatsby/src/schema/infer/is-32-bit-integer.js @@ -0,0 +1,3 @@ +const is32BitInteger = num => (num | 0) === num + +module.exports = is32BitInteger diff --git a/packages/gatsby/src/schema/infer/is-file.js b/packages/gatsby/src/schema/infer/is-file.js new file mode 100644 index 0000000000000..99121ca9f6c12 --- /dev/null +++ b/packages/gatsby/src/schema/infer/is-file.js @@ -0,0 +1,85 @@ +const _ = require(`lodash`) +const path = require(`path`) +const slash = require(`slash`) +const mime = require(`mime`) +const isRelative = require(`is-relative`) +const isRelativeUrl = require(`is-relative-url`) + +const isFile = (nodeStore, field, relativePath) => { + const filePath = getFilePath(nodeStore, field, relativePath) + if (!filePath) return false + const filePathExists = nodeStore + .getNodesByType(`File`) + .some(node => node.absolutePath === filePath) + return filePathExists +} + +module.exports = { + isFile, +} + +const getFirstValueAt = (node, selector) => { + let value = _.get(node, selector) + while (Array.isArray(value)) { + value = value[0] + } + return value +} + +const getFilePath = (nodeStore, field, relativePath) => { + const [typeName, ...selector] = field.split(`.`) + + if (typeName === `File`) return null + + const looksLikeFile = + !path.isAbsolute(relativePath) && + mime.getType(relativePath) !== null && + // FIXME: Do we need all of this? + mime.getType(relativePath) !== `application/x-msdownload` && + isRelative(relativePath) && + isRelativeUrl(relativePath) + + if (!looksLikeFile) return null + + const normalizedPath = slash(relativePath) + const node = nodeStore + .getNodesByType(typeName) + .find(node => getFirstValueAt(node, selector) === normalizedPath) + + return node ? getAbsolutePath(nodeStore, node, normalizedPath) : null +} + +const getAbsolutePath = (nodeStore, node, relativePath) => { + const dir = getBaseDir(nodeStore, node) + const withDir = withBaseDir(dir) + return dir + ? Array.isArray(relativePath) + ? relativePath.map(withDir) + : withDir(relativePath) + : null +} + +const getBaseDir = (nodeStore, node) => { + if (node) { + const { dir } = + findAncestorNode( + nodeStore, + node, + node => node.internal.type === `File` + ) || {} + return dir + } + return null +} + +const withBaseDir = dir => p => path.posix.join(dir, slash(p)) + +const findAncestorNode = (nodeStore, childNode, predicate) => { + let node = childNode + do { + if (predicate(node)) { + return node + } + } while ((node = node.parent && nodeStore.getNode(node.parent))) + return null +} diff --git a/packages/gatsby/src/schema/type-conflict-reporter.js b/packages/gatsby/src/schema/infer/type-conflict-reporter.js similarity index 90% rename from packages/gatsby/src/schema/type-conflict-reporter.js rename to packages/gatsby/src/schema/infer/type-conflict-reporter.js index bb7f159f2b76d..9db57638f40ff 100644 --- a/packages/gatsby/src/schema/type-conflict-reporter.js +++ b/packages/gatsby/src/schema/infer/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(`../db/node-tracking`) +const { findRootNodeAncestor } = require(`../../db/node-tracking`) export type TypeConflictExample = { value: mixed, @@ -120,7 +120,7 @@ class TypeConflictReporter { addConflict(selector: string, examples: TypeConflictExample[]) { if (selector.substring(0, 11) === `SitePlugin.`) { // Don't store and print out type conflicts in plugins. - // This is out of user control so he can't do anything + // This is out of user control so he/she can't do anything // to hide those. return } @@ -139,12 +139,10 @@ class TypeConflictReporter { this.entries.forEach(entry => entry.printEntry()) } } -} - -const typeConflictReporter = new TypeConflictReporter() -const printConflicts = () => { - typeConflictReporter.printConflicts() + getConflicts() { + return Array.from(this.entries.values()) + } } -module.exports = { typeConflictReporter, printConflicts, TypeConflictEntry } +module.exports = { TypeConflictReporter, TypeConflictEntry } diff --git a/packages/gatsby/src/schema/lazy-fields.js b/packages/gatsby/src/schema/lazy-fields.js deleted file mode 100644 index 5d3646a95ae15..0000000000000 --- a/packages/gatsby/src/schema/lazy-fields.js +++ /dev/null @@ -1,64 +0,0 @@ -// 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/node-interface.js b/packages/gatsby/src/schema/node-interface.js deleted file mode 100644 index 76dbff64e70da..0000000000000 --- a/packages/gatsby/src/schema/node-interface.js +++ /dev/null @@ -1,28 +0,0 @@ -// @flow -import { - GraphQLNonNull, - GraphQLID, - GraphQLList, - GraphQLInterfaceType, -} from "graphql" - -export const nodeInterface = new GraphQLInterfaceType({ - name: `Node`, - description: `An object with an id, parent, and children`, - fields: () => { - return { - id: { - type: new GraphQLNonNull(GraphQLID), - description: `The id of the node.`, - }, - parent: { - type: nodeInterface, - description: `The parent of this node.`, - }, - children: { - type: new GraphQLList(nodeInterface), - description: `The children of this node.`, - }, - } - }, -}) diff --git a/packages/gatsby/src/schema/node-model.js b/packages/gatsby/src/schema/node-model.js new file mode 100644 index 0000000000000..497825af5c924 --- /dev/null +++ b/packages/gatsby/src/schema/node-model.js @@ -0,0 +1,276 @@ +// @flow + +const _ = require(`lodash`) +const { + isAbstractType, + GraphQLOutputType, + GraphQLUnionType, +} = require(`graphql`) +const invariant = require(`invariant`) + +type IDOrNode = string | { id: string } +type TypeOrTypeName = string | GraphQLOutputType + +/** + * Optional page dependency information. + * + * @typedef {Object} PageDependencies + * @property {string} path The path of the page that depends on the retrieved nodes' data + * @property {string} [connectionType] Mark this dependency as a connection + */ +interface PageDependencies { + path: string; + connectionType?: string; +} + +interface QueryArguments { + type: TypeOrTypeName; + query: { filter: Object, sort?: Object, skip?: number, limit?: number }; + firstOnly?: boolean; +} + +export interface NodeModel { + getNodeById( + { id: IDOrNode, type?: TypeOrTypeName }, + pageDependencies?: PageDependencies + ): any | null; + getNodesByIds( + { ids: Array, type?: TypeOrTypeName }, + pageDependencies?: PageDependencies + ): Array; + getAllNodes( + { type?: TypeOrTypeName }, + pageDependencies?: PageDependencies + ): Array; + runQuery( + args: QueryArguments, + pageDependencies?: PageDependencies + ): Promise; + getTypes(): Array; +} + +class LocalNodeModel { + constructor({ schema, nodeStore, createPageDependency, path }) { + this.schema = schema + this.nodeStore = nodeStore + this.createPageDependency = createPageDependency + this.path = path + } + + /** + * Get a node from the store by ID and optional type. + * + * @param {Object} args + * @param {string} args.id ID of the requested node + * @param {(string|GraphQLOutputType)} [args.type] Optional type of the node + * @param {PageDependencies} [pageDependencies] + * @returns {(Node|null)} + */ + getNodeById(args, pageDependencies) { + const { id, type } = args || {} + + const node = getNodeById(this.nodeStore, id) + + let result + if (!node) { + result = null + } else if (!type) { + result = node + } else { + const nodeTypeNames = toNodeTypeNames(this.schema, type) + result = nodeTypeNames.includes(node.internal.type) ? node : null + } + + return trackPageDependencies( + result, + { path: this.path, ...pageDependencies }, + this.createPageDependency + ) + } + + /** + * Get nodes from the store by IDs and optional type. + * + * @param {Object} args + * @param {string[]} args.ids IDs of the requested nodes + * @param {(string|GraphQLOutputType)} [args.type] Optional type of the nodes + * @param {PageDependencies} [pageDependencies] + * @returns {Node[]} + */ + getNodesByIds(args, pageDependencies) { + const { ids, type } = args || {} + + const nodes = Array.isArray(ids) + ? ids.map(id => getNodeById(this.nodeStore, id)).filter(Boolean) + : [] + + let result + if (!nodes.length || !type) { + result = nodes + } else { + const nodeTypeNames = toNodeTypeNames(this.schema, type) + result = nodes.filter(node => nodeTypeNames.includes(node.internal.type)) + } + + return trackPageDependencies( + result, + { path: this.path, ...pageDependencies }, + this.createPageDependency + ) + } + + /** + * Get all nodes in the store, or all nodes of a specified type. + * + * @param {Object} args + * @param {(string|GraphQLOutputType)} [args.type] Optional type of the nodes + * @param {PageDependencies} [pageDependencies] + * @returns {Node[]} + */ + getAllNodes(args, pageDependencies) { + const { type } = args || {} + + let result + if (!type) { + result = this.nodeStore.getNodes() + } else { + const nodeTypeNames = toNodeTypeNames(this.schema, type) + const nodes = nodeTypeNames.reduce( + (acc, typeName) => acc.concat(this.nodeStore.getNodesByType(typeName)), + [] + ) + result = nodes.filter(Boolean) + } + + return trackPageDependencies( + result, + { path: this.path, ...pageDependencies }, + this.createPageDependency + ) + } + + /** + * Get nodes of a type matching the specified query. + * + * @param {Object} args + * @param {Object} args.query Query arguments (`filter`, `sort`, `limit`, `skip`) + * @param {(string|GraphQLOutputType)} args.type Type + * @param {boolean} [args.firstOnly] If true, return only first match + * @param {PageDependencies} [pageDependencies] + * @returns {Promise} + */ + async runQuery(args, pageDependencies) { + const { query, firstOnly, type } = args || {} + + // We don't support querying union types (yet?), because the combined types + // need not have any fields in common. + const gqlType = typeof type === `string` ? this.schema.getType(type) : type + invariant( + !(gqlType instanceof GraphQLUnionType), + `Querying GraphQLUnion types is not supported.` + ) + + // We provide nodes in case of abstract types, because `run-sift` should + // only need to know about node types in the store. + let nodes + const nodeTypeNames = toNodeTypeNames(this.schema, gqlType) + if (nodeTypeNames.length > 1) { + nodes = nodeTypeNames.reduce( + (acc, typeName) => acc.concat(this.nodeStore.getNodesByType(typeName)), + [] + ) + } + + const queryResult = await this.nodeStore.runQuery({ + queryArgs: query, + firstOnly, + gqlType, + nodes, + }) + + let result = queryResult + if (args.firstOnly) { + if (result && result.length > 0) { + result = result[0] + } else { + result = null + } + } + + return trackPageDependencies( + result, + { path: this.path, ...pageDependencies }, + this.createPageDependency + ) + } + + /** + * Get the names of all node types in the store. + * + * @returns {string[]} + */ + getTypes() { + return this.nodeStore.getTypes() + } + + /** + * Get the root ancestor node for an object's parent node, or its first + * ancestor matching a specified condition. + * + * @param {(Object|Array)} obj An object belonging to a Node, or a Node object + * @param {Function} [predicate] Optional condition to match + * @returns {(Node|null)} + */ + findRootNodeAncestor(obj, predicate) { + return this.nodeStore.findRootNodeAncestor(obj, predicate) + } +} + +const getNodeById = (nodeStore, id) => { + // This is for cases when the `id` has already been resolved + // to a full Node for the input filter, and is also in the selection + // set. E.g. `{ foo(parent: { id: { eq: 1 } } ) { parent { id } } }`. + if (_.isPlainObject(id) && id.id) { + return id + } + return id != null ? nodeStore.getNode(id) : null +} + +const toNodeTypeNames = (schema, gqlTypeName) => { + const gqlType = + typeof gqlTypeName === `string` ? schema.getType(gqlTypeName) : gqlTypeName + + if (!gqlType) return [] + + const possibleTypes = isAbstractType(gqlType) + ? schema.getPossibleTypes(gqlType) + : [gqlType] + + return possibleTypes + .filter(type => type.getInterfaces().some(iface => iface.name === `Node`)) + .map(type => type.name) +} + +const trackPageDependencies = ( + result, + pageDependencies, + createPageDependency +) => { + const { path, connectionType } = pageDependencies + if (path) { + if (connectionType) { + createPageDependency({ path, connection: connectionType }) + } else { + const nodes = Array.isArray(result) ? result : [result] + nodes + .filter(Boolean) + .map(node => createPageDependency({ path, nodeId: node.id })) + } + } + + return result +} + +module.exports = { + LocalNodeModel, +} diff --git a/packages/gatsby/src/schema/node.js b/packages/gatsby/src/schema/node.js deleted file mode 100644 index 9289dcfa9eef9..0000000000000 --- a/packages/gatsby/src/schema/node.js +++ /dev/null @@ -1,4 +0,0 @@ -// @flow -import { nodeDefinitions } from "graphql-relay" - -module.exports = nodeDefinitions(globalId => null) diff --git a/packages/gatsby/src/schema/page-dependency-resolver.js b/packages/gatsby/src/schema/page-dependency-resolver.js deleted file mode 100644 index b98ef80a9204a..0000000000000 --- a/packages/gatsby/src/schema/page-dependency-resolver.js +++ /dev/null @@ -1,36 +0,0 @@ -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/resolvers.js b/packages/gatsby/src/schema/resolvers.js new file mode 100644 index 0000000000000..0294d529ca591 --- /dev/null +++ b/packages/gatsby/src/schema/resolvers.js @@ -0,0 +1,198 @@ +const systemPath = require(`path`) +const normalize = require(`normalize-path`) +const _ = require(`lodash`) +const { GraphQLList, getNullableType, getNamedType } = require(`graphql`) + +const findMany = typeName => ({ args, context, info }) => + context.nodeModel.runQuery( + { + query: args, + firstOnly: false, + type: info.schema.getType(typeName), + }, + { path: context.path, connectionType: typeName } + ) + +const findOne = typeName => ({ args, context, info }) => + context.nodeModel.runQuery( + { + query: { filter: args }, + firstOnly: true, + type: info.schema.getType(typeName), + }, + { path: context.path } + ) + +const findManyPaginated = typeName => async rp => { + const result = await findMany(typeName)(rp) + return paginate(result, { skip: rp.args.skip, limit: rp.args.limit }) +} + +const distinct = (source, args, context, info) => { + const { field } = args + const { edges } = source + const values = edges.reduce((acc, { node }) => { + const value = getValueAtSelector(node, field) + return value != null + ? acc.concat(value instanceof Date ? value.toISOString() : value) + : acc + }, []) + return Array.from(new Set(values)).sort() +} + +const group = (source, args, context, info) => { + const { field } = args + const { edges } = source + const groupedResults = edges.reduce((acc, { node }) => { + const value = getValueAtSelector(node, field) + const values = Array.isArray(value) ? value : [value] + values + .filter(value => value != null) + .forEach(value => { + const key = value instanceof Date ? value.toISOString() : value + acc[key] = (acc[key] || []).concat(node) + }) + return acc + }, {}) + return Object.keys(groupedResults) + .sort() + .reduce((acc, fieldValue) => { + acc.push({ + ...paginate(groupedResults[fieldValue], args), + field, + fieldValue, + }) + return acc + }, []) +} + +const paginate = (results = [], { skip = 0, limit }) => { + if (results === null) { + results = [] + } + + const count = results.length + const items = results.slice(skip, limit && skip + limit) + + const hasNextPage = skip + limit < count + + return { + totalCount: items.length, + edges: items.map((item, i, arr) => { + return { + node: item, + next: arr[i + 1], + previous: arr[i - 1], + } + }), + nodes: items, + pageInfo: { + hasNextPage, + }, + } +} + +const getValueAtSelector = (obj, selector) => { + const selectors = Array.isArray(selector) ? selector : selector.split(`.`) + return selectors.reduce((acc, key) => { + if (acc && typeof acc === `object`) { + if (Array.isArray(acc)) { + return acc.map(a => a[key]).filter(a => a !== undefined) + } + return acc[key] + } + return undefined + }, obj) +} + +const link = ({ by, from }) => async (source, args, context, info) => { + const fieldValue = source && source[from || info.fieldName] + + if (fieldValue == null || _.isPlainObject(fieldValue)) return fieldValue + if ( + Array.isArray(fieldValue) && + (fieldValue[0] == null || _.isPlainObject(fieldValue[0])) + ) { + return fieldValue + } + + const returnType = getNullableType(info.returnType) + const type = getNamedType(returnType) + + if (by === `id`) { + if (Array.isArray(fieldValue)) { + return context.nodeModel.getNodesByIds( + { ids: fieldValue, type: type }, + { path: context.path } + ) + } else { + return context.nodeModel.getNodeById( + { id: fieldValue, type: type }, + { path: context.path } + ) + } + } + + const equals = value => { + return { eq: value } + } + const oneOf = value => { + return { in: value } + } + const operator = Array.isArray(fieldValue) ? oneOf : equals + args.filter = by.split(`.`).reduceRight((acc, key, i, { length }) => { + return { + [key]: i === length - 1 ? operator(acc) : acc, + } + }, fieldValue) + + return context.nodeModel.runQuery( + { query: args, firstOnly: !(returnType instanceof GraphQLList), type }, + { path: context.path } + ) +} + +const fileByPath = (source, args, context, info) => { + let fieldValue = source[info.fieldName] + + const isArray = getNullableType(info.returnType) instanceof GraphQLList + + if (!fieldValue) { + return null + } + + const findLinkedFileNode = async relativePath => { + // Use the parent File node to create the absolute path to + // the linked file. + const fileLinkPath = normalize( + systemPath.resolve(parentFileNode.dir, relativePath) + ) + + // Use that path to find the linked File node. + const linkedFileNode = _.find( + await context.nodeModel.getAllNodes({ type: `File` }), + n => n.absolutePath === fileLinkPath + ) + return linkedFileNode + } + + // Find the File node for this node (we assume the node is something + // like markdown which would be a child node of a File node). + const parentFileNode = context.nodeModel.findRootNodeAncestor(source) + + // Find the linked File node(s) + if (isArray) { + return Promise.all(fieldValue.map(findLinkedFileNode)) + } else { + return findLinkedFileNode(fieldValue) + } +} + +module.exports = { + findManyPaginated, + findOne, + fileByPath, + link, + distinct, + group, +} diff --git a/packages/gatsby/src/schema/schema-composer.js b/packages/gatsby/src/schema/schema-composer.js new file mode 100644 index 0000000000000..8b12a0f1d6a52 --- /dev/null +++ b/packages/gatsby/src/schema/schema-composer.js @@ -0,0 +1,15 @@ +const { SchemaComposer } = require(`graphql-compose`) +const { getNodeInterface } = require(`./types/node-interface`) +const { GraphQLDate } = require(`./types/date`) +const { InferDirective, DontInferDirective } = require(`./types/directives`) + +const createSchemaComposer = () => { + const schemaComposer = new SchemaComposer() + getNodeInterface({ schemaComposer }) + schemaComposer.addAsComposer(GraphQLDate) + schemaComposer.addDirective(InferDirective) + schemaComposer.addDirective(DontInferDirective) + return schemaComposer +} + +module.exports = { createSchemaComposer } diff --git a/packages/gatsby/src/schema/schema.js b/packages/gatsby/src/schema/schema.js new file mode 100644 index 0000000000000..44d9b6064c95e --- /dev/null +++ b/packages/gatsby/src/schema/schema.js @@ -0,0 +1,507 @@ +const _ = require(`lodash`) +const invariant = require(`invariant`) +const { + isSpecifiedScalarType, + isIntrospectionType, + defaultFieldResolver, + assertValidName, +} = require(`graphql`) +const apiRunner = require(`../utils/api-runner-node`) +const report = require(`gatsby-cli/lib/reporter`) +const { addNodeInterfaceFields } = require(`./types/node-interface`) +const { addInferredType, addInferredTypes } = require(`./infer`) +const { findOne, findManyPaginated } = require(`./resolvers`) +const { getPagination } = require(`./types/pagination`) +const { getSortInput } = require(`./types/sort`) +const { getFilterInput } = require(`./types/filter`) +const { isGatsbyType, GatsbyGraphQLTypeKind } = require(`./types/type-builders`) + +const buildSchema = async ({ + schemaComposer, + nodeStore, + types, + thirdPartySchemas, + typeMapping, + typeConflictReporter, + parentSpan, +}) => { + await updateSchemaComposer({ + schemaComposer, + nodeStore, + types, + thirdPartySchemas, + typeMapping, + typeConflictReporter, + parentSpan, + }) + // const { printSchema } = require(`graphql`) + const schema = schemaComposer.buildSchema() + // console.log(printSchema(schema)) + return schema +} + +const rebuildSchemaWithSitePage = async ({ + schemaComposer, + nodeStore, + typeMapping, + typeConflictReporter, + parentSpan, +}) => { + const typeComposer = addInferredType({ + schemaComposer, + typeComposer: schemaComposer.getTC(`SitePage`), + nodeStore, + typeConflictReporter, + typeMapping, + parentSpan, + }) + await processTypeComposer({ + schemaComposer, + typeComposer, + nodeStore, + parentSpan, + }) + return schemaComposer.buildSchema() +} + +module.exports = { + buildSchema, + rebuildSchemaWithSitePage, +} + +const updateSchemaComposer = async ({ + schemaComposer, + nodeStore, + types, + typeMapping, + thirdPartySchemas, + typeConflictReporter, + parentSpan, +}) => { + await addTypes({ schemaComposer, parentSpan, types }) + await addInferredTypes({ + schemaComposer, + nodeStore, + typeConflictReporter, + typeMapping, + parentSpan, + }) + await addSetFieldsOnGraphQLNodeTypeFields({ + schemaComposer, + nodeStore, + parentSpan, + }) + await Promise.all( + Array.from(schemaComposer.values()).map(typeComposer => + processTypeComposer({ + schemaComposer, + typeComposer, + nodeStore, + parentSpan, + }) + ) + ) + await addThirdPartySchemas({ schemaComposer, thirdPartySchemas, parentSpan }) + await addCustomResolveFunctions({ schemaComposer, parentSpan }) +} + +const processTypeComposer = async ({ + schemaComposer, + typeComposer, + nodeStore, + parentSpan, +}) => { + if ( + typeComposer instanceof schemaComposer.TypeComposer && + typeComposer.hasInterface(`Node`) + ) { + await addNodeInterfaceFields({ schemaComposer, typeComposer, parentSpan }) + await addResolvers({ schemaComposer, typeComposer, parentSpan }) + await addConvenienceChildrenFields({ + schemaComposer, + typeComposer, + nodeStore, + parentSpan, + }) + await addTypeToRootQuery({ schemaComposer, typeComposer, parentSpan }) + } +} + +const addTypes = ({ schemaComposer, types, parentSpan }) => { + types.forEach(typeOrTypeDef => { + if (typeof typeOrTypeDef === `string`) { + let addedTypes + try { + addedTypes = schemaComposer.addTypeDefs(typeOrTypeDef) + } catch (error) { + reportParsingError(error) + } + addedTypes.forEach(type => + processAddedType({ schemaComposer, type, parentSpan }) + ) + } else if (isGatsbyType(typeOrTypeDef)) { + const type = createTypeComposerFromGatsbyType({ + schemaComposer, + type: typeOrTypeDef, + parentSpan, + }) + if (type) { + processAddedType({ schemaComposer, type, parentSpan }) + } + } else { + processAddedType({ schemaComposer, type: typeOrTypeDef, parentSpan }) + } + }) +} + +const processAddedType = ({ schemaComposer, type, parentSpan }) => { + const typeName = schemaComposer.addAsComposer(type) + checkIsAllowedTypeName(typeName) + const typeComposer = schemaComposer.get(typeName) + if ( + typeComposer instanceof schemaComposer.InterfaceTypeComposer || + typeComposer instanceof schemaComposer.UnionTypeComposer + ) { + if (!typeComposer.getResolveType()) { + typeComposer.setResolveType(node => node.internal.type) + } + } + schemaComposer.addSchemaMustHaveType(typeComposer) +} + +const checkIsAllowedTypeName = name => { + invariant( + name !== `Node`, + `The GraphQL type \`Node\` is reserved for internal use.` + ) + invariant( + !name.endsWith(`FilterInput`) && !name.endsWith(`SortInput`), + `GraphQL type names ending with "FilterInput" or "SortInput" are ` + + `reserved for internal use. Please rename \`${name}\`.` + ) + invariant( + ![`Boolean`, `Date`, `Float`, `ID`, `Int`, `JSON`, `String`].includes(name), + `The GraphQL type \`${name}\` is reserved for internal use by ` + + `built-in scalar types.` + ) + assertValidName(name) +} + +const createTypeComposerFromGatsbyType = ({ + schemaComposer, + type, + parentSpan, +}) => { + switch (type.kind) { + case GatsbyGraphQLTypeKind.OBJECT: { + return schemaComposer.TypeComposer.createTemp({ + ...type.config, + interfaces: () => { + if (type.config.interfaces) { + return type.config.interfaces.map(iface => { + if (typeof iface === `string`) { + return schemaComposer.getIFTC(iface).getType() + } else { + return iface + } + }) + } else { + return [] + } + }, + }) + } + case GatsbyGraphQLTypeKind.INPUT_OBJECT: { + return schemaComposer.InputTypeComposer.createTemp(type.config) + } + case GatsbyGraphQLTypeKind.UNION: { + return schemaComposer.UnionTypeComposer.createTemp({ + ...type.config, + types: () => { + if (type.types) { + return type.types.map(typeName => + schemaComposer.getTC(typeName).getType() + ) + } else { + return [] + } + }, + }) + } + case GatsbyGraphQLTypeKind.INTERFACE: { + return schemaComposer.InterfaceTypeComposer.createTemp(type.config) + } + default: { + console.warn(`Illegal type definition: ${JSON.stringify(type.config)}`) + return null + } + } +} + +const addSetFieldsOnGraphQLNodeTypeFields = ({ + schemaComposer, + nodeStore, + parentSpan, +}) => + Promise.all( + Array.from(schemaComposer.values()).map(async tc => { + if ( + tc instanceof schemaComposer.TypeComposer && + tc.hasInterface(`Node`) + ) { + const typeName = tc.getTypeName() + const result = await apiRunner(`setFieldsOnGraphQLNodeType`, { + type: { + name: typeName, + nodes: nodeStore.getNodesByType(typeName), + }, + traceId: `initial-setFieldsOnGraphQLNodeType`, + parentSpan: parentSpan, + }) + if (result) { + // NOTE: `setFieldsOnGraphQLNodeType` only allows setting + // nested fields with a path as property name, i.e. + // `{ 'frontmatter.published': 'Boolean' }`, but not in the form + // `{ frontmatter: { published: 'Boolean' }}` + result.forEach(fields => tc.addNestedFields(fields)) + } + } + }) + ) + +const addThirdPartySchemas = ({ + schemaComposer, + thirdPartySchemas, + parentSpan, +}) => { + thirdPartySchemas.forEach(schema => { + const queryTC = schemaComposer.TypeComposer.createTemp( + schema.getQueryType() + ) + const fields = queryTC.getFields() + schemaComposer.Query.addFields(fields) + + // Explicitly add the third-party schema's types, so they can be targeted + // in `createResolvers` API. + const types = schema.getTypeMap() + Object.keys(types).forEach(typeName => { + const type = types[typeName] + if ( + type !== schema.getQueryType() && + !isSpecifiedScalarType(type) && + !isIntrospectionType(type) + ) { + type.isThirdPartyType = true + schemaComposer.add(type) + } + }) + }) +} + +const addCustomResolveFunctions = async ({ schemaComposer, parentSpan }) => { + const intermediateSchema = schemaComposer.buildSchema() + const createResolvers = resolvers => { + Object.keys(resolvers).forEach(typeName => { + const fields = resolvers[typeName] + if (schemaComposer.has(typeName)) { + const tc = schemaComposer.getTC(typeName) + Object.keys(fields).forEach(fieldName => { + const fieldConfig = fields[fieldName] + if (tc.hasField(fieldName)) { + const originalFieldConfig = tc.getFieldConfig(fieldName) + const originalTypeName = originalFieldConfig.type.toString() + const originalResolver = originalFieldConfig.resolve + const fieldTypeName = + fieldConfig.type && fieldConfig.type.toString() + if ( + !fieldTypeName || + tc.getFieldType(fieldName) === fieldConfig.type.toString() || + tc.getType().isThirdPartyType + ) { + const newConfig = {} + if (fieldConfig.type) { + newConfig.type = fieldConfig.type + } + if (fieldConfig.args) { + newConfig.args = fieldConfig.args + } + if (fieldConfig.resolve) { + newConfig.resolve = (source, args, context, info) => + fieldConfig.resolve(source, args, context, { + ...info, + originalResolver: originalResolver || defaultFieldResolver, + }) + } + tc.extendField(fieldName, newConfig) + } else if (fieldTypeName) { + report.warn( + `\`createResolvers\` passed resolvers for field ` + + `\`${typeName}.${fieldName}\` with type \`${fieldTypeName}\`. ` + + `Such a field with type \`${originalTypeName}\` already exists ` + + `on the type. Use \`createTypes\` to override type fields.` + ) + } + } else { + tc.addFields({ [fieldName]: fieldConfig }) + } + }) + } else { + report.warn( + `\`createResolvers\` passed resolvers for type \`${typeName}\` that ` + + `doesn't exist in the schema. Use \`createTypes\` to add the type ` + + `before adding resolvers.` + ) + } + }) + } + await apiRunner(`createResolvers`, { + schema: intermediateSchema, + createResolvers, + traceId: `initial-createResolvers`, + parentSpan: parentSpan, + }) +} + +const addResolvers = ({ schemaComposer, typeComposer }) => { + const typeName = typeComposer.getTypeName() + + // TODO: We should have an abstraction for keeping and clearing + // related TypeComposers and InputTypeComposers. + // Also see the comment on the skipped test in `rebuild-schema`. + typeComposer.removeInputTypeComposer() + + const sortInputTC = getSortInput({ + schemaComposer, + typeComposer, + }) + const filterInputTC = getFilterInput({ + schemaComposer, + typeComposer, + }) + const paginationTC = getPagination({ + schemaComposer, + typeComposer, + }) + typeComposer.addResolver({ + name: `findOne`, + type: typeComposer, + args: { + ...filterInputTC.getFields(), + }, + resolve: findOne(typeName), + }) + typeComposer.addResolver({ + name: `findManyPaginated`, + type: paginationTC, + args: { + filter: filterInputTC, + sort: sortInputTC, + skip: `Int`, + limit: `Int`, + // page: `Int`, + // perPage: { type: `Int`, defaultValue: 20 }, + }, + resolve: findManyPaginated(typeName), + }) +} + +const addConvenienceChildrenFields = ({ + schemaComposer, + typeComposer, + nodeStore, +}) => { + const nodes = nodeStore.getNodesByType(typeComposer.getTypeName()) + + const childNodesByType = groupChildNodesByType({ nodeStore, nodes }) + + Object.keys(childNodesByType).forEach(typeName => { + const typeChildren = childNodesByType[typeName] + const maxChildCount = _.maxBy( + _.values(_.groupBy(typeChildren, c => c.parent)), + g => g.length + ).length + + if (maxChildCount > 1) { + typeComposer.addFields(createChildrenField(typeName)) + } else { + typeComposer.addFields(createChildField(typeName)) + } + }) +} + +function createChildrenField(typeName) { + return { + [_.camelCase(`children ${typeName}`)]: { + type: () => [typeName], + resolve(source, args, context) { + const { path } = context + return context.nodeModel.getNodesByIds( + { ids: source.children, type: typeName }, + { path } + ) + }, + }, + } +} + +function createChildField(typeName) { + return { + [_.camelCase(`child ${typeName}`)]: { + type: () => typeName, + async resolve(source, args, context) { + const { path } = context + const result = await context.nodeModel.getNodesByIds( + { ids: source.children, type: typeName }, + { path } + ) + if (result && result.length > 0) { + return result[0] + } else { + return null + } + }, + }, + } +} + +function groupChildNodesByType({ nodeStore, nodes }) { + return _(nodes) + .flatMap(node => (node.children || []).map(nodeStore.getNode)) + .groupBy(node => (node.internal ? node.internal.type : undefined)) + .value() +} + +const addTypeToRootQuery = ({ schemaComposer, typeComposer }) => { + const typeName = typeComposer.getTypeName() + // not strictly correctly, result is `npmPackage` and `allNpmPackage` from type `NPMPackage` + const queryName = _.camelCase(typeName) + const queryNamePlural = _.camelCase(`all ${typeName}`) + schemaComposer.Query.addFields({ + [queryName]: typeComposer.getResolver(`findOne`), + [queryNamePlural]: typeComposer.getResolver(`findManyPaginated`), + }) +} + +const reportParsingError = error => { + const { message, source, locations } = error + + if (source && locations && locations.length) { + const report = require(`gatsby-cli/lib/reporter`) + const { codeFrameColumns } = require(`@babel/code-frame`) + + const frame = codeFrameColumns( + source.body, + { start: locations[0] }, + { linesAbove: 5, linesBelow: 5 } + ) + report.panic( + `Encountered an error parsing the provided GraphQL type definitions:\n` + + message + + `\n\n` + + frame + + `\n` + ) + } else { + throw error + } +} diff --git a/packages/gatsby/src/schema/types/__tests__/filter-input.js b/packages/gatsby/src/schema/types/__tests__/filter-input.js new file mode 100644 index 0000000000000..92c868a0ba017 --- /dev/null +++ b/packages/gatsby/src/schema/types/__tests__/filter-input.js @@ -0,0 +1,56 @@ +const { build } = require(`../..`) +const { store } = require(`../../../redux`) +require(`../../../db/__tests__/fixtures/ensure-loki`)() + +const nodes = [ + { + id: `parent`, + nested: { + union___NODE: [`union1`, `union2`], + }, + internal: { + type: `Parent`, + contentDigest: `a`, + }, + }, + { + id: `union1`, + foo: `bar`, + internal: { + type: `Union1`, + contentDigest: `bar`, + }, + }, + { + id: `union2`, + foo: `baz`, + internal: { + type: `Union2`, + contentDigest: `baz`, + }, + }, +] + +describe(`Filter input`, () => { + beforeEach(async () => { + store.dispatch({ type: `DELETE_CACHE` }) + nodes.forEach(node => + store.dispatch({ type: `CREATE_NODE`, payload: { ...node } }) + ) + }) + + it(`removes empty input filter fields`, async () => { + // This can happen when a type has only one GraphQLUnion type field, + // which will be skipped by `toInputObjectType` + const schema = await buildSchema() + const parentFilterInput = schema.getType(`ParentFilterInput`) + const fields = parentFilterInput.getFields() + expect(fields.id).toBeDefined() + expect(fields.nested).toBeUndefined() + }) +}) + +const buildSchema = async () => { + await build({}) + return store.getState().schema +} diff --git a/packages/gatsby/src/schema/types/__tests__/sort-and-filter.js b/packages/gatsby/src/schema/types/__tests__/sort-and-filter.js new file mode 100644 index 0000000000000..46a2b68e03608 --- /dev/null +++ b/packages/gatsby/src/schema/types/__tests__/sort-and-filter.js @@ -0,0 +1,453 @@ +// NOTE: Previously `infer-graphql-input-from-fields-test.js` + +const { createSchemaComposer } = require(`../../schema-composer`) +const { getFilterInput } = require(`../filter`) +const { getSortInput } = require(`../sort`) + +const { + GraphQLBoolean, + GraphQLFloat, + GraphQLInt, + GraphQLID, + GraphQLNonNull, + GraphQLString, + GraphQLObjectType, + GraphQLScalarType, + GraphQLEnumType, + GraphQLList, + GraphQLInputObjectType, + Kind, +} = require(`graphql`) +const { GraphQLDate } = require(`../date`) +const { GraphQLJSON } = require(`graphql-compose`) + +const getInferredFields = fields => { + const schemaComposer = createSchemaComposer() + const tc = schemaComposer.createTC({ name: `Test`, fields }) + return getFilterInput({ schemaComposer, typeComposer: tc }) + .getType() + .getFields() +} + +function isIntInput(type) { + expect(type.name).toBe(`IntQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLInt }, + ne: { name: `ne`, type: GraphQLInt }, + lt: { name: `lt`, type: GraphQLInt }, + lte: { name: `lte`, type: GraphQLInt }, + gt: { name: `gt`, type: GraphQLInt }, + gte: { name: `gte`, type: GraphQLInt }, + in: { name: `in`, type: new GraphQLList(GraphQLInt) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLInt) }, + }) +} + +function isDateInput(type) { + expect(type.name).toBe(`DateQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLDate }, + ne: { name: `ne`, type: GraphQLDate }, + lt: { name: `lt`, type: GraphQLDate }, + lte: { name: `lte`, type: GraphQLDate }, + gt: { name: `gt`, type: GraphQLDate }, + gte: { name: `gte`, type: GraphQLDate }, + in: { name: `in`, type: new GraphQLList(GraphQLDate) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLDate) }, + }) +} + +function isIdInput(type) { + expect(type.name).toBe(`IDQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLID }, + ne: { name: `ne`, type: GraphQLID }, + in: { name: `in`, type: new GraphQLList(GraphQLID) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLID) }, + }) +} + +function isStringInput(type) { + expect(type.name).toBe(`StringQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLString }, + ne: { name: `ne`, type: GraphQLString }, + regex: { name: `regex`, type: GraphQLString }, + glob: { name: `glob`, type: GraphQLString }, + in: { name: `in`, type: new GraphQLList(GraphQLString) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLString) }, + }) +} + +function isJsonInput(type) { + expect(type.name).toBe(`JSONQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLJSON }, + ne: { name: `ne`, type: GraphQLJSON }, + regex: { name: `regex`, type: GraphQLJSON }, + glob: { name: `glob`, type: GraphQLJSON }, + in: { name: `in`, type: new GraphQLList(GraphQLJSON) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLJSON) }, + }) +} + +function isFloatInput(type) { + expect(type.name).toBe(`FloatQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLFloat }, + ne: { name: `ne`, type: GraphQLFloat }, + lt: { name: `lt`, type: GraphQLFloat }, + lte: { name: `lte`, type: GraphQLFloat }, + gt: { name: `gt`, type: GraphQLFloat }, + gte: { name: `gte`, type: GraphQLFloat }, + in: { name: `in`, type: new GraphQLList(GraphQLFloat) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLFloat) }, + }) +} + +function isBoolInput(type) { + expect(type.name).toBe(`BooleanQueryOperatorInput`) + expect(type instanceof GraphQLInputObjectType).toBeTruthy() + expect(type.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLBoolean }, + ne: { name: `ne`, type: GraphQLBoolean }, + in: { name: `in`, type: new GraphQLList(GraphQLBoolean) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLBoolean) }, + }) +} + +function isCustomScalarInput(queryType, type) { + expect(queryType instanceof GraphQLInputObjectType).toBeTruthy() + expect(queryType.getFields()).toEqual({ + eq: { name: `eq`, type }, + ne: { name: `ne`, type }, + in: { name: `in`, type: new GraphQLList(type) }, + nin: { name: `nin`, type: new GraphQLList(type) }, + }) +} + +function isEnumInput(queryType, type) { + expect(queryType instanceof GraphQLInputObjectType).toBeTruthy() + expect(queryType.getFields()).toEqual({ + eq: { name: `eq`, type }, + ne: { name: `ne`, type }, + in: { name: `in`, type: new GraphQLList(type) }, + nin: { name: `nin`, type: new GraphQLList(type) }, + }) +} + +describe(`GraphQL Input args from fields`, () => { + function oddValue(value) { + return value % 2 === 1 ? value : null + } + + const OddType = new GraphQLScalarType({ + name: `Odd`, + serialize: oddValue, + parseValue: oddValue, + parseLiteral(ast) { + if (ast.kind === Kind.INT) { + return oddValue(parseInt(ast.value, 10)) + } + return null + }, + }) + + it(`handles all known scalars`, async () => { + const fields = { + scal_id: `ID`, + scal_int: `Int`, + scal_float: `Float`, + scal_string: `String`, + scal_bool: `Boolean`, + scal_json: `JSON`, + scal_date: `Date`, + scal_odd: { type: OddType }, + scal_enum: { + type: new GraphQLEnumType({ + name: `CustomEnum`, + values: { FOO: { value: `foo` } }, + }), + }, + } + + const inferredFields = getInferredFields(fields) + + const id = inferredFields.scal_id.type + isIdInput(id) + + const int = inferredFields.scal_int.type + isIntInput(int) + + const float = inferredFields.scal_float.type + isFloatInput(float) + + const string = inferredFields.scal_string.type + isStringInput(string) + + const bool = inferredFields.scal_bool.type + isBoolInput(bool) + + const date = inferredFields.scal_date.type + isDateInput(date) + + const json = inferredFields.scal_json.type + isJsonInput(json) + + const custom_scalar = inferredFields.scal_odd.type + isCustomScalarInput(custom_scalar, fields.scal_odd.type) + + const custom_enum = inferredFields.scal_enum.type + isEnumInput(custom_enum, fields.scal_enum.type) + }) + + it(`recursively converts object types`, async () => { + const fields = { + obj: { + type: new GraphQLObjectType({ + name: `Obj`, + fields: { + foo: { type: GraphQLInt }, + bar: { + type: new GraphQLObjectType({ + name: `Jbo`, + fields: { + foo: { type: GraphQLString }, + }, + }), + }, + }, + }), + }, + } + + const inferredFields = getInferredFields(fields) + + const obj = inferredFields.obj.type + const objFields = obj.getFields() + + expect(obj instanceof GraphQLInputObjectType).toBeTruthy() + isIntInput(objFields.foo.type) + + const innerObj = objFields.bar.type + const innerObjFields = innerObj.getFields() + isStringInput(innerObjFields.foo.type) + }) + + it(`handles lists within lists`, async () => { + const Row = new GraphQLObjectType({ + name: `Row`, + fields: () => { + return { + cells: { type: new GraphQLList(Cell) }, + } + }, + }) + + const Cell = new GraphQLObjectType({ + name: `Cell`, + fields: () => { + return { + value: { type: GraphQLInt }, + } + }, + }) + + const fields = { + rows: { type: new GraphQLList(Row) }, + } + + expect(() => { + getInferredFields(fields) + }).not.toThrow() + }) + + it(`protects against infinite recursion on circular definitions`, async () => { + const TypeA = new GraphQLObjectType({ + name: `TypeA`, + fields: () => { + return { + typeb: { type: TypeB }, + } + }, + }) + + const TypeB = new GraphQLObjectType({ + name: `TypeB`, + fields: () => { + return { + bar: { type: GraphQLID }, + typea: { type: TypeA }, + } + }, + }) + + const fields = { + entryPointA: { type: TypeA }, + entryPointB: { type: TypeB }, + } + + let inferredFields + + expect(() => { + inferredFields = getInferredFields(fields) + }).not.toThrow() + + const entryPointA = inferredFields.entryPointA.type + const entryPointAFields = entryPointA.getFields() + const entryPointB = inferredFields.entryPointB.type + const entryPointBFields = entryPointB.getFields() + + expect(entryPointA instanceof GraphQLInputObjectType).toBeTruthy() + expect(entryPointB instanceof GraphQLInputObjectType).toBeTruthy() + isIdInput(entryPointBFields.bar.type) + + const childAB = entryPointAFields.typeb.type + const childABFields = childAB.getFields() + expect(childAB instanceof GraphQLInputObjectType).toBeTruthy() + isIdInput(childABFields.bar.type) + + expect(childABFields.typea.type.name).toBe(`TypeAFilterInput`) + + expect(entryPointBFields.typea.type.name).toBe(`TypeAFilterInput`) + }) + + // NOTE: We now convert all scalars and enums + it.skip(`recovers from unknown output types`, async () => { + const fields = { + obj: { + type: new GraphQLObjectType({ + name: `Obj`, + fields: { + aa: { type: OddType }, + foo: { type: GraphQLInt }, + bar: { + type: new GraphQLObjectType({ + name: `Jbo`, + fields: { + aa: { type: OddType }, + foo: { type: GraphQLString }, + ba: { type: OddType }, + bar: { type: GraphQLInt }, + }, + }), + }, + baz: { + type: new GraphQLObjectType({ + name: `Jbo2`, + fields: { + aa: { type: OddType }, + }, + }), + }, + }, + }), + }, + odd: { type: OddType }, + } + + const inferredFields = getInferredFields(fields) + + expect(inferredFields.odd).toBeUndefined() + + const obj = inferredFields.obj.type + const objFields = obj.getFields() + + expect(obj instanceof GraphQLInputObjectType).toBeTruthy() + isIntInput(objFields.foo.type) + expect(objFields.aa).toBeUndefined() + + const innerObj = objFields.bar.type + const innerObjFields = innerObj.getFields() + expect(innerObjFields.aa).toBeUndefined() + 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 () => { + const fields = { + list: { type: new GraphQLList(GraphQLFloat) }, + } + + const inferredFields = getInferredFields(fields) + + const list = inferredFields.list.type + + expect(list instanceof GraphQLInputObjectType).toBeTruthy() + expect(list.getFields()).toEqual({ + eq: { name: `eq`, type: GraphQLFloat }, + ne: { name: `ne`, type: GraphQLFloat }, + gt: { name: `gt`, type: GraphQLFloat }, + gte: { name: `gte`, type: GraphQLFloat }, + lt: { name: `lt`, type: GraphQLFloat }, + lte: { name: `lte`, type: GraphQLFloat }, + in: { name: `in`, type: new GraphQLList(GraphQLFloat) }, + nin: { name: `nin`, type: new GraphQLList(GraphQLFloat) }, + }) + }) + + it(`strips away NonNull`, async () => { + const fields = { + nonNull: { type: new GraphQLNonNull(GraphQLInt) }, + } + + const inferredFields = getInferredFields(fields) + + isIntInput(inferredFields.nonNull.type) + }) + + it(`extracts the fields you can sort on`, async () => { + const fields = { + foo: { type: GraphQLString }, + bar: { type: GraphQLFloat }, + baz: { + type: new GraphQLObjectType({ + name: `Baz`, + fields: { + ka: { type: GraphQLFloat }, + ma: { + type: new GraphQLList( + new GraphQLObjectType({ + name: `Hol`, + fields: { + go: { type: GraphQLFloat }, + }, + }) + ), + }, + }, + }), + }, + } + + const schemaComposer = createSchemaComposer() + const tc = schemaComposer.createTC({ name: `Test`, fields }) + const sort = getSortInput({ + schemaComposer, + typeComposer: tc, + }) + .getType() + .getFields() + .fields.type.ofType.getValues() + .map(({ name }) => name) + + expect(sort.sort()).toEqual([ + `bar`, + `baz___ka`, + `baz___ma`, + `baz___ma___go`, + `foo`, + ]) + }) +}) diff --git a/packages/gatsby/src/schema/types/type-date.js b/packages/gatsby/src/schema/types/date.js similarity index 57% rename from packages/gatsby/src/schema/types/type-date.js rename to packages/gatsby/src/schema/types/date.js index 3f6b513e187c9..fedd02fa4a45b 100644 --- a/packages/gatsby/src/schema/types/type-date.js +++ b/packages/gatsby/src/schema/types/date.js @@ -5,7 +5,6 @@ const { GraphQLScalarType, Kind, } = require(`graphql`) -const _ = require(`lodash`) const { oneLine } = require(`common-tags`) const ISO_8601_FORMAT = [ @@ -40,17 +39,10 @@ const ISO_8601_FORMAT = [ `YYYYDDDD`, ] -// Check if this is a date. -// All the allowed ISO 8601 date-time formats used. -export function shouldInfer(value) { - const momentDate = moment.utc(value, ISO_8601_FORMAT, true) - return momentDate.isValid() && typeof value !== `number` -} - -export const GraphQLDate = new GraphQLScalarType({ +const GraphQLDate = new GraphQLScalarType({ name: `Date`, description: oneLine` - A date string, such as 2007-12-03, compliant with the ISO 8601 standard + A date string, such as 2007-12-03, compliant with the ISO 8601 standard for representation of dates and times using the Gregorian calendar.`, serialize: String, parseValue: String, @@ -59,29 +51,63 @@ export const GraphQLDate = new GraphQLScalarType({ }, }) -const type = Object.freeze({ - type: GraphQLDate, +// Check if this is a date. +// All the allowed ISO 8601 date-time formats used. +function isDate(value) { + const momentDate = moment.utc(value, ISO_8601_FORMAT, true) + return momentDate.isValid() && typeof value !== `number` +} + +const formatDate = ({ + date, + fromNow, + difference, + formatString, + locale = `en`, +}) => { + const normalizedDate = JSON.parse(JSON.stringify(date)) + if (formatString) { + return moment + .utc(normalizedDate, ISO_8601_FORMAT, true) + .locale(locale) + .format(formatString) + } else if (fromNow) { + return moment + .utc(normalizedDate, ISO_8601_FORMAT, true) + .locale(locale) + .fromNow() + } else if (difference) { + return moment().diff( + moment.utc(normalizedDate, ISO_8601_FORMAT, true).locale(locale), + difference + ) + } + return normalizedDate +} + +const dateResolver = { + type: `Date`, args: { formatString: { type: GraphQLString, description: oneLine` - Format the date using Moment.js' date tokens e.g. - "date(formatString: "YYYY MMMM DD)" + Format the date using Moment.js' date tokens, e.g. + \`date(formatString: "YYYY MMMM DD")\`. See https://momentjs.com/docs/#/displaying/format/ - for documentation for different tokens`, + for documentation for different tokens.`, }, fromNow: { type: GraphQLBoolean, description: oneLine` - Returns a string generated with Moment.js' fromNow function`, + Returns a string generated with Moment.js' \`fromNow\` function`, }, difference: { type: GraphQLString, description: oneLine` Returns the difference between this date and the current time. - Defaults to miliseconds but you can also pass in as the - measurement years, months, weeks, days, hours, minutes, - and seconds.`, + Defaults to "miliseconds" but you can also pass in as the + measurement "years", "months", "weeks", "days", "hours", "minutes", + and "seconds".`, }, locale: { type: GraphQLString, @@ -90,37 +116,13 @@ const type = Object.freeze({ }, }, resolve(source, args, context, { fieldName }) { - let date - if (source[fieldName]) { - date = JSON.parse(JSON.stringify(source[fieldName])) - } else { - return null - } + const date = source[fieldName] + if (date == null) return null - if (_.isPlainObject(args)) { - const { fromNow, difference, formatString, locale = `en` } = args - if (formatString) { - return moment - .utc(date, ISO_8601_FORMAT, true) - .locale(locale) - .format(formatString) - } else if (fromNow) { - return moment - .utc(date, ISO_8601_FORMAT, true) - .locale(locale) - .fromNow() - } else if (difference) { - return moment().diff( - moment.utc(date, ISO_8601_FORMAT, true).locale(locale), - difference - ) - } - } - - return date + return Array.isArray(date) + ? date.map(d => formatDate({ date: d, ...args })) + : formatDate({ date, ...args }) }, -}) - -export function getType() { - return type } + +module.exports = { GraphQLDate, dateResolver, isDate } diff --git a/packages/gatsby/src/schema/types/directives.js b/packages/gatsby/src/schema/types/directives.js new file mode 100644 index 0000000000000..8fab9a35a3cd0 --- /dev/null +++ b/packages/gatsby/src/schema/types/directives.js @@ -0,0 +1,37 @@ +const { + GraphQLBoolean, + GraphQLNonNull, + GraphQLDirective, + DirectiveLocation, +} = require(`graphql`) + +const InferDirective = new GraphQLDirective({ + name: `infer`, + description: `Infer fields for this type from nodes.`, + locations: [DirectiveLocation.OBJECT], + args: { + noDefaultResolvers: { + type: new GraphQLNonNull(GraphQLBoolean), + default: false, + description: `Don't add default resolvers to defined fields.`, + }, + }, +}) + +const DontInferDirective = new GraphQLDirective({ + name: `dontInfer`, + description: `Do not infer additional fields for this type from nodes.`, + locations: [DirectiveLocation.OBJECT], + args: { + noDefaultResolvers: { + type: new GraphQLNonNull(GraphQLBoolean), + default: false, + description: `Don't add default resolvers to defined fields.`, + }, + }, +}) + +module.exports = { + InferDirective, + DontInferDirective, +} diff --git a/packages/gatsby/src/schema/types/filter.js b/packages/gatsby/src/schema/types/filter.js new file mode 100644 index 0000000000000..3d829e71cebfd --- /dev/null +++ b/packages/gatsby/src/schema/types/filter.js @@ -0,0 +1,192 @@ +const { + getNamedType, + getNullableType, + GraphQLInputObjectType, + GraphQLEnumType, + GraphQLList, + isSpecifiedScalarType, +} = require(`graphql`) +const { GraphQLJSON } = require(`graphql-compose`) +const { GraphQLDate } = require(`./date`) + +const convert = ({ + schemaComposer, + inputTypeComposer, + filterInputComposer, +}) => { + const inputTypeName = inputTypeComposer + .getTypeName() + .replace(/Input$/, `FilterInput`) + + let convertedITC + if (filterInputComposer) { + convertedITC = filterInputComposer + } else if (schemaComposer.has(inputTypeName)) { + return schemaComposer.getITC(inputTypeName) + } else { + convertedITC = new schemaComposer.InputTypeComposer( + new GraphQLInputObjectType({ + name: inputTypeName, + fields: {}, + }) + ) + } + + schemaComposer.addAsComposer(convertedITC) + + const fieldNames = inputTypeComposer.getFieldNames() + const convertedFields = {} + fieldNames.forEach(fieldName => { + const fieldConfig = inputTypeComposer.getFieldConfig(fieldName) + const type = getNamedType(fieldConfig.type) + + if (type instanceof GraphQLInputObjectType) { + const itc = new schemaComposer.InputTypeComposer(type) + + const operatorsInputTC = convert({ + schemaComposer, + inputTypeComposer: itc, + }) + + // TODO: array of arrays? + const isListType = + getNullableType(fieldConfig.type) instanceof GraphQLList + + // elemMatch operator + convertedFields[fieldName] = isListType + ? getQueryOperatorListInput({ + schemaComposer, + inputTypeComposer: operatorsInputTC, + }) + : operatorsInputTC + } else { + // GraphQLScalarType || GraphQLEnumType + const operatorFields = getQueryOperatorInput({ schemaComposer, type }) + if (operatorFields) { + convertedFields[fieldName] = operatorFields + } + } + }) + + convertedITC.addFields(convertedFields) + return convertedITC +} + +const removeEmptyFields = ( + { schemaComposer, inputTypeComposer }, + cache = new Set() +) => { + const convert = itc => { + if (cache.has(itc)) { + return itc + } + cache.add(itc) + const fields = itc.getFields() + const nonEmptyFields = {} + Object.keys(fields).forEach(fieldName => { + const fieldITC = fields[fieldName] + if (fieldITC instanceof schemaComposer.InputTypeComposer) { + const convertedITC = convert(fieldITC) + if (convertedITC.getFieldNames().length) { + nonEmptyFields[fieldName] = convertedITC + } + } else { + nonEmptyFields[fieldName] = fieldITC + } + }) + itc.setFields(nonEmptyFields) + return itc + } + return convert(inputTypeComposer) +} + +const getFilterInput = ({ schemaComposer, typeComposer }) => { + const typeName = typeComposer.getTypeName() + const filterInputComposer = schemaComposer.getOrCreateITC( + `${typeName}FilterInput` + ) + const inputTypeComposer = typeComposer.getInputTypeComposer() + + // TODO: In Gatsby v2, the NodeInput.id field is of type String, not ID. + // Remove this workaround for v3. + if ( + inputTypeComposer.hasField(`id`) && + getNamedType(inputTypeComposer.getFieldType(`id`)).name === `ID` + ) { + inputTypeComposer.extendField(`id`, { type: `String` }) + } + + const filterInputTC = convert({ + schemaComposer, + inputTypeComposer, + filterInputComposer, + }) + + return removeEmptyFields({ schemaComposer, inputTypeComposer: filterInputTC }) +} + +module.exports = { getFilterInput } + +const EQ = `eq` +const NE = `ne` +const GT = `gt` +const GTE = `gte` +const LT = `lt` +const LTE = `lte` +const IN = `in` +const NIN = `nin` +const REGEX = `regex` +const GLOB = `glob` + +const ALLOWED_OPERATORS = { + Boolean: [EQ, NE, IN, NIN], + Date: [EQ, NE, GT, GTE, LT, LTE, IN, NIN], + Float: [EQ, NE, GT, GTE, LT, LTE, IN, NIN], + ID: [EQ, NE, IN, NIN], + Int: [EQ, NE, GT, GTE, LT, LTE, IN, NIN], + JSON: [EQ, NE, IN, NIN, REGEX, GLOB], + String: [EQ, NE, IN, NIN, REGEX, GLOB], + Enum: [EQ, NE, IN, NIN], + CustomScalar: [EQ, NE, IN, NIN], +} + +const ARRAY_OPERATORS = [IN, NIN] + +const getOperatorFields = (fieldType, operators) => { + const result = {} + operators.forEach(op => { + if (ARRAY_OPERATORS.includes(op)) { + result[op] = [fieldType] + } else { + result[op] = fieldType + } + }) + return result +} + +const getQueryOperatorInput = ({ schemaComposer, type }) => { + let typeName + if (type instanceof GraphQLEnumType) { + typeName = `Enum` + } else if (isBuiltInScalarType(type)) { + typeName = type.name + } else { + typeName = `CustomScalar` + } + const operators = ALLOWED_OPERATORS[typeName] + return schemaComposer.getOrCreateITC(type.name + `QueryOperatorInput`, itc => + itc.addFields(getOperatorFields(type, operators)) + ) +} + +const getQueryOperatorListInput = ({ schemaComposer, inputTypeComposer }) => { + const typeName = inputTypeComposer.getTypeName().replace(/Input/, `ListInput`) + return schemaComposer.getOrCreateITC(typeName, itc => { + itc.addFields({ + elemMatch: inputTypeComposer, + }) + }) +} + +const isBuiltInScalarType = type => + isSpecifiedScalarType(type) || type === GraphQLDate || type === GraphQLJSON diff --git a/packages/gatsby/src/schema/types/node-interface.js b/packages/gatsby/src/schema/types/node-interface.js new file mode 100644 index 0000000000000..a2552aba30643 --- /dev/null +++ b/packages/gatsby/src/schema/types/node-interface.js @@ -0,0 +1,72 @@ +const getOrCreateNodeInterface = schemaComposer => { + // TODO: why is `mediaType` on Internal? Applies only to File!? + // `fieldOwners` is an object + // Should we drop ignoreType? + const internalTC = schemaComposer.getOrCreateTC(`Internal`, tc => { + tc.addFields({ + content: `String`, + contentDigest: `String!`, + description: `String`, + fieldOwners: [`String`], + ignoreType: `Boolean`, + mediaType: `String`, + owner: `String!`, + type: `String!`, + }) + // TODO: Can be removed with graphql-compose 5.11 + tc.getInputTypeComposer() + }) + + const nodeInterfaceTC = schemaComposer.getOrCreateIFTC(`Node`, tc => { + tc.setDescription(`Node Interface`) + tc.addFields({ + id: `ID!`, + parent: { + type: `Node`, + resolve: (source, args, context, info) => { + const { path } = context + return context.nodeModel.getNodeById({ id: source.parent }, { path }) + }, + }, + children: { + type: `[Node!]!`, + resolve: (source, args, context, info) => { + const { path } = context + return context.nodeModel.getNodesByIds( + { ids: source.children }, + { path } + ) + }, + }, + internal: internalTC.getTypeNonNull(), + }) + // TODO: In Gatsby v2, the NodeInput.id field is of type String, not ID. + // Remove this workaround for v3. + const nodeInputTC = tc.getInputTypeComposer() + nodeInputTC.extendField(`id`, { type: `String` }) + }) + + return nodeInterfaceTC +} + +const addNodeInterface = ({ schemaComposer, typeComposer }) => { + const nodeInterfaceTC = getOrCreateNodeInterface(schemaComposer) + typeComposer.addInterface(nodeInterfaceTC) + addNodeInterfaceFields({ schemaComposer, typeComposer }) +} + +const addNodeInterfaceFields = ({ schemaComposer, typeComposer }) => { + const nodeInterfaceTC = getOrCreateNodeInterface(schemaComposer) + typeComposer.addFields(nodeInterfaceTC.getFields()) + nodeInterfaceTC.setResolveType(node => node.internal.type) + schemaComposer.addSchemaMustHaveType(typeComposer) +} + +const getNodeInterface = ({ schemaComposer }) => + getOrCreateNodeInterface(schemaComposer) + +module.exports = { + addNodeInterface, + addNodeInterfaceFields, + getNodeInterface, +} diff --git a/packages/gatsby/src/schema/types/pagination.js b/packages/gatsby/src/schema/types/pagination.js new file mode 100644 index 0000000000000..a9dd0006c1f49 --- /dev/null +++ b/packages/gatsby/src/schema/types/pagination.js @@ -0,0 +1,98 @@ +const { getFieldsEnum } = require(`./sort`) +const { distinct, group } = require(`../resolvers`) + +const getPageInfo = ({ schemaComposer }) => + schemaComposer.getOrCreateTC(`PageInfo`, tc => { + tc.addFields({ + hasNextPage: `Boolean!`, + // currentPage: `Int!`, + // hasPreviousPage: `Boolean!`, + // itemCount: `Int!`, + // pageCount: `Int!`, + // perPage: `Int`, + }) + }) + +const getEdge = ({ schemaComposer, typeComposer }) => { + const typeName = typeComposer.getTypeName() + `Edge` + return schemaComposer.getOrCreateTC(typeName, tc => { + tc.addFields({ + next: typeComposer, + node: typeComposer.getTypeNonNull(), + previous: typeComposer, + }) + }) +} + +const createPagination = ({ + schemaComposer, + typeComposer, + fields, + typeName, +}) => { + const paginationTypeComposer = schemaComposer.getOrCreateTC(typeName, tc => { + tc.addFields({ + totalCount: `Int!`, + edges: [getEdge({ schemaComposer, typeComposer }).getTypeNonNull()], + nodes: [typeComposer.getTypeNonNull()], + pageInfo: getPageInfo({ schemaComposer }).getTypeNonNull(), + ...fields, + }) + }) + paginationTypeComposer.makeFieldNonNull(`edges`) + paginationTypeComposer.makeFieldNonNull(`nodes`) + return paginationTypeComposer +} + +const getGroup = ({ schemaComposer, typeComposer }) => { + const typeName = typeComposer.getTypeName() + `GroupConnection` + const fields = { + field: `String!`, + fieldValue: `String`, + } + return createPagination({ schemaComposer, typeComposer, fields, typeName }) +} + +const getPagination = ({ schemaComposer, typeComposer }) => { + const inputTypeComposer = typeComposer.getInputTypeComposer() + const typeName = typeComposer.getTypeName() + `Connection` + const fieldsEnumTC = getFieldsEnum({ + schemaComposer, + typeComposer, + inputTypeComposer, + }) + const fields = { + distinct: { + type: [`String!`], + args: { + field: fieldsEnumTC.getTypeNonNull(), + }, + resolve: distinct, + }, + group: { + type: [getGroup({ schemaComposer, typeComposer }).getTypeNonNull()], + args: { + skip: `Int`, + limit: `Int`, + field: fieldsEnumTC.getTypeNonNull(), + }, + resolve: group, + }, + } + const paginationTypeComposer = createPagination({ + schemaComposer, + typeComposer, + fields, + typeName, + }) + paginationTypeComposer.makeFieldNonNull(`distinct`) + paginationTypeComposer.makeFieldNonNull(`group`) + return paginationTypeComposer +} + +module.exports = { + getPageInfo, + getEdge, + getGroup, + getPagination, +} diff --git a/packages/gatsby/src/schema/types/sort.js b/packages/gatsby/src/schema/types/sort.js new file mode 100644 index 0000000000000..d2213dbb09d9b --- /dev/null +++ b/packages/gatsby/src/schema/types/sort.js @@ -0,0 +1,79 @@ +// @flow + +const { + getNamedType, + getNullableType, + GraphQLInputObjectType, + GraphQLList, +} = require(`graphql`) + +const getSortOrderEnum = ({ schemaComposer }) => + schemaComposer.getOrCreateETC(`SortOrderEnum`, etc => { + etc.setFields({ + ASC: { value: `ASC` }, + DESC: { value: `DESC` }, + }) + }) + +const getFieldsEnum = ({ schemaComposer, typeComposer, inputTypeComposer }) => { + const typeName = typeComposer.getTypeName() + const fieldsEnumTypeComposer = schemaComposer.getOrCreateETC( + `${typeName}FieldsEnum` + ) + const fields = convert(inputTypeComposer.getFields()) + fieldsEnumTypeComposer.setFields(fields) + return fieldsEnumTypeComposer +} + +const getSortInput = ({ schemaComposer, typeComposer }) => { + const inputTypeComposer = typeComposer.getInputTypeComposer() + const sortOrderEnumTC = getSortOrderEnum({ schemaComposer }) + const fieldsEnumTC = getFieldsEnum({ + schemaComposer, + typeComposer, + inputTypeComposer, + }) + const typeName = typeComposer.getTypeName() + + return schemaComposer.getOrCreateITC(`${typeName}SortInput`, itc => { + itc.addFields({ + fields: [fieldsEnumTC], + order: { type: [sortOrderEnumTC], defaultValue: [`ASC`] }, + }) + }) +} + +module.exports = { getSortInput, getFieldsEnum, getSortOrderEnum } + +const MAX_SORT_DEPTH = 3 +const SORT_FIELD_DELIMITER = `___` + +const convert = (fields, prefix = null, depth = 0) => { + const sortFields = {} + + Object.keys(fields).forEach(fieldName => { + const fieldConfig = fields[fieldName] + const sortKey = prefix ? `${prefix}.${fieldName}` : fieldName + const sortKeyFieldName = sortKey.split(`.`).join(SORT_FIELD_DELIMITER) + + // XXX(freiksenet): this is to preserve legacy behaviour, this probably doesn't actually sort + if (getNullableType(fieldConfig.type) instanceof GraphQLList) { + sortFields[sortKeyFieldName] = { + value: sortKey, + } + } + + const type = getNamedType(fieldConfig.type) + if (type instanceof GraphQLInputObjectType) { + if (depth < MAX_SORT_DEPTH) { + Object.assign(sortFields, convert(type.getFields(), sortKey, depth + 1)) + } + } else { + // GraphQLScalarType || GraphQLEnumType + sortFields[sortKeyFieldName] = { + value: sortKey, + } + } + }) + return sortFields +} diff --git a/packages/gatsby/src/schema/types/type-builders.js b/packages/gatsby/src/schema/types/type-builders.js new file mode 100644 index 0000000000000..6c1b28f9d211b --- /dev/null +++ b/packages/gatsby/src/schema/types/type-builders.js @@ -0,0 +1,69 @@ +// @flow + +import type { + ComposeObjectTypeConfig, + ComposeInputObjectTypeConfig, + ComposeInterfaceTypeConfig, + ComposeUnionTypeConfig, +} from "graphql-compose" + +const GatsbyGraphQLTypeKind = { + OBJECT: `OBJECT`, + INPUT_OBJECT: `INPUT_OBJECT`, + UNION: `UNION`, + INTERFACE: `INTERFACE`, +} + +export type GatsbyGraphQLType = + | { kind: GatsbyGraphQLTypeKind.OBJECT, config: ComposeObjectTypeConfig } + | { + kind: GatsbyGraphQLTypeKind.INPUT_OBJECT, + config: ComposeInputObjectTypeConfig, + } + | { kind: GatsbyGraphQLTypeKind.UNION, config: ComposeUnionTypeConfig } + | { + kind: GatsbyGraphQLTypeKind.INTERFACE, + config: ComposeInterfaceTypeConfig, + } + +const buildObjectType = config => { + return { + kind: GatsbyGraphQLTypeKind.OBJECT, + config, + } +} + +const buildUnionType = config => { + return { + kind: GatsbyGraphQLTypeKind.UNION, + config, + } +} + +const buildInterfaceType = config => { + return { + kind: GatsbyGraphQLTypeKind.INTERFACE, + config, + } +} + +const buildInputObjectType = config => { + return { + kind: GatsbyGraphQLTypeKind.INPUT_OBJECT, + config, + } +} + +const isGatsbyType = something => + typeof something === `object` && + something.kind && + GatsbyGraphQLTypeKind[something.kind] + +module.exports = { + GatsbyGraphQLTypeKind, + buildObjectType, + buildUnionType, + buildInterfaceType, + buildInputObjectType, + isGatsbyType, +} diff --git a/packages/gatsby/src/schema/types/type-file.js b/packages/gatsby/src/schema/types/type-file.js deleted file mode 100644 index 24c5c6c7cd47e..0000000000000 --- a/packages/gatsby/src/schema/types/type-file.js +++ /dev/null @@ -1,175 +0,0 @@ -const { GraphQLList } = require(`graphql`) -const _ = require(`lodash`) -const mime = require(`mime`) -const isRelative = require(`is-relative`) -const isRelativeUrl = require(`is-relative-url`) -const normalize = require(`normalize-path`) -const systemPath = require(`path`) - -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 - -export function setFileNodeRootType(fileNodeRootType) { - if (fileNodeRootType) { - type = createType(fileNodeRootType, false) - listType = createType(fileNodeRootType, true) - } else { - type = null - listType = null - } -} - -function pointsToFile(nodes, key, value) { - const looksLikeFile = - _.isString(value) && - mime.getType(value) !== null && - // domains ending with .com - mime.getType(value) !== `application/x-msdownload` && - isRelative(value) && - isRelativeUrl(value) - - if (!looksLikeFile) { - return false - } - - // Find the node used for this example. - let node = nodes.find(n => _.get(n, key) === value) - - if (!node) { - // Try another search as our "key" isn't always correct e.g. - // it doesn't support arrays so the right key could be "a.b[0].c" but - // this function will get "a.b.c". - // - // We loop through every value of nodes until we find - // a match. - const visit = (current, selector = [], fn) => { - for (let i = 0, keys = Object.keys(current); i < keys.length; i++) { - const key = keys[i] - const value = current[key] - - if (value === undefined || value === null) continue - - if (typeof value === `object` || typeof value === `function`) { - visit(current[key], selector.concat([key]), fn) - continue - } - - let proceed = fn(current[key], key, selector, current) - - if (proceed === false) { - break - } - } - } - - const isNormalInteger = str => /^\+?(0|[1-9]\d*)$/.test(str) - - node = nodes.find(n => { - let isMatch = false - visit(n, [], (v, k, selector, parent) => { - if (v === value) { - // Remove integers as they're for arrays, which our passed - // in object path doesn't have. - const normalizedSelector = selector - .map(s => (isNormalInteger(s) ? `` : s)) - .filter(s => s !== ``) - const fullSelector = `${normalizedSelector.join(`.`)}.${k}` - if (fullSelector === key) { - isMatch = true - return false - } - } - - // Not a match so we continue - return true - }) - - return isMatch - }) - - // Still no node. - if (!node) { - return false - } - } - - const rootNode = findRootNodeAncestor(node) - - // Only nodes transformed (ultimately) from a File - // can link to another File. - if (rootNode.internal.type !== `File`) { - return false - } - - const pathToOtherNode = normalize(joinPath(rootNode.dir, value)) - const otherFileExists = getNodesByType(`File`).some( - n => n.absolutePath === pathToOtherNode - ) - return otherFileExists -} - -export function shouldInfer(nodes, selector, value) { - return ( - nodes[0].internal.type !== `File` && - ((_.isString(value) && - !_.isEmpty(value) && - pointsToFile(nodes, selector, value)) || - (_.isArray(value) && - _.isString(value[0]) && - !_.isEmpty(value[0]) && - pointsToFile(nodes, `${selector}[0]`, value[0]))) - ) -} - -function createType(fileNodeRootType, isArray) { - if (!fileNodeRootType) return null - - return Object.freeze({ - type: isArray ? new GraphQLList(fileNodeRootType) : fileNodeRootType, - resolve: pageDependencyResolver((node, args, context, { fieldName }) => { - let fieldValue = node[fieldName] - - if (!fieldValue) { - return null - } - - const findLinkedFileNode = relativePath => { - // Use the parent File node to create the absolute path to - // the linked file. - const fileLinkPath = normalize( - systemPath.resolve(parentFileNode.dir, relativePath) - ) - - // Use that path to find the linked File node. - const linkedFileNode = _.find( - getNodesByType(`File`), - n => n.absolutePath === fileLinkPath - ) - return linkedFileNode - } - - // Find the File node for this node (we assume the node is something - // like markdown which would be a child node of a File node). - const parentFileNode = findRootNodeAncestor(node) - - // Find the linked File node(s) - if (isArray) { - return fieldValue.map(findLinkedFileNode) - } else { - return findLinkedFileNode(fieldValue) - } - }), - }) -} - -export function getType() { - return type -} - -export function getListType() { - return listType -} diff --git a/packages/gatsby/src/utils/api-node-docs.js b/packages/gatsby/src/utils/api-node-docs.js index f5bd26bcea7f1..8b778d8e1bffe 100644 --- a/packages/gatsby/src/utils/api-node-docs.js +++ b/packages/gatsby/src/utils/api-node-docs.js @@ -194,6 +194,74 @@ exports.onCreatePage = true */ exports.setFieldsOnGraphQLNodeType = true +/** + * Add custom field resolvers to the GraphQL schema. + * + * Allows adding new fields to types by providing field configs, or adding resolver + * functions to existing fields. + * + * Things to note: + * * Overriding field types is disallowed, instead use the `createTypes` + * action. In case of types added from third-party schemas, where this is not + * possible, overriding field types is allowed. + * * New fields will not be available on `filter` and `sort` input types. Extend + * types defined with `createTypes` if you need this. + * * In field configs, types can be referenced as strings. + * * When extending a field with an existing field resolver, the original + * resolver function is available from `info.originalResolver`. + * * The `createResolvers` API is called as the last step in schema generation. + * Thus, an intermediate schema is made available on the `schema` property. + * In resolver functions themselves, it is recommended to access the final + * built schema from `info.schema`. + * * Gatsby's data layer, including all internal query capabilities, is + * exposed on [`context.nodeModel`](/docs/node-model/). The node store can be + * queried directly with `getAllNodes`, `getNodeById` and `getNodesByIds`, + * while more advanced queries can be composed with `runQuery`. Note that + * `runQuery` will call field resolvers before querying, so e.g. foreign-key + * fields will be expanded to full nodes. The other methods on `nodeModel` + * don't do this. + * * It is possible to add fields to the root `Query` type. + * * When using the first resolver argument (`source` in the example below, + * often also called `parent` or `root`), take care of the fact that field + * resolvers can be called more than once in a query, e.g. when the field is + * present both in the input filter and in the selection set. This means that + * foreign-key fields on `source` can be either resolved or not-resolved. + * + * For fuller examples, see [`using-type-definitions`](https://github.com/gatsbyjs/gatsby/tree/master/examples/using-type-definitions). + * + * @param {object} $0 + * @param {GraphQLSchema} $0.schema Current GraphQL schema + * @param {function} $0.createResolvers Add custom resolvers to GraphQL field configs + * @param {object} $1 + * @param {object} $1.resolvers Resolvers from plugin options in `gatsby-config.js`. + * @example + * exports.createResolvers = ({ createResolvers }) => { + * const resolvers = { + * Author: { + * fullName: { + * resolve: (source, args, context, info) => { + * return source.firstName + source.lastName + * } + * }, + * }, + * Query: { + * allRecentPosts: { + * type: [`BlogPost`] + * resolve: (source, args, context, info) => { + * const posts = context.nodeModel.getAllNodes({ type: `BlogPost` }) + * const recentPosts = posts.filter( + * post => post.publishedAt > Date.UTC(2018, 0, 1) + * ) + * return recentPosts + * } + * } + * } + * } + * createResolvers(resolvers) + * } + */ +exports.createResolvers = true + /** * Ask compile-to-js plugins to process source to JavaScript so the query * runner can extract out GraphQL queries for running. diff --git a/packages/gatsby/src/utils/api-runner-node.js b/packages/gatsby/src/utils/api-runner-node.js index 032f353405d0e..3404dbba57f3b 100644 --- a/packages/gatsby/src/utils/api-runner-node.js +++ b/packages/gatsby/src/utils/api-runner-node.js @@ -9,6 +9,12 @@ const getCache = require(`./get-cache`) const apiList = require(`./api-node-docs`) const createNodeId = require(`./create-node-id`) const createContentDigest = require(`./create-content-digest`) +const { + buildObjectType, + buildUnionType, + buildInterfaceType, + buildInputObjectType, +} = require(`../schema/types/type-builders`) const { emitter } = require(`../redux`) const { getNonGatsbyCodeFrame } = require(`./stack-trace-utils`) @@ -163,6 +169,12 @@ const runAPI = (plugin, api, args) => { createNodeId: namespacedCreateNodeId, createContentDigest, tracing, + schema: { + buildObjectType, + buildUnionType, + buildInterfaceType, + buildInputObjectType, + }, }, plugin.pluginOptions, ] diff --git a/www/src/data/sidebars/doc-links.yaml b/www/src/data/sidebars/doc-links.yaml index 4661eb58aadaf..e550c0ddd9791 100644 --- a/www/src/data/sidebars/doc-links.yaml +++ b/www/src/data/sidebars/doc-links.yaml @@ -305,6 +305,8 @@ link: /docs/ssr-apis/ - title: Actions link: /docs/actions/ + - title: Node Model + link: /docs/node-model/ - title: Node Interface link: /docs/node-interface/ - title: API Philosophy diff --git a/www/src/pages/docs/node-api-helpers.js b/www/src/pages/docs/node-api-helpers.js index 6722fd3ba2b01..21b11224f08a6 100644 --- a/www/src/pages/docs/node-api-helpers.js +++ b/www/src/pages/docs/node-api-helpers.js @@ -26,9 +26,10 @@ class NodeAPIHelperDocs extends React.Component {
diff --git a/www/src/pages/docs/node-model.js b/www/src/pages/docs/node-model.js new file mode 100644 index 0000000000000..3e187d92815f9 --- /dev/null +++ b/www/src/pages/docs/node-model.js @@ -0,0 +1,86 @@ +import React from "react" +import { graphql } from "gatsby" +import { Helmet } from "react-helmet" +import sortBy from "lodash/sortBy" + +import APIReference from "../../components/api-reference" +import { rhythm } from "../../utils/typography" +import { space } from "../../utils/presets" +import Layout from "../../components/layout" +import Container from "../../components/container" +import { itemListDocs } from "../../utils/sidebar/item-list" + +class NodeModelDocs extends React.Component { + render() { + const funcs = sortBy( + this.props.data.file.childrenDocumentationJs, + func => func.name + ).filter(func => !func.type) // Filter out @typedef + return ( + + + + Node Model + +

+ Node Model +

+

+ Gatsby exposes its internal data store and query capabilities to + GraphQL field resolvers on context.nodeModel. +

+
Example usage
+
+
\n` +
+                  `createResolvers({\n` +
+                  `  Query: {\n` +
+                  `    mood: {\n` +
+                  `      type: \`String\`,\n` +
+                  `      resolve(source, args, context, info) {\n` +
+                  `        const coffee = context.nodeModel.getAllNodes({ type: \`Coffee\` })\n` +
+                  `        if (!coffee.length) {\n` +
+                  `          return 😞\n` +
+                  `        }\n` +
+                  `        return 😊\n` +
+                  `      },\n` +
+                  `    },\n` +
+                  `  },\n` +
+                  `})\n` +
+                  ``,
+              }}
+            />
+          
+
+

Methods

+
    + {funcs.map((node, i) => ( +
  • + {node.name} +
  • + ))} +
+
+

Reference

+ +
+
+ ) + } +} + +export default NodeModelDocs + +export const pageQuery = graphql` + query { + file(relativePath: { eq: "gatsby/src/schema/node-model.js" }) { + childrenDocumentationJs { + name + ...DocumentationFragment + } + } + } +` diff --git a/yarn.lock b/yarn.lock index 9aff8eb2699fd..764973e84736a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,7 +5,6 @@ "@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" @@ -15,21 +14,18 @@ "@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" @@ -46,14 +42,12 @@ "@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" @@ -73,7 +67,6 @@ "@babel/core@^7.1.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" - integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.2.2" @@ -113,7 +106,6 @@ "@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" @@ -135,7 +127,6 @@ "@babel/generator@^7.2.2": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.0.tgz#f663838cd7b542366de3aa608a657b8ccb2a99eb" - integrity sha512-dZTwMvTgWfhmibq4V9X+LMf6Bgl7zAodRn9PvcPdhlzFMbvUutx74dbEv7Atz3ToeEpevYEJtAwfxq/bDCzHWg== dependencies: "@babel/types" "^7.3.0" jsesc "^2.5.1" @@ -146,14 +137,12 @@ "@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" @@ -169,7 +158,6 @@ "@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" @@ -177,7 +165,6 @@ "@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" @@ -206,7 +193,6 @@ "@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" @@ -224,7 +210,6 @@ "@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" @@ -240,7 +225,6 @@ "@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" @@ -249,7 +233,6 @@ "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== dependencies: "@babel/helper-get-function-arity" "^7.0.0" "@babel/template" "^7.1.0" @@ -258,35 +241,30 @@ "@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" @@ -310,26 +288,22 @@ "@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" @@ -351,7 +325,6 @@ "@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" @@ -371,7 +344,6 @@ "@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" @@ -387,14 +359,12 @@ "@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" @@ -414,7 +384,6 @@ "@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" @@ -423,7 +392,6 @@ "@babel/helpers@^7.2.0": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9" - integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA== dependencies: "@babel/template" "^7.1.2" "@babel/traverse" "^7.1.5" @@ -432,7 +400,6 @@ "@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" @@ -441,7 +408,6 @@ "@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" @@ -459,17 +425,14 @@ "@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/parser@^7.1.3": version "7.2.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" - integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.1.tgz#8f4ffd45f779e6132780835ffa7a215fa0b2d181" - integrity sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA== "@babel/parser@^7.3.3": version "7.3.3" @@ -479,7 +442,6 @@ "@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" @@ -497,7 +459,6 @@ "@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" @@ -567,7 +528,6 @@ "@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" @@ -607,7 +567,6 @@ "@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" @@ -623,7 +582,6 @@ "@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" @@ -639,7 +597,6 @@ "@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" @@ -663,7 +620,6 @@ "@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" @@ -681,7 +637,6 @@ "@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" @@ -695,7 +650,6 @@ "@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" @@ -716,7 +670,6 @@ "@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" @@ -737,7 +690,6 @@ "@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" @@ -765,7 +717,6 @@ "@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" @@ -779,7 +730,6 @@ "@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" @@ -814,7 +764,6 @@ "@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" @@ -828,7 +777,6 @@ "@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" @@ -842,7 +790,6 @@ "@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" @@ -863,14 +810,12 @@ "@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" @@ -884,7 +829,6 @@ "@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" @@ -902,7 +846,6 @@ "@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" @@ -916,7 +859,6 @@ "@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" @@ -932,7 +874,6 @@ "@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" @@ -960,7 +901,6 @@ "@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" @@ -974,7 +914,6 @@ "@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" @@ -988,7 +927,6 @@ "@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" @@ -1006,7 +944,6 @@ "@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" @@ -1020,7 +957,6 @@ "@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" @@ -1036,7 +972,6 @@ "@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" @@ -1044,7 +979,6 @@ "@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" @@ -1058,7 +992,6 @@ "@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" @@ -1074,7 +1007,6 @@ "@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" @@ -1088,14 +1020,12 @@ "@babel/plugin-transform-member-expression-literals@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== 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" @@ -1111,7 +1041,6 @@ "@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" @@ -1129,7 +1058,6 @@ "@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" @@ -1145,7 +1073,6 @@ "@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" @@ -1168,14 +1095,12 @@ "@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" @@ -1191,7 +1116,6 @@ "@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" @@ -1209,21 +1133,18 @@ "@babel/plugin-transform-property-literals@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@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" @@ -1231,7 +1152,6 @@ "@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" @@ -1239,7 +1159,6 @@ "@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" @@ -1248,7 +1167,6 @@ "@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" @@ -1257,14 +1175,12 @@ "@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" @@ -1273,7 +1189,6 @@ "@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" @@ -1287,7 +1202,6 @@ "@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" @@ -1301,7 +1215,6 @@ "@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" @@ -1317,7 +1230,6 @@ "@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" @@ -1333,7 +1245,6 @@ "@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" @@ -1347,7 +1258,6 @@ "@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" @@ -1355,7 +1265,6 @@ "@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" @@ -1373,7 +1282,6 @@ "@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" @@ -1381,7 +1289,6 @@ "@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" @@ -1477,7 +1384,6 @@ "@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" @@ -1485,7 +1391,6 @@ "@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" @@ -1501,7 +1406,6 @@ "@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" @@ -1509,7 +1413,6 @@ "@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" @@ -1522,14 +1425,12 @@ "@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": 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" @@ -1538,7 +1439,6 @@ "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" - integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.2.2" @@ -1547,7 +1447,6 @@ "@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" @@ -1562,7 +1461,6 @@ "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.4", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3": version "7.2.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" - integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.2.2" @@ -1577,7 +1475,6 @@ "@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" @@ -1595,7 +1492,6 @@ "@babel/types@^7.2.2", "@babel/types@^7.3.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.0.tgz#61dc0b336a93badc02bf5f69c4cd8e1353f2ffc0" - integrity sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -1604,7 +1500,6 @@ "@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" @@ -1629,12 +1524,10 @@ "@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.4": version "0.11.4" @@ -1650,12 +1543,10 @@ "@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== "@gatsbyjs/relay-compiler@2.0.0-printer-fix.2": version "2.0.0-printer-fix.2" @@ -1682,7 +1573,6 @@ "@lerna/add@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.10.6.tgz#6f2c6b26eb905c40fef4180f3ffa34ad9dbb860b" - integrity sha512-FxQ5Bmyb5fF+3BQiNffM6cTeGCrl4uaAuGvxFIWF6Pgz6U14tUc1e16xgKDvVb1CurzJgIV5sLOT5xmCOqv1kA== dependencies: "@lerna/bootstrap" "3.10.6" "@lerna/command" "3.10.6" @@ -1697,7 +1587,6 @@ "@lerna/batch-packages@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.10.6.tgz#2d6dfc9be13ea4da49244dd84bfcd46c3d62f4d0" - integrity sha512-sInr3ZQJFMh9Zq+ZUoVjX8R67j9ViRkVy0uEMsOfG+jZlXj1lRPRMPRiRgU0jXSYEwCdwuAB5pTd9tTx0VCJUw== dependencies: "@lerna/package-graph" "3.10.6" "@lerna/validation-error" "3.6.0" @@ -1706,7 +1595,6 @@ "@lerna/bootstrap@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.10.6.tgz#d250baa9cfe9026c4f78e6cf7c9761a90b24e363" - integrity sha512-qbGjAxRpV/eiI9CboUIpsPPGpSogs8mN2/iDaAUBTaWVFVz/YyU64nui84Gll0kbdaHOyPput+kk2S8NCSCCdg== dependencies: "@lerna/batch-packages" "3.10.6" "@lerna/command" "3.10.6" @@ -1735,7 +1623,6 @@ "@lerna/changed@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.10.6.tgz#48fed2e6c890b39a71f1dac29e42a6f853956d71" - integrity sha512-nZDVq/sKdhgoAg1BVnpqjqUUz5+zedG+AnU+6mjEN2f23YVtRCsW55N4I9eEdW2pxXUaCY85Hj/HPSA74BYaFg== dependencies: "@lerna/collect-updates" "3.10.1" "@lerna/command" "3.10.6" @@ -1746,7 +1633,6 @@ "@lerna/check-working-tree@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.10.0.tgz#5ed9f2c5c942bee92afcd8cb5361be44ed0251e3" - integrity sha512-NdIPhDgEtGHfeGjB9F0oAoPLywgMpjnJhLLwTNQkelDHo2xNAVpG8kV+A2UJ+cU5UXCZA4RZFxKNmw86rO+Drw== dependencies: "@lerna/describe-ref" "3.10.0" "@lerna/validation-error" "3.6.0" @@ -1754,7 +1640,6 @@ "@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" @@ -1763,7 +1648,6 @@ "@lerna/clean@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.10.6.tgz#31e4a12a722e57ca7adc0c9bc30ba70d55572bb8" - integrity sha512-MuL8HOwnyvVtr6GOiAN/Ofjbx+BJdCrtjrM1Uuh8FFnbnZTPVf+0MPxL2jVzPMo0PmoIrX3fvlwvzKNk/lH0Ug== dependencies: "@lerna/command" "3.10.6" "@lerna/filter-options" "3.10.6" @@ -1777,7 +1661,6 @@ "@lerna/cli@3.10.7": version "3.10.7" resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.10.7.tgz#2f88ae4a3c53fa4d3a4f61b5f447bbbcc69546e2" - integrity sha512-yuoz/24mIfYit3neKqoE5NVs42Rj9A6A6SlkNPDfsy3v/Vh7SgYkU3cwiGyvwBGzIdhqL4/SWYo8H7YJLs0C+g== dependencies: "@lerna/global-options" "3.10.6" dedent "^0.7.0" @@ -1787,7 +1670,6 @@ "@lerna/collect-updates@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.10.1.tgz#3ad60aa31826c0c0cfdf8bf41e58e6c5c86aeb3a" - integrity sha512-vb0wEJ8k63G+2CR/ud1WeVHNJ21Fs6Ew6lbdGZXnF4ZvaFWxWJZpoHeWwzjhMdJ75QdTzUaIhTG1hnH9faQNMw== dependencies: "@lerna/child-process" "3.3.0" "@lerna/describe-ref" "3.10.0" @@ -1798,7 +1680,6 @@ "@lerna/command@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.10.6.tgz#709bd1c66220da67f65dbe1fc88bb7ba5bb85446" - integrity sha512-jPZswMZXOpAaIuSF5hrz+eaWQzbDrvwbrkCoRJKfiAHx7URAkE6MQe9DeAnqrTKMqwfg0RciSrZLc8kWYfrzCQ== dependencies: "@lerna/child-process" "3.3.0" "@lerna/package-graph" "3.10.6" @@ -1814,7 +1695,6 @@ "@lerna/conventional-commits@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.10.0.tgz#284cc16bd3c387f841ff6bec42bcadaa2d13d8e4" - integrity sha512-8FvO0eR8g/tEgkb6eRVYaD39TsqMKsOXp17EV48jciciEqcrF/d1Ypu6ilK1GDp6R/1m2mbjt/b52a/qrO+xaw== dependencies: "@lerna/validation-error" "3.6.0" conventional-changelog-angular "^5.0.2" @@ -1828,7 +1708,6 @@ "@lerna/create-symlink@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.6.0.tgz#f1815cde2fc9d8d2315dfea44ee880f2f1bc65f1" - integrity sha512-YG3lTb6zylvmGqKU+QYA3ylSnoLn+FyLH5XZmUsD0i85R884+EyJJeHx/zUk+yrL2ZwHS4RBUgJfC24fqzgPoA== dependencies: cmd-shim "^2.0.2" fs-extra "^7.0.0" @@ -1837,7 +1716,6 @@ "@lerna/create@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.10.6.tgz#85c7398cad912516c0ac6054a5c0c4145ab6cadb" - integrity sha512-OddQtGBHM2/eJONggLWoTE6275XGbnJ6dIVF+fLsKS93o4GC6g+qcc6Y7lUWHm5bfpeOwNOVKwj0tvqBZ6MgoA== dependencies: "@lerna/child-process" "3.3.0" "@lerna/command" "3.10.6" @@ -1860,7 +1738,6 @@ "@lerna/describe-ref@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.10.0.tgz#266380feece6013ab9674f52bd35bf0be5b0460d" - integrity sha512-fouh3FQS07QxJJp/mW8LkGnH0xMRAzpBlejtZaiRwfDkW2kd6EuHaj8I/2/p21Wsprcvuu4dqmyia2YS1xFb/w== dependencies: "@lerna/child-process" "3.3.0" libnpm "^2.0.1" @@ -1868,7 +1745,6 @@ "@lerna/diff@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.10.6.tgz#b4c5a50d8c7e79619376e2c913ec1c627dfd0cdf" - integrity sha512-0MqFhosjrqsIdXiKIu7t3CiJELqiU9mkjFBhYPB7JruAzpPwjMXJnC6/Ur5/7LXJYYVpqGQwZI9ZaZlOYJhhrw== dependencies: "@lerna/child-process" "3.3.0" "@lerna/command" "3.10.6" @@ -1878,7 +1754,6 @@ "@lerna/exec@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.10.6.tgz#5564b614b7e39c1f034f5e0736c9e020945f2f12" - integrity sha512-cdHqaRBMYceJu8rZLO8b4ZeR27O+xKPHgzi13OOOfBJQjrTuacjMWyHgmpy8jWc/0f7QnTl4VsHks7VJ3UK+vw== dependencies: "@lerna/batch-packages" "3.10.6" "@lerna/child-process" "3.3.0" @@ -1890,7 +1765,6 @@ "@lerna/filter-options@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.10.6.tgz#e05a8b8de6efc16c47c83f0ac58291008efba4b8" - integrity sha512-r/dQbqN+RGFKZNn+DyWehswFmAkny/fkdMB2sRM2YVe7zRTtSl95YxD9DtdYnpJTG/jbOVICS/L5QJakrI6SSw== dependencies: "@lerna/collect-updates" "3.10.1" "@lerna/filter-packages" "3.10.0" @@ -1899,7 +1773,6 @@ "@lerna/filter-packages@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.10.0.tgz#75f9a08184fc4046da2057e0218253cd6f493f05" - integrity sha512-3Acdj+jbany6LnQSuImU4ttcK5ULHSVug8Gh/EvwTewKCDpHAuoI3eyuzZOnSBdMvDOjE03uIESQK0dNNsn6Ow== dependencies: "@lerna/validation-error" "3.6.0" libnpm "^2.0.1" @@ -1908,14 +1781,12 @@ "@lerna/get-npm-exec-opts@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.6.0.tgz#ea595eb28d1f34ba61a92ee8391f374282b4b76e" - integrity sha512-ruH6KuLlt75aCObXfUIdVJqmfVq7sgWGq5mXa05vc1MEqxTIiU23YiJdWzofQOOUOACaZkzZ4K4Nu7wXEg4Xgg== dependencies: libnpm "^2.0.1" "@lerna/get-packed@3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.7.0.tgz#549c7738f7be5e3b1433e82ed9cda9123bcd1ed5" - integrity sha512-yuFtjsUZIHjeIvIYQ/QuytC+FQcHwo3peB+yGBST2uWCLUCR5rx6knoQcPzbxdFDCuUb5IFccFGd3B1fHFg3RQ== dependencies: fs-extra "^7.0.0" ssri "^6.0.1" @@ -1924,12 +1795,10 @@ "@lerna/global-options@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.10.6.tgz#c491a64b0be47eca4ffc875011958a5ee70a9a3e" - integrity sha512-k5Xkq1M/uREFC2R9uwN5gcvIgjj4iOXo0YyeEXCMWBiW3j2GL9xN4d1MmAIcrYlAzVYh6kLlWaFWl/rNIneHIw== "@lerna/has-npm-version@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.10.0.tgz#d3a73c0fedd2f2e9c6fbe166c41809131dc939d2" - integrity sha512-N4RRYxGeivuaKgPDzrhkQOQs1Sg4tOnxnEe3akfqu1wDA4Ng5V6Y2uW3DbkAjFL3aNJhWF5Vbf7sBsGtfgDQ8w== dependencies: "@lerna/child-process" "3.3.0" semver "^5.5.0" @@ -1937,7 +1806,6 @@ "@lerna/import@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.10.6.tgz#36b65854857e8ab5dfd98a1caea4d365ecc06578" - integrity sha512-LlGxhfDhovoNoBJLF3PYd3j/G2GFTnfLh0V38+hBQ6lomMNJbjkACfiLVomQxPWWpYLk0GTlpWYR8YGv6L7Ifw== dependencies: "@lerna/child-process" "3.3.0" "@lerna/command" "3.10.6" @@ -1951,7 +1819,6 @@ "@lerna/init@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.10.6.tgz#b5c5166b2ddf00ea0f2742a1f53f59221478cf9a" - integrity sha512-RIlEx+ofWLYRNjxCkkV3G0XQPM+/KA5RXRDb5wKQLYO1f+tZAaHoUh8fHDIvxGf/ohY/OIjYYGSsU+ysimfwiQ== dependencies: "@lerna/child-process" "3.3.0" "@lerna/command" "3.10.6" @@ -1962,7 +1829,6 @@ "@lerna/link@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.10.6.tgz#4201cabbfc27bebaf1a400f8cfbd238f285dd3c7" - integrity sha512-dwD6qftRWitgLDYbqtDrgO7c8uF5C0fHVew5M6gU5m9tBJidqd7cDwHv/bXboLEI63U7tt5y6LY+wEpYUFsBRw== dependencies: "@lerna/command" "3.10.6" "@lerna/package-graph" "3.10.6" @@ -1973,7 +1839,6 @@ "@lerna/list@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.10.6.tgz#7c43c09301ea01528f4dab3b22666f021e8ba9a5" - integrity sha512-3ElQBj2dOB4uUkpsjC1bxdeZwEzRBuV1pBBs5E1LncwsZf7D9D99Z32fuZsDaCHpEMgHAD4/j8juI3/7m5dkaQ== dependencies: "@lerna/command" "3.10.6" "@lerna/filter-options" "3.10.6" @@ -1983,7 +1848,6 @@ "@lerna/listable@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.10.6.tgz#cea92de89d9f293c6d63e00be662bed03f85c496" - integrity sha512-F7ZuvesSgeuMiJf99eOum5p1MQGQStykcmHH1ek+LQRMiGGF1o3PkBxPvHTZBADGOFarek8bFA5TVmRAMX7NIw== dependencies: "@lerna/batch-packages" "3.10.6" chalk "^2.3.1" @@ -1992,7 +1856,6 @@ "@lerna/log-packed@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.6.0.tgz#bed96c2bdd47f076d9957d0c6069b2edc1518145" - integrity sha512-T/J41zMkzpWB5nbiTRS5PmYTFn74mJXe6RQA2qhkdLi0UqnTp97Pux1loz3jsJf2yJtiQUnyMM7KuKIAge0Vlw== dependencies: byte-size "^4.0.3" columnify "^1.5.4" @@ -2002,7 +1865,6 @@ "@lerna/npm-conf@3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.7.0.tgz#f101d4fdf07cefcf1161bcfaf3c0f105b420a450" - integrity sha512-+WSMDfPKcKzMfqq283ydz9RRpOU6p9wfx0wy4hVSUY/6YUpsyuk8SShjcRtY8zTM5AOrxvFBuuV90H4YpZ5+Ng== dependencies: config-chain "^1.1.11" pify "^3.0.0" @@ -2010,7 +1872,6 @@ "@lerna/npm-dist-tag@3.8.5": version "3.8.5" resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.8.5.tgz#5ce22a72576badc8cb6baf85550043d63e66ea44" - integrity sha512-VO57yKTB4NC2LZuTd4w0LmlRpoFm/gejQ1gqqLGzSJuSZaBXmieElFovzl21S07cqiy7FNVdz75x7/a6WCZ6XA== dependencies: figgy-pudding "^3.5.1" libnpm "^2.0.1" @@ -2018,7 +1879,6 @@ "@lerna/npm-install@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.10.0.tgz#fcd6688a3a2cd0e702a03c54c22eb7ae8b3dacb0" - integrity sha512-/6/XyLY9/4jaMPBOVYUr4wZxQURIfwoELY0qCQ8gZ5zv4cOiFiiCUxZ0i4fxqFtD7nJ084zq1DsZW0aH0CIWYw== dependencies: "@lerna/child-process" "3.3.0" "@lerna/get-npm-exec-opts" "3.6.0" @@ -2030,7 +1890,6 @@ "@lerna/npm-publish@3.10.7": version "3.10.7" resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.10.7.tgz#9326b747b905a7f0e69d4be3f557859c3e359649" - integrity sha512-oU3/Q+eHC1fRjh7bk6Nn4tRD1OLR6XZVs3v+UWMWMrF4hVSV61pxcP5tpeI1n4gDQjSgh7seI4EzKVJe/WfraA== dependencies: "@lerna/run-lifecycle" "3.10.5" figgy-pudding "^3.5.1" @@ -2040,7 +1899,6 @@ "@lerna/npm-run-script@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.10.0.tgz#49a9204eddea136da15a8d8d9eba2c3175b77ddd" - integrity sha512-c21tBXLF1Wje4tx/Td9jKIMrlZo/8QQiyyadjdKpwyyo7orSMsVNXGyJwvZ4JVVDcwC3GPU6HQvkt63v7rcyaw== dependencies: "@lerna/child-process" "3.3.0" "@lerna/get-npm-exec-opts" "3.6.0" @@ -2049,14 +1907,12 @@ "@lerna/output@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.6.0.tgz#a69384bc685cf3b21aa1bfc697eb2b9db3333d0b" - integrity sha512-9sjQouf6p7VQtVCRnzoTGlZyURd48i3ha3WBHC/UBJnHZFuXMqWVPKNuvnMf2kRXDyoQD+2mNywpmEJg5jOnRg== dependencies: libnpm "^2.0.1" "@lerna/pack-directory@3.10.5": version "3.10.5" resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.10.5.tgz#9bdabceacb74e1f54e47bae925e193978f2aae51" - integrity sha512-Ulj24L9XdgjJIxBr6ZjRJEoBULVH3c10lqunUdW41bswXhzhirRtQIxv0+5shngNjDwgMmJfOBcuCVKPSez4tg== dependencies: "@lerna/get-packed" "3.7.0" "@lerna/package" "3.7.2" @@ -2070,7 +1926,6 @@ "@lerna/package-graph@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.10.6.tgz#8940d1ed7003100117cb1b618f7690585c00db81" - integrity sha512-mpIOJbhi+xLqT9BcUrLVD4We8WUdousQf/QndbEWl8DWAW1ethtRHVsCm9ufdBB3F9nj4PH/hqnDWWwqE+rS4w== dependencies: "@lerna/validation-error" "3.6.0" libnpm "^2.0.1" @@ -2079,7 +1934,6 @@ "@lerna/package@3.7.2": version "3.7.2" resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.7.2.tgz#03c69fd7fb965c372c8c969165a2f7d6dfe2dfcb" - integrity sha512-8A5hN2CekM1a0Ix4VUO/g+REo+MsnXb8lnQ0bGjr1YGWzSL5NxYJ0Z9+0pwTfDpvRDYlFYO0rMVwBUW44b4dUw== dependencies: libnpm "^2.0.1" load-json-file "^4.0.0" @@ -2088,7 +1942,6 @@ "@lerna/project@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.10.0.tgz#98272bf2eb93e9b21850edae568d696bf7fdebda" - integrity sha512-9QRl8aGHuyU4zVEELQmNPnJTlS7XHqX7w9I9isCXdnilKc2R0MyvUs21lj6Yyt6xTuQnqD158TR9tbS4QufYQQ== dependencies: "@lerna/package" "3.7.2" "@lerna/validation-error" "3.6.0" @@ -2106,7 +1959,6 @@ "@lerna/prompt@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.6.0.tgz#b17cc464dec9d830619723e879dc747367378217" - integrity sha512-nyAjPMolJ/ZRAAVcXrUH89C4n1SiWvLh4xWNvWYKLcf3PI5yges35sDFP/HYrM4+cEbkNFuJCRq6CxaET4PRsg== dependencies: inquirer "^6.2.0" libnpm "^2.0.1" @@ -2114,7 +1966,6 @@ "@lerna/publish@3.10.7": version "3.10.7" resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.10.7.tgz#8c5a3268398152e1f7993ff7bb6722a0363797af" - integrity sha512-Qd8pml2l9s6GIvNX1pTnia+Ddjsm9LF3pRRoOQeugAdv2IJNf45c/83AAEyE9M2ShG5VjgxEITNW4Lg49zipjQ== dependencies: "@lerna/batch-packages" "3.10.6" "@lerna/check-working-tree" "3.10.0" @@ -2146,14 +1997,12 @@ "@lerna/pulse-till-done@3.7.1": version "3.7.1" resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.7.1.tgz#a9e55380fa18f6896a3e5b23621a4227adfb8f85" - integrity sha512-MzpesZeW3Mc+CiAq4zUt9qTXI9uEBBKrubYHE36voQTSkHvu/Rox6YOvfUr+U7P6k8frFPeCgGpfMDTLhiqe6w== dependencies: libnpm "^2.0.1" "@lerna/resolve-symlink@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.6.0.tgz#985344796b704ff32afa923901e795e80741b86e" - integrity sha512-TVOAEqHJSQVhNDMFCwEUZPaOETqHDQV1TQWQfC8ZlOqyaUQ7veZUbg0yfG7RPNzlSpvF0ZaGFeR0YhYDAW03GA== dependencies: fs-extra "^7.0.0" libnpm "^2.0.1" @@ -2162,7 +2011,6 @@ "@lerna/rimraf-dir@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.10.0.tgz#2d9435054ab7bbc5519db0a2654c5d8cacd27f98" - integrity sha512-RSKSfxPURc58ERCD/PuzorR86lWEvIWNclXYGvIYM76yNGrWiDF44pGHQvB4J+Lxa5M+52ZtZC/eOC7A7YCH4g== dependencies: "@lerna/child-process" "3.3.0" libnpm "^2.0.1" @@ -2172,7 +2020,6 @@ "@lerna/run-lifecycle@3.10.5": version "3.10.5" resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.10.5.tgz#ea4422bb70c0f8d4382ecb2a626c8ba0ca88550b" - integrity sha512-YPmXviaxVlhcKM6IkDTIpTq24mxOuMCilo+MTr1RLoafgB9ZTmP2AHRiFt/sy14wOsq2Zqr0wJyj8KFlDYLTkA== dependencies: "@lerna/npm-conf" "3.7.0" figgy-pudding "^3.5.1" @@ -2181,7 +2028,6 @@ "@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" @@ -2189,7 +2035,6 @@ "@lerna/run@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.10.6.tgz#4c159a719b0ec010409dfe8f9535c9a3c3f3e06a" - integrity sha512-KS2lWbu/8WUUscQPi9U8sPO6yYpzf/0GmODjpruR1nRi1u/tuncdjTiG+hjGAeFC1BD7YktT9Za6imIpE8RXmA== dependencies: "@lerna/batch-packages" "3.10.6" "@lerna/command" "3.10.6" @@ -2204,7 +2049,6 @@ "@lerna/symlink-binary@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.10.0.tgz#5acdde86dfd50c9270d7d2a93bade203cff41b3d" - integrity sha512-6mQsG+iVjBo8cD8s24O+YgFrwDyUGfUQbK4ryalAXFHI817Zd4xlI3tjg3W99whCt6rt6D0s1fpf8eslMN6dSw== dependencies: "@lerna/create-symlink" "3.6.0" "@lerna/package" "3.7.2" @@ -2214,7 +2058,6 @@ "@lerna/symlink-dependencies@3.10.0": version "3.10.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.10.0.tgz#a20226e8e97af6a6bc4b416bfc28c0c5e3ba9ddd" - integrity sha512-vGpg5ydwGgQCuWNX5y7CRL38mGpuLhf1GRq9wMm7IGwnctEsdSNqvvE+LDgqtwEZASu5+vffYUkL0VlFXl8uWA== dependencies: "@lerna/create-symlink" "3.6.0" "@lerna/resolve-symlink" "3.6.0" @@ -2227,19 +2070,16 @@ "@lerna/timer@3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.5.0.tgz#8dee6acf002c55de64678c66ef37ca52143f1b9b" - integrity sha512-TAb99hqQN6E3JBGtG9iyZNPq1/DbmqgBOeNrKtdJsGvIeX/NGLgUDWMrj2h04V4O+jpBFmSf6HIld6triKmxCA== "@lerna/validation-error@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.6.0.tgz#550cf66bb2ef88edc02e36017b575a7a9100d5d8" - integrity sha512-MWltncGO5VgMS0QedTlZCjFUMF/evRjDMMHrtVorkIB2Cp5xy0rkKa8iDBG43qpUWeG1giwi58yUlETBcWfILw== dependencies: libnpm "^2.0.1" "@lerna/version@3.10.6": version "3.10.6" resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.10.6.tgz#c31c2bb1aabbdc851407534155567b5cdf48e0fb" - integrity sha512-77peW2ROlHHl1e/tHBUmhpb8tsO6CIdlx34XapZhUuIVykrkOuqVFFxqMecrGG8SJe0e3l1G+Fah7bJTQcG0kw== dependencies: "@lerna/batch-packages" "3.10.6" "@lerna/check-working-tree" "3.10.0" @@ -2266,7 +2106,6 @@ "@lerna/write-log-file@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.6.0.tgz#b8d5a7efc84fa93cbd67d724d11120343b2a849a" - integrity sha512-OkLK99V6sYXsJsYg+O9wtiFS3z6eUPaiz2e6cXJt80mfIIdI1t2dnmyua0Ib5cZWExQvx2z6Y32Wlf0MnsoNsA== dependencies: libnpm "^2.0.1" write-file-atomic "^2.3.0" @@ -2274,7 +2113,6 @@ "@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" @@ -2282,12 +2120,10 @@ "@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== "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@pieh/friendly-errors-webpack-plugin@1.7.0-chalk-2": version "1.7.0-chalk-2" @@ -2302,7 +2138,6 @@ "@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" @@ -2313,49 +2148,40 @@ "@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" "*" @@ -2364,56 +2190,46 @@ "@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" "*" @@ -2421,7 +2237,6 @@ "@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" @@ -2429,12 +2244,10 @@ "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" - integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== dependencies: "@webassemblyjs/helper-module-context" "1.7.11" "@webassemblyjs/helper-wasm-bytecode" "1.7.11" @@ -2443,7 +2256,6 @@ "@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" @@ -2453,83 +2265,68 @@ "@webassemblyjs/floating-point-hex-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" - integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" - integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" - integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" - integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== dependencies: "@webassemblyjs/wast-printer" "1.7.11" "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" - integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" - integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" - integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" - integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-buffer" "1.7.11" @@ -2539,7 +2336,6 @@ "@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" @@ -2549,45 +2345,38 @@ "@webassemblyjs/ieee754@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" - integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" - integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== dependencies: "@xtuc/long" "4.2.1" "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" - integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== "@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.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" - integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-buffer" "1.7.11" @@ -2601,7 +2390,6 @@ "@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" @@ -2615,7 +2403,6 @@ "@webassemblyjs/wasm-gen@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" - integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-wasm-bytecode" "1.7.11" @@ -2626,7 +2413,6 @@ "@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" @@ -2637,7 +2423,6 @@ "@webassemblyjs/wasm-opt@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" - integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-buffer" "1.7.11" @@ -2647,7 +2432,6 @@ "@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" @@ -2657,7 +2441,6 @@ "@webassemblyjs/wasm-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" - integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-api-error" "1.7.11" @@ -2669,7 +2452,6 @@ "@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" @@ -2681,7 +2463,6 @@ "@webassemblyjs/wast-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" - integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/floating-point-hex-parser" "1.7.11" @@ -2693,7 +2474,6 @@ "@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" @@ -2706,7 +2486,6 @@ "@webassemblyjs/wast-printer@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" - integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/wast-parser" "1.7.11" @@ -2715,7 +2494,6 @@ "@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" @@ -2724,17 +2502,14 @@ "@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" @@ -2742,17 +2517,14 @@ 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" @@ -2760,41 +2532,34 @@ 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@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== acorn@^5.0.0, acorn@^5.2.1, acorn@^5.5.3, 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== acorn@^6.0.2: version "6.0.5" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" - integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== 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" @@ -2802,31 +2567,26 @@ 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" @@ -2834,7 +2594,6 @@ 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" @@ -2842,17 +2601,14 @@ 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@^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.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" @@ -2862,7 +2618,6 @@ ajv@^5.3.0: 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" @@ -2872,7 +2627,6 @@ ajv@^6.1.0, ajv@^6.5.0: 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" @@ -2882,7 +2636,6 @@ ajv@^6.5.3: ajv@^6.6.1: version "6.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" - integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -2892,7 +2645,6 @@ ajv@^6.6.1: 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" @@ -2913,7 +2665,6 @@ 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" @@ -2922,93 +2673,76 @@ 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-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-red@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= dependencies: ansi-wrap "0.1.0" 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-regex@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" - integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== 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.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" @@ -3016,7 +2750,6 @@ 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" @@ -3024,14 +2757,12 @@ 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" @@ -3039,7 +2770,6 @@ 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" @@ -3048,7 +2778,6 @@ 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" @@ -3057,7 +2786,6 @@ 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" @@ -3065,43 +2793,36 @@ 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@^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, aproba@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== "aproba@^1.1.2 || 2", 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== arch@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" - integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== archive-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" - integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= dependencies: file-type "^4.2.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" @@ -3109,14 +2830,12 @@ 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" argparse@~0.1.15: version "0.1.16" resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" - integrity sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw= dependencies: underscore "~1.7.0" underscore.string "~2.4.0" @@ -3124,12 +2843,10 @@ argparse@~0.1.15: 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" @@ -3137,69 +2854,56 @@ 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" @@ -3207,76 +2911,62 @@ 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.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-uniq@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.0.0.tgz#0009e30306e37a6dd2e2e2480db5316fdade1583" - integrity sha512-O3QZEr+3wDj7otzF7PjNGs6CA3qmYMLvt5xGkjY/V0VxS+ovvqVo/5wKM/OVOAyuX4DTh9H31zE/yKtO66hTkg== 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= asciidoctor.js@^1.5.9: version "1.5.9" resolved "https://registry.yarnpkg.com/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz#28f8e8ee134b82627f0240e9b6a201b3d15d9524" - integrity sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA== dependencies: opal-runtime "1.0.11" 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" @@ -3285,26 +2975,22 @@ 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" 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" @@ -3352,12 +3038,10 @@ 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" @@ -3366,69 +3050,56 @@ 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.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.11.7: version "0.11.7" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" - integrity sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw== 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@^1.0.0, async-each@^1.0.1: 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.5.2, async@^1.4.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.0.1, async@^2.1.2, async@^2.1.4, async@^2.5.0, async@^2.6.1: 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== autolinker@~0.15.0: version "0.15.3" resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832" - integrity sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI= autoprefixer@^9.4.3: version "9.4.3" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.3.tgz#c97384a8fd80477b78049163a91bbc725d9c41d9" - integrity sha512-/XSnzDepRkAU//xLcXA/lUWxpsBuw0WiriAHOqnxkuCtzLhaz+fL4it4gp20BQ8n5SyLzK/FOc7A0+u/rti2FQ== dependencies: browserslist "^4.3.6" caniuse-lite "^1.0.30000921" @@ -3440,17 +3111,14 @@ autoprefixer@^9.4.3: 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" @@ -3458,14 +3126,12 @@ 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.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" @@ -3474,12 +3140,10 @@ babel-code-frame@6.26.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" @@ -3504,7 +3168,6 @@ babel-core@^6.0.0, babel-core@^6.26.0: babel-eslint@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" - integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -3516,7 +3179,6 @@ babel-eslint@^10.0.0: babel-eslint@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -3528,14 +3190,12 @@ babel-eslint@^9.0.0: 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" @@ -3549,7 +3209,6 @@ 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" @@ -3558,7 +3217,6 @@ 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" @@ -3567,7 +3225,6 @@ babel-helper-builder-binary-assignment-operator-visitor@^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" @@ -3577,7 +3234,6 @@ 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" @@ -3587,7 +3243,6 @@ 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" @@ -3596,7 +3251,6 @@ 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" @@ -3606,7 +3260,6 @@ 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" @@ -3617,7 +3270,6 @@ 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" @@ -3625,7 +3277,6 @@ 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" @@ -3633,7 +3284,6 @@ 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" @@ -3641,7 +3291,6 @@ 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" @@ -3650,7 +3299,6 @@ 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" @@ -3661,7 +3309,6 @@ 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" @@ -3673,7 +3320,6 @@ 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" @@ -3681,7 +3327,6 @@ babel-helpers@^6.24.1: 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" @@ -3689,7 +3334,6 @@ babel-jest@^23.6.0: babel-jest@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.0.0.tgz#8a0c767f03f4a595fb921afdab13ff126edd00da" - integrity sha512-YGKRbZUjoRmNIAyG7x4wYxUyHvHPFpYXj6Mx1A5cslhaQOUgP/+LF3wtFgMuOQkIpjbVNBufmOnVY0QVwB5v9Q== dependencies: babel-plugin-istanbul "^5.1.0" babel-preset-jest "^24.0.0" @@ -3697,7 +3341,6 @@ babel-jest@^24.0.0: babel-loader@^8.0.0: version "8.0.4" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" - integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw== dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -3707,31 +3350,26 @@ babel-loader@^8.0.0: 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: 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" @@ -3754,7 +3392,6 @@ babel-plugin-emotion@^10.0.7: 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" @@ -3764,7 +3401,6 @@ babel-plugin-istanbul@^4.1.6: babel-plugin-istanbul@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.0.tgz#6892f529eff65a3e2d33d87dc5888ffa2ecd4a30" - integrity sha512-CLoXPRSUWiR8yao8bShqZUIC6qLfZVVY3X1wj+QPNXu0wfmrRRfarh1LYy+dYMVI+bDj0ghy3tuqFFRFZmL1Nw== dependencies: find-up "^3.0.0" istanbul-lib-instrument "^3.0.0" @@ -3773,17 +3409,14 @@ babel-plugin-istanbul@^5.1.0: 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-jest-hoist@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.0.0.tgz#3adf030b6fd67e4311479a54b24077bdfc226ec9" - integrity sha512-ipefE7YWNyRNVaV/MonUb/I5nef53ZRFR74P9meMGmJxqt8s1BJmfhw11YeIMbcjXN4fxtWUaskZZe8yreXE1Q== 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" @@ -3794,7 +3427,6 @@ babel-plugin-lodash@^3.2.11: 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" @@ -3802,7 +3434,6 @@ babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.4.2: 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" @@ -3820,72 +3451,58 @@ 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.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-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: 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-jsx@^6.18.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: 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-syntax-trailing-function-commas@^7.0.0-beta.0: version "7.0.0-beta.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== 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" @@ -3894,7 +3511,6 @@ babel-plugin-transform-async-generator-functions@^6.24.1: 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" @@ -3903,7 +3519,6 @@ babel-plugin-transform-async-to-generator@^6.24.1: 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" @@ -3912,7 +3527,6 @@ babel-plugin-transform-class-constructor-call@^6.24.1: babel-plugin-transform-class-properties@^6.24.1: 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" @@ -3922,7 +3536,6 @@ babel-plugin-transform-class-properties@^6.24.1: 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" @@ -3933,21 +3546,18 @@ babel-plugin-transform-decorators@^6.24.1: babel-plugin-transform-es2015-arrow-functions@^6.22.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: 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.24.1: 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" @@ -3958,7 +3568,6 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-plugin-transform-es2015-classes@^6.24.1: 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" @@ -3973,7 +3582,6 @@ babel-plugin-transform-es2015-classes@^6.24.1: babel-plugin-transform-es2015-computed-properties@^6.24.1: 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" @@ -3981,14 +3589,12 @@ babel-plugin-transform-es2015-computed-properties@^6.24.1: babel-plugin-transform-es2015-destructuring@^6.22.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.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" @@ -3996,14 +3602,12 @@ babel-plugin-transform-es2015-duplicate-keys@^6.24.1: babel-plugin-transform-es2015-for-of@^6.22.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.24.1: 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" @@ -4012,14 +3616,12 @@ babel-plugin-transform-es2015-function-name@^6.24.1: babel-plugin-transform-es2015-literals@^6.22.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.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" @@ -4028,7 +3630,6 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1: babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 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" @@ -4038,7 +3639,6 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 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" @@ -4047,7 +3647,6 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1: 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" @@ -4056,7 +3655,6 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1: babel-plugin-transform-es2015-object-super@^6.24.1: 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" @@ -4064,7 +3662,6 @@ babel-plugin-transform-es2015-object-super@^6.24.1: babel-plugin-transform-es2015-parameters@^6.24.1: 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" @@ -4076,7 +3673,6 @@ babel-plugin-transform-es2015-parameters@^6.24.1: babel-plugin-transform-es2015-shorthand-properties@^6.24.1: 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" @@ -4084,14 +3680,12 @@ babel-plugin-transform-es2015-shorthand-properties@^6.24.1: babel-plugin-transform-es2015-spread@^6.22.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.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" @@ -4100,21 +3694,18 @@ babel-plugin-transform-es2015-sticky-regex@^6.24.1: babel-plugin-transform-es2015-template-literals@^6.22.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: 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.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" @@ -4123,7 +3714,6 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1: 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" @@ -4132,7 +3722,6 @@ babel-plugin-transform-exponentiation-operator@^6.24.1: 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" @@ -4140,7 +3729,6 @@ babel-plugin-transform-export-extensions@^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" @@ -4148,7 +3736,6 @@ babel-plugin-transform-flow-strip-types@^6.8.0: babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.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" @@ -4156,14 +3743,12 @@ babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object 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" @@ -4171,7 +3756,6 @@ babel-plugin-transform-strict-mode@^6.24.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" @@ -4201,7 +3785,6 @@ babel-preset-es2015@^6.9.0: babel-preset-fbjs@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz#c0e6347d3e0379ed84b3c2434d3467567aa05297" - integrity sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g== dependencies: "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-object-rest-spread" "^7.0.0" @@ -4234,7 +3817,6 @@ babel-preset-fbjs@^3.1.2: 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" @@ -4242,7 +3824,6 @@ babel-preset-jest@^23.2.0: babel-preset-jest@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.0.0.tgz#d23782e5e036cff517859640a80960bd628bd82b" - integrity sha512-ECMMOLvNDCmsn3geBa3JkwzylcfpThMpAdfreONQm8EmXcs4tXUpXZDQPxiIMg7nMobTuAC2zDGIKrbrBXW2Vg== dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.0.0" @@ -4250,7 +3831,6 @@ babel-preset-jest@^24.0.0: 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" @@ -4259,7 +3839,6 @@ 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" @@ -4269,7 +3848,6 @@ 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" @@ -4280,7 +3858,6 @@ 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" @@ -4293,7 +3870,6 @@ babel-register@^6.26.0, babel-register@^6.9.0: babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.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" @@ -4301,7 +3877,6 @@ babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runti babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.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" @@ -4312,7 +3887,6 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^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" @@ -4327,7 +3901,6 @@ 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" @@ -4342,37 +3915,30 @@ babelify@^10.0.0: 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.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" @@ -4380,22 +3946,18 @@ 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" @@ -4408,38 +3970,32 @@ 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" 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-opn@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-0.1.4.tgz#271d03bd8bcb8406d2d9d4cda5c0944d726ea171" - integrity sha512-7V92EnOdjWOB9lKsVsthCcu1FdFT5qNJVTiOgGy5wPuTsSptMMxm2G1FGHgWu22MyX3tyDRzTWk4lxY2Ppdu7A== dependencies: opn "^5.4.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" @@ -4448,17 +4004,14 @@ 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@^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" @@ -4469,7 +4022,6 @@ bin-build@^3.0.0: bin-check@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" - integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== dependencies: execa "^0.7.0" executable "^4.1.0" @@ -4477,7 +4029,6 @@ bin-check@^4.1.0: bin-links@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" - integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg== dependencies: bluebird "^3.5.0" cmd-shim "^2.0.2" @@ -4488,7 +4039,6 @@ bin-links@^1.1.2: bin-version-check@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" - integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== dependencies: bin-version "^3.0.0" semver "^5.6.0" @@ -4497,7 +4047,6 @@ bin-version-check@^4.0.0: bin-version@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.0.0.tgz#1a8be03f652171713b1b1ccc4b0ebea460b08818" - integrity sha512-Ekhwm6AUiMbZ1LgVCNMkgjovpMR30FyQN74laAW9gs0NPjZR5gdY0ARNB0YsQG8GOme3CsHbxmeyq/7Ofq6QYQ== dependencies: execa "^1.0.0" find-versions "^3.0.0" @@ -4505,7 +4054,6 @@ bin-version@^3.0.0: bin-wrapper@^4.0.0, bin-wrapper@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" - integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== dependencies: bin-check "^4.1.0" bin-version-check "^4.0.0" @@ -4517,19 +4065,16 @@ bin-wrapper@^4.0.0, bin-wrapper@^4.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= bindings@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.4.0.tgz#909efa49f2ebe07ecd3cb136778f665052040127" - integrity sha512-7znEVX22Djn+nYjxCWKDne0RRloa9XfYa84yk3s+HkE3LpDYZmhArYr9O9huBoHY3/oXispx5LorIX7Sl2CgSQ== dependencies: file-uri-to-path "1.0.0" 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" @@ -4537,44 +4082,36 @@ 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.2: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" - integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== 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" @@ -4590,7 +4127,6 @@ 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" @@ -4600,7 +4136,6 @@ 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" @@ -4612,17 +4147,14 @@ 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" - 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" @@ -4635,7 +4167,6 @@ 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" @@ -4643,7 +4174,6 @@ 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" @@ -4652,7 +4182,6 @@ braces@^1.8.2: braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: 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" @@ -4668,7 +4197,6 @@ braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: 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" @@ -4678,31 +4206,26 @@ 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" 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" @@ -4714,7 +4237,6 @@ 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" @@ -4723,7 +4245,6 @@ 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" @@ -4733,7 +4254,6 @@ 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" @@ -4742,7 +4262,6 @@ 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" @@ -4750,7 +4269,6 @@ 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" @@ -4763,14 +4281,12 @@ 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.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" @@ -4778,7 +4294,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" @@ -4796,7 +4311,6 @@ browserslist@^4.3.4: browserslist@^4.3.6: version "4.3.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.7.tgz#f1de479a6466ea47a0a26dcc725e7504817e624a" - integrity sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ== dependencies: caniuse-lite "^1.0.30000925" electron-to-chromium "^1.3.96" @@ -4805,24 +4319,20 @@ browserslist@^4.3.6: 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" @@ -4830,52 +4340,42 @@ 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-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" @@ -4884,7 +4384,6 @@ 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" @@ -4893,47 +4392,38 @@ 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-modules@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1" - integrity sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg== 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" @@ -4952,7 +4442,6 @@ 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" @@ -4972,7 +4461,6 @@ cacache@^11.0.1, cacache@^11.0.2: cacache@^11.3.2: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" - integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== dependencies: bluebird "^3.5.3" chownr "^1.1.1" @@ -4992,7 +4480,6 @@ cacache@^11.3.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" @@ -5007,7 +4494,6 @@ cache-base@^1.0.1: 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" @@ -5015,7 +4501,6 @@ cache-manager-fs-hash@^0.0.6: 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" @@ -5023,7 +4508,6 @@ cache-manager@^2.9.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" @@ -5041,39 +4525,32 @@ cached-path-relative@^1.0.0: 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= callsites@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== 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" @@ -5081,7 +4558,6 @@ 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" @@ -5089,7 +4565,6 @@ camelcase-keys@^2.0.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" @@ -5098,27 +4573,22 @@ camelcase-keys@^4.0.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" - 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= camelcase@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== 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" @@ -5128,12 +4598,10 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, 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== caniuse-lite@^1.0.30000921, caniuse-lite@^1.0.30000925: version "1.0.30000926" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000926.tgz#4361a99d818ca6e521dbe89a732de62a194a789c" - integrity sha512-diMkEvxfFw09SkbErCLmw/1Fx1ZZe9xfWm4aeA2PUffB48x1tfZeMsK5j4BW7zN7Y4PdqmPVVdG2eYjE5IRTag== caniuse-lite@^1.0.30000929: version "1.0.30000939" @@ -5143,34 +4611,28 @@ caniuse-lite@^1.0.30000929: 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.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c= 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@^2.0.0, caw@^2.0.1: 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" @@ -5180,12 +4642,10 @@ caw@^2.0.0, caw@^2.0.1: 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" @@ -5193,7 +4653,6 @@ 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" @@ -5203,7 +4662,6 @@ cfb@^1.1.0: chalk@1.1.3, chalk@^1.0.0, 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" @@ -5214,7 +4672,6 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.3: 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" @@ -5232,7 +4689,6 @@ chalk@^2.4.2: 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" @@ -5241,7 +4697,6 @@ 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" @@ -5265,42 +4720,34 @@ 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= 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" @@ -5312,7 +4759,6 @@ cheerio@^1.0.0-rc.2: chokidar@^1.4.2, chokidar@^1.6.0, 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" @@ -5328,7 +4774,6 @@ chokidar@^1.4.2, chokidar@^1.6.0, 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" @@ -5367,34 +4812,28 @@ chokidar@^2.0.4, chokidar@^2.1.2: chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 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== ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 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" @@ -5402,19 +4841,16 @@ 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" @@ -5424,38 +4860,32 @@ 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.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-table3@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== dependencies: object-assign "^4.1.0" string-width "^2.1.1" @@ -5465,14 +4895,12 @@ cli-table3@^0.5.1: 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" @@ -5480,12 +4908,10 @@ cli-truncate@^0.2.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" @@ -5494,7 +4920,6 @@ 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" @@ -5503,7 +4928,6 @@ 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" @@ -5512,7 +4936,6 @@ 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" @@ -5521,12 +4944,10 @@ 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" @@ -5536,29 +4957,24 @@ 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@^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@^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" @@ -5567,7 +4983,6 @@ 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" @@ -5575,31 +4990,26 @@ cmd-shim@^2.0.2: 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" @@ -5607,34 +5017,28 @@ 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= coffee-script@^1.12.4: version "1.12.7" resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" - integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== 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" @@ -5642,19 +5046,16 @@ 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" @@ -5662,7 +5063,6 @@ color-string@^1.5.2: 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" @@ -5670,7 +5070,6 @@ color@^3.0.0: color@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" - integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg== dependencies: color-convert "^1.9.1" color-string "^1.5.2" @@ -5678,22 +5077,18 @@ color@^3.1.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" @@ -5701,78 +5096,64 @@ 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== 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.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.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 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" @@ -5780,17 +5161,14 @@ 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.2.1: version "3.4.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" - integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg== compass-vertical-rhythm@^1.4.5: version "1.4.5" resolved "https://registry.yarnpkg.com/compass-vertical-rhythm/-/compass-vertical-rhythm-1.4.5.tgz#4baa8d7068fda164d3675d706775d7547e8750f5" - integrity sha512-bJo3IYX7xmmZCDYjrT2XolaiNjGZ4E2JvUGxpdU0ecbH4ZLK786wvc8aHKVrGrKct9JlkmJbUi8YLrQWvOc+uA== dependencies: convert-css-length "^1.0.1" object-assign "^4.1.0" @@ -5799,29 +5177,24 @@ compass-vertical-rhythm@^1.4.5: 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" @@ -5834,12 +5207,10 @@ 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.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, 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" @@ -5849,7 +5220,6 @@ concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, 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" @@ -5858,7 +5228,6 @@ 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" @@ -5866,7 +5235,6 @@ 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" @@ -5878,39 +5246,32 @@ configstore@^3.0.0, configstore@^3.1.0: confusing-browser-globals@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.5.tgz#0171050cfdd4261e278978078bc00c4d88e135f4" - integrity sha512-tHo1tQL/9Ox5RELbkCAJhnViqWlzBz3MG1bB2czbHjH2mWd4aYUgNCNLfysFL7c4LoDws7pjg2tj48Gmpw4QHA== 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-polyfill@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/console-polyfill/-/console-polyfill-0.1.2.tgz#96cfed51caf78189f699572e6f18271dc37c0e30" - integrity sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA= 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" @@ -5918,34 +5279,28 @@ 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" @@ -5953,7 +5308,6 @@ 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" @@ -5964,12 +5318,10 @@ 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@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.2.tgz#39d945635e03b6d0c9d4078b1df74e06163dc66a" - integrity sha512-yx7m7lVrXmt4nKWQgWZqxSALEiAKZhOAcbxdUaU9575mB0CzXVbgrgpfSnSP7OqWDUTYGD0YVJ0MSRdyOPgAwA== dependencies: compare-func "^1.3.1" q "^1.5.1" @@ -5977,7 +5329,6 @@ conventional-changelog-angular@^5.0.2: conventional-changelog-core@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.5.tgz#c2edf928539308b54fe1b90a2fc731abc021852c" - integrity sha512-iwqAotS4zk0wA4S84YY1JCUG7X3LxaRjJxuUo6GI4dZuIy243j5nOg/Ora35ExT4DOiw5dQbMMQvw2SUjh6moQ== dependencies: conventional-changelog-writer "^4.0.2" conventional-commits-parser "^3.0.1" @@ -5996,12 +5347,10 @@ conventional-changelog-core@^3.1.5: conventional-changelog-preset-loader@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz#81d1a07523913f3d17da3a49f0091f967ad345b0" - integrity sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ== conventional-changelog-writer@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.2.tgz#eb493ed84269e7a663da36e49af51c54639c9a67" - integrity sha512-d8/FQY/fix2xXEBUhOo8u3DCbyEw3UOQgYHxLsPDw+wHUDma/GQGAGsGtoH876WyNs32fViHmTOUrgRKVLvBug== dependencies: compare-func "^1.3.1" conventional-commits-filter "^2.0.1" @@ -6017,7 +5366,6 @@ conventional-changelog-writer@^4.0.2: conventional-commits-filter@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3" - integrity sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A== dependencies: is-subset "^0.1.1" modify-values "^1.0.0" @@ -6025,7 +5373,6 @@ conventional-commits-filter@^2.0.1: conventional-commits-parser@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#fe1c49753df3f98edb2285a5e485e11ffa7f2e4c" - integrity sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.0" @@ -6038,7 +5385,6 @@ conventional-commits-parser@^3.0.1: conventional-recommended-bump@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-4.0.4.tgz#05540584641d3da758c8863c09788fcaeb586872" - integrity sha512-9mY5Yoblq+ZMqJpBzgS+RpSq+SUfP2miOR3H/NR9drGf08WCrY9B6HAGJZEm6+ThsVP917VHAahSOjM6k1vhPg== dependencies: concat-stream "^1.6.0" conventional-changelog-preset-loader "^2.0.2" @@ -6052,7 +5398,6 @@ conventional-recommended-bump@^4.0.4: convert-css-length@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/convert-css-length/-/convert-css-length-1.0.2.tgz#32f38a8ac55d78372ff43562532564366c871ccc" - integrity sha512-ecV7j3hXyXN1X2XfJBzhMR0o1Obv0v3nHmn0UiS3ACENrzbxE/EknkiunS/fCwQva0U62X1GChi8GaPh4oTlLg== dependencies: console-polyfill "^0.1.2" parse-unit "^1.0.1" @@ -6060,29 +5405,24 @@ convert-css-length@^1.0.1: 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.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" @@ -6094,12 +5434,10 @@ 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" @@ -6113,7 +5451,6 @@ 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" @@ -6125,22 +5462,18 @@ 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" @@ -6150,7 +5483,6 @@ cosmiconfig@^4.0.0: 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" @@ -6159,7 +5491,6 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.0.5, cosmiconfig@^5.0.6: cpx@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" - integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= dependencies: babel-runtime "^6.9.2" chokidar "^1.6.0" @@ -6176,7 +5507,6 @@ cpx@^1.5.0: 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" @@ -6184,7 +5514,6 @@ 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" @@ -6192,14 +5521,12 @@ create-ecdh@^4.0.0: create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - 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" @@ -6210,7 +5537,6 @@ 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" @@ -6222,7 +5548,6 @@ 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" @@ -6230,22 +5555,18 @@ 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, cross-env@^5.2.0: 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" @@ -6253,7 +5574,6 @@ cross-env@^5.0.5, cross-env@^5.1.4, cross-env@^5.2.0: 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" @@ -6261,7 +5581,6 @@ cross-fetch@2.2.2: cross-spawn@5.1.0, cross-spawn@^5.0.1: 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" @@ -6270,7 +5589,6 @@ cross-spawn@5.1.0, cross-spawn@^5.0.1: 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" @@ -6281,12 +5599,10 @@ 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" @@ -6303,17 +5619,14 @@ 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" @@ -6321,17 +5634,14 @@ 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" @@ -6339,12 +5649,10 @@ 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" @@ -6362,7 +5670,6 @@ 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" @@ -6374,17 +5681,14 @@ 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" @@ -6394,7 +5698,6 @@ css-select@^1.1.0, css-select@~1.2.0: css-select@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.0.tgz#7aa2921392114831f68db175c0b6a555df74bbd5" - integrity sha512-MGhoq1S9EyPgZIGnts8Yz5WwUOyHmPMdlqeifsYs/xFX7AAm3hY0RJe1dqVlXtYPI66Nsk39R/sa5/ree6L2qg== dependencies: boolbase "^1.0.0" css-what "2.1" @@ -6404,7 +5707,6 @@ css-select@^2.0.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" @@ -6414,12 +5716,10 @@ 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" @@ -6428,7 +5728,6 @@ css-selector-tokenizer@^0.7.0: css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" - integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== dependencies: mdn-data "~1.1.0" source-map "^0.5.3" @@ -6436,7 +5735,6 @@ css-tree@1.0.0-alpha.28: 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" @@ -6444,7 +5742,6 @@ 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" @@ -6452,22 +5749,18 @@ 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" @@ -6477,12 +5770,10 @@ css@2.2.4: 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" @@ -6518,29 +5809,24 @@ 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" @@ -6550,14 +5836,12 @@ 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" @@ -6565,24 +5849,20 @@ 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.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" @@ -6590,14 +5870,12 @@ 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@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-5.0.0.tgz#3d408f30ada69bc45b4306e88b50c382ba01a9b6" - integrity sha512-7//DAQG0yFr+YGrQ0of50sPlPm+8mIRv1TGxXtlOeq1S0Y56iY2lHlX/aLz+AOTWH/2YVNthNtH97pxRl7q33A== dependencies: bin-build "^3.0.0" bin-wrapper "^4.0.1" @@ -6611,38 +5889,32 @@ cxs@^6.2.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" @@ -6651,74 +5923,62 @@ data-urls@^1.0.0, data-urls@^1.0.1: 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@^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= 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.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@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" debug@^4.0.1, debug@^4.1.0: 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" @@ -6726,31 +5986,26 @@ decamelize-keys@^1.0.0: decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: 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@^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" @@ -6759,7 +6014,6 @@ decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: 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" @@ -6770,7 +6024,6 @@ decompress-tarbz2@^4.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" @@ -6779,7 +6032,6 @@ decompress-targz@^4.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" @@ -6789,7 +6041,6 @@ decompress-unzip@^4.0.1: decompress@^4.0.0, decompress@^4.2.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" @@ -6803,27 +6054,22 @@ decompress@^4.0.0, decompress@^4.2.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-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" @@ -6831,7 +6077,6 @@ 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" @@ -6840,17 +6085,14 @@ deep-map@^1.5.0: deepmerge@^1.3.0: version "1.5.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== 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" @@ -6858,42 +6100,36 @@ default-gateway@^2.6.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.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" @@ -6901,12 +6137,10 @@ 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" @@ -6919,7 +6153,6 @@ 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" @@ -6931,37 +6164,30 @@ 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" @@ -6969,51 +6195,42 @@ 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.4: 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" @@ -7021,7 +6238,6 @@ 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" @@ -7029,7 +6245,6 @@ 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" @@ -7037,7 +6252,6 @@ 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" @@ -7059,7 +6273,6 @@ 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" @@ -7067,34 +6280,28 @@ 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" diacritics-map@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af" - integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68= diff-sequences@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" - integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw== 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" @@ -7103,7 +6310,6 @@ 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" @@ -7111,7 +6317,6 @@ 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" @@ -7119,12 +6324,10 @@ disparity@^2.0.0: 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" @@ -7132,21 +6335,18 @@ 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" @@ -7156,14 +6356,12 @@ 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" @@ -7171,7 +6369,6 @@ 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" @@ -7249,19 +6446,16 @@ documentation@^9.0.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" @@ -7269,7 +6463,6 @@ dom-serializer@0, dom-serializer@~0.1.0: 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: "@sheerun/mutationobserver-shim" "^0.3.2" pretty-format "^23.6.0" @@ -7278,67 +6471,56 @@ dom-testing-library@^3.9.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" @@ -7346,7 +6528,6 @@ domutils@1.5.1: domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" domelementtype "1" @@ -7354,33 +6535,28 @@ domutils@^1.5.1, domutils@^1.7.0: 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@^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" @@ -7397,7 +6573,6 @@ download@^6.2.2: download@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" - integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== dependencies: archive-type "^4.0.0" caw "^2.0.1" @@ -7415,24 +6590,20 @@ download@^7.1.0: duplexer2@^0.1.2, 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: version "0.1.1" resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= 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" @@ -7442,7 +6613,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: 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" @@ -7450,14 +6620,12 @@ 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.103: version "1.3.113" @@ -7467,22 +6635,18 @@ electron-to-chromium@^1.3.103: 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== electron-to-chromium@^1.3.96: version "1.3.96" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz#25770ec99b8b07706dedf3a5f43fa50cb54c4f9a" - integrity sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q== 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" @@ -7495,41 +6659,34 @@ 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" @@ -7546,7 +6703,6 @@ 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" @@ -7557,7 +6713,6 @@ 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" @@ -7569,7 +6724,6 @@ 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" @@ -7578,12 +6732,10 @@ 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" @@ -7591,43 +6743,36 @@ 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" @@ -7635,7 +6780,6 @@ 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" @@ -7646,7 +6790,6 @@ 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" @@ -7655,7 +6798,6 @@ 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" @@ -7664,7 +6806,6 @@ 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" @@ -7673,34 +6814,28 @@ 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" @@ -7708,7 +6843,6 @@ 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" @@ -7718,7 +6852,6 @@ 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" @@ -7726,17 +6859,14 @@ 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.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" @@ -7748,7 +6878,6 @@ 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" @@ -7759,7 +6888,6 @@ 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" @@ -7771,26 +6899,22 @@ escodegen@~1.9.0: 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@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.0.0.tgz#16cedeea0a56e74de60dcbbe3be0ab2c645405b9" - integrity sha512-kWuiJxzV5NwOwZcpyozTzDT5KJhBw292bbYro9Is7BWnbNMg15Gmpluc1CTetiCatF8DRkNvgPAOaSyg+bYr3g== dependencies: get-stdin "^6.0.0" eslint-config-react-app@^3.0.0: version "3.0.6" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-3.0.6.tgz#addcae1359235941e95f3c96970b7ac8552e1130" - integrity sha512-VL5rA1EBZv7f9toc9x71or7nr4jRmwCH4V9JKB9DFVaTLOLI9+vjWLgQLjMu3xR9iUT80dty86RbCfNaKyrFFg== dependencies: confusing-browser-globals "^1.0.5" 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" @@ -7798,7 +6922,6 @@ eslint-import-resolver-node@^0.3.1: eslint-loader@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.1.tgz#2a9251523652430bfdd643efdb0afc1a2a89546a" - integrity sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ== dependencies: loader-fs-cache "^1.0.0" loader-utils "^1.0.2" @@ -7809,7 +6932,6 @@ eslint-loader@^2.1.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" @@ -7817,7 +6939,6 @@ eslint-module-utils@^2.2.0: eslint-plugin-filenames@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz#7094f00d7aefdd6999e3ac19f72cea058e590cf7" - integrity sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w== dependencies: lodash.camelcase "4.3.0" lodash.kebabcase "4.1.1" @@ -7827,26 +6948,22 @@ eslint-plugin-filenames@^1.3.2: 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" @@ -7854,7 +6971,6 @@ eslint-plugin-graphql@^2.0.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" @@ -7870,7 +6986,6 @@ eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.9.0: 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" @@ -7884,7 +6999,6 @@ eslint-plugin-jsx-a11y@^6.0.3: 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: aria-query "^3.0.0" array-includes "^3.0.3" @@ -7898,14 +7012,12 @@ eslint-plugin-jsx-a11y@^6.1.2: eslint-plugin-prettier@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz#19d521e3981f69dd6d14f64aec8c6a6ac6eb0b0d" - integrity sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ== 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" @@ -7916,7 +7028,6 @@ eslint-plugin-react@^7.11.1, 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" @@ -7924,7 +7035,6 @@ 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" @@ -7932,17 +7042,14 @@ eslint-scope@^4.0.0: 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@^5.13.0: version "5.13.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9" - integrity sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.5.3" @@ -7984,7 +7091,6 @@ eslint@^5.13.0: eslint@^5.6.0: version "5.11.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.11.1.tgz#8deda83db9f354bf9d3f53f9677af7e0e13eadda" - integrity sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.5.3" @@ -8027,7 +7133,6 @@ eslint@^5.6.0: espree@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" - integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== dependencies: acorn "^6.0.2" acorn-jsx "^5.0.0" @@ -8036,112 +7141,92 @@ espree@^5.0.0: 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.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" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= event-source-polyfill@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.5.tgz#b34be2740a685a8dc65ae750065fc983538ffcfe" - integrity sha512-PdStgZ3+G2o2gjqsBYbV4931ByVmwLwSrX7mFgawCL+9I1npo9dwAQTnWtNWXe5IY2P8+AbbPteeOueiEtRCUA== 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" eventsource@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== dependencies: original "^1.0.0" 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" @@ -8149,7 +7234,6 @@ 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" @@ -8160,14 +7244,12 @@ exec-buffer@^3.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" @@ -8180,7 +7262,6 @@ 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" @@ -8193,7 +7274,6 @@ 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" @@ -8206,7 +7286,6 @@ execa@^0.8.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" @@ -8219,7 +7298,6 @@ execa@^0.9.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" @@ -8232,41 +7310,34 @@ execa@^1.0.0: executable@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== dependencies: pify "^2.2.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" @@ -8279,26 +7350,22 @@ 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@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 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.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" @@ -8310,7 +7377,6 @@ expect@^23.6.0: expect@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.0.0.tgz#71f71d88a4202746fc79849bb4c6498008b5ef03" - integrity sha512-qDHRU4lGsme0xjg8dXp/RQhvO9XIo9FWqVo7dTHDPBwzy25JGEHAWFsnpmRYErB50tgi/6euo3ir5e/kF9LUTA== dependencies: ansi-styles "^3.2.0" jest-get-type "^24.0.0" @@ -8321,7 +7387,6 @@ expect@^24.0.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" @@ -8331,7 +7396,6 @@ 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" @@ -8367,14 +7431,12 @@ 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" @@ -8382,14 +7444,12 @@ 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" @@ -8397,12 +7457,10 @@ 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" @@ -8411,7 +7469,6 @@ 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" @@ -8420,14 +7477,12 @@ 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" @@ -8441,22 +7496,18 @@ 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" @@ -8466,22 +7517,18 @@ falafel@^2.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.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.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" @@ -8493,7 +7540,6 @@ fast-glob@^2.0.2: fast-glob@^2.2.2: version "2.2.6" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" @@ -8505,48 +7551,40 @@ fast-glob@^2.2.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, faye-websocket@~0.11.1: 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-css-vars@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^0.8.0: 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" @@ -8559,7 +7597,6 @@ fbjs@^0.8.0: fbjs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" - integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== dependencies: core-js "^2.4.1" fbjs-css-vars "^1.0.0" @@ -8573,24 +7610,20 @@ fbjs@^1.0.0: 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.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.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" @@ -8598,14 +7631,12 @@ figures@^1.3.5, figures@^1.7.0: 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" @@ -8613,7 +7644,6 @@ 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" @@ -8621,14 +7651,12 @@ 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" @@ -8636,52 +7664,42 @@ 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.2.0, 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== file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 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@^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@^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" @@ -8690,7 +7708,6 @@ filenamify@^2.0.0: fileset@^2.0.3: 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" @@ -8698,12 +7715,10 @@ fileset@^2.0.3: 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" @@ -8714,7 +7729,6 @@ 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" @@ -8724,7 +7738,6 @@ 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" @@ -8737,7 +7750,6 @@ 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" @@ -8746,7 +7758,6 @@ 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" @@ -8755,7 +7766,6 @@ 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" @@ -8764,27 +7774,22 @@ find-cache-dir@^2.0.0: find-index@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" - integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== find-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" @@ -8792,21 +7797,18 @@ find-up@^1.0.0: 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@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.0.0.tgz#2c05a86e839c249101910100b354196785a2c065" - integrity sha512-IUvtItVFNmTtKoB0PRfbkR0zR9XMG5rWNO3qI1S8L0zdv+v2gqzM0pAunloxqbqAfT8w7bg8n/5gHzTXte8H5A== dependencies: array-uniq "^2.0.0" semver-regex "^2.0.0" @@ -8814,7 +7816,6 @@ find-versions@^3.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" @@ -8824,7 +7825,6 @@ 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" @@ -8835,12 +7835,10 @@ fined@^1.0.1: 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" @@ -8850,29 +7848,24 @@ 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" 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" @@ -8880,14 +7873,12 @@ 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" @@ -8904,48 +7895,40 @@ 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" - 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" @@ -8954,7 +7937,6 @@ 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" @@ -8963,29 +7945,24 @@ 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= 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" @@ -8993,22 +7970,18 @@ from2@^2.1.0, from2@^2.1.1: 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: 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@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -9017,7 +7990,6 @@ fs-extra@^1.0.0: 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" @@ -9026,7 +7998,6 @@ 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" @@ -9035,7 +8006,6 @@ 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" @@ -9044,14 +8014,12 @@ 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" @@ -9059,12 +8027,10 @@ 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-vacuum@^1.2.10: version "1.2.10" resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" - integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= dependencies: graceful-fs "^4.1.2" path-is-inside "^1.0.1" @@ -9073,7 +8039,6 @@ fs-vacuum@^1.2.10: 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" @@ -9083,12 +8048,10 @@ 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" @@ -9104,7 +8067,6 @@ fsevents@^1.2.7: 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" @@ -9114,17 +8076,14 @@ 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" @@ -9133,12 +8092,10 @@ g-status@^2.0.2: 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= gatsby-node-helpers@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/gatsby-node-helpers/-/gatsby-node-helpers-0.3.0.tgz#3bdca3b7902a702a5834fef280ad66d51099d57c" - integrity sha1-O9yjt5AqcCpYNP7ygK1m1RCZ1Xw= dependencies: json-stringify-safe "^5.0.1" lodash "^4.17.4" @@ -9147,7 +8104,6 @@ gatsby-node-helpers@^0.3.0: 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" @@ -9161,7 +8117,6 @@ 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" @@ -9170,19 +8125,16 @@ 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@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== gentle-fs@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" - integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew== dependencies: aproba "^1.1.2" fs-vacuum "^1.2.10" @@ -9196,17 +8148,14 @@ gentle-fs@^2.0.0: 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-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" @@ -9217,7 +8166,6 @@ 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-port@^4.0.0: version "4.1.0" @@ -9227,29 +8175,24 @@ get-port@^4.0.0: 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@^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" @@ -9257,38 +8200,32 @@ 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-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 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@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" - integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== dependencies: dargs "^4.0.1" lodash.template "^4.0.2" @@ -9299,7 +8236,6 @@ git-raw-commits@2.0.0: 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" @@ -9307,7 +8243,6 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.2.tgz#f506ec07caade191ac0c8d5a21bdb8131b4934e3" - integrity sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w== dependencies: meow "^4.0.0" semver "^5.5.0" @@ -9315,7 +8250,6 @@ git-semver-tags@^2.0.2: 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" @@ -9330,26 +8264,22 @@ git-url-parse@^10.0.1: 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" @@ -9357,14 +8287,12 @@ 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.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" @@ -9372,7 +8300,6 @@ glob-parent@^3.1.0: 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" @@ -9388,19 +8315,16 @@ 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= glob2base@^0.0.12: version "0.0.12" resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= dependencies: find-index "^0.1.1" glob@6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= dependencies: inflight "^1.0.4" inherits "2" @@ -9411,7 +8335,6 @@ glob@6.0.4: 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" @@ -9423,7 +8346,6 @@ glob@7.0.x: glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: 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" @@ -9435,14 +8357,12 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: 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" @@ -9451,7 +8371,6 @@ 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" @@ -9462,7 +8381,6 @@ 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" @@ -9470,22 +8388,18 @@ 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.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" @@ -9497,7 +8411,6 @@ 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" @@ -9508,7 +8421,6 @@ 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" @@ -9520,7 +8432,6 @@ 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" @@ -9533,14 +8444,12 @@ globby@^8.0.1: 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" @@ -9553,7 +8462,6 @@ 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" @@ -9562,7 +8470,6 @@ 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" @@ -9570,7 +8477,6 @@ 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" @@ -9580,7 +8486,6 @@ 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" @@ -9591,7 +8496,6 @@ googleapis@^29.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" @@ -9608,7 +8512,6 @@ 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" @@ -9628,7 +8531,6 @@ got@^7.0.0, got@^7.1.0: got@^8.0.0, got@^8.3.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" @@ -9651,22 +8553,26 @@ got@^8.0.0, got@^8.3.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-fs@^4.1.15, graceful-fs@^4.1.9: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== "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-compose@^5.11.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-5.11.0.tgz#371a75036897777be7e16e861f8afa86567b0ca1" + integrity sha512-TLdHXgjvylxIjijKEI+R8ofI4OB1l8t5npVeIg2rRzuuGu6zkZ93hbUu4kd0McoaoTxnMDmiRYmkKHNpZI7PYg== + dependencies: + graphql-type-json "^0.2.1" + object-path "^0.11.4" 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" @@ -9677,7 +8583,6 @@ 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" @@ -9685,33 +8590,28 @@ graphql-import@^0.7.1: graphql-playground-html@1.6.11: version "1.6.11" resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.11.tgz#a4e40b3d43527270722cacf7a96811c7806eb22a" - integrity sha512-KBeZH7irqW0GB08AfryknQ4c0BPDGxJSvqJ+DYmGzbhyaQTUnocMv+5TfpaU+SUY8lnS7OGvEIHo/SIYyrjuWg== graphql-playground-middleware-express@^1.7.10: version "1.7.10" resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.10.tgz#8bc154e988c288e06cc350e918853aad25fbcd7d" - integrity sha512-yzL5gwelHWBNE6X0rJTEBotJmVGa107j0BBiLqkaFHrGs+tT19lYFQtQowQs/mwTVt5sb/e7/HroXQPIBERhzg== dependencies: graphql-playground-html "1.6.11" graphql-relay@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/graphql-relay/-/graphql-relay-0.6.0.tgz#18ec36b772cfcb3dbb9bd369c3f8004cf42c7b93" - integrity sha512-OVDi6C9/qOT542Q3KxZdXja3NrDvqzbihn1B44PH8P/c5s0Q90RyQwT6guhGqXqbYEH6zbeLJWjQqiYvcg2vVw== dependencies: prettier "^1.16.0" graphql-request@^1.5.0, graphql-request@^1.6.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" @@ -9722,19 +8622,16 @@ 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@^14.1.1: version "14.1.1" resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.1.1.tgz#d5d77df4b19ef41538d7215d1e7a28834619fac0" - integrity sha512-C5zDzLqvfPAgTtP8AUPIt9keDabrdRAqSWjj2OPRKrKxI9Fb65I36s1uCs1UUBFnSWTdO7hyHi7z1ZbwKMKF6Q== dependencies: iterall "^1.2.2" gray-matter@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.1.tgz#3042d9adec2a1ded6a7707a9ed2380f8a17a430e" - integrity sha1-MELZrewqHe1qdwep7SOA+KF6Qw4= dependencies: ansi-red "^0.1.1" coffee-script "^1.12.4" @@ -9745,7 +8642,6 @@ gray-matter@^2.1.0: 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" @@ -9755,17 +8651,14 @@ gray-matter@^4.0.0: gray-percentage@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/gray-percentage/-/gray-percentage-2.0.0.tgz#b72a274d1b1379104a0050b63b207dc53fe56f99" - integrity sha1-tyonTRsTeRBKAFC2OyB9xT/lb5k= 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" @@ -9776,19 +8669,16 @@ 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" @@ -9800,7 +8690,6 @@ 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" @@ -9817,19 +8706,16 @@ guess-webpack@~0.1.3: 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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== 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" @@ -9840,7 +8726,6 @@ handlebars@^4.0.11: 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" @@ -9851,12 +8736,10 @@ handlebars@^4.0.2, 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" @@ -9864,63 +8747,52 @@ 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@^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-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" @@ -9929,7 +8801,6 @@ 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" @@ -9938,12 +8809,10 @@ 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" @@ -9951,14 +8820,12 @@ 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" @@ -9966,12 +8833,10 @@ 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" @@ -9979,7 +8844,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: 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" property-information "^4.0.0" @@ -9991,7 +8855,6 @@ hast-to-hyperscript@^5.0.0: 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: ccount "^1.0.3" hastscript "^4.0.0" @@ -10002,17 +8865,14 @@ hast-util-from-parse5@^4.0.2: 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.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@^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 "^4.0.2" hast-util-to-parse5 "^4.0.1" @@ -10026,14 +8886,12 @@ hast-util-raw@^4.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@^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" @@ -10049,7 +8907,6 @@ hast-util-to-html@^4.0.0: 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 "^5.0.0" property-information "^4.0.0" @@ -10060,12 +8917,10 @@ hast-util-to-parse5@^4.0.1: 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@^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: comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.2.0" @@ -10075,12 +8930,10 @@ hastscript@^4.0.0: 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" @@ -10088,22 +8941,18 @@ 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" @@ -10112,17 +8961,14 @@ 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" @@ -10130,24 +8976,20 @@ 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.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" @@ -10157,34 +8999,28 @@ 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" @@ -10197,17 +9033,14 @@ 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" @@ -10220,7 +9053,6 @@ 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" @@ -10232,7 +9064,6 @@ 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" @@ -10242,7 +9073,6 @@ htmlparser2@~3.3.0: http-basic@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-2.5.1.tgz#8ce447bdb5b6c577f8a63e3fa78056ec4bb4dbfb" - integrity sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s= dependencies: caseless "~0.11.0" concat-stream "^1.4.6" @@ -10251,17 +9081,14 @@ http-basic@^2.5.1: 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" @@ -10271,7 +9098,6 @@ 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" @@ -10281,7 +9107,6 @@ 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" @@ -10292,12 +9117,10 @@ 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" @@ -10305,7 +9128,6 @@ 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" @@ -10315,7 +9137,6 @@ 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" @@ -10324,12 +9145,10 @@ http-proxy@^1.16.2: http-response-object@^1.0.0, http-response-object@^1.0.1, http-response-object@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-1.1.0.tgz#a7c4e75aae82f3bb4904e4f43f615673b4d518c3" - integrity sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM= 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" @@ -10338,33 +9157,28 @@ 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" @@ -10372,14 +9186,12 @@ 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" @@ -10395,85 +9207,70 @@ husky@1.1.1: 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.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@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.0.tgz#d2ca4e8c982c7c6eda55069af89dee4c1cebcdfd" - integrity sha512-+EciPiIjCb8JWjQNr1q8sYWYf7GDCNDxPYnkD11TNIjjWNzaV+oTg4DpOPQjl5ZX/KRCPMEgS79zLYAQzLitIA== dependencies: execa "^1.0.0" is-jpg "^2.0.0" @@ -10482,7 +9279,6 @@ imagemin-mozjpeg@^8.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" @@ -10492,7 +9288,6 @@ imagemin-pngquant@^6.0.0: imagemin-webp@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/imagemin-webp/-/imagemin-webp-5.0.0.tgz#f8a491fc0959e438575e0b0e5f480485e6aa79e7" - integrity sha512-e3LnIlitWfyGzYGPwaKdne7hIawgewHPKW+Sf2KgG96hzStqwDguOrzsi5srWZY0QrtxjfmJbw5UYES9N59Rtg== dependencies: cwebp-bin "^5.0.0" exec-buffer "^3.0.0" @@ -10501,7 +9296,6 @@ imagemin-webp@^5.0.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" @@ -10513,19 +9307,16 @@ 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-fresh@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -10533,24 +9324,20 @@ import-fresh@^3.0.0: import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= dependencies: resolve-from "^3.0.0" import-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-lazy@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" - integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== 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" @@ -10558,7 +9345,6 @@ 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" @@ -10566,34 +9352,28 @@ 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: 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" @@ -10601,22 +9381,18 @@ 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.5, 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" @@ -10630,7 +9406,6 @@ 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" @@ -10638,7 +9413,6 @@ inline-style-prefixer@^4.0.0: inquirer@3.3.0, 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" @@ -10658,7 +9432,6 @@ inquirer@3.3.0, inquirer@^3.3.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" @@ -10677,7 +9450,6 @@ inquirer@^6.1.0, 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" @@ -10685,12 +9457,10 @@ 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" @@ -10698,54 +9468,44 @@ 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.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" @@ -10753,7 +9513,6 @@ 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" @@ -10761,31 +9520,26 @@ 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" @@ -10793,67 +9547,56 @@ 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.0, 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-builtin-module@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" - integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== dependencies: builtin-modules "^3.0.0" 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.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-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.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" @@ -10865,38 +9608,32 @@ 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" @@ -10905,7 +9642,6 @@ 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" @@ -10914,106 +9650,88 @@ 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-generator-fn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" - integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== 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-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" @@ -11021,82 +9739,68 @@ 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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" - integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= is-local-path@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-local-path/-/is-local-path-0.1.6.tgz#815d144b14d569cecbead4d5693097f00a9bf6c5" - integrity sha1-gV0USxTVac7L6tTVaTCX8Aqb9sU= 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-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" @@ -11106,252 +9810,208 @@ 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.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: 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-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-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@^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= 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" @@ -11359,12 +10019,10 @@ 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@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.0.8.tgz#5621503c5595e5adbbacd5ce257090417c7f55da" - integrity sha512-ITCccemErW+BhZotmyQ/ktlYTAp9r7oWfz1oxxMpgKQVTUw0NAYRbKLbOSNaInipecIKul7U7O5BfCQBBRZa3w== dependencies: async "^2.6.1" compare-versions "^3.2.1" @@ -11382,29 +10040,24 @@ istanbul-api@^2.0.8: 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" - integrity sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA== istanbul-lib-coverage@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#d5db9a7a4bb8fdbd62ec746226385987b73a8f43" - integrity sha512-4CsY730KHy12ya/YNKubrMlb7EZZVsEPhXntyRY/Cbs7HN5HdznLbI4UbvIGHgocxHx3VkGe7l6IN1lipetuGg== istanbul-lib-hook@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.2.tgz#9ddd28aeac10f3bb6a4d02325e72b35044d17d3a" - integrity sha512-m0MwviQ0Av6qBNDkvKdLBxxuK6ffXo8761gE2bfT+/b+dhg8LUyQhp1nFh795LO12DpiSocuCPIRwILCsN1//Q== dependencies: append-transform "^1.0.0" 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" @@ -11417,7 +10070,6 @@ istanbul-lib-instrument@^1.10.1: istanbul-lib-instrument@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz#b5f066b2a161f75788be17a9d556f40a0cf2afc9" - integrity sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ== dependencies: "@babel/generator" "^7.0.0" "@babel/parser" "^7.0.0" @@ -11430,7 +10082,6 @@ istanbul-lib-instrument@^3.0.0: istanbul-lib-instrument@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.1.tgz#dd631e117dd9891e8bf1de7bb400cb8e491363af" - integrity sha512-/LTPhh1YKXjJlb5uggsiZjJHuViIljcIsB1zqmZegIw2yQ4l8LRksRGebJrZUFVEE28ZtKzmmT50W5tpAucfJg== dependencies: "@babel/generator" "^7.0.0" "@babel/parser" "^7.0.0" @@ -11443,7 +10094,6 @@ istanbul-lib-instrument@^3.0.1: istanbul-lib-report@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.3.tgz#8e22534766e9cc8e20ae96283331b4405da9dce9" - integrity sha512-25gX27Mbd3MjM41hwGl5lWcQEqaPaMP79YDFS20xuTUujItNmHgTBS3WRZvzyzLE0IAKaL+JpLrryou2WlZNMw== dependencies: istanbul-lib-coverage "^2.0.2" make-dir "^1.3.0" @@ -11452,7 +10102,6 @@ istanbul-lib-report@^2.0.3: istanbul-lib-source-maps@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.1.tgz#002936e1106c4fa49714a946e6c63c1098b52e11" - integrity sha512-DBsZMpCwCPewRCmyd0FETHtzarQK/kKejQkDPBqKPwLYQmhs2p6a7yytfVDqib7PgXGSJZNTc1b6B3jl9G8FqA== dependencies: debug "^3.1.0" istanbul-lib-coverage "^2.0.2" @@ -11463,14 +10112,12 @@ istanbul-lib-source-maps@^3.0.1: istanbul-reports@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.0.3.tgz#332eda684c9ee891f199dfba305c3e776f55fc16" - integrity sha512-qpQ5ZWBkOatTxmTelS+HV5ybPSq7EeXmwXrPbGv7ebP+9DJOtveUcv6hCncZE4IxSAEkdmLEh3xo31SCttbApQ== 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" @@ -11478,12 +10125,10 @@ isurl@^1.0.0-alpha5: iterall@^1.1.3, iterall@^1.2.2: 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@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7" - integrity sha512-nnuU510R9U+UX0WNb5XFEcsrMqriSiRLeO9KWDFgPrpToaQm60prfQYpxsXigdClpvNot5bekDY440x9dNGnsQ== dependencies: execa "^1.0.0" throat "^4.0.0" @@ -11491,7 +10136,6 @@ jest-changed-files@^24.0.0: jest-cli@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.0.0.tgz#691fd4f7bce2574c1865db6844a43b56e60ce2a4" - integrity sha512-mElnFipLaGxo1SiQ1CLvuaz3eX07MJc4HcyKrApSJf8xSdY1/EwaHurKwu1g2cDiwIgY8uHj7UcF5OYbtiBOWg== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -11535,7 +10179,6 @@ jest-cli@^24.0.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" @@ -11555,7 +10198,6 @@ jest-config@^23.6.0: jest-config@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.0.0.tgz#878abe03c060c74a0ec30d3cd5dd1897873e030e" - integrity sha512-9/soqWL5YSq1ZJtgVJ5YYPCL1f9Mi2lVCp5+OXuYBOaN8DHSFRCSWip0rQ6N+mPTOEIAlCvcUH8zaPOwK4hePg== dependencies: "@babel/core" "^7.1.0" babel-jest "^24.0.0" @@ -11577,7 +10219,6 @@ jest-config@^24.0.0: 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" @@ -11587,7 +10228,6 @@ jest-diff@^23.6.0: jest-diff@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34" - integrity sha512-XY5wMpRaTsuMoU+1/B2zQSKQ9RdE9gsLkGydx3nvApeyPijLA8GtEvIcPwISRCer+VDf9W1mStTYYq6fPt8ryA== dependencies: chalk "^2.0.1" diff-sequences "^24.0.0" @@ -11597,14 +10237,12 @@ jest-diff@^24.0.0: jest-docblock@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e" - integrity sha512-KfAKZ4SN7CFOZpWg4i7g7MSlY0M+mq7K0aMqENaG2vHuhC9fc3vkpU/iNN9sOus7v3h3Y48uEjqz3+Gdn2iptA== dependencies: detect-newline "^2.1.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" @@ -11612,7 +10250,6 @@ jest-each@^23.6.0: jest-each@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55" - integrity sha512-gFcbY4Cu55yxExXMkjrnLXov3bWO3dbPAW7HXb31h/DNWdNc/6X8MtxGff8nh3/MjkF9DpVqnj0KsPKuPK0cpA== dependencies: chalk "^2.0.1" jest-get-type "^24.0.0" @@ -11622,7 +10259,6 @@ jest-each@^24.0.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" @@ -11631,7 +10267,6 @@ jest-environment-jsdom@^23.4.0: jest-environment-jsdom@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11" - integrity sha512-1YNp7xtxajTRaxbylDc2pWvFnfDTH5BJJGyVzyGAKNt/lEULohwEV9zFqTgG4bXRcq7xzdd+sGFws+LxThXXOw== dependencies: jest-mock "^24.0.0" jest-util "^24.0.0" @@ -11640,7 +10275,6 @@ jest-environment-jsdom@^24.0.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" @@ -11648,7 +10282,6 @@ jest-environment-node@^23.4.0: jest-environment-node@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190" - integrity sha512-62fOFcaEdU0VLaq8JL90TqwI7hLn0cOKOl8vY2n477vRkCJRojiRRtJVRzzCcgFvs6gqU97DNqX5R0BrBP6Rxg== dependencies: jest-mock "^24.0.0" jest-util "^24.0.0" @@ -11656,17 +10289,14 @@ jest-environment-node@^24.0.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-get-type@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" - integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== jest-haste-map@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" - integrity sha512-CcViJyUo41IQqttLxXVdI41YErkzBKbE6cS6dRAploCeutePYfUimWd3C9rQEWhX0YBOQzvNsC0O9nYxK2nnxQ== dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.15" @@ -11680,7 +10310,6 @@ jest-haste-map@^24.0.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" @@ -11698,7 +10327,6 @@ jest-jasmine2@^23.6.0: jest-jasmine2@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.0.0.tgz#7d87be9d8b32d34ac5980ad646b7ae7f99e33a19" - integrity sha512-q1xEV9KHM0bgfBj3yrkrjRF5kxpNDkWPCwVfSPN1DC+pD6J5wrM9/u2BgzhKhALXiaZUUhJ+f/OcEC0Gwpw90A== dependencies: "@babel/traverse" "^7.1.0" chalk "^2.0.1" @@ -11715,7 +10343,6 @@ jest-jasmine2@^24.0.0: jest-junit@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.1.0.tgz#7c9ee19de705fb212bf4bfa5ab08334452cb597d" - integrity sha512-o/FKO45Ayomv2dMgXrmCfPi6eaHxVYnUEqWtJUWP4PFkjKOtKs2iLgwY5nz1tN49UpCDHNQBiGRSWPdr/qTcwg== dependencies: jest-config "^23.6.0" jest-validate "^23.0.1" @@ -11726,14 +10353,12 @@ jest-junit@^6.1.0: jest-leak-detector@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6" - integrity sha512-ZYHJYFeibxfsDSKowjDP332pStuiFT2xfc5R67Rjm/l+HFJWJgNIOCOlQGeXLCtyUn3A23+VVDdiCcnB6dTTrg== dependencies: pretty-format "^24.0.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" @@ -11742,7 +10367,6 @@ jest-matcher-utils@^23.6.0: jest-matcher-utils@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579" - integrity sha512-LQTDmO+aWRz1Tf9HJg+HlPHhDh1E1c65kVwRFo5mwCVp5aQDzlkz4+vCvXhOKFjitV2f0kMdHxnODrXVoi+rlA== dependencies: chalk "^2.0.1" jest-diff "^24.0.0" @@ -11752,7 +10376,6 @@ jest-matcher-utils@^24.0.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" @@ -11763,7 +10386,6 @@ jest-message-util@^23.4.0: jest-message-util@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619" - integrity sha512-J9ROJIwz/IeC+eV1XSwnRK4oAwPuhmxEyYx1+K5UI+pIYwFZDSrfZaiWTdq0d2xYFw4Xiu+0KQWsdsQpgJMf3Q== dependencies: "@babel/code-frame" "^7.0.0" chalk "^2.0.1" @@ -11774,27 +10396,22 @@ jest-message-util@^24.0.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-mock@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d" - integrity sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A== 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-regex-util@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a" - integrity sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q== jest-resolve-dependencies@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.0.0.tgz#86540611d660bdcaab8b87d069247d3832811d94" - integrity sha512-CJGS5ME2g5wL16o3Y22ga9p5ntNT5CUYX40/0lYj9ic9jB5YHm/qMKTgbFt9kowEBiMOFpXy15dWtBTEU54+zg== dependencies: jest-regex-util "^24.0.0" jest-snapshot "^24.0.0" @@ -11802,7 +10419,6 @@ jest-resolve-dependencies@^24.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" @@ -11811,7 +10427,6 @@ jest-resolve@^23.6.0: jest-resolve@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.0.0.tgz#0206cfe842324f8796b01f706f4075309bf7b405" - integrity sha512-uKDGyJqNaBQKox1DJzm27CJobADsIMNgZGusXhtYzl98LKu/fKuokkRsd7EBVgoDA80HKHc3LOPKuYLryMu1vw== dependencies: browser-resolve "^1.11.3" chalk "^2.0.1" @@ -11820,7 +10435,6 @@ jest-resolve@^24.0.0: jest-runner@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.0.0.tgz#00b280d52d23286111a8ed0362ed958283f7f0e3" - integrity sha512-XefXm2XimKtwdfi2am4364GfCmLD1tOjiRtDexY65diCXt4Rw23rxj2wiW7p9s8Nh9dzJQNmrheqZ5rzvn762g== dependencies: exit "^0.1.2" graceful-fs "^4.1.15" @@ -11839,7 +10453,6 @@ jest-runner@^24.0.0: jest-runtime@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.0.0.tgz#bc80756f5458c2c8e4db86f44b687ff692026c13" - integrity sha512-UeVoTGiij8upcqfyBlJvImws7IGY+ZWtgVpt1h4VmVbyei39tVGia/20VoP3yvodS6FdjTwBj+JzVNuoh/9UTw== dependencies: "@babel/core" "^7.1.0" babel-plugin-istanbul "^5.1.0" @@ -11876,12 +10489,10 @@ jest-serializer-path@^0.1.15: jest-serializer@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b" - integrity sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw== 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" @@ -11897,7 +10508,6 @@ jest-snapshot@^23.6.0: jest-snapshot@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.0.0.tgz#fb447a753a3271660b3d89d068698014eb14c414" - integrity sha512-7OcrckVnfzVYxSGPYl2Sn+HyT30VpDv+FMBFbQxSQ6DV2K9Js6vYT6d4SBPKp6DfDiEL2txNssJBxtlvF+Dymw== dependencies: "@babel/types" "^7.0.0" chalk "^2.0.1" @@ -11913,7 +10523,6 @@ jest-snapshot@^24.0.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" @@ -11927,7 +10536,6 @@ jest-util@^23.4.0: jest-util@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6" - integrity sha512-QxsALc4wguYS7cfjdQSOr5HTkmjzkHgmZvIDkcmPfl1ib8PNV8QUWLwbKefCudWS0PRKioV+VbQ0oCUPC691fQ== dependencies: callsites "^3.0.0" chalk "^2.0.1" @@ -11941,7 +10549,6 @@ jest-util@^24.0.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" @@ -11951,7 +10558,6 @@ jest-validate@^23.0.1, jest-validate@^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" @@ -11961,7 +10567,6 @@ jest-validate@^23.5.0: jest-validate@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" - integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g== dependencies: camelcase "^5.0.0" chalk "^2.0.1" @@ -11972,7 +10577,6 @@ jest-validate@^24.0.0: jest-watcher@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890" - integrity sha512-GxkW2QrZ4YxmW1GUWER05McjVDunBlKMFfExu+VsGmXJmpej1saTEKvONdx5RJBlVdpPI5x6E3+EDQSIGgl53g== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -11982,14 +10586,12 @@ jest-watcher@^24.0.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-worker@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" - integrity sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg== dependencies: merge-stream "^1.0.1" supports-color "^6.1.0" @@ -11997,7 +10599,6 @@ jest-worker@^24.0.0: jest@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.0.0.tgz#b8e2c8e6274e1092c7f56e57762a1fdc7800201e" - integrity sha512-1Z2EblP4BnERbWZGtipGb9zjHDq7nCHgCY7V57F5SYaFRJV4DE1HKoOz+CRC5OrAThN9OVhRlUhTzsTFArg2iQ== dependencies: import-local "^2.0.0" jest-cli "^24.0.0" @@ -12005,7 +10606,6 @@ jest@^24.0.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" @@ -12027,7 +10627,6 @@ 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" @@ -12036,7 +10635,6 @@ 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" @@ -12045,32 +10643,26 @@ 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 || ^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-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-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" @@ -12078,7 +10670,6 @@ js-yaml@3.11.0: js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.5.2, js-yaml@^3.8.1, js-yaml@^3.9.0: 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" @@ -12086,7 +10677,6 @@ js-yaml@^3.10.0, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.5.2, js-yaml@^3.8. 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" @@ -12094,7 +10684,6 @@ 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" @@ -12102,12 +10691,10 @@ 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" @@ -12128,7 +10715,6 @@ 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" @@ -12160,7 +10746,6 @@ 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" @@ -12191,69 +10776,56 @@ 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" @@ -12269,48 +10841,40 @@ 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= json5@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== dependencies: minimist "^1.2.0" jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= optionalDependencies: graceful-fs "^4.1.6" 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" @@ -12320,14 +10884,12 @@ 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" @@ -12336,7 +10898,6 @@ 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" @@ -12344,69 +10905,58 @@ jws@^3.1.4, jws@^3.1.5: katex@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/katex/-/katex-0.10.0.tgz#da562e5d0d5cc3aa602e27af8a9b8710bfbce765" - integrity sha512-/WRvx+L1eVBrLwX7QzKU1dQuaGnE7E8hDvx3VWfZh9HbMiCfsKWJNnYZ0S8ZMDAfAyDSofdyXIrH/hujF1fYXg== dependencies: commander "^2.16.0" 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== klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= optionalDependencies: graceful-fs "^4.1.9" kleur@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.1.tgz#4f5b313f5fa315432a400f19a24db78d451ede62" - integrity sha512-P3kRv+B+Ra070ng2VKQqW4qW7gd/v3iD8sy/zOdcYRsfiD+QBokQNOps/AfP6Hr48cBhIIBFWckB9aO+IZhrWg== 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" @@ -12414,59 +10964,50 @@ 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-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" - integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= dependencies: set-getter "^0.1.0" 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@^3.10.7: version "3.10.7" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.10.7.tgz#9d308b1fee1697f89fe90e6bc37e51c03b531557" - integrity sha512-ha/dehl/L3Nw0pbdir5z6Hrv2oYBg5ym2fTcuk8HCLe7Zdb/ylIHdrgW8CU9eTVZkwr4et8RdVtxFA/+xa65/Q== dependencies: "@lerna/add" "3.10.6" "@lerna/bootstrap" "3.10.6" @@ -12489,7 +11030,6 @@ lerna@^3.10.7: 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" @@ -12498,12 +11038,10 @@ 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" @@ -12511,7 +11049,6 @@ levn@^0.3.0, levn@~0.3.0: libnpm@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-2.0.1.tgz#a48fcdee3c25e13c77eb7c60a0efe561d7fb0d8f" - integrity sha512-qTKoxyJvpBxHZQB6k0AhSLajyXq9ZE/lUsZzuHAplr2Bpv9G+k4YuYlExYdUCeVRRGqcJt8hvkPh4tBwKoV98w== dependencies: bin-links "^1.1.2" bluebird "^3.5.3" @@ -12537,7 +11074,6 @@ libnpm@^2.0.1: libnpmaccess@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" - integrity sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA== dependencies: aproba "^2.0.0" get-stream "^4.0.0" @@ -12547,7 +11083,6 @@ libnpmaccess@^3.0.1: libnpmconfig@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== dependencies: figgy-pudding "^3.5.1" find-up "^3.0.0" @@ -12556,7 +11091,6 @@ libnpmconfig@^1.2.1: libnpmhook@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.2.tgz#d12817b0fb893f36f1d5be20017f2aea25825d94" - integrity sha512-vLenmdFWhRfnnZiNFPNMog6CK7Ujofy2TWiM2CrpZUjBRIhHkJeDaAbJdYCT6W4lcHtyrJR8yXW8KFyq6UAp1g== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" @@ -12566,7 +11100,6 @@ libnpmhook@^5.0.2: libnpmorg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.0.tgz#979b868c48ba28c5820e3bb9d9e73c883c16a232" - integrity sha512-o+4eVJBoDGMgRwh2lJY0a8pRV2c/tQM/SxlqXezjcAg26Qe9jigYVs+Xk0vvlYDWCDhP0g74J8UwWeAgsB7gGw== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" @@ -12576,7 +11109,6 @@ libnpmorg@^1.0.0: libnpmpublish@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.1.tgz#ff0c6bb0b4ad2bda2ad1f5fba6760a4af37125f0" - integrity sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g== dependencies: aproba "^2.0.0" figgy-pudding "^3.5.1" @@ -12591,7 +11123,6 @@ libnpmpublish@^1.1.0: libnpmsearch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.0.tgz#de05af47ada81554a5f64276a69599070d4a5685" - integrity sha512-vd+JWbTGzOSfiOc+72MU6y7WqmBXn49egCCrIXp27iE/88bX8EpG64ST1blWQI1bSMUr9l1AKPMVsqa2tS5KWA== dependencies: figgy-pudding "^3.5.1" get-stream "^4.0.0" @@ -12600,7 +11131,6 @@ libnpmsearch@^2.0.0: libnpmteam@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.1.tgz#ff704b1b6c06ea674b3b1101ac3e305f5114f213" - integrity sha512-gDdrflKFCX7TNwOMX1snWojCoDE5LoRWcfOC0C/fqF7mBq8Uz9zWAX4B2RllYETNO7pBupBaSyBDkTAC15cAMg== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" @@ -12610,7 +11140,6 @@ libnpmteam@^1.0.1: 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" @@ -12624,12 +11153,10 @@ 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" @@ -12660,7 +11187,6 @@ lint-staged@^8.0.4: list-item@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/list-item/-/list-item-1.1.1.tgz#0c65d00e287cb663ccb3cb3849a77e89ec268a56" - integrity sha1-DGXQDih8tmPMs8s4Sad+iewmilY= dependencies: expand-range "^1.8.1" extend-shallow "^2.0.1" @@ -12670,7 +11196,6 @@ list-item@^1.1.1: 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" @@ -12688,7 +11213,6 @@ listr-update-renderer@^0.4.0, "listr-update-renderer@https://github.com/okonet/l 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" @@ -12698,7 +11222,6 @@ listr-verbose-renderer@^0.4.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" @@ -12713,12 +11236,10 @@ listr@^0.14.2: 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" @@ -12732,7 +11253,6 @@ 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" @@ -12743,7 +11263,6 @@ 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" @@ -12753,7 +11272,6 @@ 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" @@ -12763,12 +11281,10 @@ 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" @@ -12776,12 +11292,10 @@ 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" @@ -12791,7 +11305,6 @@ 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" @@ -12800,7 +11313,6 @@ 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" @@ -12808,7 +11320,6 @@ 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" @@ -12816,7 +11327,6 @@ locate-path@^3.0.0: lock-verify@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.0.2.tgz#148e4f85974915c9e3c34d694b7de9ecb18ee7a8" - integrity sha512-QNVwK0EGZBS4R3YQ7F1Ox8p41Po9VGl2QG/2GsuvTbkJZYSsPeWHKMbbH6iZMCHWSMww5nrJroZYnGzI4cePuw== dependencies: npm-package-arg "^5.1.2 || 6" semver "^5.4.1" @@ -12824,98 +11334,80 @@ lock-verify@^2.0.2: 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._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._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._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.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, 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.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" @@ -12925,32 +11417,26 @@ 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.iserror@^3.1.1: version "3.1.1" @@ -12960,32 +11446,26 @@ lodash.iserror@^3.1.1: lodash.isnumber@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= 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, 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" @@ -12994,57 +11474,46 @@ 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.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.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.snakecase@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= 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@^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" @@ -13052,48 +11521,40 @@ lodash.template@^4.0.2, lodash.template@^4.4.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" - 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.upperfirst@4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= lodash@^4.11.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, 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" @@ -13102,7 +11563,6 @@ log-update@^2.3.0: logalot@^2.0.0, logalot@^2.1.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" @@ -13110,39 +11570,32 @@ logalot@^2.0.0, logalot@^2.1.0: loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= lokijs@^1.5.6: version "1.5.6" resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.6.tgz#6de6b8c3ff7a972fd0104169f81e7ddc244c029f" - integrity sha512-xJoDXy8TASTjmXMKr4F8vvNUCu4dqlwY5gmn0g5BajGt1GM3goDCafNiGAh/sfrWgkfWu1J4OfsxWm8yrWweJA== 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.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" @@ -13150,29 +11603,24 @@ 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" @@ -13182,7 +11630,6 @@ lpad-align@^1.0.1: 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" @@ -13190,12 +11637,10 @@ lru-cache@4.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" @@ -13203,38 +11648,32 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" 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, make-dir@^1.2.0, make-dir@^1.3.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" @@ -13251,65 +11690,54 @@ 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" 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" - 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" 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-link@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/markdown-link/-/markdown-link-0.1.1.tgz#32c5c65199a6457316322d1e4229d13407c8c7cf" - integrity sha1-MsXGUZmmRXMWMi0eQinRNAfIx88= markdown-magic@^0.1.25: version "0.1.25" resolved "https://registry.yarnpkg.com/markdown-magic/-/markdown-magic-0.1.25.tgz#d044d90632b85ff1576a047da152852d53a8e55a" - integrity sha512-NBVMv2IPdKaRIXcL8qmLkfq9O17tkByTr8sRkJ4l76tkp401hxCUA0r9mkhtnGJRevCqZ2KoHrIf9WYQUn8ztA== dependencies: commander "^2.9.0" deepmerge "^1.3.0" @@ -13323,17 +11751,14 @@ markdown-magic@^0.1.25: 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== markdown-toc@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/markdown-toc/-/markdown-toc-1.2.0.tgz#44a15606844490314afc0444483f9e7b1122c339" - integrity sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg== dependencies: concat-stream "^1.5.2" diacritics-map "^0.1.0" @@ -13351,26 +11776,22 @@ markdown-toc@^1.0.2: 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.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" @@ -13378,7 +11799,6 @@ 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" @@ -13387,28 +11807,24 @@ 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" @@ -13425,7 +11841,6 @@ 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" @@ -13435,12 +11850,10 @@ mdast-util-to-nlcst@^3.2.0: mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.0.2, mdast-util-to-string@^1.0.5: 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" @@ -13449,17 +11862,14 @@ 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= meant@^1.0.1: version "1.0.1" @@ -13469,19 +11879,16 @@ meant@^1.0.1: 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" @@ -13490,14 +11897,12 @@ 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" @@ -13505,12 +11910,10 @@ 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.3.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" @@ -13526,7 +11929,6 @@ meow@^3.3.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" @@ -13541,46 +11943,38 @@ 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.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== merge2@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - 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: 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" @@ -13599,7 +11993,6 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: 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" @@ -13618,7 +12011,6 @@ 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" @@ -13626,63 +12018,52 @@ 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" @@ -13691,36 +12072,30 @@ 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@2 || 3", minimatch@3.0.4, 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" @@ -13728,22 +12103,18 @@ 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@^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" @@ -13751,7 +12122,6 @@ minipass@^2.2.1, minipass@^2.3.3: minipass@^2.3.4, minipass@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -13759,21 +12129,18 @@ minipass@^2.3.4, minipass@^2.3.5: 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" minizlib@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== 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" @@ -13789,7 +12156,6 @@ 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" @@ -13805,12 +12171,10 @@ 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.1.3, 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" @@ -13818,7 +12182,6 @@ mixin-deep@^1.1.3, 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" @@ -13826,19 +12189,16 @@ 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" 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== modularscale@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/modularscale/-/modularscale-1.0.2.tgz#4a8f13af32a5e5214fc6e2cfc529064abfd7d877" - integrity sha1-So8TrzKl5SFPxuLPxSkGSr/X2Hc= dependencies: lodash.isnumber "^3.0.0" @@ -13865,12 +12225,10 @@ module-deps-sortable@5.0.0: moment@^2.21.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" @@ -13878,7 +12236,6 @@ 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" @@ -13887,7 +12244,6 @@ 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" @@ -13899,7 +12255,6 @@ move-concurrently@^1.0.1: mozjpeg@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-6.0.1.tgz#56969dddb5741ef2bcb1af066cae21e61a91a27b" - integrity sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA== dependencies: bin-build "^3.0.0" bin-wrapper "^4.0.0" @@ -13908,22 +12263,18 @@ mozjpeg@^6.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" @@ -13931,7 +12282,6 @@ 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" @@ -13941,27 +12291,22 @@ multimatch@^2.1.0: 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.12.1: version "2.12.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" - integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== 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" @@ -13978,17 +12323,14 @@ nanomatch@^1.2.9: 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" @@ -13997,82 +12339,68 @@ 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.6.1: 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" @@ -14081,12 +12409,10 @@ 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" @@ -14094,17 +12420,14 @@ 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" @@ -14122,12 +12445,10 @@ 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" @@ -14156,12 +12477,10 @@ 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" @@ -14171,7 +12490,6 @@ 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" @@ -14189,7 +12507,6 @@ 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" @@ -14205,21 +12522,18 @@ 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-releases@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2" - integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ== dependencies: semver "^5.3.0" 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" @@ -14227,7 +12541,6 @@ 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" @@ -14235,19 +12548,16 @@ 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": 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" @@ -14255,7 +12565,6 @@ 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" @@ -14265,7 +12574,6 @@ 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" @@ -14277,12 +12585,10 @@ normalize-path@^3.0.0: 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" @@ -14291,29 +12597,24 @@ 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" @@ -14321,7 +12622,6 @@ npm-conf@^1.1.0: npm-lifecycle@^2.1.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" @@ -14335,12 +12635,10 @@ npm-lifecycle@^2.1.0: npm-logical-tree@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" - integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^5.1.2 || 6", 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" @@ -14350,7 +12648,6 @@ npm-logical-tree@^1.2.1: npm-packlist@^1.1.12: version "1.2.0" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f" - integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -14358,7 +12655,6 @@ npm-packlist@^1.1.12: 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" @@ -14366,14 +12662,12 @@ npm-packlist@^1.1.6: 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.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" - integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== dependencies: figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" @@ -14382,7 +12676,6 @@ npm-pick-manifest@^2.2.3: npm-profile@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.1.tgz#d350f7a5e6b60691c7168fbb8392c3603583f5aa" - integrity sha512-NQ1I/1Q7YRtHZXkcuU1/IyHeLy6pd+ScKg4+DQHdfsm769TGq6HPrkbuNJVJS4zwE+0mvvmeULzQdWn2L2EsVA== dependencies: aproba "^1.1.2 || 2" figgy-pudding "^3.4.1" @@ -14391,7 +12684,6 @@ npm-profile@^4.0.1: 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" @@ -14403,7 +12695,6 @@ npm-registry-fetch@^3.8.0: 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.1" chalk "^2.4.1" @@ -14418,14 +12709,12 @@ npm-run-all@4.1.5: 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" @@ -14434,7 +12723,6 @@ npm-which@^3.0.1: "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" @@ -14444,59 +12732,48 @@ npm-which@^3.0.1: 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= nullthrows@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== 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" - 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@^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" @@ -14505,34 +12782,28 @@ 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: +object-path@^0.11.2, object-path@^0.11.4: 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" @@ -14542,7 +12813,6 @@ 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" @@ -14552,7 +12822,6 @@ 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" @@ -14560,7 +12829,6 @@ 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" @@ -14568,7 +12836,6 @@ 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" @@ -14576,14 +12843,12 @@ 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" @@ -14593,43 +12858,36 @@ object.values@^1.0.4: obuf@^1.0.0, obuf@^1.1.2: 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" opal-runtime@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/opal-runtime/-/opal-runtime-1.0.11.tgz#81fc2a2084ae5f25d5609eada375b756a3dab036" - integrity sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA== dependencies: glob "6.0.4" xmlhttprequest "1.8.0" @@ -14637,33 +12895,28 @@ opal-runtime@1.0.11: 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" opn@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" - integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== 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" @@ -14671,7 +12924,6 @@ 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" @@ -14679,7 +12931,6 @@ 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" @@ -14691,38 +12942,32 @@ optionator@^0.8.1, optionator@^0.8.2: 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, original@^1.0.0: 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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" - integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== dependencies: arch "^2.1.0" 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" - 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" @@ -14731,7 +12976,6 @@ 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" @@ -14740,12 +12984,10 @@ 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" @@ -14753,7 +12995,6 @@ 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" @@ -14762,158 +13003,132 @@ 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-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= dependencies: p-reduce "^1.0.0" 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-event@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.1.0.tgz#74de477a4e6b3aa8267240c7099e78ac52cb4db4" - integrity sha512-sDEpDVnzLGlJj3k590uUdpfEUySP5yAYlvfTCu5hTDvSTXQVecYWKcEwdO49PrZlnJ5wkfAvtawnno/jyXeqvA== dependencies: p-timeout "^2.0.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-iteration@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/p-iteration/-/p-iteration-1.1.7.tgz#9e71d79ede244b9f52592521f4487a56b6fb50fa" - integrity sha512-VsYvUPjm2edbKkX4QzlASC1qB2e4Z6IE9WPaRVHKwCtobmB6vfUcU9eBOwj1k5uMNi8O6w89QfsDatO5ePSjQg== 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: 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" @@ -14923,7 +13138,6 @@ package-json@^4.0.0: pacote@^9.2.3: version "9.4.0" resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.4.0.tgz#af979abdeb175cd347c3e33be3241af1ed254807" - integrity sha512-WQ1KL/phGMkedYEQx9ODsjj7xvwLSpdFJJdEXrLyw5SILMxcTNt5DTxT2Z93fXuLFYJBlZJdnwdalrQdB/rX5w== dependencies: bluebird "^3.5.3" cacache "^11.3.2" @@ -14956,17 +13170,14 @@ pacote@^9.2.3: 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" @@ -14975,21 +13186,18 @@ 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" parent-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" - integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== dependencies: callsites "^3.0.0" 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" @@ -15000,17 +13208,14 @@ 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" @@ -15018,7 +13223,6 @@ parse-bmfont-xml@^1.1.4: 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" @@ -15028,7 +13232,6 @@ 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" @@ -15040,7 +13243,6 @@ 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" @@ -15049,19 +13251,16 @@ 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" @@ -15071,7 +13270,6 @@ 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" @@ -15079,14 +13277,12 @@ parse-headers@^2.0.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" @@ -15094,7 +13290,6 @@ 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" @@ -15103,22 +13298,18 @@ 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-unit@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-unit/-/parse-unit-1.0.1.tgz#7e1bb6d5bef3874c28e392526a2541170291eecf" - integrity sha1-fhu21b7zh0wo45JSaiVBFwKR7s8= 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" @@ -15126,43 +13317,36 @@ 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.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: 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, 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" @@ -15170,90 +13354,74 @@ 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-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" @@ -15262,21 +13430,18 @@ 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" 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" @@ -15287,7 +13452,6 @@ pbkdf2@^3.0.3: 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" @@ -15297,12 +13461,10 @@ pdf2json@^1.1.7: 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" @@ -15318,96 +13480,80 @@ 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.2.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, pify@^4.0.1: 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" 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: 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" @@ -15419,22 +13565,18 @@ 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.1" resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-5.0.1.tgz#8e03b7bfa298dc7e761feb25b4a9d6827882ea9c" - integrity sha512-PJKdHpGuYl5WCzjOQ+YRBWsr1KQ2wAwez27am6rJOavLwc4aRvMuHDaKr288/FYS1eWUIXHFjCI0T2NAKt61Jw== dependencies: bin-build "^3.0.0" bin-wrapper "^4.0.1" @@ -15451,7 +13593,6 @@ pnp-webpack-plugin@^1.4.1: 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" @@ -15460,12 +13601,10 @@ 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" @@ -15475,7 +13614,6 @@ 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" @@ -15486,7 +13624,6 @@ 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" @@ -15494,42 +13631,36 @@ 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" @@ -15537,7 +13668,6 @@ 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" @@ -15547,7 +13677,6 @@ 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" @@ -15557,7 +13686,6 @@ 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" @@ -15567,7 +13695,6 @@ 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" @@ -15579,7 +13706,6 @@ 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" @@ -15587,7 +13713,6 @@ 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" @@ -15597,7 +13722,6 @@ 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" @@ -15608,7 +13732,6 @@ 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" @@ -15618,21 +13741,18 @@ 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" @@ -15640,7 +13760,6 @@ 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" @@ -15649,7 +13768,6 @@ 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" @@ -15657,7 +13775,6 @@ 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" @@ -15665,7 +13782,6 @@ 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" @@ -15676,14 +13792,12 @@ 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" @@ -15692,7 +13806,6 @@ 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" @@ -15702,7 +13815,6 @@ 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" @@ -15712,7 +13824,6 @@ 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" @@ -15721,7 +13832,6 @@ 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" @@ -15730,7 +13840,6 @@ 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" @@ -15738,7 +13847,6 @@ 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" @@ -15748,7 +13856,6 @@ 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" @@ -15756,7 +13863,6 @@ 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" @@ -15765,7 +13871,6 @@ 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" @@ -15775,7 +13880,6 @@ 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" @@ -15785,14 +13889,12 @@ 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" @@ -15801,7 +13903,6 @@ 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" @@ -15810,7 +13911,6 @@ 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" @@ -15820,7 +13920,6 @@ 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" @@ -15829,17 +13928,14 @@ postcss-unique-selectors@^4.0.0: postcss-value-parser@^3.0.0, 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-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss-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" @@ -15848,7 +13944,6 @@ 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" @@ -15857,7 +13952,6 @@ 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" @@ -15867,7 +13961,6 @@ 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" @@ -15876,7 +13969,6 @@ 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" @@ -15885,7 +13977,6 @@ postcss@^7.0.0, postcss@^7.0.1: postcss@^7.0.6: version "7.0.7" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.7.tgz#2754d073f77acb4ef08f1235c36c5721a7201614" - integrity sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg== dependencies: chalk "^2.4.1" source-map "^0.6.1" @@ -15894,14 +13985,12 @@ postcss@^7.0.6: 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@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.2.tgz#237888f21bfda441d0ee5f5612484390bccd4046" - integrity sha512-4e8VJnP3zJdZv/uP0eNWmr2r9urp4NECw7Mt1OSAi3rcLrbBRxGiAkfUFtre2MhQ5wfREAjRV+K1gubvs/GPsA== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" @@ -15923,54 +14012,44 @@ prebuild-install@^5.2.2: 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-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: fast-diff "^1.1.2" prettier@^1.16.0: version "1.16.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" - integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== prettier@^1.16.4: version "1.16.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" - integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== 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" @@ -15978,7 +14057,6 @@ pretty-error@^2.0.2, pretty-error@^2.1.1: 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" @@ -15986,7 +14064,6 @@ pretty-format@^23.5.0: pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -15994,7 +14071,6 @@ pretty-format@^23.6.0: pretty-format@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" - integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g== dependencies: ansi-regex "^4.0.0" ansi-styles "^3.2.0" @@ -16002,7 +14078,6 @@ pretty-format@^24.0.0: prettyjson@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.1.tgz#fcffab41d19cab4dfae5e575e64246619b12d289" - integrity sha1-/P+rQdGcq0365eV15kJGYZsS0ok= dependencies: colors "^1.1.2" minimist "^1.2.0" @@ -16010,24 +14085,20 @@ prettyjson@^1.2.1: 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" @@ -16039,42 +14110,34 @@ 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" @@ -16082,14 +14145,12 @@ 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@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.1.tgz#201b3718b4276fb407f037db48c0029d6465245c" - integrity sha512-8lnEOSIGQbgbnO47+13S+H204L8ISogGulyi0/NNEFAQ9D1VMNTrJ9SBX2Ra03V4iPn/zt36HQMndRYkaPoWiQ== dependencies: kleur "^3.0.0" sisteransi "^1.0.0" @@ -16097,14 +14158,12 @@ prompts@^2.0.1: 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" @@ -16112,31 +14171,26 @@ prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: 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.1: version "5.0.1" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: genfun "^5.0.0" 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" @@ -16144,22 +14198,18 @@ 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= 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" @@ -16170,7 +14220,6 @@ 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" @@ -16180,7 +14229,6 @@ 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" @@ -16188,7 +14236,6 @@ 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" @@ -16196,7 +14243,6 @@ 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" @@ -16204,7 +14250,6 @@ 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" @@ -16213,42 +14258,34 @@ 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.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.1.0: version "6.6.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" - integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== 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" @@ -16257,7 +14294,6 @@ 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" @@ -16265,27 +14301,22 @@ 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" @@ -16294,7 +14325,6 @@ 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" @@ -16303,14 +14333,12 @@ 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" @@ -16318,12 +14346,10 @@ 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" @@ -16333,7 +14359,6 @@ 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" @@ -16343,7 +14368,6 @@ 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" @@ -16351,12 +14375,10 @@ 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.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" @@ -16366,7 +14388,6 @@ rc@^1.0.1, 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" @@ -16390,14 +14411,12 @@ 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-rc.2: version "3.0.0-rc.2" resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-3.0.0-rc.2.tgz#5939c64699fd9959da6d97d890f7b648e542dbcc" - integrity sha512-tXbIvq7Hxdc92jW570rztqsz0adtWEM5FX8bShJYozT2Y6L/LeHvBMQcED6mSqJ72niiNMPV8fi3S37OHrGMEw== dependencies: "@babel/parser" "^7.1.3" "@babel/runtime" "^7.0.0" @@ -16410,7 +14429,6 @@ react-docgen@3.0.0-rc.2: 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" @@ -16420,12 +14438,10 @@ 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.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.6.2.tgz#9844b76a7bf4b6fdd45dd91f7e757ddf3aad5289" - integrity sha512-9XxH/t9jblu4vUDgxHcMLwvm4aOhaoxazzTP9vwjTVzOgU987T4rDYA85XrlmbDan9WkD+h/iVHOK8F8UnQsDg== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -16440,24 +14456,20 @@ react-hot-loader@^4.6.2: 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@^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.9.0" react-typography@^0.16.18: version "0.16.18" resolved "https://registry.yarnpkg.com/react-typography/-/react-typography-0.16.18.tgz#89341b63d615f1dfcf5e471797df5acce5bde1f3" - integrity sha512-BFkw59H2mkYRLLtHOT2UZve/9/RticAvL7o7rheOo/+tlwQyfF61wF2XzGRcA3IWASg+DbXnNViyywHBFlNj6A== 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" @@ -16467,12 +14479,10 @@ react@^16.4.1: 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" @@ -16480,21 +14490,18 @@ read-chunk@^3.0.0: 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, read-package-json@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" - integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" @@ -16506,7 +14513,6 @@ 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" @@ -16517,7 +14523,6 @@ 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" @@ -16525,7 +14530,6 @@ 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" @@ -16533,7 +14537,6 @@ 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" @@ -16541,7 +14544,6 @@ 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" @@ -16549,7 +14551,6 @@ read-pkg-up@^4.0.0: read-pkg@^1.0.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" @@ -16558,7 +14559,6 @@ read-pkg@^1.0.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" @@ -16567,7 +14567,6 @@ 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" @@ -16576,7 +14575,6 @@ read-pkg@^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" @@ -16585,14 +14583,12 @@ read-pkg@^4.0.1: 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.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" @@ -16605,7 +14601,6 @@ read@1, read@^1.0.7, read@~1.0.1: readable-stream@1.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" @@ -16615,7 +14610,6 @@ readable-stream@1.0, readable-stream@~1.0.31: 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" @@ -16628,7 +14622,6 @@ readable-stream@2.2.7: readable-stream@^3.0.6: version "3.1.1" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" - integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -16637,7 +14630,6 @@ readable-stream@^3.0.6: 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" @@ -16649,7 +14641,6 @@ 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" @@ -16662,7 +14653,6 @@ 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" @@ -16672,7 +14662,6 @@ readdir-scoped-modules@^1.0.0: readdirp@^2.0.0, readdirp@^2.2.1: 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" @@ -16681,14 +14670,12 @@ readdirp@^2.0.0, readdirp@^2.2.1: realpath-native@^1.0.0, realpath-native@^1.0.2: 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.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" @@ -16698,7 +14685,6 @@ recast@^0.15.0: recast@^0.16.0: version "0.16.2" resolved "https://registry.yarnpkg.com/recast/-/recast-0.16.2.tgz#3796ebad5fe49ed85473b479cd6df554ad725dc2" - integrity sha512-O/7qXi51DPjRVdbrpNzoBQH5dnAPQNbfoOFyRiUwreTMJfIHYOEBzwuH+c0+/BTSJ3CQyKs6ILSWXhESH6Op3A== dependencies: ast-types "0.11.7" esprima "~4.0.0" @@ -16708,14 +14694,12 @@ recast@^0.16.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@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" @@ -16729,7 +14713,6 @@ recursive-readdir@^2.2.2: 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" @@ -16737,7 +14720,6 @@ 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" @@ -16745,7 +14727,6 @@ 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" @@ -16753,14 +14734,12 @@ 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@^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: loose-envify "^1.4.0" symbol-observable "^1.2.0" @@ -16768,34 +14747,28 @@ redux@^4.0.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.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" @@ -16804,21 +14777,18 @@ 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" @@ -16831,12 +14801,10 @@ regexp-tree@^0.1.0: regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 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" @@ -16845,7 +14813,6 @@ 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" @@ -16854,7 +14821,6 @@ 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" @@ -16866,7 +14832,6 @@ 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" @@ -16874,43 +14839,36 @@ 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-runtime@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-2.0.0.tgz#0e42df90365cc69f104f7e4b20fdcf975f5a9c0b" - integrity sha512-o/LPFHTI6+3FLJXM3Ec4N6hzkKYILVHYRJThNX0UQlMnqjTVPR6NO4qFE2QzzEiUS+lys+qfnvBzSmNbSh1zWQ== dependencies: "@babel/runtime" "^7.0.0" fbjs "^1.0.0" @@ -16918,7 +14876,6 @@ relay-runtime@2.0.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" @@ -16935,14 +14892,12 @@ remark-html@^8.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" @@ -16957,7 +14912,6 @@ 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" @@ -16978,21 +14932,18 @@ 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" @@ -17001,7 +14952,6 @@ 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" @@ -17015,7 +14965,6 @@ 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" @@ -17035,7 +14984,6 @@ 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" @@ -17043,7 +14991,6 @@ 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" @@ -17052,7 +14999,6 @@ 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" @@ -17061,7 +15007,6 @@ remark@^9.0.0: remarkable@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.1.tgz#aaca4972100b66a642a63a1021ca4bac1be3bff6" - integrity sha1-qspJchALZqZCpjoQIcpLrBvjv/Y= dependencies: argparse "~0.1.15" autolinker "~0.15.0" @@ -17069,14 +15014,12 @@ remarkable@^1.7.1: 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" @@ -17084,7 +15027,6 @@ 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" @@ -17093,12 +15035,10 @@ 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" @@ -17109,36 +15049,30 @@ 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@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" @@ -17147,7 +15081,6 @@ 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" @@ -17173,27 +15106,22 @@ 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" - 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" @@ -17201,7 +15129,6 @@ 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" @@ -17209,19 +15136,16 @@ 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" - 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" @@ -17229,58 +15153,48 @@ 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" @@ -17288,7 +15202,6 @@ restore-cursor@^1.0.1: 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" @@ -17296,19 +15209,16 @@ 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" @@ -17316,7 +15226,6 @@ 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" @@ -17324,7 +15233,6 @@ 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" @@ -17332,14 +15240,12 @@ 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" @@ -17348,53 +15254,44 @@ 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" - 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.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.5.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" 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" @@ -17402,12 +15299,10 @@ 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" @@ -17418,7 +15313,6 @@ 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" @@ -17426,7 +15320,6 @@ 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" "*" @@ -17434,7 +15327,6 @@ 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" @@ -17442,84 +15334,70 @@ 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.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@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/sane/-/sane-3.1.0.tgz#995193b7dc1445ef1fe41ddfca2faf9f111854c6" - integrity sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q== dependencies: anymatch "^2.0.0" capture-exit "^1.2.0" @@ -17536,7 +15414,6 @@ sane@^3.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" @@ -17552,7 +15429,6 @@ 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" @@ -17564,24 +15440,20 @@ 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" @@ -17589,7 +15461,6 @@ 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" @@ -17598,14 +15469,12 @@ 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" @@ -17613,7 +15482,6 @@ 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" @@ -17621,70 +15489,58 @@ section-matter@^1.0.0: 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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== semver-truncate@^1.1.2: 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" - integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== 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" @@ -17703,7 +15559,6 @@ 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" @@ -17711,12 +15566,10 @@ 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" @@ -17729,7 +15582,6 @@ 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" @@ -17739,24 +15591,20 @@ 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-getter@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" - integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= dependencies: to-object-path "^0.3.0" 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" @@ -17766,7 +15614,6 @@ 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" @@ -17776,22 +15623,18 @@ 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" @@ -17799,7 +15642,6 @@ 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" @@ -17808,22 +15650,18 @@ 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.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.21.3.tgz#381937de66c123687f2ac7186f85921c6bb19cdd" - integrity sha512-5qZk8r+YgfyztLEKkNez20Wynq/Uh1oNyP5T/3gTYwt2lBYGs9iDs5m0yVsZEPm8eVBbAJhS08J1wp/g+Ai1Qw== dependencies: bindings "^1.3.1" color "^3.1.0" @@ -17840,19 +15678,16 @@ sharp@^0.21.3: 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" @@ -17862,37 +15697,30 @@ 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= 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: 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" @@ -17901,7 +15729,6 @@ simple-get@^2.7.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" @@ -17910,26 +15737,22 @@ simple-get@^3.0.3: 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@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" - integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== 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" @@ -17937,22 +15760,18 @@ 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@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7" - integrity sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ== dependencies: ansi-styles "^3.2.0" astral-regex "^1.0.0" @@ -17961,24 +15780,20 @@ slice-ansi@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" @@ -17987,14 +15802,12 @@ 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" @@ -18008,12 +15821,10 @@ 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" @@ -18033,7 +15844,6 @@ 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" @@ -18042,7 +15852,6 @@ 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" @@ -18054,7 +15863,6 @@ 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" @@ -18062,7 +15870,6 @@ 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" @@ -18074,7 +15881,6 @@ sockjs-client@1.1.4: sockjs-client@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== dependencies: debug "^3.2.5" eventsource "^1.0.7" @@ -18086,7 +15892,6 @@ sockjs-client@1.3.0: 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" @@ -18094,7 +15899,6 @@ 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" @@ -18102,7 +15906,6 @@ 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" @@ -18110,33 +15913,28 @@ 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.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" @@ -18147,14 +15945,12 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: 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: 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" @@ -18162,7 +15958,6 @@ source-map-support@^0.5.0, source-map-support@^0.5.6, source-map-support@^0.5.9: source-map-support@~0.5.9: version "0.5.10" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" - integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -18170,48 +15965,40 @@ 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" 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" @@ -18219,12 +16006,10 @@ 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" @@ -18232,12 +16017,10 @@ 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@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" detect-node "^2.0.4" @@ -18249,7 +16032,6 @@ spdy-transport@^3.0.0: spdy@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== dependencies: debug "^4.1.0" handle-thing "^2.0.0" @@ -18260,43 +16042,36 @@ spdy@^4.0.0: 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: 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" @@ -18306,7 +16081,6 @@ 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" @@ -18315,7 +16089,6 @@ 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" @@ -18323,14 +16096,12 @@ 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" @@ -18346,58 +16117,48 @@ 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, ssri@^6.0.1: 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== 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" @@ -18405,7 +16166,6 @@ 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" @@ -18425,29 +16185,24 @@ 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" @@ -18455,7 +16210,6 @@ 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" @@ -18463,7 +16217,6 @@ stream-combiner2@^1.1.1: 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" @@ -18471,7 +16224,6 @@ 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" @@ -18482,51 +16234,42 @@ 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" @@ -18534,7 +16277,6 @@ 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" @@ -18545,17 +16287,14 @@ 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.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" @@ -18564,7 +16303,6 @@ 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" @@ -18572,7 +16310,6 @@ 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" @@ -18581,38 +16318,32 @@ 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.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== 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" @@ -18622,7 +16353,6 @@ 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" @@ -18631,60 +16361,50 @@ stringify-object@^3.2.2: stringify-package@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" - integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g== strip-ansi@3.0.1, strip-ansi@^3, 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@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" - integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== dependencies: ansi-regex "^4.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-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-color@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/strip-color/-/strip-color-0.1.0.tgz#106f65d3d3e6a2d9401cac0eb0ce8b8a702b4f7b" - integrity sha1-EG9l09PmotlAHKwOsM6LinArT3s= 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" @@ -18692,43 +16412,36 @@ strip-comments@^1.0.2: 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@^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" @@ -18738,7 +16451,6 @@ 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" @@ -18746,14 +16458,12 @@ style-loader@^0.21.0: 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" @@ -18762,7 +16472,6 @@ 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" @@ -18770,7 +16479,6 @@ 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" @@ -18778,7 +16486,6 @@ 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" @@ -18787,14 +16494,12 @@ 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" @@ -18803,7 +16508,6 @@ 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 "*" @@ -18815,14 +16519,12 @@ 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" @@ -18833,33 +16535,28 @@ subfont@^3.6.1: 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.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@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.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" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" 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" @@ -18872,7 +16569,6 @@ 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" @@ -18892,7 +16588,6 @@ svgo@^1.0.0: svgo@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" - integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== dependencies: coa "~2.0.1" colors "~1.1.2" @@ -18912,7 +16607,6 @@ svgo@^1.1.1: 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" @@ -18928,7 +16622,6 @@ 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" @@ -18936,7 +16629,6 @@ 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" @@ -18944,22 +16636,18 @@ 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.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= sync-request@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-3.0.1.tgz#caa1235aaf889ba501076a1834c436830a82fb73" - integrity sha1-yqEjWq+Im6UBB2oYNMQ2gwqC+3M= dependencies: concat-stream "^1.4.7" http-response-object "^1.0.1" @@ -18968,7 +16656,6 @@ sync-request@^3.0.1: table@^5.0.2: version "5.1.1" resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837" - integrity sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw== dependencies: ajv "^6.6.1" lodash "^4.17.11" @@ -18978,12 +16665,10 @@ table@^5.0.2: 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" @@ -18993,7 +16678,6 @@ tar-fs@^1.13.0: 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" @@ -19006,7 +16690,6 @@ 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" @@ -19015,7 +16698,6 @@ tar@^2.0.0: tar@^4: 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" @@ -19028,7 +16710,6 @@ tar@^4: tar@^4.4.8: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" @@ -19041,7 +16722,6 @@ tar@^4.4.8: 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" @@ -19060,12 +16740,10 @@ 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.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" @@ -19077,7 +16755,6 @@ 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" @@ -19085,7 +16762,6 @@ temp@^0.8.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" @@ -19093,14 +16769,12 @@ 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.1.0, terser-webpack-plugin@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz#9bff3a891ad614855a7dde0d707f7db5a927e3d9" - integrity sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg== dependencies: cacache "^11.0.2" find-cache-dir "^2.0.0" @@ -19114,7 +16788,6 @@ terser-webpack-plugin@^1.1.0, terser-webpack-plugin@^1.2.2: terser@^3.16.1: version "3.16.1" resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493" - integrity sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -19123,7 +16796,6 @@ terser@^3.16.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" @@ -19134,7 +16806,6 @@ test-exclude@^4.2.1: test-exclude@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.0.0.tgz#cdce7cece785e0e829cd5c2b27baf18bc583cfb7" - integrity sha512-bO3Lj5+qFa9YLfYW2ZcXMOV1pmQvw+KS/DpjqhyX6Y6UZ8zstpZJ+mA2ERkXfpOqhxsJlQiLeVXD3Smsrs6oLw== dependencies: arrify "^1.0.1" minimatch "^3.0.4" @@ -19144,17 +16815,14 @@ test-exclude@^5.0.0: 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: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= then-request@^2.0.1: version "2.2.0" resolved "https://registry.yarnpkg.com/then-request/-/then-request-2.2.0.tgz#6678b32fa0ca218fe569981bbd8871b594060d81" - integrity sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE= dependencies: caseless "~0.11.0" concat-stream "^1.4.7" @@ -19166,12 +16834,10 @@ then-request@^2.0.1: 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" @@ -19179,7 +16845,6 @@ through2-filter@^2.0.0: 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" @@ -19187,44 +16852,36 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@^2.0.3, through2@~2. 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= 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" @@ -19236,17 +16893,14 @@ 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" @@ -19254,26 +16908,22 @@ 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@^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" @@ -19281,39 +16931,32 @@ 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" @@ -19321,7 +16964,6 @@ 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" @@ -19331,36 +16973,30 @@ 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" @@ -19368,56 +17004,46 @@ 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== "true-case-path@^1.0.3": version "1.0.3" @@ -19434,7 +17060,6 @@ ts-pnp@^1.0.0: 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" @@ -19444,36 +17069,30 @@ 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.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-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" @@ -19481,32 +17100,26 @@ 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" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^1.8.9: version "1.8.10" resolved "http://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e" - 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= typography-normalize@^0.16.18: version "0.16.18" resolved "https://registry.yarnpkg.com/typography-normalize/-/typography-normalize-0.16.18.tgz#19e8db32c6881d3745b7d67dc63ee6f6cfb681d1" - integrity sha512-HZCOoyg4bbwuy0W6kFOKS8duMhUUO1Oxl8/NgRKDG7kJYGjfmqj6LBjQ4dYGrcuPabYHhP0xmAaYNasEUooYBw== typography@^0.16.18: version "0.16.18" resolved "https://registry.yarnpkg.com/typography/-/typography-0.16.18.tgz#bdd2dc7297682339e8ded5fcb6783b9ae3c71b76" - integrity sha512-bYpxtDptzesYMy4pzwb0fYZuzms+65RckONH9+miHi2WSeOF9P/nNjprqbsn50ClhUa4zK6RBAe75tNVVE785g== dependencies: compass-vertical-rhythm "^1.4.5" decamelize "^1.2.0" @@ -19519,12 +17132,10 @@ typography@^0.16.18: 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" @@ -19532,7 +17143,6 @@ 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" @@ -19540,7 +17150,6 @@ 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" @@ -19550,12 +17159,10 @@ 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" @@ -19569,22 +17176,18 @@ 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" @@ -19592,12 +17195,10 @@ 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.5: version "3.3.5" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" - integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== dependencies: sprintf-js "^1.0.3" util-deprecate "^1.0.2" @@ -19605,27 +17206,22 @@ underscore.string@^3.3.5: underscore.string@~2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" - integrity sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs= 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= underscore@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - integrity sha1-a7rwh3UA02vjTsqlhODbn+8DUgk= 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" @@ -19633,12 +17229,10 @@ 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" @@ -19646,12 +17240,10 @@ 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" @@ -19659,12 +17251,10 @@ 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" @@ -19672,7 +17262,6 @@ 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" @@ -19684,7 +17273,6 @@ 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" @@ -19696,7 +17284,6 @@ 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" @@ -19706,38 +17293,32 @@ 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-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== 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" @@ -19745,21 +17326,18 @@ 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" @@ -19768,43 +17346,36 @@ 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" @@ -19813,46 +17384,38 @@ 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" @@ -19860,17 +17423,14 @@ unset-value@^1.0.0: 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, upath@^1.1.0: 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" @@ -19886,46 +17446,38 @@ 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" @@ -19934,21 +17486,18 @@ 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" @@ -19956,24 +17505,20 @@ 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" @@ -19981,7 +17526,6 @@ 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" @@ -19990,7 +17534,6 @@ 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" @@ -19999,22 +17542,18 @@ 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.1, 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" @@ -20022,70 +17561,58 @@ 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@^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" 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" @@ -20093,29 +17620,24 @@ 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" @@ -20124,12 +17646,10 @@ 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" @@ -20148,7 +17668,6 @@ vfile-reporter@^5.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-sort@^2.1.2: version "2.2.0" @@ -20158,17 +17677,14 @@ vfile-sort@^2.1.2: 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: 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" @@ -20188,7 +17704,6 @@ vfile@^3.0.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" @@ -20211,7 +17726,6 @@ 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" @@ -20224,7 +17738,6 @@ vinyl-sourcemap@^1.1.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" @@ -20236,24 +17749,20 @@ 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-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" @@ -20261,33 +17770,28 @@ 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" 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" @@ -20295,7 +17799,6 @@ 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" @@ -20304,31 +17807,26 @@ watchpack@^1.5.0: wbuf@^1.1.0, wbuf@^1.7.3: 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.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" @@ -20341,7 +17839,6 @@ webpack-assets-manifest@^3.0.2: webpack-dev-middleware@3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" - integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== dependencies: memory-fs "~0.4.1" mime "^2.3.1" @@ -20351,7 +17848,6 @@ webpack-dev-middleware@3.4.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" @@ -20363,7 +17859,6 @@ webpack-dev-middleware@^3.0.1: webpack-dev-server@^3.1.14: version "3.1.14" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz#60fb229b997fc5a0a1fc6237421030180959d469" - integrity sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -20399,7 +17894,6 @@ webpack-dev-server@^3.1.14: 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" @@ -20409,7 +17903,6 @@ 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" @@ -20417,14 +17910,12 @@ 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" @@ -20432,7 +17923,6 @@ webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.2.0: webpack-sources@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" @@ -20440,12 +17930,10 @@ webpack-sources@^1.3.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.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" @@ -20475,7 +17963,6 @@ webpack@^4.14.0, webpack@^4.16.0: webpack@~4.28.4: version "4.28.4" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.4.tgz#1ddae6c89887d7efb752adf0c3cd32b9b07eacd0" - integrity sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-module-context" "1.7.11" @@ -20505,7 +17992,6 @@ webpack@~4.28.4: 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" @@ -20513,34 +17999,28 @@ 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" @@ -20549,7 +18029,6 @@ 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" @@ -20558,53 +18037,44 @@ 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" - 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.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= 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" @@ -20613,36 +18083,30 @@ with-open-file@^0.1.3: 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.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.6.3" 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.6.3" 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" @@ -20670,26 +18134,22 @@ workbox-build@^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" @@ -20699,61 +18159,52 @@ workbox-google-analytics@^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" @@ -20761,7 +18212,6 @@ wrap-ansi@^2.0.0: 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" @@ -20769,12 +18219,10 @@ wrap-ansi@^3.0.1: 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.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" @@ -20783,7 +18231,6 @@ write-file-atomic@^1.2.0: write-file-atomic@^2.0.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" @@ -20792,7 +18239,6 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: write-file-atomic@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" - integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -20801,12 +18247,10 @@ write-file-atomic@^2.4.2: 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" @@ -20818,7 +18262,6 @@ 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" @@ -20826,28 +18269,24 @@ 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" @@ -20856,17 +18295,14 @@ ws@~3.3.1: 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" @@ -20876,7 +18312,6 @@ 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" @@ -20889,24 +18324,20 @@ 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" @@ -20914,81 +18345,66 @@ xml2js@^0.4.5: 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.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= xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= 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, 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.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@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -20996,28 +18412,24 @@ yargs-parser@^11.1.1: 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.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@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" @@ -21035,7 +18447,6 @@ 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" @@ -21053,7 +18464,6 @@ yargs@^10.0.3: yargs@^11.0.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" @@ -21071,7 +18481,6 @@ yargs@^11.0.0: yargs@^12.0.2, yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" decamelize "^1.2.0" @@ -21089,7 +18498,6 @@ yargs@^12.0.2, yargs@^12.0.5: 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" @@ -21108,7 +18516,6 @@ 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" @@ -21127,7 +18534,6 @@ 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" @@ -21137,7 +18543,6 @@ yargs@~3.10.0: 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" @@ -21145,12 +18550,10 @@ 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@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.0.2.tgz#4607378548bf50cf70b80bea9b1a9041eb865cc0" - integrity sha512-Xuj2K6KS8pOlpl0H2VwpPFAFAJlVutGG2dONbYJuk2mUqpBfasz4lWBNPYDxriaSIrzVyvUHfoFBBizEtdNxXg== dependencies: babel-runtime "^6.26.0" chalk "^2.1.0" @@ -21174,21 +18577,17 @@ yurnalist@^1.0.2: 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==

The first argument passed to each of{` `} - Gatsby's Node APIs is an object - containing a set of helpers. Helpers shared by all Gatsby's Node - APIs are documented in{` `} + {`Gatsby's Node APIs`} + {` is an + object containing a set of helpers. Helpers shared by all Gatsby's + Node APIs are documented in `} Shared helpers section.